rgen 0.7.0 → 0.8.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (61) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG +27 -0
  3. data/Project.yaml +21 -0
  4. data/README.rdoc +1 -1
  5. data/Rakefile +22 -25
  6. data/lib/rgen/ecore/ecore.rb +1 -1
  7. data/lib/rgen/ecore/ecore_ext.rb +9 -1
  8. data/lib/rgen/ecore/ecore_to_json.rb +188 -0
  9. data/lib/rgen/ecore/ecore_to_ruby.rb +146 -47
  10. data/lib/rgen/fragment/fragmented_model.rb +2 -0
  11. data/lib/rgen/fragment/model_fragment.rb +3 -0
  12. data/lib/rgen/instantiator/default_xml_instantiator.rb +93 -88
  13. data/lib/rgen/metamodel_builder/builder_extensions.rb +33 -9
  14. data/lib/rgen/metamodel_builder/builder_runtime.rb +12 -5
  15. data/lib/rgen/template_language/output_handler.rb +52 -19
  16. data/lib/rgen/template_language/template_container.rb +17 -7
  17. data/lib/rgen/template_language.rb +2 -1
  18. data/test/array_extensions_test.rb +7 -7
  19. data/test/ea_instantiator_test.rb +2 -2
  20. data/test/ea_serializer_test.rb +2 -2
  21. data/test/ecore_self_test.rb +2 -2
  22. data/test/ecore_to_ruby_test.rb +73 -0
  23. data/test/environment_test.rb +2 -2
  24. data/test/json_test.rb +4 -4
  25. data/test/metamodel_builder_test.rb +79 -44
  26. data/test/metamodel_from_ecore_test.rb +1 -1
  27. data/test/metamodel_order_test.rb +2 -2
  28. data/test/metamodel_roundtrip_test.rb +2 -2
  29. data/test/method_delegation_test.rb +5 -5
  30. data/test/model_builder/builder_context_test.rb +3 -3
  31. data/test/model_builder/builder_test.rb +11 -11
  32. data/test/model_builder/reference_resolver_test.rb +3 -3
  33. data/test/model_builder/serializer_test.rb +2 -2
  34. data/test/model_fragment_test.rb +2 -2
  35. data/test/output_handler_test.rb +2 -2
  36. data/test/qualified_name_provider_test.rb +2 -2
  37. data/test/qualified_name_resolver_test.rb +4 -4
  38. data/test/reference_resolver_test.rb +4 -4
  39. data/test/rgen_test.rb +2 -1
  40. data/test/template_language_test/templates/indent_nonl_at_eof_test/test.tpl +14 -0
  41. data/test/template_language_test/templates/indent_same_line_sub/test.tpl +16 -0
  42. data/test/template_language_test/templates/line_endings/mixed.tpl +6 -0
  43. data/test/template_language_test/templates/line_endings/unix.tpl +6 -0
  44. data/test/template_language_test/templates/line_endings/windows.tpl +6 -0
  45. data/test/template_language_test/templates/ws_test.tpl +21 -0
  46. data/test/template_language_test.rb +60 -9
  47. data/test/testmodel/class_model_checker.rb +17 -17
  48. data/test/testmodel/ecore_model_checker.rb +13 -13
  49. data/test/testmodel/object_model_checker.rb +6 -6
  50. data/test/transformer_test.rb +3 -3
  51. data/test/util/file_cache_map_test.rb +2 -2
  52. data/test/util/pattern_matcher_test.rb +7 -7
  53. data/test/xml_instantiator_test/simple_ecore_model_checker.rb +12 -12
  54. data/test/xml_instantiator_test.rb +8 -8
  55. metadata +93 -22
  56. data/test/metamodel_roundtrip_test/TestModel_Regenerated.rb +0 -71
  57. data/test/metamodel_roundtrip_test/houseMetamodel_Regenerated.ecore +0 -162
  58. data/test/metamodel_roundtrip_test/using_builtin_types_serialized.ecore +0 -9
  59. data/test/model_builder/ecore_internal.rb +0 -113
  60. data/test/testmodel/ea_testmodel_regenerated.xml +0 -813
  61. data/test/util/file_cache_map_test/testdir/fileA +0 -1
@@ -8,107 +8,112 @@ module Instantiator
8
8
  # Derive your own instantiator from this class or use it as is.
9
9
  #
10
10
  class DefaultXMLInstantiator < NodebasedXMLInstantiator
11
- include Util::NameHelper
11
+ include Util::NameHelper
12
12
 
