Skip to content

Commit e81eca6

Browse files
brunsa2mcmire
authored andcommitted
Add actual but not expected items in the contains exactly matcher
1 parent 6f1f896 commit e81eca6

File tree

4 files changed

+38
-27
lines changed

4 files changed

+38
-27
lines changed

lib/super_diff/rspec/operation_tree_builders/collection_containing_exactly.rb

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,16 @@ def initialize(actual:, **)
1717
def unary_operations
1818
operations = []
1919

20-
(0...actual.length).each do |index|
20+
(0...actual.length).reject do |index|
21+
indexes_in_actual_but_not_in_expected.include?(index)
22+
end.each do |index|
2123
add_noop_to(operations, index)
2224
end
2325

26+
indexes_in_actual_but_not_in_expected.each do |index|
27+
add_insert_to(operations, index)
28+
end
29+
2430
indexes_in_expected_but_not_in_actual.each do |index|
2531
add_delete_to(operations, index)
2632
end
@@ -84,6 +90,11 @@ def values_in_expected_but_not_in_actual
8490
end
8591
end
8692

93+
def indexes_in_actual_but_not_in_expected
94+
@indexes_in_actual_but_not_in_expected ||=
95+
pairings_maximizer_best_solution.unmatched_actual_indexes
96+
end
97+
8798
def indexes_in_expected_but_not_in_actual
8899
pairings_maximizer_best_solution.unmatched_expected_indexes
89100
end

spec/integration/rspec/contain_exactly_matcher_spec.rb

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,8 @@
3131
diff: proc {
3232
plain_line %| [|
3333
plain_line %| "Marty",|
34-
plain_line %| "Jennifer",|
35-
plain_line %| "Doc",|
34+
beta_line %|+ "Jennifer",|
35+
beta_line %|+ "Doc",|
3636
alpha_line %|- "Einie"|
3737
plain_line %| ]|
3838
},
@@ -129,8 +129,8 @@
129129
plain_line %| [|
130130
plain_line %| "Marty McFly",|
131131
plain_line %| "Doc Brown",|
132-
plain_line %| "Einie",|
133132
plain_line %| "Lorraine McFly",|
133+
beta_line %|+ "Einie",|
134134
alpha_line %|- "Biff Tannen",|
135135
alpha_line %|- "George McFly"|
136136
plain_line %| ]|
@@ -239,8 +239,8 @@
239239
plain_line %| [|
240240
plain_line %| "Marty McFly",|
241241
plain_line %| "Doc Brown",|
242-
plain_line %| "Einie",|
243-
plain_line %| "Lorraine McFly",|
242+
beta_line %|+ "Einie",|
243+
beta_line %|+ "Lorraine McFly",|
244244
alpha_line %|- "Biff Tannen",|
245245
alpha_line %|- /Georg McFly/,|
246246
alpha_line %|- /Lorrain McFly/|
@@ -348,9 +348,9 @@
348348
plain_line %| foo: "bar"|
349349
plain_line %| },|
350350
plain_line %| #<Double (anonymous)>,|
351-
plain_line %| {|
352-
plain_line %| blargh: "riddle"|
353-
plain_line %| },|
351+
beta_line %|+ {|
352+
beta_line %|+ blargh: "riddle"|
353+
beta_line %|+ },|
354354
alpha_line %|- #<a collection containing exactly (|
355355
alpha_line %|- "zing"|
356356
alpha_line %|- )>|

spec/integration/rspec/match_array_matcher_spec.rb

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,8 @@
3131
diff: proc {
3232
plain_line %| [|
3333
plain_line %| "Marty",|
34-
plain_line %| "Jennifer",|
35-
plain_line %| "Doc",|
34+
beta_line %|+ "Jennifer",|
35+
beta_line %|+ "Doc",|
3636
alpha_line %|- "Einie"|
3737
plain_line %| ]|
3838
},
@@ -129,8 +129,8 @@
129129
plain_line %| [|
130130
plain_line %| "Marty McFly",|
131131
plain_line %| "Doc Brown",|
132-
plain_line %| "Einie",|
133132
plain_line %| "Lorraine McFly",|
133+
beta_line %|+ "Einie",|
134134
alpha_line %|- "Biff Tannen",|
135135
alpha_line %|- "George McFly"|
136136
plain_line %| ]|
@@ -239,8 +239,8 @@
239239
plain_line %| [|
240240
plain_line %| "Marty McFly",|
241241
plain_line %| "Doc Brown",|
242-
plain_line %| "Einie",|
243-
plain_line %| "Lorraine McFly",|
242+
beta_line %|+ "Einie",|
243+
beta_line %|+ "Lorraine McFly",|
244244
alpha_line %|- "Biff Tannen",|
245245
alpha_line %|- /Georg McFly/,|
246246
alpha_line %|- /Lorrain McFly/|
@@ -352,9 +352,9 @@
352352
plain_line %| foo: "bar"|
353353
plain_line %| },|
354354
plain_line %| #<Double (anonymous)>,|
355-
plain_line %| {|
356-
plain_line %| blargh: "riddle"|
357-
plain_line %| },|
355+
beta_line %|+ {|
356+
beta_line %|+ blargh: "riddle"|
357+
beta_line %|+ },|
358358
alpha_line %|- #<a collection containing exactly (|
359359
alpha_line %|- "zing"|
360360
alpha_line %|- )>|
@@ -397,9 +397,9 @@
397397
},
398398
diff: proc {
399399
plain_line %| [|
400-
plain_line %| "Marty",|
401-
plain_line %| "Jennifer",|
402-
plain_line %| "Doc",|
400+
beta_line %|+ "Marty",|
401+
beta_line %|+ "Jennifer",|
402+
beta_line %|+ "Doc",|
403403
alpha_line %|- "Einie"|
404404
plain_line %| ]|
405405
},

spec/integration/rspec/match_matcher_spec.rb

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -981,7 +981,7 @@
981981
},
982982
diff: proc {
983983
plain_line %| [|
984-
plain_line %| "b",|
984+
beta_line %|+ "b",|
985985
alpha_line %|- "a"|
986986
plain_line %| ]|
987987
},
@@ -1056,10 +1056,10 @@
10561056
diff: proc {
10571057
plain_line %| [|
10581058
plain_line %| "milk",|
1059-
plain_line %| "toast",|
1060-
plain_line %| "eggs",|
1061-
plain_line %| "cheese",|
1062-
plain_line %| "English muffins",|
1059+
beta_line %|+ "toast",|
1060+
beta_line %|+ "eggs",|
1061+
beta_line %|+ "cheese",|
1062+
beta_line %|+ "English muffins",|
10631063
alpha_line %|- "bread"|
10641064
plain_line %| ]|
10651065
},
@@ -1147,8 +1147,8 @@
11471147
plain_line %| name: "shopping list",|
11481148
plain_line %| contents: [|
11491149
plain_line %| "milk",|
1150-
plain_line %| "toast",|
1151-
plain_line %| "eggs",|
1150+
beta_line %|+ "toast",|
1151+
beta_line %|+ "eggs",|
11521152
alpha_line %|- "bread"|
11531153
plain_line %| ]|
11541154
plain_line %| }|

0 commit comments

Comments
 (0)