bench/lang: add bench_base
[nit.git] / benchmarks / languages / bench_typetest_depth.nit
1 #!/usr/bin/env nit
2
3 import bench_base
4
5 class TypeTestDepthGenerator
6 super Generator
7
8 redef fun initnit(res)
9 do
10 for c in classes do
11 res.add "new {c}[Root]"
12 end
13
14 end
15
16 redef fun testnit
17 do
18 return "a isa {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}{c}<Root>()"
28 end
29 end
30
31 redef fun testjava(interfaces)
32 do
33 return "a instanceof {classes[middle]}"
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}{c}<Root>()"
42 end
43 end
44
45 redef fun testcsharp(interfaces)
46 do
47 return "a is {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}{c}[Root]()"
56 end
57 end
58
59 redef fun testscala(interfaces)
60 do
61 return "a.isInstanceOf[{classes[middle]}[Root]]"
62 end
63
64 redef fun initcpp(res)
65 do
66 for c in classes do
67 res.add "new {c}<Root>()"
68 end
69 end
70
71 redef fun testcpp
72 do
73 write "\t\t\t{classes[middle]}<Root> *to = dynamic_cast<{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 \{{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[middle]}[ROOT]"
93 end
94 end
95
96 var g = new TypeTestDepthGenerator
97 g.genall