13
- NamespaceDescriptor = Struct.new(:prefix, :target)
14
-
15
- class << self
16
-
17
- def map_tag_ns(from, to, prefix="")
18
- tag_ns_map[from] = NamespaceDescriptor.new(prefix, to)
19
- end
20
-
21
- def tag_ns_map # :nodoc:
22
- @tag_ns_map ||={}
23
- @tag_ns_map
24
- end
25
-
26
- end
27
-
28
- def initialize(env, default_module, create_mm=false)
29
- super(env)
30
- @default_module = default_module
31
- @create_mm = create_mm
32
- end
33
-
34
- def on_descent(node)
35
- obj = new_object(node)
36
- @env << obj unless obj.nil?
37
- node.object = obj
38
- node.attributes.each_pair { |k,v| set_attribute(node, k, v) }
39
- end
13
+ NamespaceDescriptor = Struct.new(:prefix, :target)
14
+
15
+ class << self
16
+
17
+ def map_tag_ns(from, to, prefix="")
18
+ tag_ns_map[from] = NamespaceDescriptor.new(prefix, to)
19
+ end
20
+
21
+ def tag_ns_map # :nodoc:
22
+ @tag_ns_map ||={}
23
+ @tag_ns_map
24
+ end
25
+
26
+ end
27
+
28
+ def initialize(env, default_module, create_mm=false)
29
+ super(env)
30
+ @default_module = default_module
31
+ @create_mm = create_mm
32
+ end
33
+
34
+ def on_descent(node)
35
+ obj = new_object(node)
36
+ @env << obj unless obj.nil?
37
+ node.object = obj
38
+ node.attributes.each_pair { |k,v| set_attribute(node, k, v) }
39
+ end
40
40
 
41
- def on_ascent(node)
42
- node.children.each { |c| assoc_p2c(node, c) }
43
- node.object.class.has_attr 'chardata', Object unless node.object.respond_to?(:chardata)
44
- set_attribute(node, "chardata", node.chardata)
45
- end
46
-
41
+ def on_ascent(node)
42
+ node.children.each { |c| assoc_p2c(node, c) }
43
+ node.object.class.has_attr 'chardata', Object unless node.object.respond_to?(:chardata)
44
+ set_attribute(node, "chardata", node.chardata)
45
+ end
46
+
47
47
  def class_name(str)
48
48
  saneClassName(str)
49
49
  end
50
50
 
51
- def new_object(node)
52
- ns_desc = self.class.tag_ns_map[node.namespace]
53
- class_name = class_name(ns_desc.nil? ? node.qtag : ns_desc.prefix+node.tag)
54
- mod = (ns_desc && ns_desc.target) || @default_module
55
- build_on_error(NameError, :build_class, class_name, mod) do
56
- mod.const_get(class_name).new
57
- end
58
- end
51
+ def new_object(node)
52
+ ns_desc = self.class.tag_ns_map[node.namespace]
53
+ class_name = class_name(ns_desc.nil? ? node.qtag : ns_desc.prefix+node.tag)
54
+ mod = (ns_desc && ns_desc.target) || @default_module
55
+ build_on_error(NameError, :build_class, class_name, mod) do
56
+ begin
57
+ mod.const_get(class_name, false).new
58
+ rescue ArgumentError
59
+ # Ruby 1.8
60
+ mod.const_get(class_name).new
61
+ end
62
+ end
63
+ end
59
64
 
60
- def build_class(name, mod)
61
- mod.const_set(name, Class.new(RGen::MetamodelBuilder::MMBase))
62
- end
65
+ def build_class(name, mod)
66
+ mod.const_set(name, Class.new(RGen::MetamodelBuilder::MMBase))
67
+ end
63
68
 
64
69
  def method_name(str)
65
70
  saneMethodName(str)
66
71
  end
67
72
 
