rgen 0.8.2 → 0.8.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (51) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG +10 -1
  3. data/Project.yaml +21 -0
  4. data/Rakefile +22 -25
  5. data/lib/rgen/ecore/ecore_to_json.rb +188 -0
  6. data/lib/rgen/ecore/ecore_to_ruby.rb +13 -0
  7. data/lib/rgen/fragment/fragmented_model.rb +2 -0
  8. data/lib/rgen/fragment/model_fragment.rb +3 -0
  9. data/lib/rgen/metamodel_builder/builder_extensions.rb +14 -6
  10. data/lib/rgen/metamodel_builder/builder_runtime.rb +12 -5
  11. data/test/array_extensions_test.rb +7 -7
  12. data/test/ea_instantiator_test.rb +2 -2
  13. data/test/ea_serializer_test.rb +2 -2
  14. data/test/ecore_self_test.rb +2 -2
  15. data/test/ecore_to_ruby_test.rb +2 -2
  16. data/test/environment_test.rb +2 -2
  17. data/test/json_test.rb +4 -4
  18. data/test/metamodel_builder_test.rb +77 -42
  19. data/test/metamodel_from_ecore_test.rb +1 -1
  20. data/test/metamodel_order_test.rb +2 -2
  21. data/test/metamodel_roundtrip_test.rb +2 -2
  22. data/test/method_delegation_test.rb +5 -5
  23. data/test/model_builder/builder_context_test.rb +3 -3
  24. data/test/model_builder/builder_test.rb +11 -11
  25. data/test/model_builder/reference_resolver_test.rb +3 -3
  26. data/test/model_builder/serializer_test.rb +2 -2
  27. data/test/model_fragment_test.rb +2 -2
  28. data/test/output_handler_test.rb +2 -2
  29. data/test/qualified_name_provider_test.rb +2 -2
  30. data/test/qualified_name_resolver_test.rb +4 -4
  31. data/test/reference_resolver_test.rb +4 -4
  32. data/test/rgen_test.rb +1 -1
  33. data/test/template_language_test.rb +9 -11
  34. data/test/testmodel/class_model_checker.rb +17 -17
  35. data/test/testmodel/ecore_model_checker.rb +13 -13
  36. data/test/testmodel/object_model_checker.rb +6 -6
  37. data/test/transformer_test.rb +3 -3
  38. data/test/util/file_cache_map_test.rb +2 -2
  39. data/test/util/pattern_matcher_test.rb +7 -7
  40. data/test/xml_instantiator_test/simple_ecore_model_checker.rb +12 -12
  41. data/test/xml_instantiator_test.rb +8 -8
  42. metadata +86 -25
  43. data/test/metamodel_roundtrip_test/TestModel_Regenerated.rb +0 -71
  44. data/test/metamodel_roundtrip_test/houseMetamodel_Regenerated.ecore +0 -162
  45. data/test/metamodel_roundtrip_test/using_builtin_types_serialized.ecore +0 -9
  46. data/test/model_builder/ecore_internal.rb +0 -113
  47. data/test/template_language_test/line_endings_mixed.txt +0 -2
  48. data/test/template_language_test/line_endings_unix.txt +0 -2
  49. data/test/template_language_test/line_endings_windows.txt +0 -2
  50. data/test/testmodel/ea_testmodel_regenerated.xml +0 -813
  51. data/test/util/file_cache_map_test/testdir/fileA +0 -1
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: eb797f971990b12a38d234053b5edd0be3bd3cab
4
- data.tar.gz: 27b2698616fa3536d71800db0784485b3903d019
3
+ metadata.gz: e58b57346e1f7e95fcaa15f29112706c911d20ed
4
+ data.tar.gz: 6551cb4e9579f7e76582018876973edd9a58d0e6
5
5
  SHA512:
