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