1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59
|
$:.unshift File.dirname(__FILE__)+"/../lib"
require 'minitest/autorun'
require 'rgen/ecore/ecore'
require 'rgen/model_builder/builder_context'
class BuilderContextTest < Minitest::Test
module BuilderExtension1
module PackageA
def inPackAExt
3
end
module PackageB
def inPackBExt
5
end
end
end
end
class BuilderContext
def inBuilderContext
7
end
end
def test_extensionContainerFactory
aboveRoot = RGen::ECore::EPackage.new(:name => "AboveRoot")
root = RGen::ECore::EPackage.new(:name => "Root", :eSuperPackage => aboveRoot)
packageA = RGen::ECore::EPackage.new(:name => "PackageA", :eSuperPackage => root)
packageB = RGen::ECore::EPackage.new(:name => "PackageB", :eSuperPackage => packageA)
packageC = RGen::ECore::EPackage.new(:name => "PackageBC", :eSuperPackage => packageA)
factory = RGen::ModelBuilder::BuilderContext::ExtensionContainerFactory.new(root, BuilderExtension1, BuilderContext.new)
assert_equal BuilderExtension1::PackageA, factory.moduleForPackage(packageA)
packAExt = factory.extensionContainer(packageA)
assert packAExt.respond_to?(:inPackAExt)
assert !packAExt.respond_to?(:inPackBExt)
assert_equal 3, packAExt.inPackAExt
assert_equal 7, packAExt.inBuilderContext
assert_equal BuilderExtension1::PackageA::PackageB, factory.moduleForPackage(packageB)
packBExt = factory.extensionContainer(packageB)
assert !packBExt.respond_to?(:inPackAExt)
assert packBExt.respond_to?(:inPackBExt)
assert_equal 5, packBExt.inPackBExt
assert_equal 7, packBExt.inBuilderContext
assert_raises RuntimeError do
# aboveRoot is not contained within root
assert_nil factory.moduleForPackage(aboveRoot)
end
assert_nil factory.moduleForPackage(packageC)
end
end
|