6
- metadata.gz: 79f31649d8f3a8da15723545841ba91b0b6294478000508b8f5abbd35b84d8c3d52d0b0100b35dd6803621a7e11d450ce4f06253e81be60a8c19ec06b45f4ff7
7
- data.tar.gz: 267ee0574d6ce33e41c19825b86e8fff027c061dde40497124968c654e43cb7822f085c6614ce97cd372e58e2ce4643d8efbc10eebe310da137d5cc8afeaa543
6
+ metadata.gz: 1e82e58dd4eaf95de47ef1714a778558a6bd3cb76f8229fb43e029a98f9e03c6234ee2fab831adde1d7de1b953665afab031f27f39b0ad7a060a91c4ed7c7328
7
+ data.tar.gz: 47b73a00783a82d630b0771fb55b01c4da6adffe73a459cd35828dd5040644b8b0f6cd00a565a4abf257d8c4d2e97ca17db2c072cbe05e8ae44fe9b2b3a2637e
data/CHANGELOG CHANGED
@@ -212,4 +212,13 @@
212
212
 
213
213
  =0.8.2
214
214
 
215
- * Added helper methods
215
+ * Added helper methods
216
+
217
+ =0.8.3
218
+
219
+ * Performance improvement: getGeneric made a lot faster
220
+
221
+ =0.8.4
222
+
223
+ * Add early loading for types which have attributes conflicting with Ruby reserved words.
224
+ * Change type checking code to use ObjectSpace to find class objects. This is to find classes with an unbound name.
data/Project.yaml ADDED
@@ -0,0 +1,21 @@
1
+ name: rgen
2
+ gemspec: rgen.gemspec
3
+ git: https://github.com/mthiede/rgen.git
4
+ version: 0.8.4
5
+ summary: Ruby Modelling and Generator Framework
6
+ email: martin dot thiede at gmx de
7
+ homepage: http://ruby-gen.org
8
+ rubyforge_project: rgen
9
+ description: RGen is a framework for Model Driven Software Development (MDSD) in Ruby. This means that it helps you build Metamodels, instantiate Models, modify and transform Models and finally generate arbitrary textual content from it.
10
+ authors: [Martin Thiede]
11
+ rdoc_options: [--main, README.rdoc, -x, test, -x, metamodels, -x, ea_support/uml13*]
12
+ extra_rdoc_files: [README.rdoc, CHANGELOG, MIT-LICENSE]
13
+ include_files: ['lib/**/*', 'test/**/*', README.rdoc, CHANGELOG, MIT-LICENSE, Rakefile]
14
+ exclude_files: ['**/*.bak']
15
+ encrypt_sources: false
16
+ dependencies:
17
+ https://rubygems.org:
18
+ - {name: nokogiri, version: ['~> 1.6.0', '>= 1.6.8.1'], development: true}
19
+ - {name: rake, version: '~> 12.0', development: true}
20
+ - {name: minitest, version: ['~> 5.0', '>= 5.10.1'], development: true}
21
+ - {name: minitest-fail-fast, version: '~> 0.1.0', development: true}
data/Rakefile CHANGED
@@ -1,41 +1,38 @@
1
1
  require 'rubygems/package_task'
2
2
  require 'rdoc/task'
3
+ require 'bundler/setup'
4
+ require 'rake/testtask'
3
5
 
