bench/lang: add covar/depthnot and fts_nesting
[nit.git] / benchmarks / languages / bench_typetest_covar.nit
1 #!/usr/bin/env nit
2
3 import bench_base
4
5 class TypeTestCovarGenerator
6 super Generator
7
8 redef fun initnit(res)
9 do
10 for c in classes do
11 res.add "new {classes.first}[{c}[Root]]"
12 end
13
14 end
15
16 redef fun testnit
17 do
18 return "a isa {classes.first}[{classes[middle]}[Root]]"
19 end
20
21 redef fun initjava(res, interfaces)
22 do
23
24 var tagc = ""
25 if interfaces then tagc = "X"
26 for c in classes do
27 res.add "new {tagc}{classes.first}<{c}<Root>>()"
28 end
29 end
30
31 redef fun testjava(interfaces)
32 do
33 return "a instanceof {classes.first}"
34 end
35
36 redef fun initcsharp(res, interfaces)
37 do
38 var tagc = ""
39 if interfaces then tagc = "X"
40 for c in classes do
41 res.add "new {tagc}{classes.first}<{c}<Root>>()"
42 end
43 end
44
45 redef fun testcsharp(interfaces)
46 do
47 return "a is {classes.first}<{classes[middle]}<Root>>"
48 end
49
50 redef fun initscala(res, interfaces)
51 do
52 var tagc = ""
53 if interfaces then tagc = "X"
54 for c in classes do
55 res.add "new {tagc}{classes.first}[{c}[Root]]()"
56 end
57 end
58
59 redef fun testscala(interfaces)
60 do
61 return "a.isInstanceOf[{classes.first}[{classes[middle]}[Root]]]"
62 end
63
64 redef fun initcpp(res)
65 do
66 for c in classes do
67 res.add "new {classes.first}<{c}<Root>*>()"
68 end
69 end
70
71 redef fun testcpp
72 do
73 write "\t\t\t{classes.first}<{classes[middle]}<Root>*> *to = dynamic_cast<{classes.first}<{classes[middle]}<Root>*>*>(a);"
74 return "to != 0"
75 end
76
77 redef fun inite(res, se)
78 do
79 for c in classes do
80 res.add "create \{{classes.first}[{c}[ROOT]]\} a"
81 end
82 end
83
84 redef fun teste(se)
85 do
86 write "\t\t\t\t\tto ?= a"
87 return "to /= Void"
88 end
89
90 redef fun locale(se)
91 do
92 write "\t\t\tto: {classes.first}[{classes[middle]}[ROOT]]"
93 end
94 end
95
96 var g = new TypeTestCovarGenerator
97 g.genall