Sha256: fbffb3a2648fe0c8f9d6b51652eaaadf772060918229b96a7888ead642bf0f0d

Contents?: true

Size: 1.03 KB

Versions: 1

Compression:

Stored size: 1.03 KB

Contents

# -*- coding: utf-8 -*-
require File.join(File.dirname(__FILE__), "..", "..", "spec_helper")

describe "Tree Node Visitors" do

  before do
    ta = TreeNode.new( "a", nil )
    LeafNode.new("1", ta )
    LeafNode.new("2", ta )

    tb = TreeNode.new( "b", ta )
    LeafNode.new( "3", tb )

    @tree = ta
  end

  it CallbackTreeNodeVisitor2 do
    visitor = CallbackTreeNodeVisitor2.new
    visitor.on_enter_node{ |tree_node, new_parent_node|
      # puts "**** #{tree_node}"
      TreeNode.new("n" + tree_node.content, new_parent_node)
    }
    visitor.on_visit_leaf{ |leaf_node, new_parent_node|
      # puts "**** #{leaf_node}"
      LeafNode.new( "n" + leaf_node.content, new_parent_node )
    }
    @tree.accept( visitor )
    new_root = visitor.root
    expect(new_root.content).to be ==  "n" + @tree.content

    accumulator = []
    visitor = BlockTreeNodeVisitor.new { |node| accumulator << node.content}
    new_root.accept( visitor )
    expect(accumulator.length).to be == 5
    expect(accumulator).to be == %w{ na n1 n2 nb n3 }
  end

end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
tree.rb-0.3.13 spec/tree_rb/visitors/callback_tree_node_visitor2_spec.rb