4
- RGenGemSpec = Gem::Specification.new do |s|
5
- s.name = %q{rgen}
6
- s.version = "0.8.2"
7
- s.date = Time.now.strftime("%Y-%m-%d")
8
- s.summary = %q{Ruby Modelling and Generator Framework}
9
- s.email = %q{martin dot thiede at gmx de}
10
- s.homepage = %q{http://ruby-gen.org}
11
- s.rubyforge_project = %q{rgen}
12
- s.description = %q{RGen is a framework for Model Driven Software Development (MDSD) in Ruby. This means that it helps you build Metamodels, instantiate Models, modify and transform Models and finally generate arbitrary textual content from it.}
13
- s.authors = ["Martin Thiede"]
14
- gemfiles = Rake::FileList.new
15
- gemfiles.include("{lib,test}/**/*")
16
- gemfiles.include("README.rdoc", "CHANGELOG", "MIT-LICENSE", "Rakefile")
17
- gemfiles.exclude(/\b\.bak\b/)
18
- s.files = gemfiles
19
- s.rdoc_options = ["--main", "README.rdoc", "-x", "test", "-x", "metamodels", "-x", "ea_support/uml13*"]
20
- s.extra_rdoc_files = ["README.rdoc", "CHANGELOG", "MIT-LICENSE"]
21
- end
6
+ RGenGemSpec = eval(File.read('rgen.gemspec'))
22
7
 
23
8
  RDoc::Task.new do |rd|
24
- rd.main = "README.rdoc"
25
- rd.rdoc_files.include("README.rdoc", "CHANGELOG", "MIT-LICENSE", "lib/**/*.rb")
26
- rd.rdoc_files.exclude("lib/metamodels/*")
27
- rd.rdoc_files.exclude("lib/ea_support/uml13*")
28
- rd.rdoc_dir = "doc"
9
+ rd.main = 'README.rdoc'
10
+ rd.rdoc_files.include('README.rdoc', 'CHANGELOG', 'MIT-LICENSE', 'lib/**/*.rb')
11
+ rd.rdoc_files.exclude('lib/metamodels/*')
12
+ rd.rdoc_files.exclude('lib/ea_support/uml13*')
13
+ rd.rdoc_dir = 'doc'
29
14
  end
30
15
 
31
16
  RGenPackageTask = Gem::PackageTask.new(RGenGemSpec) do |p|
32
17
  p.need_zip = false
33
- end
18
+ end
19
+
20
+ ::Rake::TestTask.new(:test) do |t|
21
+ t.test_files = ['test/rgen_test.rb']
22
+ t.warning = false
23
+ end
34
24
 
35
25
  task :prepare_package_rdoc => :rdoc do
36
- RGenPackageTask.package_files.include("doc/**/*")
26
+ RGenPackageTask.package_files.include('doc/**/*')
37
27
  end
38
28
 
39
29
  task :release => [:prepare_package_rdoc, :package]
40
30
 
41
31
  task :clobber => [:clobber_rdoc, :clobber_package]
32
+
33
+ task :ecore_to_json do
34
+ require 'rgen/ecore/ecore_to_json'
35
+
36
+ exporter = RGen::ECore::ECoreToJson.new
37
+ File.write('ecore.json', exporter.epackage_to_json_string(RGen.ecore, exporter.ecore_datatypes))
38
+ end
@@ -0,0 +1,188 @@
1
+ require 'rgen/ecore/ecore'
2
+ require 'json'
3
+
4
+ module RGen
5
+
6
+ module ECore
7
+
8
+ # ECoreToJson can turn ECore models into their JSON metamodel representations
9
+ class ECoreToJson
10
+
11
+ def initialize
12
+
13
+ end
14
+
15
+ def root_elements_to_json_string(root_elements)
16
+ JSON.pretty_generate(root_elements.map do |el|
17
+ if el.is_a?(RGen::ECore::EPackage)
18
+ epackage(el)
19
+ elsif el.is_a?(RGen::ECore::EClass)
20
+ eclass(el)
21
+ else
22
+ raise "Not implemented for #{el}"
23
+ end
24
+ end)
25
+ end
26
+
27
+ def epackage_to_json(package)
28
+ epackage(package)
29
+ end
30
+
31
+ def ecore_datatypes
32
+ [RGen::ECore::EString, RGen::ECore::EInt, RGen::ECore::ELong, RGen::ECore::EBoolean, RGen::ECore::EFloat,
33
+ RGen::ECore::ERubyObject, RGen::ECore::EJavaObject, RGen::ECore::ERubyClass, RGen::ECore::EJavaClass]
34
+ .map {|dt| edatatype(dt)}
35
+ end
36
+
37
+ def epackage_to_json_pretty_string(package, append = [])
38
+ JSON.pretty_generate([epackage_to_json(package)] + append)
39
+ end
40
+
41
+ def epackage_to_json_string(package, append = [])
42
+ JSON.generate([epackage_to_json(package)] + append)
43
+ end
44
+
45
+ def emodelelement(me)
46
+ {
47
+ :eAnnotations => me.eAnnotations.map { |e| eannotation(e) }
48
+ }
49
+ end
50
+
51
+
52
+ def enamedelement(ne)
53
+ merge(emodelelement(ne), {:name => ne.name})
54
+ end
55
+
56
+ def epackage(package)
57
+ merge(enamedelement(package), {
58
+ :_class_ref => 'RGen.ECore.EPackage',
59
+ :eClassifiers => package.eClassifiers.map do |classifier|
60
+ if classifier.is_a?(RGen::ECore::EClass)
61
+ eclass(classifier)
62
+ elsif classifier.is_a?(RGen::ECore::EEnum)
63
+ eenum(classifier)
64
+ else
65
+ edatatype(classifier)
66
+ end
67
+ end,
68
+ :eSubpackages => package.eSubpackages.map { |sp| epackage(sp) },
69
+ :nsURI => package.nsURI,
70
+ :nsPrefix => package.nsPrefix
71
+ })
72
+ end
73
+
74
+ def eclassifier(classifier)
75
+ enamedelement(classifier).merge({
76
+ # omit :instanceClassName => classifier.instanceClassName
77
+ })
78
+ end
79
+
80
+ def eclass(_class)
81
+ merge(eclassifier(_class), {
82
+ :_class_ref => 'RGen.ECore.EClass',
83
+ :abstract => _class.abstract,
84
+ :interface => _class.interface,
85
+ :eStructuralFeatures => _class.eStructuralFeatures.map do |sf|
86
+ if sf.is_a?(RGen::ECore::EReference)
87
+ ereference(sf)
88
+ else
89
+ eattribute(sf)
90
+ end
91
+ end,
92
+ :eSuperTypes => _class.eSuperTypes.map { |st| {:_ref => ref_id(st)} }
93
+ })
94
+ end
95
+
96
+ def edatatype(_datatype)
97
+ merge(eclassifier(_datatype), {
98
+ :_class_ref => 'RGen.ECore.EDataType',
99
+ :serializable => _datatype.serializable,
100
+ :instanceClassName => _datatype.instanceClassName
101
+ })
102
+ end
103
+
104
+ def eenum(enum)
105
+ merge(edatatype(enum), {
106
+ :_class_ref => 'RGen.ECore.EEnum',
107
+ :eLiterals => enum.eLiterals.map do |l|
108
+ merge({}, {
109
+ :_class_ref => 'RGen.ECore.EEnumLiteral',
110
+ :value => l.value,
111
+ :literal => l.literal
112
+ })
113
+ end
114
+ })
115
+ end
116
+
117
+ def eannotation(e)
118
+ merge(emodelelement(e), {
119
+ :source => e.source,
120
+ :details => e.details.map do |d|
121
+ merge({}, {
122
+ :_class_ref => 'RGen.ECore.EStringToStringMapEntry',
123
+ :key => d.key,
124
+ :value => d.value
125
+ })
126
+ end
127
+ })
128
+ end
129
+
130
+ def etypedelement(te)
131
+ merge(enamedelement(te), {
132
+ :ordered => te.ordered,
133
+ :unique => te.unique,
134
+ :lowerBound => te.lowerBound,
135
+ :upperBound => te.upperBound,
136
+ :many => te.many,
137
+ :required => te.required,
138
+ :eType => {:_ref => te.eType ? ref_id(te.eType) : nil}
139
+ })
140
+ end
141
+
142
+ def estructuralfeature(sf)
143
+ merge(etypedelement(sf), {
144
+ :changeable => sf.changeable,
145
+ :volatile => sf.volatile,
146
+ :transient => sf.transient,
147
+ :defaultValueLiteral => sf.defaultValueLiteral,
148
+ :unsettable => sf.unsettable,
149
+ :derived => sf.derived,
150
+ })
151
+ end
152
+
153
+ def eattribute(attr)
154
+ merge(estructuralfeature(attr), {
155
+ :_class_ref => 'RGen.ECore.EAttribute',
156
+ :iD => attr.iD
157
+ })
158
+ end
159
+
160
+ def ereference(ref)
161
+ merge(estructuralfeature(ref), {
162
+ :_class_ref => 'RGen.ECore.EReference',
163
+ :containment => ref.containment,
164
+ :resolveProxies => ref.resolveProxies,
165
+ :eOpposite => ref.eOpposite ? {:_ref => "#{ref_id(ref.eOpposite.eContainer)}.#{ref.eOpposite.name}"} : nil
166
+ })
167
+ end
168
+
169
+ def ref_id(obj)
170
+ res = ref_parts(obj)
171
+ res.join('.')
172
+ end
173
+
174
+ def ref_parts(obj)
175
+ return [obj.name] unless obj&.eContainer
176
+ ref_parts(obj.eContainer) << obj.name
177
+ end
178
+
179
+ def merge(hash, values)
180
+ values.each { |k, v| hash[k] = v unless v.nil? }
181
+ hash
182
+ end
183
+
184
+ end
185
+
186
+ end
187
+
188
+ end
@@ -1,3 +1,4 @@
1
+ require 'set'
1
2
  require 'rgen/ecore/ecore'
2
3
 
3
4
  module RGen
@@ -11,6 +12,7 @@ class ECoreToRuby
11
12
  @modules = {}
12
13
  @classifiers = {}
13
14
  @features_added = {}
15
+ @reserved = Set.new(Object.methods)
14
16
  end
15
17
 
16
18
  # Create a Ruby module representing +epackage+.
@@ -50,12 +52,23 @@ class ECoreToRuby
50
52
  end
51
53
  end
52
54
 
55
+ load_classes_with_reserved_keywords(epackage)
53
56
  mod
54
57
  end
55
58
  end
56
59
 
57
60
  private
58
61
 
62
+ def load_classes_with_reserved_keywords(epackage)
63
+ epackage.eAllClassifiers.each do |eclass|
64
+ # we early load classes which have ruby reserved keywords
65
+ if eclass.is_a?(RGen::ECore::EClass)
66
+ reserved_used = eclass.eStructuralFeatures.any? { |f| @reserved.include?(f.name.to_sym) }
67
+ add_features(eclass) if reserved_used
68
+ end
69
+ end
70
+ end
71
+
59
72
  def create_module_internal(epackage, under, temp)
60
73
  return @modules[epackage] if @modules[epackage]
61
74
 
@@ -111,6 +111,8 @@ class FragmentedModel
111
111
  # This is a Hash mapping identifiers to model elements accessible via the identifier.
112
112
  #
113
113
  def index
114
+ # Invalidate the cache when any fragment's local index changes.
115
+ # Assumption: If the local index content changes, there is a new index object.
114
116
  fragments.each do |f|
115
117
  if !@fragment_index[f] || (@fragment_index[f].object_id != f.index.object_id)
116
118
  @fragment_index[f] = f.index
@@ -117,6 +117,9 @@ class ModelFragment
117
117
  end
118
118
 
119
119
  # Returns the index of the element contained in this fragment.
120
+ #
121
+ # FragmentedModel's index caching depends on the fact that any change
122
+ # of a fragment's index contents implies a new index object.
120
123
  #
121
124
  def index
122
125
  build_index unless @index
@@ -319,6 +319,10 @@ module BuilderExtensions
319
319
  end
320
320
  <% if name != "class" %>
321
321
  alias <%= name %> get<%= firstToUpper(name) %>
322
+ <% else %>
323
+ def getGeneric(role)
324
+ send("get\#{firstToUpper(role.to_s)}")
325
+ end
322
326
  <% end %>
323
327
 
324
328
  CODE
@@ -380,10 +384,14 @@ module BuilderExtensions
380
384
  @@many_read_builder ||= ERB.new <<-CODE
381
385
 
382
386
  def get<%= firstToUpper(name) %>
383
- ( @<%= name %> ? @<%= name %>.dup : [] )
387
+ ( defined?(@<%= name %>) ? @<%= name %>.dup : [] )
384
388
  end
385
389
  <% if name != "class" %>
386
390
  alias <%= name %> get<%= firstToUpper(name) %>
391
+ <% else %>
392
+ def getGeneric(role)
393
+ send("get\#{firstToUpper(role.to_s)}")
394
+ end
387
395
  <% end %>
388
396
 
389
397
  CODE
@@ -394,7 +402,7 @@ module BuilderExtensions
394
402
  @@many_write_builder ||= ERB.new <<-CODE
395
403
 
396
404
  def add<%= firstToUpper(name) %>(val, index=-1)
397
- @<%= name %> = [] unless @<%= name %>
405
+ @<%= name %> = [] unless defined?(@<%= name %>)
398
406
  return if val.nil? || (val.is_a?(MMBase) || val.is_a?(MMGeneric)) && @<%= name %>.any? {|e| e.equal?(val)}
399
407
  <%= type_check_code("val", props) %>
400
408
  @<%= name %>.insert(index, val)
@@ -407,7 +415,7 @@ module BuilderExtensions
407
415
  end
408
416
 
409
417
  def remove<%= firstToUpper(name) %>(val)
410
- @<%= name %> = [] unless @<%= name %>
418
+ @<%= name %> = [] unless defined?(@<%= name %>)
411
419
  @<%= name %>.each_with_index do |e,i|
412
420
  if e.equal?(val)
413
421
  @<%= name %>.delete_at(i)
@@ -428,7 +436,7 @@ module BuilderExtensions
428
436
  get<%= firstToUpper(name) %>.each {|e|
429
437
  remove<%= firstToUpper(name) %>(e)
430
438
  }
431
- @<%= name %> = [] unless @<%= name %>
439
+ @<%= name %> = [] unless defined?(@<%= name %>)
432
440
  <% if props.reference? %>
433
441
  val.uniq {|elem| elem.object_id }.each {|elem|
434
442
  next if elem.nil?
@@ -451,7 +459,7 @@ module BuilderExtensions
451
459
  alias <%= name %>= set<%= firstToUpper(name) %>
452
460
 
453
461
  def _register<%= firstToUpper(name) %>(val)
454
- @<%= name %> = [] unless @<%= name %>
462
+ @<%= name %> = [] unless defined?(@<%= name %>)
455
463
  @<%= name %>.push val
456
464
  <% if props.reference? && props.value(:containment) %>
457
465
  val._set_container(self, :<%= name %>)
@@ -531,7 +539,7 @@ module BuilderExtensions
531
539
  code << "\n"
532
540
  expected = "Integer"
533
541
  elsif props.impl_type.is_a?(Class)
534
- code << "unless #{varname}.nil? || #{varname}.is_a?(#{props.impl_type}) || #{varname}.is_a?(MMGeneric)"
542
+ code << "unless #{varname}.nil? || #{varname}.is_a?(ObjectSpace._id2ref(#{props.impl_type.object_id})) || #{varname}.is_a?(MMGeneric)"
535
543
  code << " || #{varname}.is_a?(BigDecimal)" if props.impl_type == Float && defined?(BigDecimal)
536
544
  code << "\n"
537
545
  expected = props.impl_type.to_s
@@ -58,14 +58,17 @@ module BuilderRuntime
58
58
  end
59
59
  end
60
60
 
61
- def getGeneric(role)
62
- send("get#{firstToUpper(role.to_s)}")
63
- end
61
+ alias getGeneric send
64
62
 
65
63
  def getGenericAsArray(role)
66
64
  result = getGeneric(role)
67
- result = [result].compact unless result.is_a?(Array)
68
- result
65
+ if result.nil?
66
+ []
67
+ elsif result.is_a?(Array)
68
+ result
69
+ else
70
+ [result]
71
+ end
69
72
  end
70
73
 
71
74
  def eIsSet(role)
@@ -100,6 +103,10 @@ module BuilderRuntime
100
103
 
101
104
  # if a block is given, calls the block on every contained element in depth first order.
102
105
  # if the block returns :prune, recursion will stop at this point.
106
+ #
107
+ # BEWARE of concurrent modification of contained elements while iterating!
108
+ # (adding/removing containers or contained elements)
109
+ # if you need to do such modifications, use the variant without a block instead.
103
110
  #
104
111
  # if no block is given builds and returns a list of all contained elements.
105
112
  #
@@ -1,9 +1,9 @@
1
1
  $:.unshift File.join(File.dirname(__FILE__),"..","lib")
2
2
 
3
- require 'test/unit'
3
+ require 'minitest/autorun'
4
4
  require 'rgen/array_extensions'
5
5
 
6
- class ArrayExtensionsTest < Test::Unit::TestCase
6
+ class ArrayExtensionsTest < MiniTest::Test
7
7
 
8
8
  def test_element_methods
9
9
  c = Struct.new("SomeClass",:name,:age)
@@ -11,11 +11,11 @@ class ArrayExtensionsTest < Test::Unit::TestCase
11
11
  a << c.new('MyName',33)
12
12
  a << c.new('YourName',22)
13
13
  assert_equal ["MyName", "YourName"], a >> :name
14
- assert_raise NoMethodError do
14
+ assert_raises NoMethodError do
15
15
  a.name
16
16
  end
17
17
  assert_equal [33, 22], a>>:age
18
- assert_raise NoMethodError do
18
+ assert_raises NoMethodError do
19
19
  a.age
20
20
  end
21
21
  # unfortunately, any method can be called on an empty array
@@ -42,11 +42,11 @@ class ArrayExtensionsTest < Test::Unit::TestCase
42
42
  # put something into the array that is not an MMBase
43
43
  a << "not a MMBase"
44
44
  # the dot operator will tell that there is something not a MMBase
45
- assert_raise StandardError do
45
+ assert_raises StandardError do
46
46
  a.age
47
47
  end
48
48
  # the >> operator will try to call the method anyway
49
- assert_raise NoMethodError do
49
+ assert_raises NoMethodError do
50
50
  a >> :age
51
51
  end
52
52
  end
@@ -56,7 +56,7 @@ class ArrayExtensionsTest < Test::Unit::TestCase
56
56
  end
57
57
 
58
58
  def test_to_str_on_empty_array
59
- assert_raise NoMethodError do
59
+ assert_raises NoMethodError do
60
60
  [].to_str
61
61
  end
62
62
  end
@@ -1,6 +1,6 @@
1
1
  $:.unshift File.join(File.dirname(__FILE__),"..","lib")
2
2
 
3
- require 'test/unit'
3
+ require 'minitest/autorun'
4
4
  require 'rgen/environment'
5
5
  require 'metamodels/uml13_metamodel'
6
6
  require 'ea_support/ea_support'
@@ -9,7 +9,7 @@ require 'testmodel/class_model_checker'
9
9
  require 'testmodel/object_model_checker'
10
10
  require 'testmodel/ecore_model_checker'
11
11
 
12
- class EAInstantiatorTest < Test::Unit::TestCase
12
+ class EAInstantiatorTest < MiniTest::Test
13
13
 
14
14
  include Testmodel::ClassModelChecker
15
15
  include Testmodel::ObjectModelChecker
@@ -1,12 +1,12 @@
1
1
  $:.unshift File.join(File.dirname(__FILE__),"..","lib")
2
2
 
3
- require 'test/unit'
3
+ require 'minitest/autorun'
4
4
  require 'rgen/environment'
5
5
  require 'metamodels/uml13_metamodel'
6
6
  require 'ea_support/ea_support'
7
7
  require 'rgen/serializer/xmi11_serializer'
8
8
 
9
- class EASerializerTest < Test::Unit::TestCase
9
+ class EASerializerTest < MiniTest::Test
10
10
 
11
11
  MODEL_DIR = File.join(File.dirname(__FILE__),"testmodel")
12
12
  TEST_DIR = File.join(File.dirname(__FILE__),"ea_serializer_test")
@@ -1,10 +1,10 @@
1
1
  $:.unshift File.join(File.dirname(__FILE__),"..","lib")
2
2
 
3
- require 'test/unit'
3
+ require 'minitest/autorun'
4
4
  require 'rgen/ecore/ecore'
5
5
  require 'rgen/array_extensions'
6
6
 
7
- class ECoreSelfTest < Test::Unit::TestCase
7
+ class ECoreSelfTest < MiniTest::Test
8
8
  include RGen::ECore
9
9
 
10
10
  def test_simple
@@ -1,12 +1,12 @@
1
1
  $:.unshift File.join(File.dirname(__FILE__),"..","lib")
2
2
 
3
- require 'test/unit'
3
+ require 'minitest/autorun'
4
4
  require 'rgen/environment'
5
5
  require 'rgen/ecore/ecore'
6
6
  require 'rgen/ecore/ecore_ext'
7
7
  require 'rgen/ecore/ecore_to_ruby'
8
8
 
9
- class ECoreToRubyTest < Test::Unit::TestCase
9
+ class ECoreToRubyTest < MiniTest::Test
10
10
 
11
11
  module ContainerSimple
12
12
  end
@@ -1,10 +1,10 @@
1
1
  $:.unshift File.join(File.dirname(__FILE__),"..","lib")
2
2
 
3
- require 'test/unit'
3
+ require 'minitest/autorun'
4
4
  require 'rgen/environment'
5
5
  require 'rgen/metamodel_builder'
6
6
 
7
- class EnvironmentTest < Test::Unit::TestCase
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 'test/unit'
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::Unit::TestCase
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
- assert_not_nil root
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
- assert_raise RuntimeError do
152
+ assert_raises RuntimeError do
153
153
  inst.instantiate(%q({ "_class": "Data2", "data2": "something" }))
154
154
  end
155
155
  end