testml 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (58) hide show
  1. data/.gemspec +3 -1
  2. data/CHANGELOG.yaml +4 -1
  3. data/LICENSE +1 -1
  4. data/README.rdoc +30 -5
  5. data/Rakefile +10 -1
  6. data/ToDo +56 -0
  7. data/lib/rake/testml.rb +14 -0
  8. data/lib/testml.rb +46 -2
  9. data/lib/testml/bridge.rb +5 -0
  10. data/lib/testml/compiler.rb +106 -0
  11. data/lib/testml/compiler/lite.rb +194 -0
  12. data/lib/testml/compiler/pegex.rb +50 -0
  13. data/lib/testml/compiler/pegex/ast.rb +145 -0
  14. data/lib/testml/compiler/pegex/grammar.rb +173 -0
  15. data/lib/testml/library.rb +7 -0
  16. data/lib/testml/library/debug.rb +18 -0
  17. data/lib/testml/library/standard.rb +86 -0
  18. data/lib/testml/runtime.rb +501 -0
  19. data/lib/testml/runtime/unit.rb +94 -0
  20. data/lib/testml/setup.rb +65 -0
  21. data/lib/testml/util.rb +22 -0
  22. data/test/ast/arguments.tml +87 -0
  23. data/test/ast/basic.tml +83 -0
  24. data/test/ast/dataless.tml +36 -0
  25. data/test/ast/exceptions.tml +59 -0
  26. data/test/ast/external.tml +42 -0
  27. data/test/ast/function.tml +276 -0
  28. data/test/ast/label.tml +58 -0
  29. data/test/ast/markers.tml +36 -0
  30. data/test/ast/semicolons.tml +30 -0
  31. data/test/ast/truth.tml +85 -0
  32. data/test/ast/types.tml +163 -0
  33. data/test/compile-lite.rb +38 -0
  34. data/test/compile-testml-document.rb +59 -0
  35. data/test/compile.rb +57 -0
  36. data/test/inline-bridge.rb +30 -0
  37. data/test/inline.rb +28 -0
  38. data/test/strings.rb +24 -0
  39. data/test/testml.rb +38 -0
  40. data/test/testml.yaml +10 -0
  41. data/test/testml/arguments.tml +18 -0
  42. data/test/testml/assertions.tml +15 -0
  43. data/test/testml/basic.tml +37 -0
  44. data/test/testml/dataless.tml +9 -0
  45. data/test/testml/exceptions.tml +16 -0
  46. data/test/testml/external.tml +8 -0
  47. data/test/testml/external1.tml +10 -0
  48. data/test/testml/external2.tml +3 -0
  49. data/test/testml/function.tml +82 -0
  50. data/test/testml/label.tml +24 -0
  51. data/test/testml/markers.tml +19 -0
  52. data/test/testml/semicolons.tml +10 -0
  53. data/test/testml/standard.tml +50 -0
  54. data/test/testml/truth.tml +22 -0
  55. data/test/testml/types.tml +24 -0
  56. data/test/testml_bridge.rb +28 -0
  57. metadata +69 -4
  58. data/test/fail.rb +0 -12