68
- def assoc_p2c(parent, child)
69
- return unless parent.object && child.object
70
- method_name = method_name(className(child.object))
71
- build_on_error(NoMethodError, :build_p2c_assoc, parent, child, method_name) do
72
- parent.object.addGeneric(method_name, child.object)
73
- child.object.setGeneric("parent", parent.object)
74
- end
75
- end
76
-
77
- def build_p2c_assoc(parent, child, method_name)
78
- parent.object.class.has_many(method_name, child.object.class)
79
- child.object.class.has_one("parent", RGen::MetamodelBuilder::MMBase)
80
- end
81
-
82
- def set_attribute(node, attr, value)
83
- return unless node.object
84
- build_on_error(NoMethodError, :build_attribute, node, attr, value) do
85
- node.object.setGeneric(method_name(attr), value)
86
- end
87
- end
88
-
89
- def build_attribute(node, attr, value)
90
- node.object.class.has_attr(method_name(attr))
91
- end
73
+ def assoc_p2c(parent, child)
74
+ return unless parent.object && child.object
75
+ method_name = method_name(className(child.object))
76
+ build_on_error(NoMethodError, :build_p2c_assoc, parent, child, method_name) do
77
+ parent.object.addGeneric(method_name, child.object)
78
+ child.object.setGeneric("parent", parent.object)
79
+ end
80
+ end
81
+
82
+ def build_p2c_assoc(parent, child, method_name)
83
+ parent.object.class.has_many(method_name, child.object.class)
84
+ child.object.class.has_one("parent", RGen::MetamodelBuilder::MMBase)
85
+ end
86
+
87
+ def set_attribute(node, attr, value)
88
+ return unless node.object
89
+ build_on_error(NoMethodError, :build_attribute, node, attr, value) do
90
+ node.object.setGeneric(method_name(attr), value)
91
+ end
92
+ end
93
+
94
+ def build_attribute(node, attr, value)
95
+ node.object.class.has_attr(method_name(attr))
96
+ end
92
97
 
93
- protected
94
-
95
- # Helper method for implementing classes.
96
- # This method yields the given block.
97
- # If the metamodel should be create automatically (see constructor)
98
- # rescues +error+ and calls +builder_method+ with +args+, then
99
- # yields the block again.
100
- def build_on_error(error, builder_method, *args)
101
- begin
102
- yield
103
- rescue error
104
- if @create_mm
105
- send(builder_method, *args)
106
- yield
107
- else
108
- raise
109
- end
110
- end
111
- end
98
+ protected
99
+
100
+ # Helper method for implementing classes.
101
+ # This method yields the given block.
102
+ # If the metamodel should be create automatically (see constructor)
103
+ # rescues +error+ and calls +builder_method+ with +args+, then
104
+ # yields the block again.
105
+ def build_on_error(error, builder_method, *args)
106
+ begin
107
+ yield
108
+ rescue error
109
+ if @create_mm
110
+ send(builder_method, *args)
111
+ yield
112
+ else
113
+ raise
114
+ end
115
+ end
116
+ end
112
117
 
113
118
  end
114
119
 
@@ -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,8 +402,8 @@ 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 %>
398
- return if val.nil? || (@<%= name %>.any?{|e| e.object_id == val.object_id} && (val.is_a?(MMBase) || val.is_a?(MMGeneric)))
405
+ @<%= name %> = [] unless defined?(@<%= name %>)
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)
401
409
  <% if other_role %>
@@ -407,9 +415,9 @@ 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
- if e.object_id == val.object_id
420
+ if e.equal?(val)
413
421
  @<%= name %>.delete_at(i)
414
422
  <% if props.reference? && props.value(:containment) %>
415
423
  val._set_container(nil, nil)
@@ -428,14 +436,30 @@ module BuilderExtensions
428
436
  get<%= firstToUpper(name) %>.each {|e|
429
437
  remove<%= firstToUpper(name) %>(e)
430
438
  }
431
- val.each {|v|
432
- add<%= firstToUpper(name) %>(v)
439
+ @<%= name %> = [] unless defined?(@<%= name %>)
440
+ <% if props.reference? %>
441
+ val.uniq {|elem| elem.object_id }.each {|elem|
442
+ next if elem.nil?
443
+ <%= type_check_code("elem", props) %>
444
+ @<%= name %> << elem
445
+ <% if other_role %>
446
+ elem._register<%= firstToUpper(other_role) %>(self) unless elem.is_a?(MMGeneric)
447
+ <% end %>
448
+ <% if props.value(:containment) %>
449
+ elem._set_container(self, :<%= name %>)
450
+ <% end %>
433
451
  }
452
+ <% else %>
453
+ val.each {|elem|
454
+ <%= type_check_code("elem", props) %>
455
+ @<%= name %> << elem
456
+ }
457
+ <% end %>
434
458
  end
435
459
  alias <%= name %>= set<%= firstToUpper(name) %>
436
460
 
437
461
  def _register<%= firstToUpper(name) %>(val)
438
- @<%= name %> = [] unless @<%= name %>
462
+ @<%= name %> = [] unless defined?(@<%= name %>)
439
463
  @<%= name %>.push val
440
464
  <% if props.reference? && props.value(:containment) %>
441
465
  val._set_container(self, :<%= name %>)
@@ -515,7 +539,7 @@ module BuilderExtensions
515
539
  code << "\n"
516
540
  expected = "Integer"
517
541
  elsif props.impl_type.is_a?(Class)
518
- 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)"
519
543
  code << " || #{varname}.is_a?(BigDecimal)" if props.impl_type == Float && defined?(BigDecimal)
