Class: XMLInstantiatorTest

Inherits:
Test::Unit::TestCase
  • Object
show all
Includes:
RGen::Util::ModelDumper, SimpleECoreModelChecker
Defined in:
lib/puppet/vendor/rgen/test/xml_instantiator_test.rb

Defined Under Namespace

Modules: PruneTestMM Classes: MyInstantiator, PruneTestInstantiator

Constant Summary collapse

XML_DIR =
File.join(File.dirname(__FILE__),"testmodel")

Constants included from RGen::ECore

RGen::ECore::EBoolean, RGen::ECore::EFloat, RGen::ECore::EInt, RGen::ECore::EJavaClass, RGen::ECore::EJavaObject, RGen::ECore::ELong, RGen::ECore::ERubyClass, RGen::ECore::ERubyObject, RGen::ECore::EString

Instance Method Summary collapse

Methods included from SimpleECoreModelChecker

#checkECoreModel

Methods included from RGen::MetamodelBuilder::ModuleExtension

#_annotations, #_constantOrder, #annotation, extended, #final_method, #method_added

Methods included from RGen::ECore::ECoreInterface

#_set_ecore_internal, clear_ecore_cache, #ecore

Methods included from RGen::Util::ModelDumper

#dump

Instance Method Details

#remove_whitespace_elements(elements) ⇒ Object



146
147
148
# File 'lib/puppet/vendor/rgen/test/xml_instantiator_test.rb', line 146

def remove_whitespace_elements(elements)
  elements.reject{|e| e.strip == ""} 
end

#test_customObject



93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
# File 'lib/puppet/vendor/rgen/test/xml_instantiator_test.rb', line 93

def test_custom
  env = RGen::Environment.new
  inst = MyInstantiator.new(env, DefaultMM, true)
  inst.instantiate_file(File.join(XML_DIR,"manual_testmodel.xml"))
  
  house = env.find(:class => DefaultMM::MNS::House).first
  assert_not_nil house
  assert_equal 2, house.room.size
  
  rooms = env.find(:class => DefaultMM::MNS::Room)
  assert_equal 2, rooms.size
  assert_equal 0, (house.room - rooms).size
  rooms.each {|r| assert r.parent == house}
  tomsRoom = rooms.select{|r| r.name == "TomsRoom"}.first
  assert_not_nil tomsRoom
  
  persons = env.find(:class => DefaultMM::Person)
  assert_equal 4, persons.size
  tom = persons.select{|p| p.name == "Tom"}.first
  assert_not_nil tom
  
  assert tom.personalRoom == tomsRoom
  
  mpns = env.find(:class => DefaultMM::MultiPartName)
  assert mpns.first.respond_to?("insideMultiPart")
end

#test_defaultObject



120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
# File 'lib/puppet/vendor/rgen/test/xml_instantiator_test.rb', line 120

def test_default
  env = RGen::Environment.new
  inst = RGen::Instantiator::DefaultXMLInstantiator.new(env, EmptyMM, true)
  inst.instantiate_file(File.join(XML_DIR,"manual_testmodel.xml"))
  
  house = env.find(:class => EmptyMM::MNS_House).first
  assert_not_nil house
  assert_equal 2, house.mNS_Room.size
  assert_equal "before kitchen", remove_whitespace_elements(house.chardata)[0].strip
  assert_equal "after kitchen", remove_whitespace_elements(house.chardata)[1].strip
  assert_equal "after toms room", remove_whitespace_elements(house.chardata)[2].strip
  
  rooms = env.find(:class => EmptyMM::MNS_Room)
  assert_equal 2, rooms.size
  assert_equal 0, (house.mNS_Room - rooms).size
  rooms.each {|r| assert r.parent == house}
  tomsRoom = rooms.select{|r| r.name == "TomsRoom"}.first
  assert_not_nil tomsRoom
  assert_equal "within toms room", remove_whitespace_elements(tomsRoom.chardata)[0]
  
  persons = env.find(:class => EmptyMM::Person)
  assert_equal 4, persons.size
  tom = persons.select{|p| p.name == "Tom"}.first
  assert_not_nil tom
end

#test_pruningObject



74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
# File 'lib/puppet/vendor/rgen/test/xml_instantiator_test.rb', line 74

def test_pruning
  env = RGen::Environment.new
  
  # prune level 2 is set in the class body
  inst = PruneTestInstantiator.new(env)
  inst.instantiate_file(File.join(XML_DIR,"manual_testmodel.xml"))
  assert_equal 2, inst.max_depth
  
  PruneTestInstantiator.set_prune_level(0)
  inst = PruneTestInstantiator.new(env)
  inst.instantiate_file(File.join(XML_DIR,"manual_testmodel.xml"))
  assert_equal 5, inst.max_depth
  
  PruneTestInstantiator.set_prune_level(1)
  inst = PruneTestInstantiator.new(env)
  inst.instantiate_file(File.join(XML_DIR,"manual_testmodel.xml"))
  assert_equal 1, inst.max_depth
end

#test_simle_xmi_ecore_instantiatorObject



152
153
154
155
156
157
158
# File 'lib/puppet/vendor/rgen/test/xml_instantiator_test.rb', line 152

def test_simle_xmi_ecore_instantiator
  envECore = RGen::Environment.new
  File.open(XML_DIR+"/ea_testmodel.xml") { |f|
    SimpleXMIECoreInstantiator.new.instantiateECoreModel(envECore, f.read)
  }
  checkECoreModel(envECore)
end