rgen 0.7.0 → 0.8.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG +27 -0
- data/Project.yaml +21 -0
- data/README.rdoc +1 -1
- data/Rakefile +22 -25
- data/lib/rgen/ecore/ecore.rb +1 -1
- data/lib/rgen/ecore/ecore_ext.rb +9 -1
- data/lib/rgen/ecore/ecore_to_json.rb +188 -0
- data/lib/rgen/ecore/ecore_to_ruby.rb +146 -47
- data/lib/rgen/fragment/fragmented_model.rb +2 -0
- data/lib/rgen/fragment/model_fragment.rb +3 -0
- data/lib/rgen/instantiator/default_xml_instantiator.rb +93 -88
- data/lib/rgen/metamodel_builder/builder_extensions.rb +33 -9
- data/lib/rgen/metamodel_builder/builder_runtime.rb +12 -5
- data/lib/rgen/template_language/output_handler.rb +52 -19
- data/lib/rgen/template_language/template_container.rb +17 -7
- data/lib/rgen/template_language.rb +2 -1
- data/test/array_extensions_test.rb +7 -7
- data/test/ea_instantiator_test.rb +2 -2
- data/test/ea_serializer_test.rb +2 -2
- data/test/ecore_self_test.rb +2 -2
- data/test/ecore_to_ruby_test.rb +73 -0
- data/test/environment_test.rb +2 -2
- data/test/json_test.rb +4 -4
- data/test/metamodel_builder_test.rb +79 -44
- data/test/metamodel_from_ecore_test.rb +1 -1
- data/test/metamodel_order_test.rb +2 -2
- data/test/metamodel_roundtrip_test.rb +2 -2
- data/test/method_delegation_test.rb +5 -5
- data/test/model_builder/builder_context_test.rb +3 -3
- data/test/model_builder/builder_test.rb +11 -11
- data/test/model_builder/reference_resolver_test.rb +3 -3
- data/test/model_builder/serializer_test.rb +2 -2
- data/test/model_fragment_test.rb +2 -2
- data/test/output_handler_test.rb +2 -2
- data/test/qualified_name_provider_test.rb +2 -2
- data/test/qualified_name_resolver_test.rb +4 -4
- data/test/reference_resolver_test.rb +4 -4
- data/test/rgen_test.rb +2 -1
- data/test/template_language_test/templates/indent_nonl_at_eof_test/test.tpl +14 -0
- data/test/template_language_test/templates/indent_same_line_sub/test.tpl +16 -0
- data/test/template_language_test/templates/line_endings/mixed.tpl +6 -0
- data/test/template_language_test/templates/line_endings/unix.tpl +6 -0
- data/test/template_language_test/templates/line_endings/windows.tpl +6 -0
- data/test/template_language_test/templates/ws_test.tpl +21 -0
- data/test/template_language_test.rb +60 -9
- data/test/testmodel/class_model_checker.rb +17 -17
- data/test/testmodel/ecore_model_checker.rb +13 -13
- data/test/testmodel/object_model_checker.rb +6 -6
- data/test/transformer_test.rb +3 -3
- data/test/util/file_cache_map_test.rb +2 -2
- data/test/util/pattern_matcher_test.rb +7 -7
- data/test/xml_instantiator_test/simple_ecore_model_checker.rb +12 -12
- data/test/xml_instantiator_test.rb +8 -8
- metadata +93 -22
- data/test/metamodel_roundtrip_test/TestModel_Regenerated.rb +0 -71
- data/test/metamodel_roundtrip_test/houseMetamodel_Regenerated.ecore +0 -162
- data/test/metamodel_roundtrip_test/using_builtin_types_serialized.ecore +0 -9
- data/test/model_builder/ecore_internal.rb +0 -113
- data/test/testmodel/ea_testmodel_regenerated.xml +0 -813
- data/test/util/file_cache_map_test/testdir/fileA +0 -1
@@ -0,0 +1,73 @@
|
|
1
|
+
$:.unshift File.join(File.dirname(__FILE__),"..","lib")
|
2
|
+
|
3
|
+
require 'minitest/autorun'
|
4
|
+
require 'rgen/environment'
|
5
|
+
require 'rgen/ecore/ecore'
|
6
|
+
require 'rgen/ecore/ecore_ext'
|
7
|
+
require 'rgen/ecore/ecore_to_ruby'
|
8
|
+
|
9
|
+
class ECoreToRubyTest < MiniTest::Test
|
10
|
+
|
11
|
+
module ContainerSimple
|
12
|
+
end
|
13
|
+
|
14
|
+
module ContainerUnder
|
15
|
+
end
|
16
|
+
|
17
|
+
def test_simple
|
18
|
+
p1 = create_ecore
|
19
|
+
|
20
|
+
mod = RGen::ECore::ECoreToRuby.new.create_module(p1)
|
21
|
+
|
22
|
+
assert mod.const_defined?(:P11)
|
23
|
+
assert mod::P11.const_defined?(:C1)
|
24
|
+
|
25
|
+
# temporary path
|
26
|
+
assert mod::P11::C1.to_s.start_with?("#")
|
27
|
+
|
28
|
+
ContainerSimple.const_set("P1", mod)
|
29
|
+
assert_equal "ECoreToRubyTest::ContainerSimple::P1::P11::C1", ContainerSimple::P1::P11::C1.name
|
30
|
+
end
|
31
|
+
|
32
|
+
def test_under
|
33
|
+
p1 = create_ecore
|
34
|
+
|
35
|
+
RGen::ECore::ECoreToRuby.new.create_module(p1, ContainerUnder)
|
36
|
+
|
37
|
+
assert ContainerUnder.const_defined?(:P1)
|
38
|
+
assert ContainerUnder::P1.const_defined?(:P11)
|
39
|
+
assert ContainerUnder::P1::P11.const_defined?(:C1)
|
40
|
+
|
41
|
+
assert_equal "ECoreToRubyTest::ContainerUnder::P1::P11::C1", ContainerUnder::P1::P11::C1.name
|
42
|
+
end
|
43
|
+
|
44
|
+
def test_under_temp_path
|
45
|
+
p1 = create_ecore
|
46
|
+
|
47
|
+
container = Module.new
|
48
|
+
RGen::ECore::ECoreToRuby.new.create_module(p1, container)
|
49
|
+
|
50
|
+
assert container.const_defined?(:P1)
|
51
|
+
assert container::P1.const_defined?(:P11)
|
52
|
+
assert container::P1::P11.const_defined?(:C1)
|
53
|
+
|
54
|
+
# temporary path
|
55
|
+
assert container::P1::P11::C1.to_s.start_with?("#")
|
56
|
+
|
57
|
+
self.class.const_set("Container2", container)
|
58
|
+
assert_equal "ECoreToRubyTest::Container2::P1::P11::C1", container::P1::P11::C1.to_s
|
59
|
+
end
|
60
|
+
|
61
|
+
def create_ecore
|
62
|
+
p1 = RGen::ECore::EPackage.new(:name => "P1")
|
63
|
+
p11 = RGen::ECore::EPackage.new(:name => "P11", :eSuperPackage => p1)
|
64
|
+
p12 = RGen::ECore::EPackage.new(:name => "P12", :eSuperPackage => p1)
|
65
|
+
c1 = RGen::ECore::EClass.new(:name => "C1", :ePackage => p11)
|
66
|
+
c2 = RGen::ECore::EClass.new(:name => "C2", :ePackage => p12)
|
67
|
+
c3 = RGen::ECore::EClass.new(:name => "C3", :eSuperTypes => [c1, c2], :ePackage => p11)
|
68
|
+
p1
|
69
|
+
end
|
70
|
+
|
71
|
+
end
|
72
|
+
|
73
|
+
|
data/test/environment_test.rb
CHANGED
@@ -1,10 +1,10 @@
|
|
1
1
|
$:.unshift File.join(File.dirname(__FILE__),"..","lib")
|
2
2
|
|
3
|
-
require '
|
3
|
+
require 'minitest/autorun'
|
4
4
|
require 'rgen/environment'
|
5
5
|
require 'rgen/metamodel_builder'
|
6
6
|
|
7
|
-
class EnvironmentTest < Test
|
7
|
+
class EnvironmentTest < MiniTest::Test
|
8
8
|
|
9
9
|
class Model
|
10
10
|
attr_accessor :name
|
data/test/json_test.rb
CHANGED
@@ -1,12 +1,12 @@
|
|
1
1
|
$:.unshift File.join(File.dirname(__FILE__),"..","lib")
|
2
2
|
|
3
|
-
require '
|
3
|
+
require 'minitest/autorun'
|
4
4
|
require 'rgen/environment'
|
5
5
|
require 'rgen/metamodel_builder'
|
6
6
|
require 'rgen/serializer/json_serializer'
|
7
7
|
require 'rgen/instantiator/json_instantiator'
|
8
8
|
|
9
|
-
class JsonTest < Test
|
9
|
+
class JsonTest < MiniTest::Test
|
10
10
|
|
11
11
|
module TestMM
|
12
12
|
extend RGen::MetamodelBuilder::ModuleExtension
|
@@ -61,7 +61,7 @@ class JsonTest < Test::Unit::TestCase
|
|
61
61
|
inst.instantiate(%q({ "_class": "TestNode", "text": "some text", "childs": [
|
62
62
|
{ "_class": "TestNode", "text": "child" }] }))
|
63
63
|
root = env.find(:class => TestMM::TestNode, :text => "some text").first
|
64
|
-
|
64
|
+
assert root != nil
|
65
65
|
assert_equal 1, root.childs.size
|
66
66
|
assert_equal TestMM::TestNode, root.childs.first.class
|
67
67
|
assert_equal "child", root.childs.first.text
|
@@ -149,7 +149,7 @@ class JsonTest < Test::Unit::TestCase
|
|
149
149
|
def test_json_instantiator_subpackage_no_shortname_opt
|
150
150
|
env = RGen::Environment.new
|
151
151
|
inst = RGen::Instantiator::JsonInstantiator.new(env, TestMMSubpackage, :short_class_names => false)
|
152
|
-
|
152
|
+
assert_raises RuntimeError do
|
153
153
|
inst.instantiate(%q({ "_class": "Data2", "data2": "something" }))
|
154
154
|
end
|
155
155
|
end
|
@@ -1,11 +1,11 @@
|
|
1
1
|
$:.unshift File.join(File.dirname(__FILE__),"..","lib")
|
2
2
|
|
3
|
-
require '
|
3
|
+
require 'minitest/autorun'
|
4
4
|
require 'rgen/metamodel_builder'
|
5
5
|
require 'rgen/array_extensions'
|
6
6
|
require 'bigdecimal'
|
7
7
|
|
8
|
-
class MetamodelBuilderTest < Test
|
8
|
+
class MetamodelBuilderTest < MiniTest::Test
|
9
9
|
|
10
10
|
module TestMetamodel
|
11
11
|
extend RGen::MetamodelBuilder::ModuleExtension
|
@@ -168,6 +168,16 @@ class MetamodelBuilderTest < Test::Unit::TestCase
|
|
168
168
|
end
|
169
169
|
OppositeRefAssocA.one_to_one 'bClass', OppositeRefAssocB, 'aClass'
|
170
170
|
|
171
|
+
class ReservedNameClass < RGen::MetamodelBuilder::MMBase
|
172
|
+
has_attr 'class', String
|
173
|
+
has_attr 'method', String
|
174
|
+
end
|
175
|
+
|
176
|
+
class ManyReservedNameClass < RGen::MetamodelBuilder::MMBase
|
177
|
+
has_many_attr 'class', String
|
178
|
+
has_many_attr 'method', String
|
179
|
+
end
|
180
|
+
|
171
181
|
end
|
172
182
|
|
173
183
|
def mm
|
@@ -182,8 +192,8 @@ class MetamodelBuilderTest < Test::Unit::TestCase
|
|
182
192
|
sc.name = "TestName"
|
183
193
|
assert_equal "TestName", sc.name
|
184
194
|
sc.name = nil
|
185
|
-
|
186
|
-
err =
|
195
|
+
assert_nil sc.name
|
196
|
+
err = assert_raises StandardError do
|
187
197
|
sc.name = 5
|
188
198
|
end
|
189
199
|
assert_match /In (\w+::)+SimpleClass : Can not use a Fixnum where a String is expected/, err.message
|
@@ -212,12 +222,12 @@ class MetamodelBuilderTest < Test::Unit::TestCase
|
|
212
222
|
sc.allowed = false
|
213
223
|
assert_equal false, sc.allowed
|
214
224
|
sc.allowed = nil
|
215
|
-
|
216
|
-
err =
|
225
|
+
assert_nil sc.allowed
|
226
|
+
err = assert_raises StandardError do
|
217
227
|
sc.allowed = :someSymbol
|
218
228
|
end
|
219
229
|
assert_match /In (\w+::)+SimpleClass : Can not use a Symbol\(:someSymbol\) where a \[true,false\] is expected/, err.message
|
220
|
-
err =
|
230
|
+
err = assert_raises StandardError do
|
221
231
|
sc.allowed = "a string"
|
222
232
|
end
|
223
233
|
assert_match /In (\w+::)+SimpleClass : Can not use a String where a \[true,false\] is expected/, err.message
|
@@ -230,12 +240,12 @@ class MetamodelBuilderTest < Test::Unit::TestCase
|
|
230
240
|
sc.kind = :extended
|
231
241
|
assert_equal :extended, sc.kind
|
232
242
|
sc.kind = nil
|
233
|
-
|
234
|
-
err =
|
243
|
+
assert_nil sc.kind
|
244
|
+
err = assert_raises StandardError do
|
235
245
|
sc.kind = :false
|
236
246
|
end
|
237
247
|
assert_match /In (\w+::)+SimpleClass : Can not use a Symbol\(:false\) where a \[:simple,:extended\] is expected/, err.message
|
238
|
-
err =
|
248
|
+
err = assert_raises StandardError do
|
239
249
|
sc.kind = "a string"
|
240
250
|
end
|
241
251
|
assert_match /In (\w+::)+SimpleClass : Can not use a String where a \[:simple,:extended\] is expected/, err.message
|
@@ -268,11 +278,11 @@ class MetamodelBuilderTest < Test::Unit::TestCase
|
|
268
278
|
sc = mm::SimpleClass.new
|
269
279
|
sc.longWithDefault = 5
|
270
280
|
assert_equal 5, sc.longWithDefault
|
271
|
-
sc.longWithDefault =
|
272
|
-
assert_equal
|
281
|
+
sc.longWithDefault = (2**(0.size * 8 -2) -1) + 1
|
282
|
+
assert_equal (2**(0.size * 8 -2) -1) + 1, sc.longWithDefault
|
273
283
|
assert sc.longWithDefault.is_a?(Bignum)
|
274
284
|
assert sc.longWithDefault.is_a?(Integer)
|
275
|
-
err =
|
285
|
+
err = assert_raises StandardError do
|
276
286
|
sc.longWithDefault = "a string"
|
277
287
|
end
|
278
288
|
assert_match /In (\w+::)+SimpleClass : Can not use a String where a Integer is expected/, err.message
|
@@ -285,7 +295,7 @@ class MetamodelBuilderTest < Test::Unit::TestCase
|
|
285
295
|
assert_respond_to o, :addLiterals
|
286
296
|
assert_respond_to o, :removeLiterals
|
287
297
|
|
288
|
-
err =
|
298
|
+
err = assert_raises(StandardError) do
|
289
299
|
o.addLiterals(1)
|
290
300
|
end
|
291
301
|
assert_match /In (\w+::)+ManyAttrClass : Can not use a Fixnum where a String is expected/, err.message
|
@@ -320,7 +330,7 @@ class MetamodelBuilderTest < Test::Unit::TestCase
|
|
320
330
|
o.literals = ["a", "b", "c"]
|
321
331
|
assert_equal ["a", "b", "c"], o.literals
|
322
332
|
# can only take enumerables
|
323
|
-
err =
|
333
|
+
err = assert_raises(StandardError) do
|
324
334
|
o.literals = 1
|
325
335
|
end
|
326
336
|
assert_match /In (\w+::)+ManyAttrClass : Can not use a Fixnum where a Enumerable is expected/, err.message
|
@@ -359,7 +369,7 @@ class MetamodelBuilderTest < Test::Unit::TestCase
|
|
359
369
|
sc.classA = ca
|
360
370
|
assert_equal ca, sc.classA
|
361
371
|
sc.classA = nil
|
362
|
-
|
372
|
+
assert_nil sc.classA
|
363
373
|
|
364
374
|
assert_respond_to sc, :classB
|
365
375
|
assert_respond_to sc, :classB=
|
@@ -367,7 +377,7 @@ class MetamodelBuilderTest < Test::Unit::TestCase
|
|
367
377
|
sc.classB = cb
|
368
378
|
assert_equal cb, sc.classB
|
369
379
|
|
370
|
-
err =
|
380
|
+
err = assert_raises StandardError do
|
371
381
|
sc.classB = ca
|
372
382
|
end
|
373
383
|
assert_match /In (\w+::)+HasOneTestClass : Can not use a (\w+::)+ClassA where a (\w+::)+ClassB is expected/, err.message
|
@@ -394,7 +404,7 @@ class MetamodelBuilderTest < Test::Unit::TestCase
|
|
394
404
|
assert_equal [ca1, ca2], o.classA
|
395
405
|
o.removeClassA(ca2)
|
396
406
|
assert_equal [ca1], o.classA
|
397
|
-
err =
|
407
|
+
err = assert_raises StandardError do
|
398
408
|
o.addClassA(mm::ClassB.new)
|
399
409
|
end
|
400
410
|
assert_match /In (\w+::)+HasManyTestClass : Can not use a (\w+::)+ClassB where a (\w+::)+ClassA is expected/, err.message
|
@@ -434,7 +444,7 @@ class MetamodelBuilderTest < Test::Unit::TestCase
|
|
434
444
|
|
435
445
|
# remove the OneClass from the ManyClass
|
436
446
|
mc.oneClass = nil
|
437
|
-
|
447
|
+
assert_nil mc.oneClass
|
438
448
|
assert !oc.manyClasses.include?(mc)
|
439
449
|
|
440
450
|
# put the ManyClass into the OneClass
|
@@ -445,7 +455,7 @@ class MetamodelBuilderTest < Test::Unit::TestCase
|
|
445
455
|
# remove the ManyClass from the OneClass
|
446
456
|
oc.removeManyClasses mc
|
447
457
|
assert !oc.manyClasses.include?(mc)
|
448
|
-
|
458
|
+
assert_nil mc.oneClass
|
449
459
|
|
450
460
|
assert_equal [], mm::OneClass.ecore.eReferences.select{|r| r.many == false}
|
451
461
|
assert_equal ["manyClasses"], mm::OneClass.ecore.eReferences.select{|r| r.many == true}.name
|
@@ -478,7 +488,7 @@ class MetamodelBuilderTest < Test::Unit::TestCase
|
|
478
488
|
mc1.oneClass = oc
|
479
489
|
assert_equal [mc1], oc.manyClasses
|
480
490
|
assert_equal oc, mc1.oneClass
|
481
|
-
|
491
|
+
assert_nil mc2.oneClass
|
482
492
|
|
483
493
|
mc2.oneClass = oc
|
484
494
|
assert_equal [mc1, mc2], oc.manyClasses
|
@@ -515,7 +525,7 @@ class MetamodelBuilderTest < Test::Unit::TestCase
|
|
515
525
|
|
516
526
|
# remove the OneClass from the ManyClass
|
517
527
|
mc.oneClass = nil
|
518
|
-
|
528
|
+
assert_nil mc.oneClass
|
519
529
|
assert !oc.manyClasses.include?(mc)
|
520
530
|
|
521
531
|
# put the ManyClass into the OneClass
|
@@ -526,7 +536,7 @@ class MetamodelBuilderTest < Test::Unit::TestCase
|
|
526
536
|
# remove the ManyClass from the OneClass
|
527
537
|
oc.removeManyClasses mc
|
528
538
|
assert !oc.manyClasses.include?(mc)
|
529
|
-
|
539
|
+
assert_nil mc.oneClass
|
530
540
|
|
531
541
|
assert_equal [], mm::OneClass2.ecore.eReferences.select{|r| r.many == false}
|
532
542
|
assert_equal ["manyClasses"], mm::OneClass2.ecore.eReferences.select{|r| r.many == true}.name
|
@@ -552,8 +562,8 @@ class MetamodelBuilderTest < Test::Unit::TestCase
|
|
552
562
|
|
553
563
|
# remove the AClass from the BClass
|
554
564
|
bc.aClass = nil
|
555
|
-
|
556
|
-
|
565
|
+
assert_nil bc.aClass
|
566
|
+
assert_nil ac.bClass
|
557
567
|
|
558
568
|
# put the BClass into the AClass
|
559
569
|
ac.bClass = bc
|
@@ -562,8 +572,8 @@ class MetamodelBuilderTest < Test::Unit::TestCase
|
|
562
572
|
|
563
573
|
# remove the BClass from the AClass
|
564
574
|
ac.bClass = nil
|
565
|
-
|
566
|
-
|
575
|
+
assert_nil ac.bClass
|
576
|
+
assert_nil bc.aClass
|
567
577
|
|
568
578
|
assert_equal ["bClass"], mm::AClassOO.ecore.eReferences.select{|r| r.many == false}.name
|
569
579
|
assert_equal [], mm::AClassOO.ecore.eReferences.select{|r| r.many == true}
|
@@ -579,11 +589,11 @@ class MetamodelBuilderTest < Test::Unit::TestCase
|
|
579
589
|
a.bClass = b1
|
580
590
|
assert_equal b1, a.bClass
|
581
591
|
assert_equal a, b1.aClass
|
582
|
-
|
592
|
+
assert_nil b2.aClass
|
583
593
|
|
584
594
|
a.bClass = b2
|
585
595
|
assert_equal b2, a.bClass
|
586
|
-
|
596
|
+
assert_nil b1.aClass
|
587
597
|
assert_equal a, b2.aClass
|
588
598
|
end
|
589
599
|
|
@@ -603,7 +613,7 @@ class MetamodelBuilderTest < Test::Unit::TestCase
|
|
603
613
|
assert ac.bClasses.include?(bc)
|
604
614
|
|
605
615
|
# put something else into the BClass
|
606
|
-
err =
|
616
|
+
err = assert_raises StandardError do
|
607
617
|
bc.addAClasses :notaaclass
|
608
618
|
end
|
609
619
|
assert_match /In (\w+::)+BClassMM : Can not use a Symbol\(:notaaclass\) where a (\w+::)+AClassMM is expected/, err.message
|
@@ -619,7 +629,7 @@ class MetamodelBuilderTest < Test::Unit::TestCase
|
|
619
629
|
assert bc.aClasses.include?(ac)
|
620
630
|
|
621
631
|
# put something else into the AClass
|
622
|
-
err =
|
632
|
+
err = assert_raises StandardError do
|
623
633
|
ac.addBClasses :notabclass
|
624
634
|
end
|
625
635
|
assert_match /In (\w+::)+AClassMM : Can not use a Symbol\(:notabclass\) where a (\w+::)+BClassMM is expected/, err.message
|
@@ -705,7 +715,8 @@ class MetamodelBuilderTest < Test::Unit::TestCase
|
|
705
715
|
|
706
716
|
def checkAnnotation(anno, source, hash)
|
707
717
|
assert anno.is_a?(RGen::ECore::EAnnotation)
|
708
|
-
assert_equal source, anno.source
|
718
|
+
assert_equal source, anno.source unless source.nil?
|
719
|
+
assert_nil anno.source if source.nil?
|
709
720
|
assert_equal hash.size, anno.details.size
|
710
721
|
hash.each_pair do |k, v|
|
711
722
|
detail = anno.details.find{|d| d.key == k}
|
@@ -887,7 +898,7 @@ class MetamodelBuilderTest < Test::Unit::TestCase
|
|
887
898
|
end
|
888
899
|
|
889
900
|
def test_abstract
|
890
|
-
err =
|
901
|
+
err = assert_raises StandardError do
|
891
902
|
mm::AbstractClass.new
|
892
903
|
end
|
893
904
|
assert_match /Class (\w+::)+AbstractClass is abstract/, err.message
|
@@ -939,35 +950,35 @@ class MetamodelBuilderTest < Test::Unit::TestCase
|
|
939
950
|
end
|
940
951
|
|
941
952
|
def test_bad_default_value_literal
|
942
|
-
err =
|
953
|
+
err = assert_raises StandardError do
|
943
954
|
BadDefaultValueLiteralContainer::Test1.call
|
944
955
|
end
|
945
956
|
assert_equal "Property integerWithDefault can not take value 1.1, expected an Integer", err.message
|
946
|
-
err =
|
957
|
+
err = assert_raises StandardError do
|
947
958
|
BadDefaultValueLiteralContainer::Test2.call
|
948
959
|
end
|
949
960
|
assert_equal "Property integerWithDefault can not take value x, expected an Integer", err.message
|
950
|
-
err =
|
961
|
+
err = assert_raises StandardError do
|
951
962
|
BadDefaultValueLiteralContainer::Test3.call
|
952
963
|
end
|
953
964
|
assert_equal "Property boolWithDefault can not take value 1, expected true or false", err.message
|
954
|
-
err =
|
965
|
+
err = assert_raises StandardError do
|
955
966
|
BadDefaultValueLiteralContainer::Test4.call
|
956
967
|
end
|
957
968
|
assert_equal "Property floatWithDefault can not take value 1, expected a Float", err.message
|
958
|
-
err =
|
969
|
+
err = assert_raises StandardError do
|
959
970
|
BadDefaultValueLiteralContainer::Test5.call
|
960
971
|
end
|
961
972
|
assert_equal "Property floatWithDefault can not take value true, expected a Float", err.message
|
962
|
-
err =
|
973
|
+
err = assert_raises StandardError do
|
963
974
|
BadDefaultValueLiteralContainer::Test6.call
|
964
975
|
end
|
965
976
|
assert_equal "Property enumWithDefault can not take value xxx, expected one of :simple, :extended", err.message
|
966
|
-
err =
|
977
|
+
err = assert_raises StandardError do
|
967
978
|
BadDefaultValueLiteralContainer::Test7.call
|
968
979
|
end
|
969
980
|
assert_equal "Property enumWithDefault can not take value 7, expected one of :simple, :extended", err.message
|
970
|
-
err =
|
981
|
+
err = assert_raises StandardError do
|
971
982
|
BadDefaultValueLiteralContainer::Test8.call
|
972
983
|
end
|
973
984
|
assert_equal "Property longWithDefault can not take value 1.1, expected an Integer", err.message
|
@@ -1322,9 +1333,7 @@ class MetamodelBuilderTest < Test::Unit::TestCase
|
|
1322
1333
|
|
1323
1334
|
def test_container_generic
|
1324
1335
|
a = mm::ContainerClass.new
|
1325
|
-
|
1326
|
-
a.oneChild = RGen::MetamodelBuilder::MMGeneric.new
|
1327
|
-
end
|
1336
|
+
a.oneChild = RGen::MetamodelBuilder::MMGeneric.new
|
1328
1337
|
end
|
1329
1338
|
|
1330
1339
|
def test_opposite_assoc_on_first_write
|
@@ -1479,4 +1488,30 @@ class MetamodelBuilderTest < Test::Unit::TestCase
|
|
1479
1488
|
assert_equal [], a1.manyChildUni
|
1480
1489
|
end
|
1481
1490
|
|
1491
|
+
def test_reserved_names
|
1492
|
+
e = mm::ReservedNameClass.new
|
1493
|
+
%w(class method).each do |reserved|
|
1494
|
+
e.setGeneric(reserved, "X")
|
1495
|
+
assert_equal "X", e.getGeneric(reserved.to_sym)
|
1496
|
+
assert_equal "X", e.getGeneric(reserved)
|
1497
|
+
assert_equal ["X"], e.getGenericAsArray(reserved.to_sym)
|
1498
|
+
assert_equal ["X"], e.getGenericAsArray(reserved)
|
1499
|
+
end
|
1500
|
+
assert_equal "X", e.getClass
|
1501
|
+
assert_equal "X", e.getMethod
|
1502
|
+
end
|
1503
|
+
|
1504
|
+
def test_reserved_names_many
|
1505
|
+
e = mm::ManyReservedNameClass.new
|
1506
|
+
%w(class method).each do |reserved|
|
1507
|
+
e.addGeneric(reserved, "X")
|
1508
|
+
e.addGeneric(reserved, "Y")
|
1509
|
+
assert_equal ["X", "Y"], e.getGeneric(reserved.to_sym)
|
1510
|
+
assert_equal ["X", "Y"], e.getGeneric(reserved)
|
1511
|
+
assert_equal ["X", "Y"], e.getGenericAsArray(reserved.to_sym)
|
1512
|
+
assert_equal ["X", "Y"], e.getGenericAsArray(reserved)
|
1513
|
+
end
|
1514
|
+
assert_equal ["X", "Y"], e.getClass
|
1515
|
+
assert_equal ["X", "Y"], e.getMethod
|
1516
|
+
end
|
1482
1517
|
end
|
@@ -37,7 +37,7 @@ class MetamodelFromEcoreTest < MetamodelBuilderTest
|
|
37
37
|
mod = RGen::ECore::ECoreToRuby.new.create_module(package)
|
38
38
|
obj = mod::Class1.new
|
39
39
|
# the error is raised only when the feature is lazily constructed
|
40
|
-
|
40
|
+
assert_raises StandardError do
|
41
41
|
obj.value
|
42
42
|
end
|
43
43
|
end
|
@@ -1,10 +1,10 @@
|
|
1
1
|
$:.unshift File.join(File.dirname(__FILE__),"..","lib")
|
2
2
|
|
3
|
-
require '
|
3
|
+
require 'minitest/autorun'
|
4
4
|
require 'rgen/ecore/ecore'
|
5
5
|
require 'rgen/array_extensions'
|
6
6
|
|
7
|
-
class MetamodelOrderTest < Test
|
7
|
+
class MetamodelOrderTest < MiniTest::Test
|
8
8
|
include RGen::ECore
|
9
9
|
|
10
10
|
module TestMM1
|
@@ -1,13 +1,13 @@
|
|
1
1
|
$:.unshift File.join(File.dirname(__FILE__),"..","lib")
|
2
2
|
|
3
|
-
require '
|
3
|
+
require 'minitest/autorun'
|
4
4
|
require 'rgen/array_extensions'
|
5
5
|
require 'rgen/util/model_comparator'
|
6
6
|
require 'mmgen/metamodel_generator'
|
7
7
|
require 'rgen/instantiator/ecore_xml_instantiator'
|
8
8
|
require 'rgen/serializer/xmi20_serializer'
|
9
9
|
|
10
|
-
class MetamodelRoundtripTest < Test
|
10
|
+
class MetamodelRoundtripTest < MiniTest::Test
|
11
11
|
|
12
12
|
TEST_DIR = File.dirname(__FILE__)+"/metamodel_roundtrip_test"
|
13
13
|
|
@@ -1,9 +1,9 @@
|
|
1
1
|
$:.unshift File.dirname(__FILE__) + "/../lib"
|
2
2
|
|
3
|
-
require '
|
3
|
+
require 'minitest/autorun'
|
4
4
|
require 'rgen/util/method_delegation'
|
5
5
|
|
6
|
-
class MethodDelegationTest < Test
|
6
|
+
class MethodDelegationTest < MiniTest::Test
|
7
7
|
include RGen
|
8
8
|
|
9
9
|
class TestDelegate
|
@@ -88,7 +88,7 @@ class MethodDelegationTest < Test::Unit::TestCase
|
|
88
88
|
assert_equal "AnotherConst::A::B::C", AnotherConst::A::B::C.to_s
|
89
89
|
|
90
90
|
Util::MethodDelegation.unregisterDelegate(ConstPathElement, surroundingModule, "const_missing")
|
91
|
-
|
91
|
+
assert_raises NameError do
|
92
92
|
SomeArbitraryConst
|
93
93
|
end
|
94
94
|
end
|
@@ -123,7 +123,7 @@ class MethodDelegationTest < Test::Unit::TestCase
|
|
123
123
|
|
124
124
|
delegate1.mode = :nothing
|
125
125
|
# delegate1 just exits and thus returns nil
|
126
|
-
|
126
|
+
assert_nil delegator.send(method)
|
127
127
|
assert_equal 2, delegate1.callcount
|
128
128
|
# delegate2 is not called
|
129
129
|
assert_equal 0, delegate2.callcount
|
@@ -167,7 +167,7 @@ class MethodDelegationTest < Test::Unit::TestCase
|
|
167
167
|
|
168
168
|
def checkCallOriginal(delegator, method, originalResult, newMethod)
|
169
169
|
if newMethod
|
170
|
-
|
170
|
+
assert_raises NoMethodError do
|
171
171
|
result = delegator.send(method)
|
172
172
|
end
|
173
173
|
else
|
@@ -1,10 +1,10 @@
|
|
1
1
|
$:.unshift File.dirname(__FILE__)+"/../lib"
|
2
2
|
|
3
|
-
require '
|
3
|
+
require 'minitest/autorun'
|
4
4
|
require 'rgen/ecore/ecore'
|
5
5
|
require 'rgen/model_builder/builder_context'
|
6
6
|
|
7
|
-
class BuilderContextTest < Test
|
7
|
+
class BuilderContextTest < MiniTest::Test
|
8
8
|
|
9
9
|
module BuilderExtension1
|
10
10
|
module PackageA
|
@@ -50,7 +50,7 @@ class BuilderContextTest < Test::Unit::TestCase
|
|
50
50
|
assert_equal 5, packBExt.inPackBExt
|
51
51
|
assert_equal 7, packBExt.inBuilderContext
|
52
52
|
|
53
|
-
|
53
|
+
assert_raises RuntimeError do
|
54
54
|
# aboveRoot is not contained within root
|
55
55
|
assert_nil factory.moduleForPackage(aboveRoot)
|
56
56
|
end
|
@@ -1,13 +1,13 @@
|
|
1
1
|
$:.unshift File.dirname(__FILE__) + "/../lib"
|
2
2
|
|
3
|
-
require '
|
3
|
+
require 'minitest/autorun'
|
4
4
|
require 'rgen/ecore/ecore'
|
5
5
|
require 'rgen/ecore/ecore_builder_methods'
|
6
6
|
require 'rgen/environment'
|
7
7
|
require 'rgen/model_builder'
|
8
8
|
require 'model_builder/statemachine_metamodel'
|
9
9
|
|
10
|
-
class ModelBuilderTest < Test
|
10
|
+
class ModelBuilderTest < MiniTest::Test
|
11
11
|
|
12
12
|
def test_statemachine
|
13
13
|
result = RGen::ModelBuilder.build(StatemachineMetamodel) do
|
@@ -193,47 +193,47 @@ class ModelBuilderTest < Test::Unit::TestCase
|
|
193
193
|
|
194
194
|
# TestClass1
|
195
195
|
class1 = p1.eClassifiers.find{|c| c.name == "TestClass1"}
|
196
|
-
|
196
|
+
assert class1 != nil
|
197
197
|
assert class1.is_a?(RGen::ECore::EClass)
|
198
198
|
|
199
199
|
# TestClass1.attr1
|
200
200
|
attr1 = class1.eAllAttributes.find{|a| a.name == "attr1"}
|
201
|
-
|
201
|
+
assert attr1 != nil
|
202
202
|
assert_equal RGen::ECore::EString, attr1.eType
|
203
203
|
|
204
204
|
# TestClass1.attr2
|
205
205
|
attr2 = class1.eAllAttributes.find{|a| a.name == "attr2"}
|
206
|
-
|
206
|
+
assert attr2 != nil
|
207
207
|
assert_equal RGen::ECore::EInt, attr2.eType
|
208
208
|
|
209
209
|
# TestClass2
|
210
210
|
class2 = p1.eClassifiers.find{|c| c.name == "TestClass2"}
|
211
|
-
|
211
|
+
assert class2 != nil
|
212
212
|
assert class2.is_a?(RGen::ECore::EClass)
|
213
213
|
|
214
214
|
# TestClass2.ref1
|
215
215
|
ref1 = class2.eAllReferences.find{|a| a.name == "ref1"}
|
216
|
-
|
216
|
+
assert ref1 != nil
|
217
217
|
assert_equal class1, ref1.eType
|
218
218
|
|
219
219
|
# TestClass1.biRef1
|
220
220
|
biRef1 = class1.eAllReferences.find{|r| r.name == "biRef1"}
|
221
|
-
|
221
|
+
assert biRef1 != nil
|
222
222
|
assert_equal class2, biRef1.eType
|
223
223
|
biRef1Opp = class2.eAllReferences.find {|r| r.name == "testClass1"}
|
224
|
-
|
224
|
+
assert biRef1Opp != nil
|
225
225
|
assert_equal class1, biRef1Opp.eType
|
226
226
|
assert_equal biRef1Opp, biRef1.eOpposite
|
227
227
|
assert_equal biRef1, biRef1Opp.eOpposite
|
228
228
|
|
229
229
|
# TestClass1.testClass2
|
230
230
|
tc2Ref = class1.eAllReferences.find{|r| r.name == "testClass2"}
|
231
|
-
|
231
|
+
assert tc2Ref != nil
|
232
232
|
assert_equal class2, tc2Ref.eType
|
233
233
|
assert tc2Ref.containment
|
234
234
|
assert_equal -1, tc2Ref.upperBound
|
235
235
|
tc2RefOpp = class2.eAllReferences.find{|r| r.name == "tc1Parent"}
|
236
|
-
|
236
|
+
assert tc2RefOpp != nil
|
237
237
|
assert_equal class1, tc2RefOpp.eType
|
238
238
|
assert !tc2RefOpp.containment
|
239
239
|
assert_equal 1, tc2RefOpp.upperBound
|
@@ -1,10 +1,10 @@
|
|
1
1
|
$:.unshift File.dirname(__FILE__)+"/../lib"
|
2
2
|
|
3
|
-
require '
|
3
|
+
require 'minitest/autorun'
|
4
4
|
require 'rgen/metamodel_builder'
|
5
5
|
require 'rgen/model_builder/reference_resolver'
|
6
6
|
|
7
|
-
class ReferenceResolverTest < Test
|
7
|
+
class ReferenceResolverTest < MiniTest::Test
|
8
8
|
|
9
9
|
class ClassA < RGen::MetamodelBuilder::MMBase
|
10
10
|
has_attr "name"
|
@@ -122,7 +122,7 @@ class ReferenceResolverTest < Test::Unit::TestCase
|
|
122
122
|
:reference => ClassC.ecore.eReferences.find{|r| r.name == "refCs"},
|
123
123
|
:namespace => b1,
|
124
124
|
:string => "b1.c5"))
|
125
|
-
|
125
|
+
assert_raises RGen::ModelBuilder::ReferenceResolver::ResolverException do
|
126
126
|
resolver.resolve(toplevelNamespace)
|
127
127
|
end
|
128
128
|
end
|
@@ -1,6 +1,6 @@
|
|
1
1
|
$:.unshift File.dirname(__FILE__) + "/../lib"
|
2
2
|
|
3
|
-
require '
|
3
|
+
require 'minitest/autorun'
|
4
4
|
require 'rgen/ecore/ecore'
|
5
5
|
|
6
6
|
# The following would also influence other tests...
|
@@ -28,7 +28,7 @@ require 'rgen/instantiator/ecore_xml_instantiator'
|
|
28
28
|
require 'rgen/model_builder'
|
29
29
|
require 'model_builder/statemachine_metamodel'
|
30
30
|
|
31
|
-
class ModelSerializerTest < Test
|
31
|
+
class ModelSerializerTest < MiniTest::Test
|
32
32
|
def test_ecore_internal
|
33
33
|
File.open(File.dirname(__FILE__)+"/ecore_internal.rb","w") do |f|
|
34
34
|
serializer = RGen::ModelBuilder::ModelSerializer.new(f, RGen::ECore.ecore)
|