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
data/test/model_fragment_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/metamodel_builder'
|
5
5
|
require 'rgen/fragment/model_fragment'
|
6
6
|
|
7
|
-
class ModelFragmentTest < Test
|
7
|
+
class ModelFragmentTest < MiniTest::Test
|
8
8
|
|
9
9
|
module TestMetamodel
|
10
10
|
extend RGen::MetamodelBuilder::ModuleExtension
|
data/test/output_handler_test.rb
CHANGED
@@ -1,9 +1,9 @@
|
|
1
1
|
$:.unshift File.join(File.dirname(__FILE__),"..","lib")
|
2
2
|
|
3
|
-
require '
|
3
|
+
require 'minitest/autorun'
|
4
4
|
require 'rgen/template_language/output_handler'
|
5
5
|
|
6
|
-
class MetamodelBuilderTest < Test
|
6
|
+
class MetamodelBuilderTest < MiniTest::Test
|
7
7
|
def test_direct_nl
|
8
8
|
h = RGen::TemplateLanguage::OutputHandler.new
|
9
9
|
h.mode = :direct
|
@@ -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/metamodel_builder'
|
5
5
|
require 'rgen/serializer/qualified_name_provider'
|
6
6
|
|
7
|
-
class QualifiedNameProviderTest < Test
|
7
|
+
class QualifiedNameProviderTest < MiniTest::Test
|
8
8
|
|
9
9
|
class AbstractTestNode < RGen::MetamodelBuilder::MMBase
|
10
10
|
contains_many 'children', AbstractTestNode, "parent"
|
@@ -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/metamodel_builder'
|
5
5
|
require 'rgen/instantiator/qualified_name_resolver'
|
6
6
|
|
7
|
-
class QualifiedNameResolverTest < Test
|
7
|
+
class QualifiedNameResolverTest < MiniTest::Test
|
8
8
|
|
9
9
|
class TestNode < RGen::MetamodelBuilder::MMBase
|
10
10
|
has_attr 'name', String
|
@@ -86,8 +86,8 @@ class QualifiedNameResolverTest < Test::Unit::TestCase
|
|
86
86
|
assert_equal model[1].children[0].children[0], res.resolveIdentifier("/Root2/Sub21/Sub211")
|
87
87
|
# duplicate name yields two result elements
|
88
88
|
assert_equal [model[2], model[3]], res.resolveIdentifier("/Root3")
|
89
|
-
|
90
|
-
|
89
|
+
assert_nil res.resolveIdentifier("/RootX")
|
90
|
+
assert_nil res.resolveIdentifier("/Root1/SubX")
|
91
91
|
end
|
92
92
|
|
93
93
|
def test_oneChild
|
@@ -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/metamodel_builder'
|
5
5
|
require 'rgen/instantiator/reference_resolver'
|
6
6
|
|
7
|
-
class ReferenceResolverTest < Test
|
7
|
+
class ReferenceResolverTest < MiniTest::Test
|
8
8
|
|
9
9
|
class TestNode < RGen::MetamodelBuilder::MMBase
|
10
10
|
has_attr 'name', String
|
@@ -107,9 +107,9 @@ class ReferenceResolverTest < Test::Unit::TestCase
|
|
107
107
|
def check_model(nodeA, nodeB, nodeC)
|
108
108
|
assert_equal nodeB, nodeA.other
|
109
109
|
assert_equal [], nodeA.others
|
110
|
-
|
110
|
+
assert_nil nodeB.other
|
111
111
|
assert_equal [nodeA, nodeC], nodeB.others
|
112
|
-
|
112
|
+
assert_nil nodeC.other
|
113
113
|
assert_equal [], nodeC.others
|
114
114
|
end
|
115
115
|
|
data/test/rgen_test.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
$:.unshift File.dirname(__FILE__)
|
2
2
|
|
3
|
-
require '
|
3
|
+
require 'minitest/autorun'
|
4
4
|
|
5
5
|
require 'array_extensions_test'
|
6
6
|
require 'ea_instantiator_test'
|
@@ -23,4 +23,5 @@ require 'metamodel_from_ecore_test'
|
|
23
23
|
require 'util_test'
|
24
24
|
require 'model_fragment_test'
|
25
25
|
require 'qualified_name_provider_test'
|
26
|
+
require 'ecore_to_ruby_test'
|
26
27
|
|
@@ -0,0 +1,14 @@
|
|
1
|
+
<% define 'Test', :for => Object do %>
|
2
|
+
<%iinc%>
|
3
|
+
<% expand 'Sub' %>
|
4
|
+
<%idec%>
|
5
|
+
<% end %>
|
6
|
+
|
7
|
+
<% define 'Sub', :for => Object do %>
|
8
|
+
Sub
|
9
|
+
<%# white space after the following end tag but no NL %>
|
10
|
+
<%# the bug was triggered when the @output of template loading %>
|
11
|
+
<%# was non empty and not terminated by a newline; %>
|
12
|
+
<%# without the space after end, the newline above this %>
|
13
|
+
<%# define block would be the last character %>
|
14
|
+
<% end %>
|
@@ -0,0 +1,16 @@
|
|
1
|
+
<% define 'Test', :for => Object do %>
|
2
|
+
<%iinc%>
|
3
|
+
Start <% expand 'Sub' %><%nows%>
|
4
|
+
<%idec%>
|
5
|
+
<% end %>
|
6
|
+
|
7
|
+
<% define 'Sub', :for => Object do %>
|
8
|
+
<%# here we have the noIndentNextLine flag set %>
|
9
|
+
<% expand 'Sub2' %>
|
10
|
+
Sub
|
11
|
+
<% end %>
|
12
|
+
|
13
|
+
<% define 'Sub2', :for => Object do %>
|
14
|
+
<%# here we reset the noIndentNextLine flag %>
|
15
|
+
Sub2
|
16
|
+
<% end %>
|
@@ -0,0 +1,21 @@
|
|
1
|
+
<% define 'WSTest', :for => Object do %>
|
2
|
+
/*
|
3
|
+
<%ws%>*
|
4
|
+
<%ws%>*/
|
5
|
+
<% end %>
|
6
|
+
|
7
|
+
<% define 'WSTest2', :for => Object do %>
|
8
|
+
<% expand 'SubWithNows' %><%ws%>= 1;
|
9
|
+
<% end %>
|
10
|
+
|
11
|
+
<% define 'SubWithNows', :for => Object do %>
|
12
|
+
somevar<%nows%>
|
13
|
+
<% end %>
|
14
|
+
|
15
|
+
<% define 'WSTest3', :for => Object do %>
|
16
|
+
<%iinc%>
|
17
|
+
/*
|
18
|
+
<%ws%>*
|
19
|
+
<%ws%>*/
|
20
|
+
<%idec%>
|
21
|
+
<% 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/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
|
@@ -158,6 +156,59 @@ class TemplateContainerTest < Test::Unit::TestCase
|
|
158
156
|
tc = RGen::TemplateLanguage::DirectoryTemplateContainer.new([MyMM, CCodeMM], OUTPUT_DIR)
|
159
157
|
tc.load(TEMPLATES_DIR)
|
160
158
|
assert_equal("|before callback\r\n |in callback\r\n|after callback\r\n |after iinc\r\n",
|
161
|
-
|
159
|
+
tc.expand('callback_indent_test/a::caller', :for => :dummy))
|
162
160
|
end
|
161
|
+
|
162
|
+
def test_indent_nonl_at_eof
|
163
|
+
tc = RGen::TemplateLanguage::DirectoryTemplateContainer.new([MyMM, CCodeMM], OUTPUT_DIR)
|
164
|
+
tc.load(TEMPLATES_DIR)
|
165
|
+
assert_equal(" Sub\n",
|
166
|
+
tc.expand('indent_nonl_at_eof_test/test::Test', :for => :dummy))
|
167
|
+
end
|
168
|
+
|
169
|
+
def test_indent_same_line_sub
|
170
|
+
tc = RGen::TemplateLanguage::DirectoryTemplateContainer.new([MyMM, CCodeMM], OUTPUT_DIR)
|
171
|
+
tc.load(TEMPLATES_DIR)
|
172
|
+
assert_equal(" Start Sub2\r\n Sub\r\n",
|
173
|
+
tc.expand('indent_same_line_sub/test::Test', :for => :dummy))
|
174
|
+
end
|
175
|
+
|
176
|
+
def test_line_endings
|
177
|
+
tc = RGen::TemplateLanguage::DirectoryTemplateContainer.new([MyMM, CCodeMM], OUTPUT_DIR)
|
178
|
+
tc.load(TEMPLATES_DIR)
|
179
|
+
tc.expand('line_endings/unix::Unix', :for => :dummy)
|
180
|
+
tc.expand('line_endings/windows::Windows', :for => :dummy)
|
181
|
+
tc.expand('line_endings/mixed::Mixed', :for => :dummy)
|
182
|
+
|
183
|
+
unix = binread(OUTPUT_DIR+'/line_endings_unix.txt')
|
184
|
+
assert unix.include?("|\n") && !unix.include?("|\r\n"), unix
|
185
|
+
|
186
|
+
windows = binread(OUTPUT_DIR+'/line_endings_windows.txt')
|
187
|
+
assert windows.include?("|\r\n") && !windows.include?("|\n"), windows
|
188
|
+
|
189
|
+
mixed = binread(OUTPUT_DIR+'/line_endings_mixed.txt')
|
190
|
+
assert mixed.include?("|\r\n") && mixed.include?("|\n"), mixed
|
191
|
+
end
|
192
|
+
|
193
|
+
def test_ws
|
194
|
+
tc = RGen::TemplateLanguage::DirectoryTemplateContainer.new([MyMM, CCodeMM], OUTPUT_DIR)
|
195
|
+
tc.load(TEMPLATES_DIR)
|
196
|
+
assert_equal("/*\n *\n */\n",
|
197
|
+
tc.expand('ws_test::WSTest', :for => :dummy))
|
198
|
+
assert_equal("somevar = 1;\n",
|
199
|
+
tc.expand('ws_test::WSTest2', :for => :dummy))
|
200
|
+
assert_equal(" /*\n *\n */\n",
|
201
|
+
tc.expand('ws_test::WSTest3', :for => :dummy))
|
202
|
+
end
|
203
|
+
|
204
|
+
private
|
205
|
+
|
206
|
+
def binread(file)
|
207
|
+
result = nil
|
208
|
+
File.open(file, "rb") do |f|
|
209
|
+
result = f.read
|
210
|
+
end
|
211
|
+
result
|
212
|
+
end
|
213
|
+
|
163
214
|
end
|
@@ -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
|
|