520
544
  code << "\n"
521
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
  #
@@ -6,15 +6,28 @@ module RGen
6
6
  module TemplateLanguage
7
7
 
8
8
  class OutputHandler
9
- attr_writer :indent
10
9
  attr_accessor :noIndentNextLine
11
10
 
12
11
  def initialize(indent=0, indentString=" ", mode=:explicit)
13
12
  self.mode = mode
14
- @indent = indent
15
13
  @indentString = indentString
16
14
  @state = :wait_for_nonws
17
15
  @output = ""
16
+ @indent_string = @indentString*indent
17
+ end
18
+
19
+ def indent=(i)
20
+ @indent_string = @indentString*i
21
+ end
22
+
23
+ NL = "\n"
24
+ LFNL = "\r\n"
25
+ if RUBY_VERSION.start_with?("1.8")
26
+ NL_CHAR = 10
27
+ LF_CHAR = 13
28
+ else
29
+ NL_CHAR = "\n"
30
+ LF_CHAR = "\r"
18
31
  end
19
32
 
20
33
  # ERB will call this method for every string s which is part of the
@@ -22,36 +35,46 @@ module TemplateLanguage
22
35
  # call this method for every part of s which is terminated by a \n
23
36
  #
24
37
  def concat(s)
25
- return @output.concat(s) if s.is_a? OutputHandler
26
- #puts [object_id, noIndentNextLine, @state, @output.to_s, s].inspect
27
- s = s.to_str.gsub(/^[\t ]*\r?\n/,'') if @ignoreNextNL
28
- s = s.to_str.gsub(/^\s+/,'') if @ignoreNextWS
29
- @ignoreNextNL = @ignoreNextWS = false if s =~ /\S/
38
+ if @ignoreNextNL
39
+ idx = s.index(NL)
40
+ if idx && s[0..idx].strip.empty?
41
+ s = s[idx+1..-1]
42
+ end
43
+ @ignoreNextNL = false unless s.strip.empty?
44
+ end
45
+ if @ignoreNextWS
46
+ s = s.lstrip
47
+ @ignoreNextWS = false unless s.empty?
48
+ end
30
49
  if @mode == :direct
31
50
  @output.concat(s)
32
51
  elsif @mode == :explicit
33
52
  while s.size > 0
34
53
  if @state == :wait_for_nl
35
- if s =~ /\A([^\r\n]*\r?\n)(.*)/m
36
- rest = $2
37
- @output.concat($1.gsub(/[\t ]+(?=\r|\n)/,''))
38
- s = rest || ""
54
+ idx = s.index(NL)
55
+ if idx
56
+ if s[idx-1] == LF_CHAR
57
+ @output.concat(s[0..idx].rstrip)
58
+ @output.concat(LFNL)
59
+ else
60
+ @output.concat(s[0..idx].rstrip)
61
+ @output.concat(NL)
62
+ end
63
+ s = s[idx+1..-1]
39
64
  @state = :wait_for_nonws
40
65
  else
41
66
  @output.concat(s)
42
- s = ""
67
+ break
43
68
  end
44
69
  elsif @state == :wait_for_nonws
45
- if s =~ /\A\s*(\S+.*)/m
46
- s = $1 || ""
47
- if !@noIndentNextLine && !(@output.to_s.size > 0 && @output.to_s[-1] != "\n"[0])
48
- @output.concat(@indentString * @indent)
70
+ s = s.lstrip
71
+ if !s.empty?
72
+ unless @noIndentNextLine || (@output[-1] && @output[-1] != NL_CHAR)
73
+ @output.concat(@indent_string)
49
74
  else
50
75
  @noIndentNextLine = false
51
76
  end
52
77
  @state = :wait_for_nl
53
- else
54
- s = ""
55
78
  end
56
79
  end
57
80
  end
@@ -68,6 +91,16 @@ module TemplateLanguage
68
91
  @output.concat(s)
