spec/tdiff_spec.rb in tdiff-0.1.0 vs spec/tdiff_spec.rb in tdiff-0.2.0

- old
+ new

@@ -1,94 +1,13 @@ require 'spec_helper' -require 'classes/node' -require 'tdiff' +require 'helpers/trees' +require 'tdiff_examples' +require 'tdiff/tdiff' describe TDiff do - before(:all) do - @tree = Node.new('root', [ - Node.new('leaf1', [ - Node.new('subleaf1', []), - Node.new('subleaf2', []) - ]), + include Helpers::Trees - Node.new('leaf2', [ - Node.new('subleaf1', []), - Node.new('subleaf2', []) - ]) - ]) - - @different_root = Node.new('wrong', []) - - @added = Node.new('root', [ - Node.new('leaf1', [ - Node.new('subleaf1', []), - Node.new('subleaf3', []), - Node.new('subleaf2', []) - ]), - - Node.new('leaf2', [ - Node.new('subleaf1', []), - Node.new('subleaf2', []) - ]) - ]) - - @removed = Node.new('root', [ - Node.new('leaf1', [ - Node.new('subleaf1', []) - ]), - - Node.new('leaf2', [ - Node.new('subleaf1', []), - Node.new('subleaf2', []) - ]) - ]) - - @changed_order = Node.new('root', [ - Node.new('leaf2', [ - Node.new('subleaf1', []), - Node.new('subleaf2', []) - ]), - - Node.new('leaf1', [ - Node.new('subleaf1', []), - Node.new('subleaf2', []) - ]) - ]) - end - - it "should tell if two trees are identical" do - @tree.tdiff(@tree).all? { |change,node| - change == ' ' - }.should == true - end - - it "should stop if the root nodes have changed" do - changes = @tree.tdiff(@different_root).to_a - - changes.length.should == 2 - - changes[0][0].should == '-' - changes[0][1].should == @tree - - changes[1][0].should == '+' - changes[1][1].should == @different_root - end - - it "should tell when sub-nodes are added" do - changes = @tree.tdiff(@added).select { |change,node| change == '+' } - - changes.length.should == 1 - changes[0][0].should == '+' - changes[0][1].should == @added.children[0].children[1] - end - - it "should tell when sub-nodes are removed" do - changes = @tree.tdiff(@removed).select { |change,node| change == '-' } - - changes.length.should == 1 - changes[0][0].should == '-' - changes[0][1].should == @tree.children[0].children[1] - end + it_should_behave_like 'TDiff', :tdiff it "should detect when the order of children has changed" do changes = @tree.tdiff(@changed_order).to_a changes.length.should == 5