MMCT TEAM
Server IP : 111.118.215.189  /  Your IP : 3.23.101.44
Web Server : Apache
System : Linux md-in-83.webhostbox.net 4.19.286-203.ELK.el7.x86_64 #1 SMP Wed Jun 14 04:33:55 CDT 2023 x86_64
User : a1673wkz ( 2475)
PHP Version : 8.2.25
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : ON
Directory (0755) :  /usr/share/ruby/vendor_ruby/puppet/vendor/rgen/test/

[  Home  ][  C0mmand  ][  Upload File  ]

Current File : //usr/share/ruby/vendor_ruby/puppet/vendor/rgen/test/qualified_name_resolver_test.rb
$:.unshift File.join(File.dirname(__FILE__),"..","lib")

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

class QualifiedNameResolverTest < Test::Unit::TestCase

  class TestNode < RGen::MetamodelBuilder::MMBase
    has_attr 'name', String
    has_one 'nextSibling', TestNode
    contains_many 'children', TestNode, "parent"
  end

  class TestNode2 < RGen::MetamodelBuilder::MMBase
    has_attr 'cname', String
    has_one 'nextSibling', TestNode2
    contains_many 'children', TestNode2, "parent"
  end

  class TestNode3 < RGen::MetamodelBuilder::MMBase
    has_attr 'name', String
    contains_one 'child', TestNode3, "parent"
  end

  def testModel
    [TestNode.new(:name => "Root1", :children => [
      TestNode.new(:name => "Sub11"),
      TestNode.new(:name => "Sub12", :children => [
        TestNode.new(:name => "Sub121")])]),
     TestNode.new(:name => "Root2", :children => [
      TestNode.new(:name => "Sub21", :children => [
        TestNode.new(:name => "Sub211")])]),
     TestNode.new(:name => "Root3"),
     TestNode.new(:name => "Root3")
     ]
  end

  def testModel2
    [TestNode2.new(:cname => "Root1", :children => [
      TestNode2.new(:cname => "Sub11")])]
  end

  def testModel3
    [TestNode3.new(:name => "Root1", :child =>
      TestNode3.new(:name => "Sub11", :child =>
        TestNode3.new(:name => "Sub111")))]
  end

  def test_customNameAttribute
    model = testModel2
    res = RGen::Instantiator::QualifiedNameResolver.new(model, :nameAttribute => "cname")
    assert_equal model[0], res.resolveIdentifier("/Root1")
    assert_equal model[0].children[0], res.resolveIdentifier("/Root1/Sub11")
  end

  def test_customSeparator
    model = testModel
    res = RGen::Instantiator::QualifiedNameResolver.new(model, :separator => "|")
    assert_equal model[0], res.resolveIdentifier("|Root1")
    assert_nil res.resolveIdentifier("/Root1")
    assert_equal model[0].children[0], res.resolveIdentifier("|Root1|Sub11")
  end

  def test_noLeadingSeparator
    model = testModel
    res = RGen::Instantiator::QualifiedNameResolver.new(model, :leadingSeparator => false)
    assert_equal model[0], res.resolveIdentifier("Root1")
    assert_nil res.resolveIdentifier("/Root1")
    assert_equal model[0].children[0], res.resolveIdentifier("Root1/Sub11")
  end
    
	def test_resolve
    model = testModel
    res = RGen::Instantiator::QualifiedNameResolver.new(model)
    assert_equal model[0], res.resolveIdentifier("/Root1")
    # again
    assert_equal model[0], res.resolveIdentifier("/Root1")
    assert_equal model[0].children[0], res.resolveIdentifier("/Root1/Sub11")
    # again
    assert_equal model[0].children[0], res.resolveIdentifier("/Root1/Sub11")
    assert_equal model[0].children[1], res.resolveIdentifier("/Root1/Sub12")
    assert_equal model[0].children[1].children[0], res.resolveIdentifier("/Root1/Sub12/Sub121")
    assert_equal model[1], res.resolveIdentifier("/Root2")
    assert_equal model[1].children[0], res.resolveIdentifier("/Root2/Sub21")
    assert_equal model[1].children[0].children[0], res.resolveIdentifier("/Root2/Sub21/Sub211")
    # duplicate name yields two result elements
    assert_equal [model[2], model[3]], res.resolveIdentifier("/Root3")
    assert_equal nil, res.resolveIdentifier("/RootX")
    assert_equal nil, res.resolveIdentifier("/Root1/SubX")
  end

  def test_oneChild
    model = testModel3
    res = RGen::Instantiator::QualifiedNameResolver.new(model)
    assert_equal model[0], res.resolveIdentifier("/Root1")
    assert_equal model[0].child, res.resolveIdentifier("/Root1/Sub11")
    assert_equal model[0].child.child, res.resolveIdentifier("/Root1/Sub11/Sub111")
  end

end


MMCT - 2023