summaryrefslogtreecommitdiff
path: root/spec/issues_spec.rb
diff options
context:
space:
mode:
Diffstat (limited to 'spec/issues_spec.rb')
-rw-r--r--spec/issues_spec.rb55
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