summaryrefslogtreecommitdiff
path: root/spec/change_spec.rb
blob: 42533ae0341acc5abdd9981f5ce1d2ef0513676e (plain)
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
# frozen_string_literal: true

require "spec_helper"

describe Diff::LCS::Change do
  describe "an add" do
    subject { described_class.new("+", 0, "element") }
    it { should_not be_deleting }
    it { should be_adding }
    it { should_not be_unchanged }
    it { should_not be_changed }
    it { should_not be_finished_a }
    it { should_not be_finished_b }
  end

  describe "a delete" do
    subject { described_class.new("-", 0, "element") }
    it { should be_deleting }
    it { should_not be_adding }
    it { should_not be_unchanged }
    it { should_not be_changed }
    it { should_not be_finished_a }
    it { should_not be_finished_b }
  end

  describe "an unchanged" do
    subject { described_class.new("=", 0, "element") }
    it { should_not be_deleting }
    it { should_not be_adding }
    it { should be_unchanged }
    it { should_not be_changed }
    it { should_not be_finished_a }
    it { should_not be_finished_b }
  end

  describe "a changed" do
    subject { described_class.new("!", 0, "element") }
    it { should_not be_deleting }
    it { should_not be_adding }
    it { should_not be_unchanged }
    it { should be_changed }
    it { should_not be_finished_a }
    it { should_not be_finished_b }
  end

  describe "a finished_a" do
    subject { described_class.new(">", 0, "element") }
    it { should_not be_deleting }
    it { should_not be_adding }
    it { should_not be_unchanged }
    it { should_not be_changed }
    it { should be_finished_a }
    it { should_not be_finished_b }
  end

  describe "a finished_b" do
    subject { described_class.new("<", 0, "element") }
    it { should_not be_deleting }
    it { should_not be_adding }
    it { should_not be_unchanged }
    it { should_not be_changed }
    it { should_not be_finished_a }
    it { should be_finished_b }
  end

  describe "as array" do
    it "should be converted" do
      action, position, element = described_class.new("!", 0, "element")
      expect(action).to eq "!"
      expect(position).to eq 0
      expect(element).to eq "element"
    end
  end
end

describe Diff::LCS::ContextChange do
  describe "as array" do
    it "should be converted" do
      action, (old_position, old_element), (new_position, new_element) =
        described_class.new("!", 1, "old_element", 2, "new_element")

      expect(action).to eq "!"
      expect(old_position).to eq 1
      expect(old_element).to eq "old_element"
      expect(new_position).to eq 2
      expect(new_element).to eq "new_element"
    end
  end
end