main
 1require "spec_helper"
 2
 3describe "inorder traversal" do
 4  subject { InOrderTraversal.new }
 5  let(:node) { double }
 6  let(:left_node) { double }
 7  let(:right_node) { double }
 8  let(:visitor) { double('visitor', :visit => nil) }
 9
10  before :each do
11    allow(node).to receive(:left).and_return(left_node)
12    allow(node).to receive(:right).and_return(right_node)
13    subject.traverse(node, visitor)
14  end
15
16  it "should visit the left node first" do
17    expect(visitor).to have_received(:visit).with(left_node)
18  end
19
20  it "should visit the current node second" do
21    expect(visitor).to have_received(:visit).with(node)
22  end
23
24  it "should visit the right node last" do
25    expect(visitor).to have_received(:visit).with(right_node)
26  end
27end