Sha256: 302229c1ec9f5e17c1c0a75d65fe548cdf9b3120b5ae316b5e1c4046c4bed2b4

Contents?: true

Size: 1.55 KB

Versions: 2

Compression:

Stored size: 1.55 KB

Contents

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

describe TreeNodeVisitor do

  it "should initialize correctly" do
    visitor = TreeNodeVisitor.new do

      on_enter_node do |tree_node|
        @entered_node = true
      end

      on_exit_node do |tree_node|
        @exit_node = true
      end

      on_leaf do |leaf_node|
        @visit_leaf = true
      end
    end

    visitor.enter_node(nil)
    visitor.instance_eval{ @entered_node }.should be_true

    visitor.exit_node(nil)
    visitor.instance_eval{ @exit_node }.should be_true

    visitor.visit_leaf(nil)
    visitor.instance_eval{ @visit_leaf }.should be_true
  end

  it "should initialize correctly" do
    visitor = TreeNodeVisitor.new do

      on_enter_node do |node, parent|
        @node = node
        @parent = parent
      end

      on_exit_node do |node, parent|
        @node = node
        @parent = parent
      end

      on_leaf do |leaf, parent|
        @leaf = leaf
        @parent = parent
      end
    end

    visitor.instance_eval{ @stack = ["p"] }
    visitor.enter_node("n")
    visitor.instance_eval{ @node }.should == "n"
    visitor.instance_eval{ @parent }.should == "p"
    visitor.instance_eval{ @stack }.should have(2).node

    visitor.exit_node("n")
    visitor.instance_eval{ @node }.should == "n"
    visitor.instance_eval{ @stack }.should have(1).node

    visitor.instance_eval{ @stack = ["p"] }
    visitor.visit_leaf("l")
    visitor.instance_eval{ @leaf }.should == "l"
    visitor.instance_eval{ @parent }.should == "p"
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
tree.rb-0.3.12 spec/tree_rb/core/tree_node_visitor_dsl_spec.rb
tree.rb-0.3.11 spec/tree_rb/core/tree_node_visitor_dsl_spec.rb