1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117
|
require 'spec_helper'
require 'ostruct'
module RSpec
module Fixtures
class Animal
def initialize(name,species)
@name,@species = name,species
end
def inspect
<<-EOA
<Animal
name=#{@name},
species=#{@species}
>
EOA
end
end
end
end
describe "Diff" do
before(:each) do
@options = OpenStruct.new(:diff_format => :unified, :context_lines => 3)
@differ = RSpec::Expectations::Differ.new(@options)
end
it "outputs unified diff of two strings" do
expected="foo\nbar\nzap\nthis\nis\nsoo\nvery\nvery\nequal\ninsert\na\nline\n"
actual="foo\nzap\nbar\nthis\nis\nsoo\nvery\nvery\nequal\ninsert\na\nanother\nline\n"
expected_diff= <<'EOD'
@@ -1,6 +1,6 @@
foo
-zap
bar
+zap
this
is
soo
@@ -9,6 +9,5 @@
equal
insert
a
-another
line
EOD
diff = @differ.diff_as_string(expected, actual)
diff.should eql(expected_diff)
end
it "outputs unified diff message of two arrays" do
expected = [ :foo, 'bar', :baz, 'quux', :metasyntactic, 'variable', :delta, 'charlie', :width, 'quite wide' ]
actual = [ :foo, 'bar', :baz, 'quux', :metasyntactic, 'variable', :delta, 'tango' , :width, 'very wide' ]
expected_diff = <<'EOD'
@@ -5,7 +5,7 @@
:metasyntactic,
"variable",
:delta,
- "tango",
+ "charlie",
:width,
- "very wide"]
+ "quite wide"]
EOD
diff = @differ.diff_as_object(expected,actual)
diff.should == expected_diff
end
it "outputs unified diff message of two objects" do
expected = RSpec::Fixtures::Animal.new "bob", "giraffe"
actual = RSpec::Fixtures::Animal.new "bob", "tortoise"
expected_diff = <<'EOD'
@@ -1,5 +1,5 @@
<Animal
name=bob,
- species=tortoise
+ species=giraffe
>
EOD
diff = @differ.diff_as_object(expected,actual)
diff.should == expected_diff
end
it "outputs unified diff message of two hashes" do
expected = { :foo => 'bar', :baz => 'quux', :metasyntactic => 'variable', :delta => 'charlie', :width =>'quite wide' }
actual = { :foo => 'bar', :metasyntactic => 'variable', :delta => 'charlotte', :width =>'quite wide' }
expected_diff = <<'EOD'
@@ -1,4 +1,5 @@
-:delta => "charlotte",
+:baz => "quux",
+:delta => "charlie",
:foo => "bar",
:metasyntactic => "variable",
:width => "quite wide"
EOD
diff = @differ.diff_as_object(expected,actual)
diff.should == expected_diff
end
end
|