rtext 0.4.0 → 0.5.0
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.
- data/CHANGELOG +20 -0
- data/{README → README.rdoc} +5 -1
- data/RText_Protocol +444 -0
- data/Rakefile +10 -10
- data/lib/rtext/completer.rb +32 -26
- data/lib/rtext/context_builder.rb +113 -59
- data/lib/rtext/default_loader.rb +73 -8
- data/lib/rtext/default_service_provider.rb +30 -14
- data/lib/rtext/frontend/config.rb +58 -0
- data/lib/rtext/frontend/connector.rb +233 -0
- data/lib/rtext/frontend/connector_manager.rb +81 -0
- data/lib/rtext/frontend/context.rb +56 -0
- data/lib/rtext/generic.rb +13 -0
- data/lib/rtext/instantiator.rb +30 -7
- data/lib/rtext/language.rb +54 -27
- data/lib/rtext/link_detector.rb +57 -0
- data/lib/rtext/message_helper.rb +77 -0
- data/lib/rtext/parser.rb +19 -68
- data/lib/rtext/serializer.rb +18 -3
- data/lib/rtext/service.rb +182 -118
- data/lib/rtext/tokenizer.rb +102 -0
- data/test/completer_test.rb +327 -70
- data/test/context_builder_test.rb +671 -91
- data/test/instantiator_test.rb +153 -0
- data/test/integration/backend.out +10 -0
- data/test/integration/crash_on_request_editor.rb +12 -0
- data/test/integration/ecore_editor.rb +50 -0
- data/test/integration/frontend.log +25138 -0
- data/test/integration/model/invalid_encoding.invenc +2 -0
- data/test/integration/model/test.crash_on_request +18 -0
- data/test/integration/model/test.crashing_backend +18 -0
- data/test/integration/model/test.dont_open_socket +0 -0
- data/test/integration/model/test.invalid_cmd_line +0 -0
- data/test/integration/model/test.not_in_rtext +0 -0
- data/test/integration/model/test_large_with_errors.ect3 +43523 -0
- data/test/integration/model/test_metamodel.ect +18 -0
- data/test/integration/model/test_metamodel2.ect +5 -0
- data/test/integration/model/test_metamodel_error.ect2 +3 -0
- data/test/integration/model/test_metamodel_ok.ect2 +18 -0
- data/test/integration/test.rb +684 -0
- data/test/link_detector_test.rb +276 -0
- data/test/message_helper_test.rb +118 -0
- data/test/rtext_test.rb +4 -1
- data/test/serializer_test.rb +96 -1
- data/test/tokenizer_test.rb +125 -0
- metadata +36 -10
- data/RText_Plugin_Implementation_Guide +0 -268
- data/lib/rtext_plugin/connection_manager.rb +0 -59
@@ -11,37 +11,430 @@ module TestMM
|
|
11
11
|
extend RGen::MetamodelBuilder::ModuleExtension
|
12
12
|
class TestNode < RGen::MetamodelBuilder::MMBase
|
13
13
|
has_attr 'text', String
|
14
|
+
has_attr 'unlabled', String
|
15
|
+
has_many_attr 'unlabled_array', String
|
14
16
|
has_many_attr 'nums', Integer
|
17
|
+
has_many_attr 'strings', String
|
18
|
+
has_attr 'boolean', Boolean
|
15
19
|
has_one 'related', TestNode
|
16
20
|
has_many 'others', TestNode
|
17
21
|
contains_many 'childs', TestNode, 'parent'
|
18
22
|
end
|
19
23
|
end
|
20
24
|
|
25
|
+
def test_root
|
26
|
+
c = build_context TestMM, <<-END
|
27
|
+
|
|
28
|
+
END
|
29
|
+
assert_context c, :prefix => "", :feature => nil, :in_array => false, :in_block => false
|
30
|
+
assert_nil(c.element)
|
31
|
+
end
|
32
|
+
|
33
|
+
def test_root2
|
34
|
+
c = build_context TestMM, <<-END
|
35
|
+
|TestNode
|
36
|
+
END
|
37
|
+
assert_context c, :prefix => "", :feature => nil, :in_array => false, :in_block => false
|
38
|
+
assert_nil(c.element)
|
39
|
+
end
|
40
|
+
|
41
|
+
def test_root_in_cmd
|
42
|
+
c = build_context TestMM, <<-END
|
43
|
+
Test|Node
|
44
|
+
END
|
45
|
+
assert_context c, :prefix => "Test", :feature => nil, :in_array => false, :in_block => false
|
46
|
+
assert_nil(c.element)
|
47
|
+
end
|
48
|
+
|
49
|
+
def test_root_after_cmd
|
50
|
+
c = build_context TestMM, <<-END
|
51
|
+
TestNode|
|
52
|
+
END
|
53
|
+
assert_context c, :prefix => "TestNode", :feature => nil, :in_array => false, :in_block => false
|
54
|
+
assert_nil(c.element)
|
55
|
+
end
|
56
|
+
|
57
|
+
def test_root_after_cmd2
|
58
|
+
c = build_context TestMM, <<-END
|
59
|
+
TestNode |
|
60
|
+
END
|
61
|
+
assert_context c, :prefix => "", :feature => "unlabled", :in_array => false, :in_block => false
|
62
|
+
assert(c.element.is_a?(TestMM::TestNode))
|
63
|
+
end
|
64
|
+
|
65
|
+
def test_root_in_lable
|
66
|
+
c = build_context TestMM, <<-END
|
67
|
+
TestNode ot|hers:
|
68
|
+
END
|
69
|
+
assert_context c, :prefix => "ot", :feature => "unlabled", :in_array => false, :in_block => false
|
70
|
+
assert(c.element.is_a?(TestMM::TestNode))
|
71
|
+
end
|
72
|
+
|
73
|
+
def test_root_after_lable
|
74
|
+
c = build_context TestMM, <<-END
|
75
|
+
TestNode others:|
|
76
|
+
END
|
77
|
+
assert_context c, :prefix => "", :feature => "others", :in_array => false, :in_block => false, :after_label => true
|
78
|
+
assert(c.element.is_a?(TestMM::TestNode))
|
79
|
+
end
|
80
|
+
|
81
|
+
def test_root_after_lable2
|
82
|
+
c = build_context TestMM, <<-END
|
83
|
+
TestNode others: |
|
84
|
+
END
|
85
|
+
assert_context c, :prefix => "", :feature => "others", :in_array => false, :in_block => false, :after_label => true
|
86
|
+
assert(c.element.is_a?(TestMM::TestNode))
|
87
|
+
end
|
88
|
+
|
89
|
+
def test_root_after_lable_with_value
|
90
|
+
c = build_context TestMM, <<-END
|
91
|
+
TestNode text: xx, others: |
|
92
|
+
END
|
93
|
+
assert_context c, :prefix => "", :feature => "others", :in_array => false, :in_block => false, :after_label => true
|
94
|
+
assert(c.element.is_a?(TestMM::TestNode))
|
95
|
+
assert_equal("xx", c.element.text)
|
96
|
+
end
|
97
|
+
|
98
|
+
def test_root_after_lable_with_value_missing_comma
|
99
|
+
c = build_context TestMM, <<-END
|
100
|
+
TestNode text: xx others: |
|
101
|
+
END
|
102
|
+
assert_context c, :prefix => "", :feature => "others", :in_array => false, :in_block => false, :after_label => true
|
103
|
+
assert(c.element.is_a?(TestMM::TestNode))
|
104
|
+
assert_equal("xx", c.element.text)
|
105
|
+
end
|
106
|
+
|
107
|
+
def test_root_after_unlabled
|
108
|
+
c = build_context TestMM, <<-END
|
109
|
+
TestNode "bla"|
|
110
|
+
END
|
111
|
+
assert_context c, :prefix => "bla", :feature => "unlabled", :in_array => false, :in_block => false
|
112
|
+
assert(c.element.is_a?(TestMM::TestNode))
|
113
|
+
assert_nil(c.element.unlabled)
|
114
|
+
end
|
115
|
+
|
116
|
+
def test_root_after_unlabled_string_with_comma
|
117
|
+
c = build_context TestMM, <<-END
|
118
|
+
TestNode "a,b"|
|
119
|
+
END
|
120
|
+
assert_context c, :prefix => "a,b", :feature => "unlabled", :in_array => false, :in_block => false
|
121
|
+
assert(c.element.is_a?(TestMM::TestNode))
|
122
|
+
assert_nil(c.element.unlabled)
|
123
|
+
end
|
124
|
+
|
125
|
+
def test_root_after_unlabled_string_with_quoted_quote
|
126
|
+
c = build_context TestMM, <<-END
|
127
|
+
TestNode "a,\\"b"|
|
128
|
+
END
|
129
|
+
assert_context c, :prefix => "a,\"b", :feature => "unlabled", :in_array => false, :in_block => false
|
130
|
+
assert(c.element.is_a?(TestMM::TestNode))
|
131
|
+
assert_nil(c.element.unlabled)
|
132
|
+
end
|
133
|
+
|
134
|
+
def test_root_after_unlabled_unclosed_string_with_comma
|
135
|
+
c = build_context TestMM, <<-END
|
136
|
+
TestNode "a,b|
|
137
|
+
END
|
138
|
+
assert_context c, :prefix => "\"a,b", :feature => "unlabled", :in_array => false, :in_block => false
|
139
|
+
assert(c.element.is_a?(TestMM::TestNode))
|
140
|
+
assert_nil(c.element.unlabled)
|
141
|
+
end
|
142
|
+
|
143
|
+
def test_root_after_unlabled_no_quot
|
144
|
+
c = build_context TestMM, <<-END
|
145
|
+
TestNode bla|
|
146
|
+
END
|
147
|
+
assert_context c, :prefix => "bla", :feature => "unlabled", :in_array => false, :in_block => false
|
148
|
+
assert(c.element.is_a?(TestMM::TestNode))
|
149
|
+
assert_nil(c.element.unlabled)
|
150
|
+
end
|
151
|
+
|
152
|
+
def test_root_after_unlabled2
|
153
|
+
c = build_context TestMM, <<-END
|
154
|
+
TestNode "bla" |
|
155
|
+
END
|
156
|
+
assert_context c, :prefix => "", :feature => nil, :in_array => false, :in_block => false, :problem => :missing_comma
|
157
|
+
assert(c.element.is_a?(TestMM::TestNode))
|
158
|
+
assert_equal("bla", c.element.unlabled)
|
159
|
+
end
|
160
|
+
|
161
|
+
def test_root_after_unlabled2_no_quot
|
162
|
+
c = build_context TestMM, <<-END
|
163
|
+
TestNode bla |
|
164
|
+
END
|
165
|
+
assert_context c, :prefix => "", :feature => nil, :in_array => false, :in_block => false, :problem => :missing_comma
|
166
|
+
assert(c.element.is_a?(TestMM::TestNode))
|
167
|
+
assert_equal("bla", c.element.unlabled)
|
168
|
+
end
|
169
|
+
|
170
|
+
def test_root_after_unlabled_comma_no_quot
|
171
|
+
c = build_context TestMM, <<-END
|
172
|
+
TestNode bla,|
|
173
|
+
END
|
174
|
+
assert_context c, :prefix => "", :feature => "unlabled_array", :in_array => false, :in_block => false
|
175
|
+
assert(c.element.is_a?(TestMM::TestNode))
|
176
|
+
assert_equal("bla", c.element.unlabled)
|
177
|
+
end
|
178
|
+
|
179
|
+
def test_root_after_unlabled_comma
|
180
|
+
c = build_context TestMM, <<-END
|
181
|
+
TestNode "bla", |
|
182
|
+
END
|
183
|
+
assert_context c, :prefix => "", :feature => "unlabled_array", :in_array => false, :in_block => false
|
184
|
+
assert(c.element.is_a?(TestMM::TestNode))
|
185
|
+
assert_equal("bla", c.element.unlabled)
|
186
|
+
end
|
187
|
+
|
188
|
+
def test_root_after_unlabled_comma_no_ws
|
189
|
+
c = build_context TestMM, <<-END
|
190
|
+
TestNode "bla",|
|
191
|
+
END
|
192
|
+
assert_context c, :prefix => "", :feature => "unlabled_array", :in_array => false, :in_block => false
|
193
|
+
assert(c.element.is_a?(TestMM::TestNode))
|
194
|
+
assert_equal("bla", c.element.unlabled)
|
195
|
+
end
|
196
|
+
|
197
|
+
def test_root_unlabled_array
|
198
|
+
c = build_context TestMM, <<-END
|
199
|
+
TestNode "bla", [|
|
200
|
+
END
|
201
|
+
assert_context c, :prefix => "", :feature => "unlabled_array", :in_array => true, :in_block => false
|
202
|
+
assert(c.element.is_a?(TestMM::TestNode))
|
203
|
+
assert_equal("bla", c.element.unlabled)
|
204
|
+
assert_equal([], c.element.unlabled_array)
|
205
|
+
end
|
206
|
+
|
207
|
+
def test_root_unlabled_array_first_value
|
208
|
+
c = build_context TestMM, <<-END
|
209
|
+
TestNode "bla", [a|
|
210
|
+
END
|
211
|
+
assert_context c, :prefix => "a", :feature => "unlabled_array", :in_array => true, :in_block => false
|
212
|
+
assert(c.element.is_a?(TestMM::TestNode))
|
213
|
+
assert_equal("bla", c.element.unlabled)
|
214
|
+
assert_equal([], c.element.unlabled_array)
|
215
|
+
end
|
216
|
+
|
217
|
+
def test_root_unlabled_array_first_value_quoted
|
218
|
+
c = build_context TestMM, <<-END
|
219
|
+
TestNode "bla", ["a"|
|
220
|
+
END
|
221
|
+
assert_context c, :prefix => "a", :feature => "unlabled_array", :in_array => true, :in_block => false
|
222
|
+
assert(c.element.is_a?(TestMM::TestNode))
|
223
|
+
assert_equal("bla", c.element.unlabled)
|
224
|
+
assert_equal([], c.element.unlabled_array)
|
225
|
+
end
|
226
|
+
|
227
|
+
def test_root_unlabled_array_first_value_quoted_open
|
228
|
+
c = build_context TestMM, <<-END
|
229
|
+
TestNode "bla", ["a|
|
230
|
+
END
|
231
|
+
assert_context c, :prefix => "\"a", :feature => "unlabled_array", :in_array => true, :in_block => false
|
232
|
+
assert(c.element.is_a?(TestMM::TestNode))
|
233
|
+
assert_equal("bla", c.element.unlabled)
|
234
|
+
assert_equal([], c.element.unlabled_array)
|
235
|
+
end
|
236
|
+
|
237
|
+
def test_root_unlabled_array_first_value_after_space
|
238
|
+
c = build_context TestMM, <<-END
|
239
|
+
TestNode "bla", ["a" |
|
240
|
+
END
|
241
|
+
# although not having a comma in front is an error, we are already within a feature
|
242
|
+
# due to the opening square bracket
|
243
|
+
assert_context c, :prefix => "", :feature => "unlabled_array", :in_array => true, :in_block => false, :problem => :missing_comma
|
244
|
+
assert(c.element.is_a?(TestMM::TestNode))
|
245
|
+
assert_equal("bla", c.element.unlabled)
|
246
|
+
assert_equal(["a"], c.element.unlabled_array)
|
247
|
+
end
|
248
|
+
|
249
|
+
def test_root_unlabled_array_first_value_after_comma
|
250
|
+
c = build_context TestMM, <<-END
|
251
|
+
TestNode "bla", ["a",|
|
252
|
+
END
|
253
|
+
assert_context c, :prefix => "", :feature => "unlabled_array", :in_array => true, :in_block => false
|
254
|
+
assert(c.element.is_a?(TestMM::TestNode))
|
255
|
+
assert_equal("bla", c.element.unlabled)
|
256
|
+
assert_equal(["a"], c.element.unlabled_array)
|
257
|
+
end
|
258
|
+
|
259
|
+
def test_root_unlabled_array_second_value
|
260
|
+
c = build_context TestMM, <<-END
|
261
|
+
TestNode "bla", ["a", b|
|
262
|
+
END
|
263
|
+
assert_context c, :prefix => "b", :feature => "unlabled_array", :in_array => true, :in_block => false
|
264
|
+
assert(c.element.is_a?(TestMM::TestNode))
|
265
|
+
assert_equal("bla", c.element.unlabled)
|
266
|
+
assert_equal(["a"], c.element.unlabled_array)
|
267
|
+
end
|
268
|
+
|
269
|
+
def test_root_unlabled_array_second_value_quoted
|
270
|
+
c = build_context TestMM, <<-END
|
271
|
+
TestNode "bla", ["a", "b"|
|
272
|
+
END
|
273
|
+
assert_context c, :prefix => "b", :feature => "unlabled_array", :in_array => true, :in_block => false
|
274
|
+
assert(c.element.is_a?(TestMM::TestNode))
|
275
|
+
assert_equal("bla", c.element.unlabled)
|
276
|
+
assert_equal(["a"], c.element.unlabled_array)
|
277
|
+
end
|
278
|
+
|
279
|
+
def test_root_unlabled_array_second_value_quoted_open
|
280
|
+
c = build_context TestMM, <<-END
|
281
|
+
TestNode "bla", ["a", "b|
|
282
|
+
END
|
283
|
+
assert_context c, :prefix => "\"b", :feature => "unlabled_array", :in_array => true, :in_block => false
|
284
|
+
assert(c.element.is_a?(TestMM::TestNode))
|
285
|
+
assert_equal("bla", c.element.unlabled)
|
286
|
+
assert_equal(["a"], c.element.unlabled_array)
|
287
|
+
end
|
288
|
+
|
289
|
+
def test_root_unlabled_array_second_value_after_comma
|
290
|
+
c = build_context TestMM, <<-END
|
291
|
+
TestNode "bla", ["a", b,|
|
292
|
+
END
|
293
|
+
assert_context c, :prefix => "", :feature => "unlabled_array", :in_array => true, :in_block => false
|
294
|
+
assert(c.element.is_a?(TestMM::TestNode))
|
295
|
+
assert_equal("bla", c.element.unlabled)
|
296
|
+
assert_equal(["a", "b"], c.element.unlabled_array)
|
297
|
+
end
|
298
|
+
|
299
|
+
def test_root_unlabled_array_after_array
|
300
|
+
c = build_context TestMM, <<-END
|
301
|
+
TestNode "bla", ["a", b]|
|
302
|
+
END
|
303
|
+
assert_context c, :prefix => "", :feature => nil, :in_array => false, :in_block => false, :problem => :missing_comma
|
304
|
+
assert(c.element.is_a?(TestMM::TestNode))
|
305
|
+
assert_equal("bla", c.element.unlabled)
|
306
|
+
assert_equal(["a", "b"], c.element.unlabled_array)
|
307
|
+
end
|
308
|
+
|
309
|
+
def test_root_unlabled_array_after_array2
|
310
|
+
c = build_context TestMM, <<-END
|
311
|
+
TestNode "bla", ["a", b] |
|
312
|
+
END
|
313
|
+
assert_context c, :prefix => "", :feature => nil, :in_array => false, :in_block => false, :problem => :missing_comma
|
314
|
+
assert(c.element.is_a?(TestMM::TestNode))
|
315
|
+
assert_equal("bla", c.element.unlabled)
|
316
|
+
assert_equal(["a", "b"], c.element.unlabled_array)
|
317
|
+
end
|
318
|
+
|
319
|
+
def test_root_unlabled_array_after_array3
|
320
|
+
c = build_context TestMM, <<-END
|
321
|
+
TestNode "bla", ["a", b],|
|
322
|
+
END
|
323
|
+
assert_context c, :prefix => "", :feature => nil, :in_array => false, :in_block => false
|
324
|
+
assert(c.element.is_a?(TestMM::TestNode))
|
325
|
+
assert_equal("bla", c.element.unlabled)
|
326
|
+
assert_equal(["a", "b"], c.element.unlabled_array)
|
327
|
+
end
|
328
|
+
|
329
|
+
def test_root_labled_string_value
|
330
|
+
c = build_context TestMM, <<-END
|
331
|
+
TestNode text: "a,b"|
|
332
|
+
END
|
333
|
+
assert_context c, :prefix => "a,b", :feature => "text", :in_array => false, :in_block => false, :after_label => true
|
334
|
+
assert(c.element.is_a?(TestMM::TestNode))
|
335
|
+
assert_nil(c.element.text)
|
336
|
+
end
|
337
|
+
|
338
|
+
def test_root_labled_string_value2
|
339
|
+
c = build_context TestMM, <<-END
|
340
|
+
TestNode text: "a,b" |
|
341
|
+
END
|
342
|
+
assert_context c, :prefix => "", :feature => nil, :in_array => false, :in_block => false, :problem => :missing_comma
|
343
|
+
assert(c.element.is_a?(TestMM::TestNode))
|
344
|
+
assert_equal("a,b", c.element.text)
|
345
|
+
end
|
346
|
+
|
347
|
+
def test_root_labled_string_value3
|
348
|
+
c = build_context TestMM, <<-END
|
349
|
+
TestNode text: "a,b",|
|
350
|
+
END
|
351
|
+
assert_context c, :prefix => "", :feature => nil, :in_array => false, :in_block => false
|
352
|
+
assert(c.element.is_a?(TestMM::TestNode))
|
353
|
+
assert_equal("a,b", c.element.text)
|
354
|
+
end
|
355
|
+
|
356
|
+
def test_root_labled_string_value_within
|
357
|
+
c = build_context TestMM, <<-END
|
358
|
+
TestNode text: "a,b|
|
359
|
+
END
|
360
|
+
assert_context c, :prefix => "\"a,b", :feature => "text", :in_array => false, :in_block => false, :after_label => true
|
361
|
+
assert(c.element.is_a?(TestMM::TestNode))
|
362
|
+
assert_nil(c.element.text)
|
363
|
+
end
|
364
|
+
|
365
|
+
def test_root_labled_string_value_within_no_ws
|
366
|
+
c = build_context TestMM, <<-END
|
367
|
+
TestNode text:"a,b|
|
368
|
+
END
|
369
|
+
assert_context c, :prefix => "\"a,b", :feature => "text", :in_array => false, :in_block => false, :after_label => true
|
370
|
+
assert(c.element.is_a?(TestMM::TestNode))
|
371
|
+
assert_nil(c.element.text)
|
372
|
+
end
|
373
|
+
|
374
|
+
def test_root_labled_string_value_no_quot
|
375
|
+
c = build_context TestMM, <<-END
|
376
|
+
TestNode text: t|
|
377
|
+
END
|
378
|
+
assert_context c, :prefix => "t", :feature => "text", :in_array => false, :in_block => false, :after_label => true
|
379
|
+
assert(c.element.is_a?(TestMM::TestNode))
|
380
|
+
assert_nil(c.element.text)
|
381
|
+
end
|
382
|
+
|
383
|
+
def test_root_labled_bool_value
|
384
|
+
c = build_context TestMM, <<-END
|
385
|
+
TestNode boolean: t|
|
386
|
+
END
|
387
|
+
assert_context c, :prefix => "t", :feature => "boolean", :in_array => false, :in_block => false, :after_label => true
|
388
|
+
assert(c.element.is_a?(TestMM::TestNode))
|
389
|
+
assert_nil(c.element.text)
|
390
|
+
end
|
391
|
+
|
392
|
+
def test_root_after_curly
|
393
|
+
c = build_context TestMM, <<-END
|
394
|
+
TestNode {|
|
395
|
+
END
|
396
|
+
assert_context c, :prefix => "", :feature => nil, :in_array => false, :in_block => false, :problem => :after_curly
|
397
|
+
assert(c.element.is_a?(TestMM::TestNode))
|
398
|
+
end
|
399
|
+
|
21
400
|
def test_in_cmd_after_cmd
|
22
401
|
c = build_context TestMM, <<-END
|
23
402
|
TestNode text: a {
|
24
403
|
TestNode nums: 3 {
|
25
404
|
TestNode |others: /dummy {
|
26
405
|
END
|
27
|
-
|
28
|
-
assert_nil(c.feature)
|
29
|
-
assert(!c.in_array)
|
30
|
-
assert(!c.in_block)
|
406
|
+
assert_context c, :prefix => "", :feature => "unlabled", :in_array => false, :in_block => false
|
31
407
|
assert_simple_model(c.element)
|
32
408
|
assert_other_values(c.element, [])
|
33
409
|
end
|
34
410
|
|
411
|
+
def test_in_cmd_after_cmd2
|
412
|
+
c = build_context TestMM, <<-END
|
413
|
+
TestNode text: a {
|
414
|
+
TestNode| nums: 3 {
|
415
|
+
END
|
416
|
+
assert_context c, :prefix => "TestNode", :feature => nil, :in_array => false, :in_block => true
|
417
|
+
assert(c.element.is_a?(TestMM::TestNode))
|
418
|
+
end
|
419
|
+
|
35
420
|
def test_in_cmd_in_label
|
36
421
|
c = build_context TestMM, <<-END
|
37
422
|
TestNode text: a {
|
38
423
|
TestNode nums: 3 {
|
39
424
|
TestNode ot|hers: /dummy {
|
40
425
|
END
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
426
|
+
assert_context c, :prefix => "ot", :feature => "unlabled", :in_array => false, :in_block => false
|
427
|
+
assert_simple_model(c.element)
|
428
|
+
assert_other_values(c.element, [])
|
429
|
+
end
|
430
|
+
|
431
|
+
def test_in_cmd_after_label
|
432
|
+
c = build_context TestMM, <<-END
|
433
|
+
TestNode text: a {
|
434
|
+
TestNode nums: 3 {
|
435
|
+
TestNode others: |/dummy {
|
436
|
+
END
|
437
|
+
assert_context c, :prefix => "", :feature => "others", :in_array => false, :in_block => false, :after_label => true
|
45
438
|
assert_simple_model(c.element)
|
46
439
|
assert_other_values(c.element, [])
|
47
440
|
end
|
@@ -52,24 +445,18 @@ def test_in_cmd_in_label2
|
|
52
445
|
TestNode nums: 3 {
|
53
446
|
TestNode others:| /dummy {
|
54
447
|
END
|
55
|
-
|
56
|
-
assert_equal("others", c.feature.name)
|
57
|
-
assert(!c.in_array)
|
58
|
-
assert(!c.in_block)
|
448
|
+
assert_context c, :prefix => "", :feature => "others", :in_array => false, :in_block => false, :after_label => true
|
59
449
|
assert_simple_model(c.element)
|
60
450
|
assert_other_values(c.element, [])
|
61
451
|
end
|
62
452
|
|
63
|
-
def
|
453
|
+
def test_in_cmd_after_label_no_ws
|
64
454
|
c = build_context TestMM, <<-END
|
65
455
|
TestNode text: a {
|
66
456
|
TestNode nums: 3 {
|
67
|
-
TestNode others
|
457
|
+
TestNode others:|/dummy {
|
68
458
|
END
|
69
|
-
|
70
|
-
assert_equal("others", c.feature.name)
|
71
|
-
assert(!c.in_array)
|
72
|
-
assert(!c.in_block)
|
459
|
+
assert_context c, :prefix => "", :feature => "others", :in_array => false, :in_block => false, :after_label => true
|
73
460
|
assert_simple_model(c.element)
|
74
461
|
assert_other_values(c.element, [])
|
75
462
|
end
|
@@ -80,10 +467,7 @@ def test_in_cmd_in_value
|
|
80
467
|
TestNode nums: 3 {
|
81
468
|
TestNode others: /du|mmy {
|
82
469
|
END
|
83
|
-
|
84
|
-
assert_equal("others", c.feature.name)
|
85
|
-
assert(!c.in_array)
|
86
|
-
assert(!c.in_block)
|
470
|
+
assert_context c, :prefix => "/du", :feature => "others", :in_array => false, :in_block => false, :after_label => true
|
87
471
|
assert_simple_model(c.element)
|
88
472
|
assert_other_values(c.element, [])
|
89
473
|
end
|
@@ -94,10 +478,7 @@ def test_in_cmd_in_value2
|
|
94
478
|
TestNode nums: 3 {
|
95
479
|
TestNode others: /dummy| {
|
96
480
|
END
|
97
|
-
|
98
|
-
assert_equal("others", c.feature.name)
|
99
|
-
assert(!c.in_array)
|
100
|
-
assert(!c.in_block)
|
481
|
+
assert_context c, :prefix => "/dummy", :feature => "others", :in_array => false, :in_block => false, :after_label => true
|
101
482
|
assert_simple_model(c.element)
|
102
483
|
assert_other_values(c.element, [])
|
103
484
|
end
|
@@ -108,10 +489,40 @@ def test_in_cmd_after_value
|
|
108
489
|
TestNode nums: 3 {
|
109
490
|
TestNode others: /dummy, |text: x {
|
110
491
|
END
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
492
|
+
assert_context c, :prefix => "", :feature => nil, :in_array => false, :in_block => false
|
493
|
+
assert_simple_model(c.element)
|
494
|
+
assert_other_values(c.element, ["/dummy"])
|
495
|
+
end
|
496
|
+
|
497
|
+
def test_in_cmd_after_value_no_ws
|
498
|
+
c = build_context TestMM, <<-END
|
499
|
+
TestNode text: a {
|
500
|
+
TestNode nums: 3 {
|
501
|
+
TestNode others: /dummy,|text: x {
|
502
|
+
END
|
503
|
+
assert_context c, :prefix => "", :feature => nil, :in_array => false, :in_block => false
|
504
|
+
assert_simple_model(c.element)
|
505
|
+
assert_other_values(c.element, ["/dummy"])
|
506
|
+
end
|
507
|
+
|
508
|
+
def test_in_cmd_after_value_no_ws2
|
509
|
+
c = build_context TestMM, <<-END
|
510
|
+
TestNode text: a {
|
511
|
+
TestNode nums: 3 {
|
512
|
+
TestNode others:/dummy,|text: x {
|
513
|
+
END
|
514
|
+
assert_context c, :prefix => "", :feature => nil, :in_array => false, :in_block => false
|
515
|
+
assert_simple_model(c.element)
|
516
|
+
assert_other_values(c.element, ["/dummy"])
|
517
|
+
end
|
518
|
+
|
519
|
+
def test_in_cmd_after_value_directly_after_comma
|
520
|
+
c = build_context TestMM, <<-END
|
521
|
+
TestNode text: a {
|
522
|
+
TestNode nums: 3 {
|
523
|
+
TestNode others: /dummy,| text: x {
|
524
|
+
END
|
525
|
+
assert_context c, :prefix => "", :feature => nil, :in_array => false, :in_block => false
|
115
526
|
assert_simple_model(c.element)
|
116
527
|
assert_other_values(c.element, ["/dummy"])
|
117
528
|
end
|
@@ -122,10 +533,7 @@ def test_in_cmd_in_second_label
|
|
122
533
|
TestNode nums: 3 {
|
123
534
|
TestNode others: /dummy, te|xt: x {
|
124
535
|
END
|
125
|
-
|
126
|
-
assert_nil(c.feature)
|
127
|
-
assert(!c.in_array)
|
128
|
-
assert(!c.in_block)
|
536
|
+
assert_context c, :prefix => "te", :feature => nil, :in_array => false, :in_block => false
|
129
537
|
assert_simple_model(c.element)
|
130
538
|
assert_other_values(c.element, ["/dummy"])
|
131
539
|
end
|
@@ -136,10 +544,18 @@ def test_in_cmd_after_second_label
|
|
136
544
|
TestNode nums: 3 {
|
137
545
|
TestNode others: /dummy, text: |x {
|
138
546
|
END
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
547
|
+
assert_context c, :prefix => "", :feature => "text", :in_array => false, :in_block => false, :after_label => true
|
548
|
+
assert_simple_model(c.element)
|
549
|
+
assert_other_values(c.element, ["/dummy"])
|
550
|
+
end
|
551
|
+
|
552
|
+
def test_in_cmd_after_second_label_no_ws
|
553
|
+
c = build_context TestMM, <<-END
|
554
|
+
TestNode text: a {
|
555
|
+
TestNode nums: 3 {
|
556
|
+
TestNode others:/dummy,text:|x {
|
557
|
+
END
|
558
|
+
assert_context c, :prefix => "", :feature => "text", :in_array => false, :in_block => false, :after_label => true
|
143
559
|
assert_simple_model(c.element)
|
144
560
|
assert_other_values(c.element, ["/dummy"])
|
145
561
|
end
|
@@ -150,10 +566,18 @@ def test_in_cmd_in_second_value
|
|
150
566
|
TestNode nums: 3 {
|
151
567
|
TestNode others: /dummy, text: x| {
|
152
568
|
END
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
569
|
+
assert_context c, :prefix => "x", :feature => "text", :in_array => false, :in_block => false, :after_label => true
|
570
|
+
assert_simple_model(c.element)
|
571
|
+
assert_other_values(c.element, ["/dummy"])
|
572
|
+
end
|
573
|
+
|
574
|
+
def test_in_cmd_in_second_value_no_ws
|
575
|
+
c = build_context TestMM, <<-END
|
576
|
+
TestNode text: a {
|
577
|
+
TestNode nums: 3 {
|
578
|
+
TestNode others:/dummy,text:x| {
|
579
|
+
END
|
580
|
+
assert_context c, :prefix => "x", :feature => "text", :in_array => false, :in_block => false, :after_label => true
|
157
581
|
assert_simple_model(c.element)
|
158
582
|
assert_other_values(c.element, ["/dummy"])
|
159
583
|
end
|
@@ -164,24 +588,106 @@ def test_in_cmd_in_array
|
|
164
588
|
TestNode nums: 3 {
|
165
589
|
TestNode others: [|/dummy, text: x
|
166
590
|
END
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
|
591
|
+
assert_context c, :prefix => "", :feature => "others", :in_array => true, :in_block => false, :after_label => true
|
592
|
+
assert_simple_model(c.element)
|
593
|
+
assert_other_values(c.element, [])
|
594
|
+
end
|
595
|
+
|
596
|
+
def test_in_cmd_in_array_no_ws
|
597
|
+
c = build_context TestMM, <<-END
|
598
|
+
TestNode text: a {
|
599
|
+
TestNode nums: 3 {
|
600
|
+
TestNode others:[|/dummy, text: x
|
601
|
+
END
|
602
|
+
assert_context c, :prefix => "", :feature => "others", :in_array => true, :in_block => false, :after_label => true
|
171
603
|
assert_simple_model(c.element)
|
172
604
|
assert_other_values(c.element, [])
|
173
605
|
end
|
174
606
|
|
607
|
+
def test_in_cmd_in_array_within_string_value_empty
|
608
|
+
c = build_context TestMM, <<-END
|
609
|
+
TestNode text: a {
|
610
|
+
TestNode nums: 3 {
|
611
|
+
TestNode strings: ["|
|
612
|
+
END
|
613
|
+
assert_context c, :prefix => "\"", :feature => "strings", :in_array => true, :in_block => false, :after_label => true
|
614
|
+
assert_simple_model(c.element)
|
615
|
+
assert_other_values(c.element, [])
|
616
|
+
end
|
617
|
+
|
618
|
+
def test_in_cmd_in_array_within_string_value
|
619
|
+
c = build_context TestMM, <<-END
|
620
|
+
TestNode text: a {
|
621
|
+
TestNode nums: 3 {
|
622
|
+
TestNode strings: ["a,b|
|
623
|
+
END
|
624
|
+
assert_context c, :prefix => "\"a,b", :feature => "strings", :in_array => true, :in_block => false, :after_label => true
|
625
|
+
assert_simple_model(c.element)
|
626
|
+
assert_other_values(c.element, [])
|
627
|
+
end
|
628
|
+
|
629
|
+
def test_in_cmd_in_array_within_second_string_value
|
630
|
+
c = build_context TestMM, <<-END
|
631
|
+
TestNode text: a {
|
632
|
+
TestNode nums: 3 {
|
633
|
+
TestNode strings: ["a,b", "c,d|
|
634
|
+
END
|
635
|
+
assert_context c, :prefix => "\"c,d", :feature => "strings", :in_array => true, :in_block => false, :after_label => true
|
636
|
+
assert_simple_model(c.element)
|
637
|
+
assert_other_values(c.element, [])
|
638
|
+
end
|
639
|
+
|
640
|
+
def test_in_cmd_in_array_after_second_string_value
|
641
|
+
c = build_context TestMM, <<-END
|
642
|
+
TestNode text: a {
|
643
|
+
TestNode nums: 3 {
|
644
|
+
TestNode strings: ["a,b", "c,d"|
|
645
|
+
END
|
646
|
+
assert_context c, :prefix => "c,d", :feature => "strings", :in_array => true, :in_block => false, :after_label => true
|
647
|
+
assert_simple_model(c.element)
|
648
|
+
assert_equal(["a,b"], c.element.strings)
|
649
|
+
end
|
650
|
+
|
651
|
+
def test_in_cmd_in_array_after_second_string_value2
|
652
|
+
c = build_context TestMM, <<-END
|
653
|
+
TestNode text: a {
|
654
|
+
TestNode nums: 3 {
|
655
|
+
TestNode strings: ["a,b", "c,d" |
|
656
|
+
END
|
657
|
+
assert_context c, :prefix => "", :feature => "strings", :in_array => true, :in_block => false, :problem => :missing_comma, :after_label => true
|
658
|
+
assert_simple_model(c.element)
|
659
|
+
assert_equal(["a,b", "c,d"], c.element.strings)
|
660
|
+
end
|
661
|
+
|
662
|
+
def test_in_cmd_in_array_after_string_array
|
663
|
+
c = build_context TestMM, <<-END
|
664
|
+
TestNode text: a {
|
665
|
+
TestNode nums: 3 {
|
666
|
+
TestNode strings: ["a,b", "c,d"]|
|
667
|
+
END
|
668
|
+
assert_context c, :prefix => "", :feature => nil, :in_array => false, :in_block => false, :problem => :missing_comma
|
669
|
+
assert_simple_model(c.element)
|
670
|
+
assert_equal(["a,b", "c,d"], c.element.strings)
|
671
|
+
end
|
672
|
+
|
175
673
|
def test_in_cmd_in_array_value
|
176
674
|
c = build_context TestMM, <<-END
|
177
675
|
TestNode text: a {
|
178
676
|
TestNode nums: 3 {
|
179
677
|
TestNode others: [/d|ummy, text: x
|
180
678
|
END
|
181
|
-
|
182
|
-
|
183
|
-
|
184
|
-
|
679
|
+
assert_context c, :prefix => "/d", :feature => "others", :in_array => true, :in_block => false, :after_label => true
|
680
|
+
assert_simple_model(c.element)
|
681
|
+
assert_other_values(c.element, [])
|
682
|
+
end
|
683
|
+
|
684
|
+
def test_in_cmd_in_array_value_no_ws
|
685
|
+
c = build_context TestMM, <<-END
|
686
|
+
TestNode text: a {
|
687
|
+
TestNode nums: 3 {
|
688
|
+
TestNode others:[/d|ummy, text: x
|
689
|
+
END
|
690
|
+
assert_context c, :prefix => "/d", :feature => "others", :in_array => true, :in_block => false, :after_label => true
|
185
691
|
assert_simple_model(c.element)
|
186
692
|
assert_other_values(c.element, [])
|
187
693
|
end
|
@@ -192,10 +698,18 @@ def test_in_cmd_after_array_value
|
|
192
698
|
TestNode nums: 3 {
|
193
699
|
TestNode others: [/dummy,| text: x
|
194
700
|
END
|
195
|
-
|
196
|
-
|
197
|
-
|
198
|
-
|
701
|
+
assert_context c, :prefix => "", :feature => "others", :in_array => true, :in_block => false, :after_label => true
|
702
|
+
assert_simple_model(c.element)
|
703
|
+
assert_other_values(c.element, ["/dummy"])
|
704
|
+
end
|
705
|
+
|
706
|
+
def test_in_cmd_after_array_value_no_ws
|
707
|
+
c = build_context TestMM, <<-END
|
708
|
+
TestNode text: a {
|
709
|
+
TestNode nums: 3 {
|
710
|
+
TestNode others:[/dummy,| text: x
|
711
|
+
END
|
712
|
+
assert_context c, :prefix => "", :feature => "others", :in_array => true, :in_block => false, :after_label => true
|
199
713
|
assert_simple_model(c.element)
|
200
714
|
assert_other_values(c.element, ["/dummy"])
|
201
715
|
end
|
@@ -206,10 +720,29 @@ def test_in_cmd_in_second_array_value
|
|
206
720
|
TestNode nums: 3 {
|
207
721
|
TestNode others: [/dummy, /dom|my
|
208
722
|
END
|
209
|
-
|
210
|
-
|
211
|
-
|
212
|
-
|
723
|
+
assert_context c, :prefix => "/dom", :feature => "others", :in_array => true, :in_block => false, :after_label => true
|
724
|
+
assert_simple_model(c.element)
|
725
|
+
assert_other_values(c.element, ["/dummy"])
|
726
|
+
end
|
727
|
+
|
728
|
+
def test_in_cmd_in_second_array_value_no_ws
|
729
|
+
c = build_context TestMM, <<-END
|
730
|
+
TestNode text: a {
|
731
|
+
TestNode nums: 3 {
|
732
|
+
TestNode others: [/dummy,/dom|my
|
733
|
+
END
|
734
|
+
assert_context c, :prefix => "/dom", :feature => "others", :in_array => true, :in_block => false, :after_label => true
|
735
|
+
assert_simple_model(c.element)
|
736
|
+
assert_other_values(c.element, ["/dummy"])
|
737
|
+
end
|
738
|
+
|
739
|
+
def test_in_cmd_in_second_array_value_no_ws2
|
740
|
+
c = build_context TestMM, <<-END
|
741
|
+
TestNode text: a {
|
742
|
+
TestNode nums: 3 {
|
743
|
+
TestNode others:[/dummy,/dom|my
|
744
|
+
END
|
745
|
+
assert_context c, :prefix => "/dom", :feature => "others", :in_array => true, :in_block => false, :after_label => true
|
213
746
|
assert_simple_model(c.element)
|
214
747
|
assert_other_values(c.element, ["/dummy"])
|
215
748
|
end
|
@@ -220,10 +753,18 @@ def test_in_cmd_after_array
|
|
220
753
|
TestNode nums: 3 {
|
221
754
|
TestNode others: [/dummy, /dommy], |
|
222
755
|
END
|
223
|
-
|
224
|
-
|
225
|
-
|
226
|
-
|
756
|
+
assert_context c, :prefix => "", :feature => nil, :in_array => false, :in_block => false
|
757
|
+
assert_simple_model(c.element)
|
758
|
+
assert_other_values(c.element, ["/dummy", "/dommy"])
|
759
|
+
end
|
760
|
+
|
761
|
+
def test_in_cmd_after_array_no_ws
|
762
|
+
c = build_context TestMM, <<-END
|
763
|
+
TestNode text: a {
|
764
|
+
TestNode nums: 3 {
|
765
|
+
TestNode others:[/dummy,/dommy],|
|
766
|
+
END
|
767
|
+
assert_context c, :prefix => "", :feature => nil, :in_array => false, :in_block => false
|
227
768
|
assert_simple_model(c.element)
|
228
769
|
assert_other_values(c.element, ["/dummy", "/dommy"])
|
229
770
|
end
|
@@ -234,14 +775,32 @@ def test_in_cmd_after_array2
|
|
234
775
|
TestNode nums: 3 {
|
235
776
|
TestNode others: [/dummy, /dommy], nums: |
|
236
777
|
END
|
237
|
-
|
238
|
-
|
239
|
-
|
240
|
-
|
778
|
+
assert_context c, :prefix => "", :feature => "nums", :in_array => false, :in_block => false, :after_label => true
|
779
|
+
assert_simple_model(c.element)
|
780
|
+
assert_other_values(c.element, ["/dummy", "/dommy"])
|
781
|
+
end
|
782
|
+
|
783
|
+
def test_in_cmd_after_array2_no_ws
|
784
|
+
c = build_context TestMM, <<-END
|
785
|
+
TestNode text: a {
|
786
|
+
TestNode nums: 3 {
|
787
|
+
TestNode others:[/dummy,/dommy],nums:|
|
788
|
+
END
|
789
|
+
assert_context c, :prefix => "", :feature => "nums", :in_array => false, :in_block => false, :after_label => true
|
241
790
|
assert_simple_model(c.element)
|
242
791
|
assert_other_values(c.element, ["/dummy", "/dommy"])
|
243
792
|
end
|
244
793
|
|
794
|
+
def test_in_cmd_boolean_value
|
795
|
+
c = build_context TestMM, <<-END
|
796
|
+
TestNode text: a {
|
797
|
+
TestNode nums: 3 {
|
798
|
+
TestNode boolean: t|
|
799
|
+
END
|
800
|
+
assert_context c, :prefix => "t", :feature => "boolean", :in_array => false, :in_block => false, :after_label => true
|
801
|
+
assert_simple_model(c.element)
|
802
|
+
end
|
803
|
+
|
245
804
|
def test_below_single_label
|
246
805
|
c = build_context TestMM, <<-END
|
247
806
|
TestNode text: a {
|
@@ -250,10 +809,7 @@ def test_below_single_label
|
|
250
809
|
childs:
|
251
810
|
|
|
252
811
|
END
|
253
|
-
|
254
|
-
assert_equal("childs", c.feature.name)
|
255
|
-
assert(!c.in_array)
|
256
|
-
assert(c.in_block)
|
812
|
+
assert_context c, :prefix => "", :feature => "childs", :in_array => false, :in_block => true, :after_label => true
|
257
813
|
assert_simple_model(c.element)
|
258
814
|
assert_other_values(c.element, ["/dummy"])
|
259
815
|
end
|
@@ -266,14 +822,23 @@ def test_below_single_label_started_command
|
|
266
822
|
childs:
|
267
823
|
Tes|
|
268
824
|
END
|
269
|
-
|
270
|
-
assert_equal("childs", c.feature.name)
|
271
|
-
assert(!c.in_array)
|
272
|
-
assert(c.in_block)
|
825
|
+
assert_context c, :prefix => "Tes", :feature => "childs", :in_array => false, :in_block => true, :after_label => true
|
273
826
|
assert_simple_model(c.element)
|
274
827
|
assert_other_values(c.element, ["/dummy"])
|
275
828
|
end
|
276
829
|
|
830
|
+
def test_below_single_label_after_command
|
831
|
+
c = build_context TestMM, <<-END
|
832
|
+
TestNode text: a {
|
833
|
+
TestNode nums: 3 {
|
834
|
+
TestNode others: /dummy {
|
835
|
+
childs:
|
836
|
+
TestNode |
|
837
|
+
END
|
838
|
+
assert_context c, :prefix => "", :feature => "unlabled", :in_array => false, :in_block => false
|
839
|
+
assert_equal [3], c.element.parent.parent.nums
|
840
|
+
end
|
841
|
+
|
277
842
|
def test_below_multi_label
|
278
843
|
c = build_context TestMM, <<-END
|
279
844
|
TestNode text: a {
|
@@ -282,10 +847,7 @@ def test_below_multi_label
|
|
282
847
|
childs: [
|
283
848
|
|
|
284
849
|
END
|
285
|
-
|
286
|
-
assert_equal("childs", c.feature.name)
|
287
|
-
assert(c.in_array)
|
288
|
-
assert(c.in_block)
|
850
|
+
assert_context c, :prefix => "", :feature => "childs", :in_array => true, :in_block => true, :after_label => true
|
289
851
|
assert_simple_model(c.element)
|
290
852
|
assert_other_values(c.element, ["/dummy"])
|
291
853
|
end
|
@@ -298,14 +860,23 @@ def test_below_multi_label_started_command
|
|
298
860
|
childs: [
|
299
861
|
Tes|
|
300
862
|
END
|
301
|
-
|
302
|
-
assert_equal("childs", c.feature.name)
|
303
|
-
assert(c.in_array)
|
304
|
-
assert(c.in_block)
|
863
|
+
assert_context c, :prefix => "Tes", :feature => "childs", :in_array => true, :in_block => true, :after_label => true
|
305
864
|
assert_simple_model(c.element)
|
306
865
|
assert_other_values(c.element, ["/dummy"])
|
307
866
|
end
|
308
867
|
|
868
|
+
def test_below_multi_label_after_command
|
869
|
+
c = build_context TestMM, <<-END
|
870
|
+
TestNode text: a {
|
871
|
+
TestNode nums: 3 {
|
872
|
+
TestNode others: /dummy {
|
873
|
+
childs: [
|
874
|
+
TestNode |
|
875
|
+
END
|
876
|
+
assert_context c, :prefix => "", :feature => "unlabled", :in_array => false, :in_block => false
|
877
|
+
assert_equal [3], c.element.parent.parent.nums
|
878
|
+
end
|
879
|
+
|
309
880
|
def test_in_new_line
|
310
881
|
c = build_context TestMM, <<-END
|
311
882
|
TestNode text: a {
|
@@ -313,10 +884,7 @@ def test_in_new_line
|
|
313
884
|
TestNode others: /dummy {
|
314
885
|
|
|
315
886
|
END
|
316
|
-
|
317
|
-
assert_nil(c.feature)
|
318
|
-
assert(!c.in_array)
|
319
|
-
assert(c.in_block)
|
887
|
+
assert_context c, :prefix => "", :feature => nil, :in_array => false, :in_block => true
|
320
888
|
assert_simple_model(c.element)
|
321
889
|
assert_other_values(c.element, ["/dummy"])
|
322
890
|
end
|
@@ -328,14 +896,24 @@ def test_in_new_line_started_command
|
|
328
896
|
TestNode others: /dummy {
|
329
897
|
Tes|
|
330
898
|
END
|
331
|
-
|
332
|
-
assert_nil(c.feature)
|
333
|
-
assert(!c.in_array)
|
334
|
-
assert(c.in_block)
|
899
|
+
assert_context c, :prefix => "Tes", :feature => nil, :in_array => false, :in_block => true
|
335
900
|
assert_simple_model(c.element)
|
336
901
|
assert_other_values(c.element, ["/dummy"])
|
337
902
|
end
|
338
903
|
|
904
|
+
def assert_context(c, options)
|
905
|
+
assert_equal(options[:prefix], c.prefix)
|
906
|
+
assert_equal(options[:in_array], c.in_array)
|
907
|
+
assert_equal(options[:in_block], c.in_block)
|
908
|
+
assert_equal((options[:after_label] || false), c.after_label)
|
909
|
+
assert_equal(options[:problem], c.problem)
|
910
|
+
if options[:feature]
|
911
|
+
assert_equal(options[:feature], c.feature.name)
|
912
|
+
else
|
913
|
+
assert_nil(c.feature)
|
914
|
+
end
|
915
|
+
end
|
916
|
+
|
339
917
|
def assert_simple_model(c)
|
340
918
|
assert c.is_a?(TestMM::TestNode)
|
341
919
|
assert c.parent.is_a?(TestMM::TestNode)
|
@@ -352,7 +930,9 @@ def build_context(mm, text)
|
|
352
930
|
context_lines = text.split("\n")
|
353
931
|
pos_in_line = context_lines.last.index("|")
|
354
932
|
context_lines.last.sub!("|", "")
|
355
|
-
lang = RText::Language.new(mm.ecore,
|
933
|
+
lang = RText::Language.new(mm.ecore,
|
934
|
+
:root_classes => mm.ecore.eAllClasses,
|
935
|
+
:unlabled_arguments => lambda {|c| ["unlabled", "unlabled_array"]})
|
356
936
|
RText::ContextBuilder.build_context(lang, context_lines, pos_in_line)
|
357
937
|
end
|
358
938
|
|