testml 0.0.1 → 0.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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