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