69
92
  end
70
93
 
94
+ def direct_concat_allow_indent(s)
95
+ unless @noIndentNextLine || (@output[-1] && @output[-1] != NL_CHAR)
96
+ @output.concat(@indent_string)
97
+ else
98
+ @noIndentNextLine = false
99
+ end
100
+ @state = :wait_for_nl
101
+ @output.concat(s)
102
+ end
103
+
71
104
  def ignoreNextNL
72
105
  @ignoreNextNL = true
73
106
  end
@@ -84,4 +117,4 @@ module TemplateLanguage
84
117
 
85
118
  end
86
119
 
87
- end
120
+ end
@@ -84,7 +84,7 @@ module RGen
84
84
  end
85
85
 
86
86
  def ws
87
- _direct_concat(" ")
87
+ _direct_concat(" ", true)
88
88
  end
89
89
 
90
90
  def iinc
@@ -134,7 +134,7 @@ module RGen
134
134
  sep = params[:separator]
135
135
  params[:foreach].each_with_index {|e,i|
136
136
  _direct_concat(sep.to_s) if sep && i > 0
137
- output = _expand(template, args, params.merge({:for => e}))
137
+ _expand(template, args, params.merge({:for => e}))
138
138
  }
139
139
  end
140
140
 
@@ -147,7 +147,12 @@ module RGen
147
147
  @indent = params[:indent] || @indent
148
148
  noIndentNextLine = params[:_noIndentNextLine] ||
149
149
  (@output.is_a?(OutputHandler) && @output.noIndentNextLine) ||
150
- (@output.to_s.size > 0 && @output.to_s[-1] != "\n"[0])
150
+ # the following line actually defines the noIndentNextLine state:
151
+ # we don't indent the next line if the previous line was not finished,
152
+ # i.e. if output has been generated but is not terminated by a newline
153
+ # BEWARE: the initial evaluation of the ERB template during template loading
154
+ # also writes to @output (it creates a String); we must ignore this
155
+ (@output.is_a?(OutputHandler) && @output.to_s.size > 0 && @output.to_s[-1] != "\n"[0])
151
156
  caller = params[:_caller] || self
152
157
  old_context, @context = @context, context if context
153
158
  local_output = nil
@@ -157,7 +162,7 @@ module RGen
157
162
  old_output, @output = @output, OutputHandler.new(@indent, @parent.indentString)
158
163
  @output.noIndentNextLine = noIndentNextLine
159
164
  _call_template(tplname, @context, args, caller == self)
160
- old_output.noIndentNextLine = false if old_output.is_a?(OutputHandler) && !old_output.noIndentNextLine
165
+ old_output.noIndentNextLine = false if old_output.is_a?(OutputHandler) && !@output.noIndentNextLine
161
166
  local_output, @output = @output, old_output
162
167
  else
163
168
  local_output = @parent.expand(template, *(args.dup << {:for => @context, :indent => @indent, :_noIndentNextLine => noIndentNextLine, :_evalOnly => true, :_caller => caller}))
@@ -205,13 +210,18 @@ module RGen
205
210
  raise StandardError.new("Template class not matching: #{tpl} for #{context.class.name}") unless found
206
211
  end
207
212
 
208
- def _direct_concat(s)
213
+ def _direct_concat(s, allow_indent=false)
209
214
  if @output.is_a? OutputHandler
210
- @output.direct_concat(s)
215
+ if allow_indent
216
+ @output.direct_concat_allow_indent(s)
217
+ else
218
+ @output.direct_concat(s)
219
+ end
211
220
  else
212
221
  @output << s
213
222
  end
214
- end
215
223
 
224
+ end
225
+
216
226
  def _detectNewLinePattern(text)
217
227
  tests = 0
218
228
  rnOccurances = 0
@@ -129,6 +129,7 @@ module RGen
129
129
  # Starting from this point one can add indentation and newlines as required by using
130
130
  # explicit formatting commands:
131
131
  # * <code><%nl%></code> (newline) starts a new line
132
+ # * <code><%ws%></code> (whitespace) adds an explicit space
132
133
  # * <code><%iinc%></code> (indentation increment) increases the current indentation
133
134
  # * <code><%idec%></code> (indentation decrement) decreases the current indentation
134
135
  # * <code><%nonl%></code> (no newline) ignore next newline
@@ -294,4 +295,4 @@ module TemplateLanguage
294
295
 
295
296
  end
296
297
 
297
- end
298
+ end
@@ -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