rgen 0.8.2 → 0.9.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.
- checksums.yaml +4 -4
- data/CHANGELOG +14 -1
- data/Project.yaml +22 -0
- data/Rakefile +21 -25
- data/lib/rgen/ecore/ecore.rb +6 -0
- data/lib/rgen/ecore/ecore_to_json.rb +189 -0
- data/lib/rgen/ecore/ecore_to_ruby.rb +13 -0
- data/lib/rgen/fragment/fragmented_model.rb +2 -0
- data/lib/rgen/fragment/model_fragment.rb +3 -0
- data/lib/rgen/metamodel_builder/builder_extensions.rb +14 -6
- data/lib/rgen/metamodel_builder/builder_runtime.rb +12 -5
- 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 +2 -2
- data/test/environment_test.rb +2 -2
- data/test/json_test.rb +4 -4
- data/test/metamodel_builder_test.rb +81 -46
- 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 +1 -1
- data/test/template_language_test.rb +9 -11
- 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 +100 -25
- 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/template_language_test/line_endings_mixed.txt +0 -2
- data/test/template_language_test/line_endings_unix.txt +0 -2
- data/test/template_language_test/line_endings_windows.txt +0 -2
- data/test/testmodel/ea_testmodel_regenerated.xml +0 -813
- data/test/util/file_cache_map_test/testdir/fileA +0 -1
@@ -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/template_language'
|
5
5
|
require 'rgen/metamodel_builder'
|
6
6
|
|
7
|
-
class TemplateContainerTest < Test
|
7
|
+
class TemplateContainerTest < MiniTest::Test
|
8
8
|
|
9
9
|
TEMPLATES_DIR = File.dirname(__FILE__)+"/template_language_test/templates"
|
10
10
|
OUTPUT_DIR = File.dirname(__FILE__)+"/template_language_test"
|
@@ -93,17 +93,15 @@ class TemplateContainerTest < Test::Unit::TestCase
|
|
93
93
|
def test_null_context
|
94
94
|
tc = RGen::TemplateLanguage::DirectoryTemplateContainer.new([MyMM, CCodeMM], OUTPUT_DIR)
|
95
95
|
tc.load(TEMPLATES_DIR)
|
96
|
-
|
96
|
+
assert_raises StandardError do
|
97
97
|
# the template must raise an exception because it calls expand :for => nil
|
98
98
|
tc.expand('null_context_test::NullContextTestBad', :for => :dummy)
|
99
99
|
end
|
100
|
-
|
100
|
+
assert_raises StandardError do
|
101
101
|
# the template must raise an exception because it calls expand :foreach => nil
|
102
102
|
tc.expand('null_context_test::NullContextTestBad2', :for => :dummy)
|
103
103
|
end
|
104
|
-
|
105
|
-
tc.expand('null_context_test::NullContextTestOk', :for => :dummy)
|
106
|
-
end
|
104
|
+
tc.expand('null_context_test::NullContextTestOk', :for => :dummy)
|
107
105
|
end
|
108
106
|
|
109
107
|
def test_no_indent
|
@@ -141,7 +139,7 @@ class TemplateContainerTest < Test::Unit::TestCase
|
|
141
139
|
tc = RGen::TemplateLanguage::DirectoryTemplateContainer.new([MyMM, CCodeMM], OUTPUT_DIR)
|
142
140
|
tc.load(TEMPLATES_DIR)
|
143
141
|
assert_equal "Local1\r\n", tc.expand('define_local_test/test::Test', :for => :dummy)
|
144
|
-
|
142
|
+
assert_raises StandardError do
|
145
143
|
tc.expand('define_local_test/test::TestForbidden', :for => :dummy)
|
146
144
|
end
|
147
145
|
end
|
@@ -183,13 +181,13 @@ class TemplateContainerTest < Test::Unit::TestCase
|
|
183
181
|
tc.expand('line_endings/mixed::Mixed', :for => :dummy)
|
184
182
|
|
185
183
|
unix = binread(OUTPUT_DIR+'/line_endings_unix.txt')
|
186
|
-
assert unix.include?("|\n") && !unix.include?("|\r\n")
|
184
|
+
assert unix.include?("|\n") && !unix.include?("|\r\n"), unix
|
187
185
|
|
188
186
|
windows = binread(OUTPUT_DIR+'/line_endings_windows.txt')
|
189
|
-
assert windows.include?("|\r\n") && !windows.include?("|\n")
|
187
|
+
assert windows.include?("|\r\n") && !windows.include?("|\n"), windows
|
190
188
|
|
191
189
|
mixed = binread(OUTPUT_DIR+'/line_endings_mixed.txt')
|
192
|
-
assert mixed.include?("|\r\n") && mixed.include?("|\n")
|
190
|
+
assert mixed.include?("|\r\n") && mixed.include?("|\n"), mixed
|
193
191
|
end
|
194
192
|
|
195
193
|
def test_ws
|
@@ -11,7 +11,7 @@ module ClassModelChecker
|
|
11
11
|
|
12
12
|
# check main package
|
13
13
|
mainPackage = envUML.find(:class => UML13::Package, :name => "HouseMetamodel").first
|
14
|
-
|
14
|
+
assert mainPackage != nil
|
15
15
|
|
16
16
|
# check Rooms package
|
17
17
|
subs = mainPackage.ownedElement.select{|e| e.is_a?(UML13::Package)}
|
@@ -26,10 +26,10 @@ module ClassModelChecker
|
|
26
26
|
personClass = classes.find{|c| c.name == "Person"}
|
27
27
|
meetingPlaceClass = classes.find{|c| c.name == "MeetingPlace"}
|
28
28
|
cookingPlaceInterface = mainPackage.ownedElement.find{|e| e.is_a?(UML13::Interface) && e.name == "CookingPlace"}
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
29
|
+
assert houseClass != nil
|
30
|
+
assert personClass != nil
|
31
|
+
assert meetingPlaceClass != nil
|
32
|
+
assert cookingPlaceInterface != nil
|
33
33
|
|
34
34
|
# check Rooms package classes
|
35
35
|
classes = roomsPackage.ownedElement.select{|e| e.is_a?(UML13::Class)}
|
@@ -37,20 +37,20 @@ module ClassModelChecker
|
|
37
37
|
roomClass = classes.find{|c| c.name == "Room"}
|
38
38
|
kitchenClass = classes.find{|c| c.name == "Kitchen"}
|
39
39
|
bathroomClass = classes.find{|c| c.name == "Bathroom"}
|
40
|
-
|
41
|
-
|
42
|
-
|
40
|
+
assert roomClass != nil
|
41
|
+
assert kitchenClass != nil
|
42
|
+
assert bathroomClass != nil
|
43
43
|
|
44
44
|
# check Room inheritance
|
45
45
|
assert_equal 2, roomClass.specialization.child.size
|
46
|
-
|
47
|
-
|
46
|
+
assert nil != roomClass.specialization.child.find{|c| c.name == "Kitchen"}
|
47
|
+
assert nil != roomClass.specialization.child.find{|c| c.name == "Bathroom"}
|
48
48
|
assert_equal 2, kitchenClass.generalization.parent.size
|
49
49
|
assert_equal roomClass.object_id, kitchenClass.generalization.parent.find{|c| c.name == "Room"}.object_id
|
50
50
|
assert_equal meetingPlaceClass.object_id, kitchenClass.generalization.parent.find{|c| c.name == "MeetingPlace"}.object_id
|
51
51
|
assert_equal 1, bathroomClass.generalization.parent.size
|
52
52
|
assert_equal roomClass.object_id, bathroomClass.generalization.parent.first.object_id
|
53
|
-
|
53
|
+
assert nil != kitchenClass.clientDependency.find{|d| d.stereotype.name == "implements"}
|
54
54
|
assert_equal cookingPlaceInterface.object_id, kitchenClass.clientDependency.supplier.find{|c| c.name == "CookingPlace"}.object_id
|
55
55
|
assert_equal kitchenClass.object_id, cookingPlaceInterface.supplierDependency.client.find{|c| c.name == "Kitchen"}.object_id
|
56
56
|
|
@@ -72,8 +72,8 @@ module ClassModelChecker
|
|
72
72
|
assert_equal 2, houseClass.remoteNavigableEnd.size
|
73
73
|
bathEnd = houseClass.remoteNavigableEnd.find{|e| e.name == "bathroom"}
|
74
74
|
kitchenEnd = houseClass.remoteNavigableEnd.find{|e| e.name== "kitchen"}
|
75
|
-
|
76
|
-
|
75
|
+
assert bathEnd != nil
|
76
|
+
assert kitchenEnd != nil
|
77
77
|
assert_equal UML13::Association, bathEnd.association.class
|
78
78
|
assert_equal UML13::Association, kitchenEnd.association.class
|
79
79
|
assert_equal "1", kitchenEnd.multiplicity.range.first.lower
|
@@ -82,7 +82,7 @@ module ClassModelChecker
|
|
82
82
|
# check House IN associations
|
83
83
|
assert_equal 3, houseClass.localNavigableEnd.size
|
84
84
|
homeEnd = houseClass.localNavigableEnd.find{|e| e.name == "home"}
|
85
|
-
|
85
|
+
assert homeEnd != nil
|
86
86
|
assert_equal UML13::Association, homeEnd.association.class
|
87
87
|
assert_equal "0", homeEnd.multiplicity.range.first.lower
|
88
88
|
assert_equal "*", homeEnd.multiplicity.range.first.upper
|
@@ -97,14 +97,14 @@ module ClassModelChecker
|
|
97
97
|
assert_nil mainPackage
|
98
98
|
|
99
99
|
roomsPackage = envUML.find(:class => UML13::Package, :name => "Rooms").first
|
100
|
-
|
100
|
+
assert roomsPackage != nil
|
101
101
|
|
102
102
|
roomClass = envUML.find(:class => UML13::Class, :name => "Room").first
|
103
|
-
|
103
|
+
assert roomClass != nil
|
104
104
|
|
105
105
|
# House is created from an EAStub
|
106
106
|
houseClass = roomClass.remoteCompositeEnd.first.type
|
107
|
-
|
107
|
+
assert houseClass != nil
|
108
108
|
assert_equal "House", houseClass.name
|
109
109
|
# House is not in a package since it's just a stub
|
110
110
|
assert houseClass.namespace.nil?
|
@@ -12,7 +12,7 @@ module ECoreModelChecker
|
|
12
12
|
|
13
13
|
# check main package
|
14
14
|
mainPackage = env.elements.select {|e| e.is_a? EPackage and e.name == "HouseMetamodel"}.first
|
15
|
-
|
15
|
+
assert mainPackage != nil
|
16
16
|
|
17
17
|
# check Rooms package
|
18
18
|
assert mainPackage.eSubpackages.is_a?(Array)
|
@@ -29,10 +29,10 @@ module ECoreModelChecker
|
|
29
29
|
personClass = mainPackage.eClassifiers.select{|c| c.name == "Person"}.first
|
30
30
|
meetingPlaceClass = mainPackage.eClassifiers.select{|c| c.name == "MeetingPlace"}.first
|
31
31
|
cookingPlaceInterface = mainPackage.eClassifiers.select{|c| c.name == "CookingPlace"}.first
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
32
|
+
assert houseClass != nil
|
33
|
+
assert personClass != nil
|
34
|
+
assert meetingPlaceClass != nil
|
35
|
+
assert cookingPlaceInterface != nil
|
36
36
|
|
37
37
|
# check Rooms package classes
|
38
38
|
assert roomsPackage.eClassifiers.is_a?(Array)
|
@@ -41,9 +41,9 @@ module ECoreModelChecker
|
|
41
41
|
roomClass = roomsPackage.eClassifiers.select{|c| c.name == "Room"}.first
|
42
42
|
kitchenClass = roomsPackage.eClassifiers.select{|c| c.name == "Kitchen"}.first
|
43
43
|
bathroomClass = roomsPackage.eClassifiers.select{|c| c.name == "Bathroom"}.first
|
44
|
-
|
45
|
-
|
46
|
-
|
44
|
+
assert roomClass != nil
|
45
|
+
assert kitchenClass != nil
|
46
|
+
assert bathroomClass != nil
|
47
47
|
|
48
48
|
# check Room inheritance
|
49
49
|
assert kitchenClass.eSuperTypes.is_a?(Array)
|
@@ -63,7 +63,7 @@ module ECoreModelChecker
|
|
63
63
|
assert_equal "room", roomRef.name
|
64
64
|
assert_equal 1, roomRef.lowerBound
|
65
65
|
assert_equal(-1, roomRef.upperBound)
|
66
|
-
|
66
|
+
assert roomRef.eOpposite != nil
|
67
67
|
assert_equal houseClass.object_id, roomRef.eOpposite.eType.object_id
|
68
68
|
|
69
69
|
partOfRefs = roomClass.eReferences.select{|r| r.eOpposite && r.eOpposite.containment}
|
@@ -78,10 +78,10 @@ module ECoreModelChecker
|
|
78
78
|
bathRef = houseClass.eReferences.find {|e| e.name == "bathroom"}
|
79
79
|
kitchenRef = houseClass.eReferences.find {|e| e.name == "kitchen"}
|
80
80
|
roomRef = houseClass.eReferences.find {|e| e.name == "room"}
|
81
|
-
|
81
|
+
assert bathRef != nil
|
82
82
|
assert_nil bathRef.eOpposite
|
83
|
-
|
84
|
-
|
83
|
+
assert kitchenRef != nil
|
84
|
+
assert roomRef != nil
|
85
85
|
assert_equal 1, kitchenRef.lowerBound
|
86
86
|
assert_equal 1, kitchenRef.upperBound
|
87
87
|
assert_equal 1, roomRef.lowerBound
|
@@ -91,7 +91,7 @@ module ECoreModelChecker
|
|
91
91
|
houseInRefs = env.find(:class => EReference, :eType => houseClass)
|
92
92
|
assert_equal 3, houseInRefs.size
|
93
93
|
homeEnd = houseInRefs.find{|e| e.name == "home"}
|
94
|
-
|
94
|
+
assert homeEnd != nil
|
95
95
|
assert_equal 0, homeEnd.lowerBound
|
96
96
|
assert_equal(-1, homeEnd.upperBound)
|
97
97
|
|
@@ -18,10 +18,10 @@ module ObjectModelChecker
|
|
18
18
|
|
19
19
|
# check main package
|
20
20
|
mainPackage = envUML.find(:class => UML13::Package, :name => "HouseExampleModel").first
|
21
|
-
|
21
|
+
assert mainPackage != nil
|
22
22
|
|
23
23
|
eaRootCollaboration = mainPackage.ownedElement.find{|e| e.is_a?(UML13::Collaboration) && e.name == "Collaborations"}
|
24
|
-
|
24
|
+
assert eaRootCollaboration != nil
|
25
25
|
|
26
26
|
# check main package objects
|
27
27
|
objects = eaRootCollaboration.ownedElement.select{|e| e.is_a?(UML13::ClassifierRole)}
|
@@ -56,10 +56,10 @@ module ObjectModelChecker
|
|
56
56
|
assert someonesHouse.localCompositeEnd.otherEnd.is_a?(Array)
|
57
57
|
assert_equal 4, someonesHouse.localCompositeEnd.otherEnd.size
|
58
58
|
assert someonesHouse.localCompositeEnd.otherEnd.all?{|e| e.name == "room"}
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
59
|
+
assert nil != someonesHouse.localCompositeEnd.otherEnd.getType.find{|o| o == yellowRoom}
|
60
|
+
assert nil != someonesHouse.localCompositeEnd.otherEnd.getType.find{|o| o == greenRoom}
|
61
|
+
assert nil != someonesHouse.localCompositeEnd.otherEnd.getType.find{|o| o == hotRoom}
|
62
|
+
assert nil != someonesHouse.localCompositeEnd.otherEnd.getType.find{|o| o == wetRoom}
|
63
63
|
|
64
64
|
end
|
65
65
|
end
|
data/test/transformer_test.rb
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
$:.unshift File.join(File.dirname(__FILE__),"..","lib")
|
2
2
|
$:.unshift File.join(File.dirname(__FILE__),"..","test")
|
3
3
|
|
4
|
-
require '
|
4
|
+
require 'minitest/autorun'
|
5
5
|
require 'rgen/transformer'
|
6
6
|
require 'rgen/environment'
|
7
7
|
require 'rgen/util/model_comparator'
|
8
8
|
require 'metamodels/uml13_metamodel'
|
9
9
|
require 'testmodel/class_model_checker'
|
10
10
|
|
11
|
-
class TransformerTest < Test
|
11
|
+
class TransformerTest < MiniTest::Test
|
12
12
|
|
13
13
|
class ModelIn
|
14
14
|
attr_accessor :name
|
@@ -135,7 +135,7 @@ class TransformerTest < Test::Unit::TestCase
|
|
135
135
|
assert_equal t1.trans(from).object_id, t2.trans(from).object_id
|
136
136
|
assert_equal :dummy, t2.trans(from2)
|
137
137
|
# and no transformer rule is evaluated at this point
|
138
|
-
|
138
|
+
assert_nil t2.modelInTrans_count
|
139
139
|
# now transform a new object in second transformer
|
140
140
|
assert t2.trans(from3).is_a?(ModelOut)
|
141
141
|
assert_equal "Test3", t2.trans(from3).name
|
@@ -1,10 +1,10 @@
|
|
1
1
|
$:.unshift(File.dirname(__FILE__)+"/../../lib")
|
2
2
|
|
3
|
-
require '
|
3
|
+
require 'minitest/autorun'
|
4
4
|
require 'fileutils'
|
5
5
|
require 'rgen/util/file_cache_map'
|
6
6
|
|
7
|
-
class FileCacheMapTest < Test
|
7
|
+
class FileCacheMapTest < MiniTest::Test
|
8
8
|
|
9
9
|
TestDir = File.dirname(__FILE__)+"/file_cache_map_test/testdir"
|
10
10
|
|
@@ -1,12 +1,12 @@
|
|
1
1
|
$:.unshift(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/model_builder'
|
7
7
|
require 'rgen/util/pattern_matcher'
|
8
8
|
|
9
|
-
class PatternMatcherTest < Test
|
9
|
+
class PatternMatcherTest < MiniTest::Test
|
10
10
|
|
11
11
|
module TestMM
|
12
12
|
extend RGen::MetamodelBuilder::ModuleExtension
|
@@ -51,7 +51,7 @@ def test_simple
|
|
51
51
|
env = modelA
|
52
52
|
|
53
53
|
match = matcher.find_pattern(env, "simple")
|
54
|
-
|
54
|
+
assert match != nil
|
55
55
|
assert_equal "A", match.root.name
|
56
56
|
assert_equal env.find(:class => TestMM::Node, :name => "A").first.object_id, match.root.object_id
|
57
57
|
assert_equal 2, match.elements.size
|
@@ -75,21 +75,21 @@ def test_value_binding
|
|
75
75
|
env = modelA
|
76
76
|
|
77
77
|
match = matcher.find_pattern(env, "single_child")
|
78
|
-
|
78
|
+
assert match != nil
|
79
79
|
assert_equal "A", match.root.name
|
80
80
|
assert_equal "AA", match.bound_values[1].name
|
81
81
|
|
82
82
|
match = matcher.find_pattern(env, "single_child", "D")
|
83
|
-
|
83
|
+
assert match != nil
|
84
84
|
assert_equal "D", match.root.name
|
85
85
|
assert_equal "DD", match.bound_values[0].name
|
86
86
|
|
87
87
|
match = matcher.find_pattern(env, "double_child")
|
88
|
-
|
88
|
+
assert match != nil
|
89
89
|
assert_equal "C", match.root.name
|
90
90
|
|
91
91
|
match = matcher.find_pattern(env, "child_pattern")
|
92
|
-
|
92
|
+
assert match != nil
|
93
93
|
assert_equal ["AA"], match.bound_values
|
94
94
|
end
|
95
95
|
|
@@ -10,7 +10,7 @@ module SimpleECoreModelChecker
|
|
10
10
|
|
11
11
|
# check main package
|
12
12
|
mainPackage = env.elements.select {|e| e.is_a? EPackage and e.name == "HouseMetamodel"}.first
|
13
|
-
|
13
|
+
assert mainPackage != nil
|
14
14
|
|
15
15
|
# check Rooms package
|
16
16
|
assert mainPackage.eSubpackages.is_a?(Array)
|
@@ -26,9 +26,9 @@ module SimpleECoreModelChecker
|
|
26
26
|
houseClass = mainPackage.eClassifiers.select{|c| c.name == "House"}.first
|
27
27
|
personClass = mainPackage.eClassifiers.select{|c| c.name == "Person"}.first
|
28
28
|
meetingPlaceClass = mainPackage.eClassifiers.select{|c| c.name == "MeetingPlace"}.first
|
29
|
-
|
30
|
-
|
31
|
-
|
29
|
+
assert houseClass != nil
|
30
|
+
assert personClass != nil
|
31
|
+
assert meetingPlaceClass != nil
|
32
32
|
|
33
33
|
# check Rooms package classes
|
34
34
|
assert roomsPackage.eClassifiers.is_a?(Array)
|
@@ -37,9 +37,9 @@ module SimpleECoreModelChecker
|
|
37
37
|
roomClass = roomsPackage.eClassifiers.select{|c| c.name == "Room"}.first
|
38
38
|
kitchenClass = roomsPackage.eClassifiers.select{|c| c.name == "Kitchen"}.first
|
39
39
|
bathroomClass = roomsPackage.eClassifiers.select{|c| c.name == "Bathroom"}.first
|
40
|
-
|
41
|
-
|
42
|
-
|
40
|
+
assert roomClass != nil
|
41
|
+
assert kitchenClass != nil
|
42
|
+
assert bathroomClass != nil
|
43
43
|
|
44
44
|
# check Room inheritance
|
45
45
|
assert kitchenClass.eSuperTypes.is_a?(Array)
|
@@ -58,7 +58,7 @@ module SimpleECoreModelChecker
|
|
58
58
|
assert_equal "room", roomRef.name
|
59
59
|
assert_equal 1, roomRef.lowerBound
|
60
60
|
assert_equal(-1, roomRef.upperBound)
|
61
|
-
|
61
|
+
assert roomRef.eOpposite != nil
|
62
62
|
assert_equal houseClass.object_id, roomRef.eOpposite.eType.object_id
|
63
63
|
|
64
64
|
partOfRefs = roomClass.eReferences.select{|r| r.eOpposite && r.eOpposite.containment}
|
@@ -73,10 +73,10 @@ module SimpleECoreModelChecker
|
|
73
73
|
bathRef = houseClass.eReferences.find {|e| e.name == "bathroom"}
|
74
74
|
kitchenRef = houseClass.eReferences.find {|e| e.name == "kitchen"}
|
75
75
|
roomRef = houseClass.eReferences.find {|e| e.name == "room"}
|
76
|
-
|
76
|
+
assert bathRef != nil
|
77
77
|
assert_nil bathRef.eOpposite
|
78
|
-
|
79
|
-
|
78
|
+
assert kitchenRef != nil
|
79
|
+
assert roomRef != nil
|
80
80
|
assert_equal 1, kitchenRef.lowerBound
|
81
81
|
assert_equal 1, kitchenRef.upperBound
|
82
82
|
assert_equal 1, roomRef.lowerBound
|
@@ -86,7 +86,7 @@ module SimpleECoreModelChecker
|
|
86
86
|
houseInRefs = env.find(:class => EReference, :eType => houseClass)
|
87
87
|
assert_equal 3, houseInRefs.size
|
88
88
|
homeEnd = houseInRefs.find{|e| e.name == "home"}
|
89
|
-
|
89
|
+
assert homeEnd != nil
|
90
90
|
assert_equal 0, homeEnd.lowerBound
|
91
91
|
assert_equal(-1, homeEnd.upperBound)
|
92
92
|
|
@@ -1,6 +1,6 @@
|
|
1
1
|
$:.unshift File.join(File.dirname(__FILE__),"..","lib")
|
2
2
|
|
3
|
-
require '
|
3
|
+
require 'minitest/autorun'
|
4
4
|
require 'rgen/instantiator/default_xml_instantiator'
|
5
5
|
require 'rgen/environment'
|
6
6
|
require 'rgen/util/model_dumper'
|
@@ -18,7 +18,7 @@ module DefaultMM
|
|
18
18
|
Person.one_to_one 'personalRoom', MNS::Room, 'inhabitant'
|
19
19
|
end
|
20
20
|
|
21
|
-
class XMLInstantiatorTest < Test
|
21
|
+
class XMLInstantiatorTest < MiniTest::Test
|
22
22
|
|
23
23
|
XML_DIR = File.join(File.dirname(__FILE__),"testmodel")
|
24
24
|
|
@@ -96,7 +96,7 @@ class XMLInstantiatorTest < Test::Unit::TestCase
|
|
96
96
|
inst.instantiate_file(File.join(XML_DIR,"manual_testmodel.xml"))
|
97
97
|
|
98
98
|
house = env.find(:class => DefaultMM::MNS::House).first
|
99
|
-
|
99
|
+
assert house != nil
|
100
100
|
assert_equal 2, house.room.size
|
101
101
|
|
102
102
|
rooms = env.find(:class => DefaultMM::MNS::Room)
|
@@ -104,12 +104,12 @@ class XMLInstantiatorTest < Test::Unit::TestCase
|
|
104
104
|
assert_equal 0, (house.room - rooms).size
|
105
105
|
rooms.each {|r| assert r.parent == house}
|
106
106
|
tomsRoom = rooms.select{|r| r.name == "TomsRoom"}.first
|
107
|
-
|
107
|
+
assert tomsRoom != nil
|
108
108
|
|
109
109
|
persons = env.find(:class => DefaultMM::Person)
|
110
110
|
assert_equal 4, persons.size
|
111
111
|
tom = persons.select{|p| p.name == "Tom"}.first
|
112
|
-
|
112
|
+
assert tom != nil
|
113
113
|
|
114
114
|
assert tom.personalRoom == tomsRoom
|
115
115
|
|
@@ -123,7 +123,7 @@ class XMLInstantiatorTest < Test::Unit::TestCase
|
|
123
123
|
inst.instantiate_file(File.join(XML_DIR,"manual_testmodel.xml"))
|
124
124
|
|
125
125
|
house = env.find(:class => EmptyMM::MNS_House).first
|
126
|
-
|
126
|
+
assert house != nil
|
127
127
|
assert_equal 2, house.mNS_Room.size
|
128
128
|
assert_equal "before kitchen", remove_whitespace_elements(house.chardata)[0].strip
|
129
129
|
assert_equal "after kitchen", remove_whitespace_elements(house.chardata)[1].strip
|
@@ -134,13 +134,13 @@ class XMLInstantiatorTest < Test::Unit::TestCase
|
|
134
134
|
assert_equal 0, (house.mNS_Room - rooms).size
|
135
135
|
rooms.each {|r| assert r.parent == house}
|
136
136
|
tomsRoom = rooms.select{|r| r.name == "TomsRoom"}.first
|
137
|
-
|
137
|
+
assert tomsRoom != nil
|
138
138
|
assert_equal "within toms room", remove_whitespace_elements(tomsRoom.chardata)[0]
|
139
139
|
|
140
140
|
persons = env.find(:class => EmptyMM::Person)
|
141
141
|
assert_equal 4, persons.size
|
142
142
|
tom = persons.select{|p| p.name == "Tom"}.first
|
143
|
-
|
143
|
+
assert tom != nil
|
144
144
|
end
|
145
145
|
|
146
146
|
def remove_whitespace_elements(elements)
|