rgen 0.7.0 → 0.8.4
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.
- 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)
|