codemodels 0.2.2-java → 0.2.3-java
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/LICENSE +191 -20
- data/README.md +2 -2
- data/codemodels.gemspec +2 -3
- data/lib/codemodels/info_extraction.rb +0 -4
- data/lib/codemodels/language.rb +11 -29
- data/lib/codemodels/metamodel.rb +11 -3
- data/lib/codemodels/model_building.rb +47 -51
- data/lib/codemodels/navigation.rb +121 -0
- data/lib/codemodels/parsing.rb +8 -155
- data/lib/codemodels/rgen_ext.rb +31 -84
- data/lib/codemodels/serialization.rb +46 -41
- data/lib/codemodels/source_info.rb +192 -0
- data/lib/codemodels/version.rb +1 -1
- data/lib/codemodels.rb +1 -3
- data/test/test_foreign_navigation.rb +71 -0
- data/test/test_info_extraction.rb +1 -1
- data/test/test_language.rb +34 -4
- data/test/test_metamodel.rb +102 -0
- data/test/test_model_building.rb +12 -0
- data/test/test_rgen_ext.rb +4 -4
- data/test/test_serialization.rb +19 -19
- metadata +11 -9
- data/lib/codemodels/foreign_ast.rb +0 -11
- data/lib/codemodels/query_serialized.rb +0 -81
- data/test/test_foreign_ast.rb +0 -28
- data/test/test_query_serialized.rb +0 -40
@@ -0,0 +1,71 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
class TestForeignNavigation < Test::Unit::TestCase
|
4
|
+
|
5
|
+
include CodeModels
|
6
|
+
|
7
|
+
class B < CodeModelsAstNode
|
8
|
+
has_attr 'id',String
|
9
|
+
contains_many_uni 'bs', B
|
10
|
+
end
|
11
|
+
|
12
|
+
class C < CodeModelsAstNode
|
13
|
+
has_attr 'id',String
|
14
|
+
contains_many_uni 'bs', B
|
15
|
+
end
|
16
|
+
|
17
|
+
class A < CodeModelsAstNode
|
18
|
+
has_attr 'id',String
|
19
|
+
contains_many_uni 'bs', B
|
20
|
+
end
|
21
|
+
|
22
|
+
def setup
|
23
|
+
@c1 = C.build 'c1'
|
24
|
+
@c2 = C.build 'c2'
|
25
|
+
@b1 = B.build 'b1'
|
26
|
+
@b2 = B.build 'b2'
|
27
|
+
@b3 = B.build 'b3'
|
28
|
+
@b4 = B.build 'b4'
|
29
|
+
@b5 = B.build 'b5'
|
30
|
+
@a1 = A.build 'a1'
|
31
|
+
|
32
|
+
@c1.addBs @b1
|
33
|
+
@b1.addBs @b2
|
34
|
+
@b1.addBs @b3
|
35
|
+
@b4.addBs @b5
|
36
|
+
@a1.addBs @b4
|
37
|
+
@a1.addForeign_asts @c1
|
38
|
+
@a1.addForeign_asts @c2
|
39
|
+
end
|
40
|
+
|
41
|
+
def test_all_children_also_foreign
|
42
|
+
assert_equal [@b4,@c1,@c2], @a1.all_children_also_foreign
|
43
|
+
assert_equal [@b2,@b3], @b1.all_children_also_foreign
|
44
|
+
assert_equal [], @b2.all_children_also_foreign
|
45
|
+
assert_equal [], @b3.all_children_also_foreign
|
46
|
+
assert_equal [@b5], @b4.all_children_also_foreign
|
47
|
+
assert_equal [], @b5.all_children_also_foreign
|
48
|
+
assert_equal [@b1], @c1.all_children_also_foreign
|
49
|
+
assert_equal [], @c2.all_children_also_foreign
|
50
|
+
end
|
51
|
+
|
52
|
+
def test_all_children_deep_also_foreign
|
53
|
+
assert_equal [@b4,@b5,@c1,@b1,@b2,@b3,@c2], @a1.all_children_deep_also_foreign
|
54
|
+
assert_equal [@b2,@b3], @b1.all_children_deep_also_foreign
|
55
|
+
assert_equal [], @b2.all_children_deep_also_foreign
|
56
|
+
assert_equal [], @b3.all_children_deep_also_foreign
|
57
|
+
assert_equal [@b5], @b4.all_children_deep_also_foreign
|
58
|
+
assert_equal [], @b5.all_children_deep_also_foreign
|
59
|
+
assert_equal [@b1,@b2,@b3], @c1.all_children_deep_also_foreign
|
60
|
+
assert_equal [], @c2.all_children_deep_also_foreign
|
61
|
+
end
|
62
|
+
|
63
|
+
def traverse_also_foreign
|
64
|
+
ids = []
|
65
|
+
CodeModels.traverse_also_foreign(@a1) do |n|
|
66
|
+
ids << n.id
|
67
|
+
end
|
68
|
+
assert_equal ['a1','b4','b5','c1','b1','b2','b3','c2'],ids
|
69
|
+
end
|
70
|
+
|
71
|
+
end
|
data/test/test_language.rb
CHANGED
@@ -5,16 +5,30 @@ class TestLanguage < Test::Unit::TestCase
|
|
5
5
|
include CodeModels
|
6
6
|
|
7
7
|
class MyLanguage < Language
|
8
|
-
def initialize
|
8
|
+
def initialize(my_parser)
|
9
9
|
super('MyLanguage')
|
10
10
|
@extensions << 'my1'
|
11
11
|
@extensions << 'my2'
|
12
|
-
@parser =
|
12
|
+
@parser = my_parser
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
class MyParser
|
17
|
+
attr_reader :invokations
|
18
|
+
|
19
|
+
def initialize
|
20
|
+
@invokations = []
|
21
|
+
end
|
22
|
+
|
23
|
+
def parse_file(path)
|
24
|
+
@invokations << path
|
13
25
|
end
|
14
26
|
end
|
15
27
|
|
16
28
|
def setup
|
17
|
-
|
29
|
+
@my_language = MyLanguage.new(MyParser.new)
|
30
|
+
2.times {CodeModels.register_language(@my_language)}
|
31
|
+
@my_parser = CodeModels.registered_languages[0].parser
|
18
32
|
end
|
19
33
|
|
20
34
|
def test_my_language
|
@@ -22,7 +36,23 @@ def test_my_language
|
|
22
36
|
l = CodeModels.registered_languages[0]
|
23
37
|
assert_equal 'MyLanguage',l.name
|
24
38
|
assert_equal ['my1','my2'],l.extensions
|
25
|
-
|
39
|
+
assert l.parser.is_a?(MyParser)
|
40
|
+
end
|
41
|
+
|
42
|
+
def test_can_parse?
|
43
|
+
assert_equal true, @my_language.can_parse?('pippo.my1')
|
44
|
+
assert_equal false, @my_language.can_parse?('pippo.else')
|
45
|
+
end
|
46
|
+
|
47
|
+
def test_parse_file_registered_language
|
48
|
+
CodeModels.parse_file('pippo.my1')
|
49
|
+
assert_equal ['pippo.my1'],@my_parser.invokations
|
50
|
+
end
|
51
|
+
|
52
|
+
def test_parse_file_unregistered_language
|
53
|
+
assert_raise NoLanguageRegistered do
|
54
|
+
CodeModels.parse_file('pippo.else')
|
55
|
+
end
|
26
56
|
end
|
27
57
|
|
28
58
|
end
|
@@ -0,0 +1,102 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
class TestMetamodel < Test::Unit::TestCase
|
4
|
+
|
5
|
+
include CodeModels
|
6
|
+
|
7
|
+
def setup
|
8
|
+
ea1_pos = SourcePosition.new
|
9
|
+
ea1_pos.begin_line = 10
|
10
|
+
ea1_pos.begin_column = 8
|
11
|
+
|
12
|
+
ea2_pos = SourcePosition.new
|
13
|
+
ea2_pos.begin_line = 3
|
14
|
+
ea2_pos.begin_column = 4
|
15
|
+
|
16
|
+
ea3_pos = SourcePosition.new
|
17
|
+
ea3_pos.begin_line = 1
|
18
|
+
ea3_pos.begin_column = 2
|
19
|
+
|
20
|
+
@fa1 = FileArtifact.new
|
21
|
+
|
22
|
+
@ea1 = EmbeddedArtifact.new
|
23
|
+
@ea1.host_artifact = @fa1
|
24
|
+
@ea1.position_in_host = ea1_pos
|
25
|
+
|
26
|
+
@ea2 = EmbeddedArtifact.new
|
27
|
+
@ea2.host_artifact = @ea1
|
28
|
+
@ea2.position_in_host = ea2_pos
|
29
|
+
|
30
|
+
@ea3 = EmbeddedArtifact.new
|
31
|
+
@ea3.host_artifact = @ea2
|
32
|
+
@ea3.position_in_host = ea3_pos
|
33
|
+
end
|
34
|
+
|
35
|
+
def test_file_artifact_absolute_start
|
36
|
+
sp = SourcePoint.new 1,1
|
37
|
+
assert_equal sp,@fa1.absolute_start
|
38
|
+
end
|
39
|
+
|
40
|
+
def test_embedded_artifact_absolute_start
|
41
|
+
sp = SourcePoint.new 10,8
|
42
|
+
assert_equal sp,@ea1.absolute_start
|
43
|
+
end
|
44
|
+
|
45
|
+
def test_embedded_artifact_indirect_absolute_start
|
46
|
+
sp = SourcePoint.new 12,4
|
47
|
+
assert_equal sp,@ea2.absolute_start
|
48
|
+
end
|
49
|
+
|
50
|
+
def test_embedded_artifact_indirect_absolute_start_on_line_1
|
51
|
+
sp = SourcePoint.new 12,5
|
52
|
+
assert_equal sp,@ea3.absolute_start
|
53
|
+
end
|
54
|
+
|
55
|
+
def test_file_artifact_point_to_absolute
|
56
|
+
p1 = SourcePoint.new 5,7
|
57
|
+
p2 = SourcePoint.new 5,7
|
58
|
+
assert_equal p2,@fa1.point_to_absolute(p1)
|
59
|
+
end
|
60
|
+
|
61
|
+
def test_embedded_artifact_point_to_absolute
|
62
|
+
p1 = SourcePoint.new 5,7
|
63
|
+
p2 = SourcePoint.new 14,7
|
64
|
+
assert_equal p2,@ea1.point_to_absolute(p1)
|
65
|
+
p3 = SourcePoint.new 1,7
|
66
|
+
p4 = SourcePoint.new 10,14
|
67
|
+
assert_equal p4,@ea1.point_to_absolute(p3)
|
68
|
+
end
|
69
|
+
|
70
|
+
def test_embedded_artifact_indirect_point_to_absolute
|
71
|
+
p1 = SourcePoint.new 5,7
|
72
|
+
p2 = SourcePoint.new 16,7
|
73
|
+
assert_equal p2,@ea2.point_to_absolute(p1)
|
74
|
+
p3 = SourcePoint.new 1,7
|
75
|
+
p4 = SourcePoint.new 12,10
|
76
|
+
assert_equal p4,@ea2.point_to_absolute(p3)
|
77
|
+
end
|
78
|
+
|
79
|
+
def test_embedded_artifact_position_to_absolute
|
80
|
+
p1b = SourcePoint.new 1,8
|
81
|
+
p1e = SourcePoint.new 12,7
|
82
|
+
pos1 = SourcePosition.new p1b,p1e
|
83
|
+
p2b = SourcePoint.new 10,15
|
84
|
+
p2e = SourcePoint.new 21,7
|
85
|
+
pos2 = SourcePosition.new p2b,p2e
|
86
|
+
assert_equal pos2,@ea1.position_to_absolute(pos1)
|
87
|
+
end
|
88
|
+
|
89
|
+
def test_source_point_begin_point_assignment_with_point
|
90
|
+
p = SourcePoint.new 7,8
|
91
|
+
si = SourceInfo.new
|
92
|
+
si.begin_point = p
|
93
|
+
assert_equal SourcePoint.new(7,8),si.position.begin_point
|
94
|
+
end
|
95
|
+
|
96
|
+
def test_source_point_end_point_assignment_with_hash
|
97
|
+
si = SourceInfo.new
|
98
|
+
si.end_point = {line:7,column:8}
|
99
|
+
assert_equal SourcePoint.new(7,8),si.position.end_point
|
100
|
+
end
|
101
|
+
|
102
|
+
end
|
@@ -0,0 +1,12 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
class TestModelBuilding < Test::Unit::TestCase
|
4
|
+
|
5
|
+
include CodeModels
|
6
|
+
|
7
|
+
def test_file_mapper
|
8
|
+
fm = FileMapper.new('dir_a','dir_b','java','xml')
|
9
|
+
assert_equal "dir_b/abc/def/pippo.xml",fm.map('dir_a/abc/def/pippo.java')
|
10
|
+
end
|
11
|
+
|
12
|
+
end
|
data/test/test_rgen_ext.rb
CHANGED
@@ -2,21 +2,21 @@ require 'test_helper'
|
|
2
2
|
|
3
3
|
class TestRgenExt < Test::Unit::TestCase
|
4
4
|
|
5
|
-
class C <
|
5
|
+
class C < CodeModels::CodeModelsAstNode
|
6
6
|
has_attr 'id',Integer
|
7
7
|
end
|
8
8
|
|
9
|
-
class D <
|
9
|
+
class D < CodeModels::CodeModelsAstNode
|
10
10
|
has_attr 'id',Integer
|
11
11
|
contains_one_uni 'c', C
|
12
12
|
end
|
13
13
|
|
14
|
-
class B <
|
14
|
+
class B < CodeModels::CodeModelsAstNode
|
15
15
|
has_attr 'id',Integer
|
16
16
|
contains_many_uni 'ds', D
|
17
17
|
end
|
18
18
|
|
19
|
-
class A <
|
19
|
+
class A < CodeModels::CodeModelsAstNode
|
20
20
|
has_attr 'id',Integer
|
21
21
|
contains_many_uni 'bs', B
|
22
22
|
contains_one_uni 'c', C
|
data/test/test_serialization.rb
CHANGED
@@ -1,15 +1,28 @@
|
|
1
1
|
require 'test_helper'
|
2
2
|
|
3
|
-
class
|
3
|
+
class TestSerialization < Test::Unit::TestCase
|
4
4
|
|
5
|
-
class Person <
|
5
|
+
class Person < CodeModelsAstNode
|
6
6
|
has_attr 'name', String
|
7
7
|
end
|
8
8
|
|
9
|
+
class Street < CodeModelsAstNode
|
10
|
+
has_attr 'name', String
|
11
|
+
end
|
12
|
+
|
13
|
+
class Address < CodeModelsAstNode
|
14
|
+
contains_one_uni 'street', Street
|
15
|
+
has_attr 'number', Integer
|
16
|
+
end
|
17
|
+
|
18
|
+
class StupidPhoneBook < CodeModelsAstNode
|
19
|
+
has_many_attr 'numbers', String
|
20
|
+
end
|
21
|
+
|
9
22
|
def test_to_model_with_single_obj
|
10
23
|
p = Person.build 'pippo'
|
11
24
|
m = Serialization.rgenobject_to_model(p)
|
12
|
-
|
25
|
+
|
13
26
|
assert_equal 1,m['root']['id']
|
14
27
|
assert_equal 0,m['external_elements'].count
|
15
28
|
end
|
@@ -21,19 +34,6 @@ class TestSerializationRgen < Test::Unit::TestCase
|
|
21
34
|
assert_equal 'pippo',m['root']['attr_name']
|
22
35
|
end
|
23
36
|
|
24
|
-
class Street < RGen::MetamodelBuilder::MMBase
|
25
|
-
has_attr 'name', String
|
26
|
-
end
|
27
|
-
|
28
|
-
class Address < RGen::MetamodelBuilder::MMBase
|
29
|
-
contains_one_uni 'street', Street
|
30
|
-
has_attr 'number', Integer
|
31
|
-
end
|
32
|
-
|
33
|
-
class StupidPhoneBook < RGen::MetamodelBuilder::MMBase
|
34
|
-
has_many_attr 'numbers', String
|
35
|
-
end
|
36
|
-
|
37
37
|
def test_to_model_with_rel_cont_single
|
38
38
|
a = Address.build number: 11
|
39
39
|
a.street = Street.build 'via Cassini'
|
@@ -44,11 +44,11 @@ class TestSerializationRgen < Test::Unit::TestCase
|
|
44
44
|
assert_equal 'via Cassini',street_serialized['attr_name']
|
45
45
|
end
|
46
46
|
|
47
|
-
class Street <
|
47
|
+
class Street < CodeModelsAstNode
|
48
48
|
has_attr 'name', String
|
49
49
|
end
|
50
50
|
|
51
|
-
class CityMap <
|
51
|
+
class CityMap < CodeModelsAstNode
|
52
52
|
contains_many_uni 'streets', Street
|
53
53
|
end
|
54
54
|
|
@@ -71,7 +71,7 @@ class TestSerializationRgen < Test::Unit::TestCase
|
|
71
71
|
spb.addNumbers '+39 389 4561234'
|
72
72
|
|
73
73
|
assert_equal({
|
74
|
-
"type"=>"
|
74
|
+
"type"=>"TestSerialization::StupidPhoneBook",
|
75
75
|
"id"=>1,
|
76
76
|
"attr_numbers"=>[
|
77
77
|
"+49 0176 12345678",
|
metadata
CHANGED
@@ -2,14 +2,14 @@
|
|
2
2
|
name: codemodels
|
3
3
|
version: !ruby/object:Gem::Version
|
4
4
|
prerelease:
|
5
|
-
version: 0.2.
|
5
|
+
version: 0.2.3
|
6
6
|
platform: java
|
7
7
|
authors:
|
8
8
|
- Federico Tomassetti
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-
|
12
|
+
date: 2013-10-07 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: json
|
@@ -104,29 +104,30 @@ files:
|
|
104
104
|
- Rakefile
|
105
105
|
- codemodels.gemspec
|
106
106
|
- lib/codemodels.rb
|
107
|
-
- lib/codemodels/foreign_ast.rb
|
108
107
|
- lib/codemodels/info_extraction.rb
|
109
108
|
- lib/codemodels/language.rb
|
110
109
|
- lib/codemodels/metamodel.rb
|
111
110
|
- lib/codemodels/model_building.rb
|
112
111
|
- lib/codemodels/monkey_patching.rb
|
112
|
+
- lib/codemodels/navigation.rb
|
113
113
|
- lib/codemodels/parsing.rb
|
114
|
-
- lib/codemodels/query_serialized.rb
|
115
114
|
- lib/codemodels/rgen_ext.rb
|
116
115
|
- lib/codemodels/serialization.rb
|
116
|
+
- lib/codemodels/source_info.rb
|
117
117
|
- lib/codemodels/version.rb
|
118
118
|
- test/data/node_setCompleted.json
|
119
|
-
- test/
|
119
|
+
- test/test_foreign_navigation.rb
|
120
120
|
- test/test_helper.rb
|
121
121
|
- test/test_info_extraction.rb
|
122
122
|
- test/test_language.rb
|
123
|
+
- test/test_metamodel.rb
|
124
|
+
- test/test_model_building.rb
|
123
125
|
- test/test_monkey_patching.rb
|
124
|
-
- test/test_query_serialized.rb
|
125
126
|
- test/test_rgen_ext.rb
|
126
127
|
- test/test_serialization.rb
|
127
128
|
homepage: https://github.com/ftomassetti/codemodels
|
128
129
|
licenses:
|
129
|
-
-
|
130
|
+
- Apache v2
|
130
131
|
post_install_message:
|
131
132
|
rdoc_options: []
|
132
133
|
require_paths:
|
@@ -157,11 +158,12 @@ specification_version: 3
|
|
157
158
|
summary: Library to build models of code
|
158
159
|
test_files:
|
159
160
|
- test/data/node_setCompleted.json
|
160
|
-
- test/
|
161
|
+
- test/test_foreign_navigation.rb
|
161
162
|
- test/test_helper.rb
|
162
163
|
- test/test_info_extraction.rb
|
163
164
|
- test/test_language.rb
|
165
|
+
- test/test_metamodel.rb
|
166
|
+
- test/test_model_building.rb
|
164
167
|
- test/test_monkey_patching.rb
|
165
|
-
- test/test_query_serialized.rb
|
166
168
|
- test/test_rgen_ext.rb
|
167
169
|
- test/test_serialization.rb
|
@@ -1,81 +0,0 @@
|
|
1
|
-
# This module permits to manipulate Objects serialized
|
2
|
-
# as Hash
|
3
|
-
|
4
|
-
module CodeModels
|
5
|
-
|
6
|
-
module QuerySerialized
|
7
|
-
|
8
|
-
def self.rel_conts(root)
|
9
|
-
root.keys.select {|k| k.start_with? 'relcont_'}
|
10
|
-
end
|
11
|
-
|
12
|
-
def self.rel_non_conts(root)
|
13
|
-
root.keys.select {|k| k.start_with? 'relnoncont_'}
|
14
|
-
end
|
15
|
-
|
16
|
-
def self.attrs(root)
|
17
|
-
root.keys.select {|k| k.start_with? 'attr_'}
|
18
|
-
end
|
19
|
-
|
20
|
-
def self.print_tree(root,depth=0)
|
21
|
-
traverse(root) do |n,d|
|
22
|
-
s = ""
|
23
|
-
d.times { s = s + " " }
|
24
|
-
s = s + n['type'] if n
|
25
|
-
s = s + '<NIL>' unless n
|
26
|
-
puts s
|
27
|
-
end
|
28
|
-
end
|
29
|
-
|
30
|
-
def self.values(root,feat)
|
31
|
-
raw = root[feat]
|
32
|
-
return [] if raw==nil
|
33
|
-
return raw if raw.is_a? Array
|
34
|
-
return [raw]
|
35
|
-
end
|
36
|
-
|
37
|
-
def self.traverse(root,depth=0,&op)
|
38
|
-
return traverse(root['root'],depth,&op) if root and (root.key? 'root')
|
39
|
-
op.call(root,depth)
|
40
|
-
return unless root
|
41
|
-
rel_conts(root).each do |r|
|
42
|
-
if root[r].is_a? Array
|
43
|
-
root[r].each do |c|
|
44
|
-
raise "expected an object but it is a #{c.class} (relation: #{r})" unless c.is_a? Hash
|
45
|
-
traverse(c,depth+1,&op)
|
46
|
-
end
|
47
|
-
else
|
48
|
-
traverse(root[r],depth+1,&op)
|
49
|
-
end
|
50
|
-
end
|
51
|
-
end
|
52
|
-
|
53
|
-
# the set of values appearing in the object and its children
|
54
|
-
def self.collect_values(el)
|
55
|
-
values = Set.new
|
56
|
-
rel_conts(el).each do |r|
|
57
|
-
values(el,r).each {|c| values.merge(collect_values(c))}
|
58
|
-
end
|
59
|
-
attrs(el).each do |a|
|
60
|
-
values(el,a).each {|v| values.add(v)}
|
61
|
-
end
|
62
|
-
values
|
63
|
-
end
|
64
|
-
|
65
|
-
# a counting map values appearing in the object and its children
|
66
|
-
def self.collect_values_with_count(el)
|
67
|
-
values = Hash.new {|h,k| h[k]=0}
|
68
|
-
rel_conts(el).each do |r|
|
69
|
-
values(el,r).each do |ch|
|
70
|
-
collect_values_with_count(ch).each {|v,count| values[v]+=count}
|
71
|
-
end
|
72
|
-
end
|
73
|
-
attrs(el).each do |a|
|
74
|
-
values(el,a).each {|v| values[v]+=1 }
|
75
|
-
end
|
76
|
-
values
|
77
|
-
end
|
78
|
-
|
79
|
-
end
|
80
|
-
|
81
|
-
end
|
data/test/test_foreign_ast.rb
DELETED
@@ -1,28 +0,0 @@
|
|
1
|
-
require 'test_helper'
|
2
|
-
|
3
|
-
class TestForeignAst < Test::Unit::TestCase
|
4
|
-
|
5
|
-
include CodeModels
|
6
|
-
|
7
|
-
class MyLanguageAstNodeA < CodeModelsAstNode
|
8
|
-
has_attr 'id', Integer
|
9
|
-
end
|
10
|
-
|
11
|
-
class MyLanguageAstNodeB < CodeModelsAstNode
|
12
|
-
has_attr 'id', Integer
|
13
|
-
end
|
14
|
-
|
15
|
-
def setup
|
16
|
-
end
|
17
|
-
|
18
|
-
def test_without_foreign_ast
|
19
|
-
assert_equal 0, MyLanguageAstNodeA.ecore.eAllReferences.count, "No Refs expected but they are: #{MyLanguageAstNodeA.ecore.eAllReferences.name}"
|
20
|
-
end
|
21
|
-
|
22
|
-
def test_with_foreign_ast
|
23
|
-
CodeModels.enable_foreign_asts(MyLanguageAstNodeB)
|
24
|
-
assert_equal 1, MyLanguageAstNodeB.ecore.eAllReferences.count
|
25
|
-
assert_equal 'foreign_asts',MyLanguageAstNodeB.ecore.eAllReferences[0].name
|
26
|
-
end
|
27
|
-
|
28
|
-
end
|
@@ -1,40 +0,0 @@
|
|
1
|
-
require 'test_helper'
|
2
|
-
|
3
|
-
class TestQuerySerialized < Test::Unit::TestCase
|
4
|
-
|
5
|
-
def test_rel_conts_on_complex_node
|
6
|
-
set_completed = JSON.parse(IO.read(File.dirname(__FILE__)+'/data/node_setCompleted.json'))
|
7
|
-
|
8
|
-
assert_equal [
|
9
|
-
'relcont_layoutInformations',
|
10
|
-
'relcont_typeReference',
|
11
|
-
'relcont_arrayDimensionsBefore',
|
12
|
-
'relcont_arrayDimensionsAfter',
|
13
|
-
'relcont_typeParameters',
|
14
|
-
'relcont_parameters',
|
15
|
-
'relcont_exceptions',
|
16
|
-
'relcont_annotationsAndModifiers',
|
17
|
-
'relcont_statements'],
|
18
|
-
CodeModels::QuerySerialized.rel_conts(set_completed)
|
19
|
-
end
|
20
|
-
|
21
|
-
def test_rel_nonconts_on_complex_node
|
22
|
-
set_completed = JSON.parse(IO.read(File.dirname(__FILE__)+'/data/node_setCompleted.json'))
|
23
|
-
|
24
|
-
assert_equal [
|
25
|
-
'relnoncont_getterFor',
|
26
|
-
'relnoncont_setterFor'],
|
27
|
-
CodeModels::QuerySerialized.rel_non_conts(set_completed)
|
28
|
-
end
|
29
|
-
|
30
|
-
def test_attrs_on_complex_node
|
31
|
-
set_completed = JSON.parse(IO.read(File.dirname(__FILE__)+'/data/node_setCompleted.json'))
|
32
|
-
|
33
|
-
assert_equal [
|
34
|
-
'attr_name',
|
35
|
-
'attr_getter',
|
36
|
-
'attr_setter'],
|
37
|
-
CodeModels::QuerySerialized.attrs(set_completed)
|
38
|
-
end
|
39
|
-
|
40
|
-
end
|