diff options
Diffstat (limited to 'spec/issues_spec.rb')
-rw-r--r-- | spec/issues_spec.rb | 55 |
1 files changed, 40 insertions, 15 deletions
diff --git a/spec/issues_spec.rb b/spec/issues_spec.rb index c3d8f87..7638249 100644 --- a/spec/issues_spec.rb +++ b/spec/issues_spec.rb @@ -5,20 +5,45 @@ require 'spec_helper' describe "Diff::LCS Issues" do include Diff::LCS::SpecHelper::Matchers - it "should not fail to provide a simple patchset (issue 1)" do - s1, s2 = *%W(aX bXaX) - correct_forward_diff = [ - [ [ '+', 0, 'b' ], - [ '+', 1, 'X' ] ], - ] - - diff_s1_s2 = Diff::LCS.diff(s1, s2) - change_diff(correct_forward_diff).should == diff_s1_s2 - expect do - Diff::LCS.patch(s1, diff_s1_s2).should == s2 - end.to_not raise_error(RuntimeError, /provided patchset/) - expect do - Diff::LCS.patch(s2, diff_s1_s2).should == s1 - end.to_not raise_error(RuntimeError, /provided patchset/) + describe 'issue #1' do + shared_examples 'handles simple diffs' do |s1, s2, forward_diff| + before do + @diff_s1_s2 = Diff::LCS.diff(s1, s2) + end + + it 'creates the correct diff' do + expect(change_diff(forward_diff)).to eq(@diff_s1_s2) + end + + it 'creates the correct patch s1->s2' do + expect(Diff::LCS.patch(s1, @diff_s1_s2)).to eq(s2) + end + + it 'creates the correct patch s2->s1' do + expect(Diff::LCS.patch(s2, @diff_s1_s2)).to eq(s1) + end + end + + describe 'string' do + it_has_behavior 'handles simple diffs', 'aX', 'bXaX', [ + [ [ '+', 0, 'b' ], + [ '+', 1, 'X' ] ], + ] + it_has_behavior 'handles simple diffs', 'bXaX', 'aX', [ + [ [ '-', 0, 'b' ], + [ '-', 1, 'X' ] ], + ] + end + + describe 'array' do + it_has_behavior 'handles simple diffs', %w(a X), %w(b X a X), [ + [ [ '+', 0, 'b' ], + [ '+', 1, 'X' ] ], + ] + it_has_behavior 'handles simple diffs', %w(b X a X), %w(a X), [ + [ [ '-', 0, 'b' ], + [ '-', 1, 'X' ] ], + ] + end end end |