Sha256: 891e6dac746cb48f874e572559810b59b5a41a6c7656efa33331003510adb73c

Contents?: true

Size: 1.29 KB

Versions: 4

Compression:

Stored size: 1.29 KB

Contents

# Copyright: Copyright (c) 2004  Nicolas Despres. All rights reserved.
# Author: Nicolas Despres  <polrop@lrde.epita.fr>.
# License: Gnu General Public License.

# $LastChangedBy: polrop $
# $Id: node.rb 171 2005-03-29 09:12:47Z polrop $


require 'abstract_node'


class LabeledNode < AbstractNode
  include Concrete

  def initialize(data=nil, *sub_nodes)
    if sub_nodes.empty?
      @sub_nodes = {}
    else
      @sub_nodes = sub_nodes.first
    end
    super
  end

  def merge!(sub_nodes)
    sub_nodes.each { |index, sub_node| check_sub_node_type(sub_node) }
    @sub_nodes.merge(sub_nodes)
  end

end # class LabeledNode


if defined? TEST_MODE or __FILE__ == $0

require 'test/unit'

class LabeledNodeTest < Test::Unit::TestCase

  def test_simple
    s11 = LabeledNode.new(11)
    s12 = LabeledNode.new(12)
    s = LabeledNode.new(1, 0 => s11, 1 => s12)
    assert_equal(1, s.data)
    assert_equal(s11, s.sub_nodes[0])
    assert_equal(s12, s.sub_nodes[1])
  end

  def test_crochet_equal
    s = LabeledNode.new(1)
    assert_nothing_raised { s[0] = LabeledNode.new(10) }
    assert_raises(TypeError) { s[1] = nil }
  end

  def test_merge
    s = LabeledNode.new(1)
    s11 = LabeledNode.new(11)
    s12 = LabeledNode.new(12)
    s.merge!({ 0 => s11, 1 => s12 })
  end

end # class LabeledNodeTest

end

Version data entries

4 entries across 4 versions & 2 rubygems

Version Path
ttk-0.1.576 ruby_ex/labeled_node.rb
ttk-0.1.580 ruby_ex/labeled_node.rb
ttk-0.1.579 ruby_ex/labeled_node.rb
vcs-0.2.148 ruby_ex/labeled_node.rb