rgen 0.5.1 → 0.5.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/CHANGELOG +12 -0
- data/MIT-LICENSE +2 -2
- data/Rakefile +2 -2
- data/lib/mmgen/templates/metamodel_generator.tpl +4 -5
- data/lib/rgen/instantiator/ecore_xml_instantiator.rb +31 -22
- data/lib/rgen/instantiator/json_instantiator.rb +79 -0
- data/lib/rgen/instantiator/json_parser.rb +326 -0
- data/lib/rgen/instantiator/json_parser.y +89 -0
- data/lib/rgen/instantiator/qualified_name_resolver.rb +93 -0
- data/lib/rgen/instantiator/reference_resolver.rb +44 -0
- data/lib/rgen/metamodel_builder.rb +12 -1
- data/lib/rgen/metamodel_builder/builder_extensions.rb +40 -11
- data/lib/rgen/metamodel_builder/builder_runtime.rb +19 -1
- data/lib/rgen/serializer/json_serializer.rb +120 -0
- data/lib/rgen/serializer/xmi20_serializer.rb +14 -3
- data/test/json_test.rb +91 -0
- data/test/metamodel_builder_test.rb +194 -0
- data/test/metamodel_roundtrip_test.rb +37 -3
- data/test/metamodel_roundtrip_test/TestModel.rb +2 -1
- data/test/metamodel_roundtrip_test/houseMetamodel.ecore +1 -0
- data/test/metamodel_roundtrip_test/houseMetamodel_from_ecore.rb +1 -0
- data/test/metamodel_roundtrip_test/using_builtin_types.ecore +8 -0
- data/test/metamodel_roundtrip_test/using_builtin_types_serialized.ecore +8 -0
- data/test/qualified_name_resolver_test.rb +102 -0
- data/test/reference_resolver_test.rb +50 -0
- data/test/rgen_test.rb +4 -0
- metadata +16 -14
@@ -0,0 +1,50 @@
|
|
1
|
+
$:.unshift File.join(File.dirname(__FILE__),"..","lib")
|
2
|
+
|
3
|
+
require 'test/unit'
|
4
|
+
require 'rgen/metamodel_builder'
|
5
|
+
require 'rgen/instantiator/reference_resolver'
|
6
|
+
|
7
|
+
class ReferenceResolverTest < Test::Unit::TestCase
|
8
|
+
|
9
|
+
class TestNode < RGen::MetamodelBuilder::MMBase
|
10
|
+
has_attr 'name', String
|
11
|
+
has_one 'other', TestNode
|
12
|
+
has_many 'others', TestNode
|
13
|
+
end
|
14
|
+
|
15
|
+
class TestResolver
|
16
|
+
include RGen::Instantiator::ReferenceResolver
|
17
|
+
def initialize(nodeA, nodeB, nodeC)
|
18
|
+
@nodeA, @nodeB, @nodeC = nodeA, nodeB, nodeC
|
19
|
+
end
|
20
|
+
def resolveIdentifier(ident)
|
21
|
+
{:a => @nodeA, :b => @nodeB, :c => @nodeC}[ident]
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
def test_simple
|
26
|
+
nodeA = TestNode.new(:name => "NodeA")
|
27
|
+
nodeB = TestNode.new(:name => "NodeB")
|
28
|
+
nodeC = TestNode.new(:name => "NodeC")
|
29
|
+
bProxy = RGen::MetamodelBuilder::MMProxy.new(:b)
|
30
|
+
nodeA.other = bProxy
|
31
|
+
aProxy = RGen::MetamodelBuilder::MMProxy.new(:a)
|
32
|
+
cProxy = RGen::MetamodelBuilder::MMProxy.new(:c)
|
33
|
+
nodeB.others = [aProxy, cProxy]
|
34
|
+
unresolvedReferences = [
|
35
|
+
RGen::Instantiator::ReferenceResolver::UnresolvedReference.new(nodeA, "other", bProxy),
|
36
|
+
RGen::Instantiator::ReferenceResolver::UnresolvedReference.new(nodeB, "others", aProxy),
|
37
|
+
RGen::Instantiator::ReferenceResolver::UnresolvedReference.new(nodeB, "others", cProxy)
|
38
|
+
]
|
39
|
+
resolver = TestResolver.new(nodeA, nodeB, nodeC)
|
40
|
+
resolver.resolveReferences(unresolvedReferences)
|
41
|
+
assert_equal nodeB, nodeA.other
|
42
|
+
assert_equal [], nodeA.others
|
43
|
+
assert_equal nil, nodeB.other
|
44
|
+
assert_equal [nodeA, nodeC], nodeB.others
|
45
|
+
assert_equal nil, nodeC.other
|
46
|
+
assert_equal [], nodeC.others
|
47
|
+
end
|
48
|
+
|
49
|
+
end
|
50
|
+
|
data/test/rgen_test.rb
CHANGED
metadata
CHANGED
@@ -1,12 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rgen
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
|
5
|
-
segments:
|
6
|
-
- 0
|
7
|
-
- 5
|
8
|
-
- 1
|
9
|
-
version: 0.5.1
|
4
|
+
version: 0.5.2
|
10
5
|
platform: ruby
|
11
6
|
authors:
|
12
7
|
- Martin Thiede
|
@@ -14,7 +9,7 @@ autorequire:
|
|
14
9
|
bindir: bin
|
15
10
|
cert_chain: []
|
16
11
|
|
17
|
-
date:
|
12
|
+
date: 2010-06-13 00:00:00 +02:00
|
18
13
|
default_executable:
|
19
14
|
dependencies: []
|
20
15
|
|
@@ -55,7 +50,12 @@ files:
|
|
55
50
|
- lib/rgen/instantiator/abstract_xml_instantiator.rb
|
56
51
|
- lib/rgen/instantiator/default_xml_instantiator.rb
|
57
52
|
- lib/rgen/instantiator/ecore_xml_instantiator.rb
|
53
|
+
- lib/rgen/instantiator/json_instantiator.rb
|
54
|
+
- lib/rgen/instantiator/json_parser.rb
|
55
|
+
- lib/rgen/instantiator/json_parser.y
|
58
56
|
- lib/rgen/instantiator/nodebased_xml_instantiator.rb
|
57
|
+
- lib/rgen/instantiator/qualified_name_resolver.rb
|
58
|
+
- lib/rgen/instantiator/reference_resolver.rb
|
59
59
|
- lib/rgen/instantiator/xmi11_instantiator.rb
|
60
60
|
- lib/rgen/metamodel_builder/builder_extensions.rb
|
61
61
|
- lib/rgen/metamodel_builder/builder_runtime.rb
|
@@ -74,6 +74,7 @@ files:
|
|
74
74
|
- lib/rgen/model_comparator_base.rb
|
75
75
|
- lib/rgen/model_dumper.rb
|
76
76
|
- lib/rgen/name_helper.rb
|
77
|
+
- lib/rgen/serializer/json_serializer.rb
|
77
78
|
- lib/rgen/serializer/xmi11_serializer.rb
|
78
79
|
- lib/rgen/serializer/xmi20_serializer.rb
|
79
80
|
- lib/rgen/serializer/xml_serializer.rb
|
@@ -90,12 +91,15 @@ files:
|
|
90
91
|
- test/ea_serializer_test.rb
|
91
92
|
- test/ecore_self_test.rb
|
92
93
|
- test/environment_test.rb
|
94
|
+
- test/json_test.rb
|
93
95
|
- test/metamodel_builder_test.rb
|
94
96
|
- test/metamodel_roundtrip_test/houseMetamodel.ecore
|
95
97
|
- test/metamodel_roundtrip_test/houseMetamodel_from_ecore.rb
|
96
98
|
- test/metamodel_roundtrip_test/houseMetamodel_Regenerated.ecore
|
97
99
|
- test/metamodel_roundtrip_test/TestModel.rb
|
98
100
|
- test/metamodel_roundtrip_test/TestModel_Regenerated.rb
|
101
|
+
- test/metamodel_roundtrip_test/using_builtin_types.ecore
|
102
|
+
- test/metamodel_roundtrip_test/using_builtin_types_serialized.ecore
|
99
103
|
- test/metamodel_roundtrip_test.rb
|
100
104
|
- test/method_delegation_test.rb
|
101
105
|
- test/model_builder/builder_context_test.rb
|
@@ -109,6 +113,8 @@ files:
|
|
109
113
|
- test/model_builder/test_model/statemachine1.rb
|
110
114
|
- test/model_builder_test.rb
|
111
115
|
- test/output_handler_test.rb
|
116
|
+
- test/qualified_name_resolver_test.rb
|
117
|
+
- test/reference_resolver_test.rb
|
112
118
|
- test/rgen_test.rb
|
113
119
|
- test/template_language_test/expected_result1.txt
|
114
120
|
- test/template_language_test/expected_result2.txt
|
@@ -228,25 +234,21 @@ rdoc_options:
|
|
228
234
|
require_paths:
|
229
235
|
- lib
|
230
236
|
required_ruby_version: !ruby/object:Gem::Requirement
|
231
|
-
none: false
|
232
237
|
requirements:
|
233
238
|
- - ">="
|
234
239
|
- !ruby/object:Gem::Version
|
235
|
-
segments:
|
236
|
-
- 0
|
237
240
|
version: "0"
|
241
|
+
version:
|
238
242
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
239
|
-
none: false
|
240
243
|
requirements:
|
241
244
|
- - ">="
|
242
245
|
- !ruby/object:Gem::Version
|
243
|
-
segments:
|
244
|
-
- 0
|
245
246
|
version: "0"
|
247
|
+
version:
|
246
248
|
requirements: []
|
247
249
|
|
248
250
|
rubyforge_project: rgen
|
249
|
-
rubygems_version: 1.3.
|
251
|
+
rubygems_version: 1.3.5
|
250
252
|
signing_key:
|
251
253
|
specification_version: 3
|
252
254
|
summary: Ruby Modelling and Generator Framework
|