@@ -0,0 +1,42 @@
1
+ --- !!perl/hash:TestML::Function
2
+ namespace:
3
+ TestML: !!perl/hash:TestML::Str
4
+ value: '0.1.0'
5
+
6
+ statements:
7
+ - !!perl/hash:TestML::Assignment
8
+ name: Plan
9
+ expr: !!perl/hash:TestML::Num
10
+ value: 4
11
+ - !!perl/hash:TestML::Statement
12
+ expr: !!perl/hash:TestML::Point
13
+ name: foo
14
+ assert: !!perl/hash:TestML::Assertion
15
+ name: EQ
16
+ expr: !!perl/hash:TestML::Point
17
+ name: bar
18
+ points:
19
+ - foo
20
+ - bar
21
+
22
+ data:
23
+ - !!perl/hash:TestML::Block
24
+ label: Test 2
25
+ points:
26
+ foo: '02134'
27
+ bar: '02134'
28
+ - !!perl/hash:TestML::Block
29
+ label: Test 1
30
+ points:
31
+ foo: '98122'
32
+ bar: '98122'
33
+ - !!perl/hash:TestML::Block
34
+ label: Test 11
35
+ points:
36
+ foo: '90210'
37
+ bar: '90210'
38
+ - !!perl/hash:TestML::Block
39
+ label: Test 111
40
+ points:
41
+ foo: '60067'
42
+ bar: '60067'
@@ -0,0 +1,276 @@
1
+ --- !!perl/hash:TestML::Function
2
+ namespace:
3
+ TestML: !!perl/hash:TestML::Str
4
+ value: '0.1.0'
5
+
6
+ statements:
7
+ - !!perl/hash:TestML::Assignment
8
+ name: Plan
9
+ expr: !!perl/hash:TestML::Num
10
+ value: 21
11
+ - !!perl/hash:TestML::Assignment
12
+ name: Label
13
+ expr: !!perl/hash:TestML::Str
14
+ value: Fruity Tests
15
+ - !!perl/hash:TestML::Statement
16
+ expr: !!perl/hash:TestML::Function
17
+ statements:
18
+ - !!perl/hash:TestML::Assignment
19
+ name: Label
20
+ expr: !!perl/hash:TestML::Str
21
+ value: Anonymous function never called
22
+ - !!perl/hash:TestML::Statement
23
+ expr: !!perl/hash:TestML::Call
24
+ name: 'True'
25
+ assert: !!perl/hash:TestML::Assertion
26
+ name: EQ
27
+ expr: !!perl/hash:TestML::Call
28
+ name: 'False'
29
+ - !!perl/hash:TestML::Assignment
30
+ name: test1
31
+ expr: !!perl/hash:TestML::Function
32
+ signature:
33
+ - f
34
+ - c
35
+ - t
36
+ statements:
37
+ - !!perl/hash:TestML::Statement
38
+ expr: !!perl/hash:TestML::Expression
39
+ calls:
40
+ - !!perl/hash:TestML::Call
41
+ name: List
42
+ args:
43
+ - !!perl/hash:TestML::Call
44
+ name: f
45
+ - !!perl/hash:TestML::Str
46
+ value: ->
47
+ - !!perl/hash:TestML::Call
48
+ name: c
49
+ - !!perl/hash:TestML::Call
50
+ name: Join
51
+ assert: !!perl/hash:TestML::Assertion
52
+ name: EQ
53
+ expr: !!perl/hash:TestML::Call
54
+ name: t
55
+ - !!perl/hash:TestML::Statement
56
+ expr: !!perl/hash:TestML::Expression
57
+ calls:
58
+ - !!perl/hash:TestML::Call
59
+ name: t
60
+ - !!perl/hash:TestML::Call
61
+ name: Strip
62
+ args:
63
+ - !!perl/hash:TestML::Call
64
+ name: f
65
+ - !!perl/hash:TestML::Call
66
+ name: Strip
67
+ args:
68
+ - !!perl/hash:TestML::Str
69
+ value: ->
70
+ assert: !!perl/hash:TestML::Assertion
71
+ name: EQ
72
+ expr: !!perl/hash:TestML::Call
73
+ name: c
74
+ - !!perl/hash:TestML::Statement
75
+ expr: !!perl/hash:TestML::Expression
76
+ calls:
77
+ - !!perl/hash:TestML::Call
78
+ name: t
79
+ - !!perl/hash:TestML::Call
80
+ name: Strip
81
+ args:
82
+ - !!perl/hash:TestML::Str
83
+ value: ->
84
+ assert: !!perl/hash:TestML::Assertion
85
+ name: EQ
86
+ expr: !!perl/hash:TestML::Expression
87
+ calls:
88
+ - !!perl/hash:TestML::Call
89
+ args:
90
+ - !!perl/hash:TestML::Call
91
+ name: f
92
+ - !!perl/hash:TestML::Call
93
+ name: c
94
+ name: List
95
+ - !!perl/hash:TestML::Call
96
+ name: Join
97
+ - !!perl/hash:TestML::Statement
98
+ expr: !!perl/hash:TestML::Expression
99
+ calls:
100
+ - !!perl/hash:TestML::Call
101
+ name: test1
102
+ - !!perl/hash:TestML::Call
103
+ name: Type
104
+ assert: !!perl/hash:TestML::Assertion
105
+ name: EQ
106
+ expr: !!perl/hash:TestML::Str
107
+ value: Func
108
+ - !!perl/hash:TestML::Assignment
109
+ name: Label
110
+ expr: !!perl/hash:TestML::Str
111
+ value: $BlockLabel
112
+ - !!perl/hash:TestML::Statement
113
+ expr: !!perl/hash:TestML::Call
114
+ name: test1
115
+ args:
116
+ - !!perl/hash:TestML::Point
117
+ name: fruit
118
+ - !!perl/hash:TestML::Point
119
+ name: color
120
+ - !!perl/hash:TestML::Point
121
+ name: thing
122
+ points:
123
+ - fruit
124
+ - color
125
+ - thing
126
+ - !!perl/hash:TestML::Assignment
127
+ name: test2
128
+ expr: !!perl/hash:TestML::Function
129
+ statements:
130
+ - !!perl/hash:TestML::Statement
131
+ expr: !!perl/hash:TestML::Call
132
+ name: thing
133
+ assert: !!perl/hash:TestML::Assertion
134
+ name: HAS
135
+ expr: !!perl/hash:TestML::Call
136
+ name: color
137
+ - !!perl/hash:TestML::Statement
138
+ expr: !!perl/hash:TestML::Call
139
+ name: test2
140
+ args:
141
+ - !!perl/hash:TestML::Point
142
+ name: color
143
+ - !!perl/hash:TestML::Point
144
+ name: thing
145
+ points:
146
+ - color
147
+ - thing
148
+ - !!perl/hash:TestML::Assignment
149
+ name: test3
150
+ expr: !!perl/hash:TestML::Function
151
+ signature:
152
+ - a
153
+ - b
154
+ - c
155
+ statements:
156
+ - !!perl/hash:TestML::Statement
157
+ expr: !!perl/hash:TestML::Call
158
+ name: f1
159
+ args:
160
+ - !!perl/hash:TestML::Call
161
+ name: a
162
+ assert: !!perl/hash:TestML::Assertion
163
+ name: EQ
164
+ expr: !!perl/hash:TestML::Call
165
+ name: b
166
+ - !!perl/hash:TestML::Statement
167
+ expr: !!perl/hash:TestML::Call
168
+ name: f2
169
+ args:
170
+ - !!perl/hash:TestML::Call
171
+ name: a
172
+ assert: !!perl/hash:TestML::Assertion
173
+ name: EQ
174
+ expr: !!perl/hash:TestML::Call
175
+ name: c
176
+ - !!perl/hash:TestML::Statement
177
+ expr: !!perl/hash:TestML::Call
178
+ name: test3
179
+ args:
180
+ - !!perl/hash:TestML::Point
181
+ name: input
182
+ - !!perl/hash:TestML::Point
183
+ name: output1
184
+ - !!perl/hash:TestML::Point
185
+ name: output2
186
+ points:
187
+ - input
188
+ - output1
189
+ - output2
190
+ - !!perl/hash:TestML::Assignment
191
+ name: Label
192
+ expr: !!perl/hash:TestML::Str
193
+ value: Passing functions as objects
194
+ - !!perl/hash:TestML::Assignment
195
+ name: test4
196
+ expr: !!perl/hash:TestML::Function
197
+ signature:
198
+ - func
199
+ - num
200
+ statements:
201
+ - !!perl/hash:TestML::Statement
202
+ expr: !!perl/hash:TestML::Expression
203
+ calls:
204
+ - !!perl/hash:TestML::Call
205
+ name: func
206
+ - !!perl/hash:TestML::Call
207
+ name: Type
208
+ assert: !!perl/hash:TestML::Assertion
209
+ name: EQ
210
+ expr: !!perl/hash:TestML::Str
211
+ value: Func
212
+ - !!perl/hash:TestML::Statement
213
+ expr: !!perl/hash:TestML::Call
214
+ name: func
215
+ args:
216
+ - !!perl/hash:TestML::Call
217
+ name: num
218
+ - !!perl/hash:TestML::Assignment
219
+ name: test5
220
+ expr: !!perl/hash:TestML::Function
221
+ signature:
222
+ - num
223
+ statements:
224
+ - !!perl/hash:TestML::Statement
225
+ expr: !!perl/hash:TestML::Call
226
+ name: num
227
+ assert: !!perl/hash:TestML::Assertion
228
+ name: EQ
229
+ expr: !!perl/hash:TestML::Num
230
+ value: 42
231
+ - !!perl/hash:TestML::Statement
232
+ expr: !!perl/hash:TestML::Call
233
+ name: test4
234
+ args:
235
+ - !!perl/hash:TestML::Call
236
+ name: test5
237
+ - !!perl/hash:TestML::Num
238
+ value: 42
239
+
240
+ data:
241
+ - !!perl/hash:TestML::Block
242
+ label: Red Apple
243
+ points:
244
+ fruit: apple
245
+ color: red
246
+ thing: apple->red
247
+ - !!perl/hash:TestML::Block
248
+ label: Orange Orange
249
+ points:
250
+ fruit: orange
251
+ color: orange
252
+ thing: orange->orange
253
+ - !!perl/hash:TestML::Block
254
+ label: Green Grape
255
+ points:
256
+ fruit: grape
257
+ color: green
258
+ thing: grape->green
259
+ - !!perl/hash:TestML::Block
260
+ label: One
261
+ points:
262
+ input: '1'
263
+ output1: '43'
264
+ output2: '2'
265
+ - !!perl/hash:TestML::Block
266
+ label: Two
267
+ points:
268
+ input: '2'
269
+ output1: '86'
270
+ output2: '6'
271
+ - !!perl/hash:TestML::Block
272
+ label: Three
273
+ points:
274
+ input: '5'
275
+ output1: '215'
276
+ output2: '30'
@@ -0,0 +1,58 @@
1
+ --- !!perl/hash:TestML::Function
2
+ namespace:
3
+ TestML: !!perl/hash:TestML::Str
4
+ value: '0.1.0'
5
+
6
+ statements:
7
+ - !!perl/hash:TestML::Assignment
8
+ name: Plan
9
+ expr: !!perl/hash:TestML::Num
10
+ value: 4
11
+ - !!perl/hash:TestML::Assignment
12
+ name: Label
13
+ expr: !!perl/hash:TestML::Str
14
+ value: My label
15
+ - !!perl/hash:TestML::Statement
16
+ expr: !!perl/hash:TestML::Call
17
+ name: Get
18
+ args:
19
+ - !!perl/hash:TestML::Str
20
+ value: Label
21
+ assert: !!perl/hash:TestML::Assertion
22
+ name: EQ
23
+ expr: !!perl/hash:TestML::Str
24
+ value: My label
25
+ - !!perl/hash:TestML::Assignment
26
+ name: Label
27
+ expr: !!perl/hash:TestML::Str
28
+ value: '$BlockLabel: $num) The $fruit'
29
+ - !!perl/hash:TestML::Statement
30
+ expr: !!perl/hash:TestML::Call
31
+ name: GetLabel
32
+ args: []
33
+ assert: !!perl/hash:TestML::Assertion
34
+ name: EQ
35
+ expr: !!perl/hash:TestML::Point
36
+ name: text
37
+ points:
38
+ - text
39
+
40
+ data:
41
+ - !!perl/hash:TestML::Block
42
+ label: A Fruity Test
43
+ points:
44
+ num: '14'
45
+ fruit: apple
46
+ text: 'A Fruity Test: 14) The apple'
47
+ - !!perl/hash:TestML::Block
48
+ label: X
49
+ points:
50
+ num: '21'
51
+ fruit: pear
52
+ text: 'X: 21) The pear'
53
+ - !!perl/hash:TestML::Block
54
+ label: Last Test
55
+ points:
56
+ num: '99'
57
+ fruit: tomato
58
+ text: 'Last Test: 99) The tomato'
@@ -0,0 +1,36 @@
1
+ --- !!perl/hash:TestML::Function
2
+ namespace:
3
+ TestML: !!perl/hash:TestML::Str
4
+ value: '0.1.0'
5
+
6
+ statements:
7
+ - !!perl/hash:TestML::Assignment
8
+ name: Plan
9
+ expr: !!perl/hash:TestML::Num
10
+ value: 2
11
+ - !!perl/hash:TestML::Statement
12
+ assert: !!perl/hash:TestML::Assertion
13
+ name: EQ
14
+ expr: !!perl/hash:TestML::Point
15
+ name: bar
16
+ expr: !!perl/hash:TestML::Point
17
+ name: foo
18
+ points:
19
+ - foo
20
+ - bar
21
+
22
+ data:
23
+ - !!perl/hash:TestML::Block
24
+ label: Test One
25
+ points:
26
+ foo: Hello
27
+ bar: Hello
28
+ - !!perl/hash:TestML::Block
29
+ label: Test Two
30
+ points:
31
+ foo: 'O HAI
32
+
33
+ '
34
+ bar: 'O HAI
35
+
36
+ '
@@ -0,0 +1,30 @@
1
+ --- !!perl/hash:TestML::Function
2
+ namespace:
3
+ TestML: !!perl/hash:TestML::Str
4
+ value: 0.1.0
5
+ statements:
6
+ - !!perl/hash:TestML::Assignment
7
+ name: Plan
8
+ expr: !!perl/hash:TestML::Num
9
+ value: 3
10
+ - !!perl/hash:TestML::Statement
11
+ expr: !!perl/hash:TestML::Str
12
+ value: one
13
+ assert: !!perl/hash:TestML::Assertion
14
+ name: EQ
15
+ expr: !!perl/hash:TestML::Str
16
+ value: one
17
+ - !!perl/hash:TestML::Statement
18
+ expr: !!perl/hash:TestML::Str
19
+ value: two
20
+ assert: !!perl/hash:TestML::Assertion
21
+ name: EQ
22
+ expr: !!perl/hash:TestML::Str
23
+ value: two
24
+ - !!perl/hash:TestML::Statement
25
+ expr: !!perl/hash:TestML::Str
26
+ value: three
27
+ assert: !!perl/hash:TestML::Assertion
28
+ name: EQ
29
+ expr: !!perl/hash:TestML::Str
30
+ value: three
@@ -0,0 +1,85 @@
1
+ --- !!perl/hash:TestML::Function
2
+ namespace:
3
+ TestML: !!perl/hash:TestML::Str
4
+ value: '0.1.0'
5
+
6
+ statements:
7
+ - !!perl/hash:TestML::Assignment
8
+ name: Plan
9
+ expr: !!perl/hash:TestML::Num
10
+ value: 9
11
+ - !!perl/hash:TestML::Assignment
12
+ name: Label
13
+ expr: !!perl/hash:TestML::Str
14
+ value: Boolean OK
15
+ - !!perl/hash:TestML::Statement
16
+ assert: !!perl/hash:TestML::Assertion
17
+ name: OK
18
+ expr: !!perl/hash:TestML::Call
19
+ name: 'True'
20
+ - !!perl/hash:TestML::Statement
21
+ assert: !!perl/hash:TestML::Assertion
22
+ name: OK
23
+ expr: !!perl/hash:TestML::Expression
24
+ calls:
25
+ - !!perl/hash:TestML::Call
26
+ name: 'False'
27
+ - !!perl/hash:TestML::Call
28
+ name: Not
29
+ - !!perl/hash:TestML::Statement
30
+ assert: !!perl/hash:TestML::Assertion
31
+ name: OK
32
+ expr: !!perl/hash:TestML::Expression
33
+ calls:
34
+ - !!perl/hash:TestML::Call
35
+ name: 'True'
36
+ - !!perl/hash:TestML::Call
37
+ name: Not
38
+ - !!perl/hash:TestML::Call
39
+ name: Not
40
+ - !!perl/hash:TestML::Assignment
41
+ name: Label
42
+ expr: !!perl/hash:TestML::Str
43
+ value: String OK
44
+ - !!perl/hash:TestML::Statement
45
+ assert: !!perl/hash:TestML::Assertion
46
+ name: OK
47
+ expr: !!perl/hash:TestML::Str
48
+ value: Text
49
+ - !!perl/hash:TestML::Statement
50
+ assert: !!perl/hash:TestML::Assertion
51
+ name: OK
52
+ expr: !!perl/hash:TestML::Expression
53
+ calls:
54
+ - !!perl/hash:TestML::Str
55
+ value: ''
56
+ - !!perl/hash:TestML::Call
57
+ name: Not
58
+ - !!perl/hash:TestML::Statement
59
+ assert: !!perl/hash:TestML::Assertion
60
+ name: OK
61
+ expr: !!perl/hash:TestML::Str
62
+ value: '0'
63
+ - !!perl/hash:TestML::Assignment
64
+ name: Label
65
+ expr: !!perl/hash:TestML::Str
66
+ value: Number OK
67
+ - !!perl/hash:TestML::Statement
68
+ assert: !!perl/hash:TestML::Assertion
69
+ name: OK
70
+ expr: !!perl/hash:TestML::Expression
71
+ calls:
72
+ - !!perl/hash:TestML::Num
73
+ value: 0
74
+ - !!perl/hash:TestML::Call
75
+ name: Not
76
+ - !!perl/hash:TestML::Statement
77
+ assert: !!perl/hash:TestML::Assertion
78
+ name: OK
79
+ expr: !!perl/hash:TestML::Num
80
+ value: 1
81
+ - !!perl/hash:TestML::Statement
82
+ assert: !!perl/hash:TestML::Assertion
83
+ name: OK
84
+ expr: !!perl/hash:TestML::Num
85
+ value: 42