Sha256: 6c28100f786eafc17f03fc0e522760db47958a14907175968cb8be4ccec364b5

Contents?: true

Size: 1.67 KB

Versions: 3

Compression:

Stored size: 1.67 KB

Contents

$:.unshift File.join(File.dirname(__FILE__),"..","lib")

require 'test/unit'
require 'rgen/metamodel_builder'
require 'rgen/instantiator/reference_resolver'

class ReferenceResolverTest < Test::Unit::TestCase

  class TestNode < RGen::MetamodelBuilder::MMBase
    has_attr 'name', String
    has_one 'other', TestNode
    has_many 'others', TestNode
  end

  class TestResolver
    include RGen::Instantiator::ReferenceResolver
    def initialize(nodeA, nodeB, nodeC)
      @nodeA, @nodeB, @nodeC = nodeA, nodeB, nodeC
    end
    def resolveIdentifier(ident)
      {:a => @nodeA, :b => @nodeB, :c => @nodeC}[ident] 
    end
  end

  def test_simple
    nodeA = TestNode.new(:name => "NodeA")
    nodeB = TestNode.new(:name => "NodeB")
    nodeC = TestNode.new(:name => "NodeC")
    bProxy = RGen::MetamodelBuilder::MMProxy.new(:b) 
    nodeA.other = bProxy 
    aProxy = RGen::MetamodelBuilder::MMProxy.new(:a) 
    cProxy = RGen::MetamodelBuilder::MMProxy.new(:c) 
    nodeB.others = [aProxy, cProxy] 
    unresolvedReferences = [
      RGen::Instantiator::ReferenceResolver::UnresolvedReference.new(nodeA, "other", bProxy),
      RGen::Instantiator::ReferenceResolver::UnresolvedReference.new(nodeB, "others", aProxy),
      RGen::Instantiator::ReferenceResolver::UnresolvedReference.new(nodeB, "others", cProxy)
    ]
    resolver = TestResolver.new(nodeA, nodeB, nodeC)
    resolver.resolveReferences(unresolvedReferences)
    assert_equal nodeB, nodeA.other
    assert_equal [], nodeA.others
    assert_equal nil, nodeB.other
    assert_equal [nodeA, nodeC], nodeB.others
    assert_equal nil, nodeC.other
    assert_equal [], nodeC.others
  end

end
 

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
rgen-0.5.3 test/reference_resolver_test.rb
rgen-0.5.4 test/reference_resolver_test.rb
rgen-0.5.2 test/reference_resolver_test.rb