Skip to content

Commit fdb347e

Browse files
committed
Add actual but not expected items in the contains exactly matcher
1 parent e778ed8 commit fdb347e

File tree

4 files changed

+37
-26
lines changed

4 files changed

+37
-26
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: 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/|
@@ -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 %|- )>|

spec/integration/rspec/match_matcher_spec.rb

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -445,11 +445,11 @@
445445
diff: proc {
446446
plain_line %| [|
447447
plain_line %| "milk",|
448-
plain_line %| "toast",|
449-
plain_line %| "eggs",|
450-
plain_line %| "cheese",|
451-
# plain_line %| "English muffins",| # FIXME
452-
plain_line %| "English muffins"|
448+
beta_line %|+ "toast",|
449+
beta_line %|+ "eggs",|
450+
beta_line %|+ "cheese",|
451+
# beta_line %|+ "English muffins",| # FIXME
452+
beta_line %|+ "English muffins"|
453453
alpha_line %|- "bread"|
454454
plain_line %| ]|
455455
},
@@ -537,9 +537,9 @@
537537
plain_line %| name: "shopping list",|
538538
plain_line %| contents: [|
539539
plain_line %| "milk",|
540-
plain_line %| "toast",|
541-
# plain_line %| "eggs",| # FIXME
542-
plain_line %| "eggs"|
540+
beta_line %|+ "toast",|
541+
# beta_line %|+ "eggs",| # FIXME
542+
beta_line %|+ "eggs"|
543543
alpha_line %|- "bread"|
544544
plain_line %| ]|
545545
plain_line %| }|
@@ -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
},

0 commit comments

Comments
 (0)