var classes = new Array[Klass]
var dept writable = 5
- var loops writable = 20000
+ var loops writable = 50000
var middle writable = 0
var dry writable = false
var check writable = false
write "\t\tif {test} and x >= 0 then"
if check then write "\t\tx += 1"
write "\telse"
- write "\t\t\tx -= 1"
+ write "\t\t\tx = x - 1 + i - j"
write "\t\t\ta = b"
write "\t\tend"
write "\t\tj += 1"
var test = "true"
if not dry then test = testjava(interfaces)
write "\t\t\tif({test} && x>=0) \{"
- if check then write "\t\t\t\tx -= 2"
- write "\t\t\t\} else \{ x--; a = b;\}"
+ if check then write "\t\t\t\tx = x + 1;"
+ #write "\t\t\t\} else \{ x = x - 1 + i - j; a = b;\}"
+ write "\t\t\t\} else \{ x = x - 1; a = b;\}"
write "\t\t}"
write "\t\}"
write "\tSystem.out.println(x);"
if not dry then test = testcsharp(interfaces)
write "\t\t\tif({test} && x>=0) \{"
if check then write "\t\t\t\tx++;"
- write "\} else \{ x--; a = b; \};"
+ write "\} else \{ x = x - 1 + i - j; a = b; \};"
write "\t\t}"
write "\t\}"
write "\tSystem.Console.WriteLine(x);"
var test = "true"
if not dry then test = testscala(interfaces)
write "\t\tif ({test} && x>=0) \{"
- if check then write "\t\t\tx += 1"
+ if check then write "\t\t\tx += 1;"
+ #write "\} else \{ x = x - 1 + i - j; a = b; \}"
write "\} else \{ x = x - 1; a = b; \}"
write "\t\tj += 1"
write "\t\t\}"
var test = "true"
if not dry then test = testcpp
write "\t\tif({test} && x>=0) \{"
- if check then write "\t\t\tx += 1"
- write "\} else \{ x--; a = b;\}"
+ if check then write "\t\t\tx += 1;"
+ write "\} else \{ x = x - 1 + i - j; a = b;\}"
write "\t\t}"
write "\t\}"
write "\tstd::cout << x << std::endl;"
if not dry then test = teste(se)
write "\t\t\t\t\tif {test} and then x >= 0 then"
if check then write "\t\t\t\t\tx := x + 1"
- write "\t\t\t\t\telse x := x - 1; a := b end"
+ write "\t\t\t\t\telse x := x - 1 + i - j; a := b end"
write "\t\t\t\t\tj := j + 1"
write "\t\t\t\tend"
write "\t\t\t\ti := i + 1"
--- /dev/null
+#!/usr/bin/env nit
+
+import bench_base
+
+class TypeTestCovarGenerator
+ super Generator
+
+ redef fun initnit(res)
+ do
+ for c in classes do
+ res.add "new {classes.first}[{c}[Root]]"
+ end
+
+ end
+
+ redef fun testnit
+ do
+ return "a isa {classes.first}[{classes[middle]}[Root]]"
+ end
+
+ redef fun initjava(res, interfaces)
+ do
+
+ var tagc = ""
+ if interfaces then tagc = "X"
+ for c in classes do
+ res.add "new {tagc}{classes.first}<{c}<Root>>()"
+ end
+ end
+
+ redef fun testjava(interfaces)
+ do
+ return "a instanceof {classes.first}"
+ end
+
+ redef fun initcsharp(res, interfaces)
+ do
+ var tagc = ""
+ if interfaces then tagc = "X"
+ for c in classes do
+ res.add "new {tagc}{classes.first}<{c}<Root>>()"
+ end
+ end
+
+ redef fun testcsharp(interfaces)
+ do
+ return "a is {classes.first}<{classes[middle]}<Root>>"
+ end
+
+ redef fun initscala(res, interfaces)
+ do
+ var tagc = ""
+ if interfaces then tagc = "X"
+ for c in classes do
+ res.add "new {tagc}{classes.first}[{c}[Root]]()"
+ end
+ end
+
+ redef fun testscala(interfaces)
+ do
+ return "a.isInstanceOf[{classes.first}[{classes[middle]}[Root]]]"
+ end
+
+ redef fun initcpp(res)
+ do
+ for c in classes do
+ res.add "new {classes.first}<{c}<Root>*>()"
+ end
+ end
+
+ redef fun testcpp
+ do
+ write "\t\t\t{classes.first}<{classes[middle]}<Root>*> *to = dynamic_cast<{classes.first}<{classes[middle]}<Root>*>*>(a);"
+ return "to != 0"
+ end
+
+ redef fun inite(res, se)
+ do
+ for c in classes do
+ res.add "create \{{classes.first}[{c}[ROOT]]\} a"
+ end
+ end
+
+ redef fun teste(se)
+ do
+ write "\t\t\t\t\tto ?= a"
+ return "to /= Void"
+ end
+
+ redef fun locale(se)
+ do
+ write "\t\t\tto: {classes.first}[{classes[middle]}[ROOT]]"
+ end
+end
+
+var g = new TypeTestCovarGenerator
+g.genall
--- /dev/null
+#!/usr/bin/env nit
+
+import bench_base
+import pipeline
+
+class TypeTestDepthNotGenerator
+ super Generator
+
+ redef fun initnit(res)
+ do
+ res.add "new {classes.last}[Root]"
+ for c in classes.skip_tail(1) do
+ res.add "new {c}[Root]"
+ end
+ end
+
+ redef fun testnit
+ do
+ return "not a isa {classes.last}[Root]"
+ end
+
+ redef fun initjava(res, interfaces)
+ do
+
+ var tagc = ""
+ if interfaces then tagc = "X"
+ res.add "new {tagc}{classes.last}<Root>()"
+ for c in classes.skip_tail(1) do
+ res.add "new {tagc}{c}<Root>()"
+ end
+ end
+
+ redef fun testjava(interfaces)
+ do
+ return "!(a instanceof {classes.last})"
+ end
+
+ redef fun initcsharp(res, interfaces)
+ do
+ var tagc = ""
+ if interfaces then tagc = "X"
+ res.add "new {tagc}{classes.last}<Root>()"
+ for c in classes.skip_tail(1) do
+ res.add "new {tagc}{c}<Root>()"
+ end
+ end
+
+ redef fun testcsharp(interfaces)
+ do
+ return "!(a is {classes.last}<Root>)"
+ end
+
+ redef fun initscala(res, interfaces)
+ do
+ var tagc = ""
+ if interfaces then tagc = "X"
+ res.add "new {tagc}{classes.last}[Root]()"
+ for c in classes.skip_tail(1) do
+ res.add "new {tagc}{c}[Root]()"
+ end
+ end
+
+ redef fun testscala(interfaces)
+ do
+ return "!a.isInstanceOf[{classes.last}[Root]]"
+ end
+
+ redef fun initcpp(res)
+ do
+ res.add "new {classes.last}<Root>()"
+ for c in classes.skip_tail(1) do
+ res.add "new {c}<Root>()"
+ end
+ end
+
+ redef fun testcpp
+ do
+ write "\t\t\t{classes.last}<Root> *to = dynamic_cast<{classes.last}<Root>*>(a);"
+ return "to == 0"
+ end
+
+ redef fun inite(res, se)
+ do
+ res.add "create \{{classes.last}[ROOT]\} a"
+ for c in classes.skip_tail(1) do
+ res.add "create \{{c}[ROOT]\} a"
+ end
+ end
+
+ redef fun teste(se)
+ do
+ write "\t\t\t\t\tto ?= a"
+ return "to = Void"
+ end
+
+ redef fun locale(se)
+ do
+ write "\t\t\tto: {classes.last}[ROOT]"
+ end
+end
+
+var g = new TypeTestDepthNotGenerator
+g.genall
--- /dev/null
+#!/usr/bin/env nit
+
+import bench_base
+
+class TypeTestFtsNestingGenerator
+ super Generator
+
+ fun clanit(i: Int): String
+ do
+ var s = new Buffer
+ s.append("{classes.first}[" * i)
+ s.append("Root")
+ s.append("]" * i)
+ return s.to_s
+ end
+
+ redef fun initnit(res)
+ do
+ for i in [1..dept] do
+ res.add "new {clanit(i)}"
+ end
+
+ end
+
+ redef fun testnit
+ do
+ return "a isa {clanit(middle)}"
+ end
+
+ fun clajava(i: Int): String
+ do
+ var s = new Buffer
+ s.append("{classes.first}<" * i)
+ s.append("Root")
+ s.append(">" * i)
+ return s.to_s
+ end
+
+ redef fun initjava(res, interfaces)
+ do
+
+ var tagc = ""
+ if interfaces then tagc = "X"
+ for i in [1..dept] do
+ res.add "new {tagc}{clajava(i)}()"
+ end
+ end
+
+ redef fun testjava(interfaces)
+ do
+ return "a instanceof {classes.first}<?>"
+ end
+
+ redef fun initcsharp(res, interfaces)
+ do
+ var tagc = ""
+ if interfaces then tagc = "X"
+ for i in [1..dept] do
+ res.add "new {tagc}{clajava(i)}()"
+ end
+ end
+
+ redef fun testcsharp(interfaces)
+ do
+ return "a is {clajava(middle)}"
+ end
+
+ redef fun initscala(res, interfaces)
+ do
+ var tagc = ""
+ if interfaces then tagc = "X"
+ for i in [1..dept] do
+ res.add "new {tagc}{clanit(i)}()"
+ end
+ end
+
+ redef fun testscala(interfaces)
+ do
+ return "a.isInstanceOf[{clanit(middle)}]"
+ end
+
+ fun clacpp(i: Int): String
+ do
+ var s = new Buffer
+ s.append("{classes.first}<" * i)
+ s.append("Root")
+ s.append("*>" * i)
+ return s.to_s
+ end
+
+ redef fun initcpp(res)
+ do
+ for i in [1..dept] do
+ res.add "new {clacpp(i)}()"
+ end
+ end
+
+ redef fun testcpp
+ do
+ write "\t\t\t{clacpp(middle)} *to = dynamic_cast<{clacpp(middle)}*>(a);"
+ return "to != 0"
+ end
+
+ fun clae(i: Int): String
+ do
+ var s = new Buffer
+ s.append("{classes.first}[" * i)
+ s.append("ROOT")
+ s.append("]" * i)
+ return s.to_s
+ end
+
+ redef fun inite(res, se)
+ do
+ for i in [1..dept] do
+ res.add "create \{{clae(i)}\} a"
+ end
+ end
+
+ redef fun teste(se)
+ do
+ write "\t\t\t\t\tto ?= a"
+ return "to /= Void"
+ end
+
+ redef fun locale(se)
+ do
+ write "\t\t\tto: {clae(middle)}"
+ end
+end
+
+var g = new TypeTestFtsNestingGenerator
+g.genall