Skip to content

Commit f4d7f27

Browse files
authored
Fix: use custom element comparator when provided for SeqAssertions (#188)
1 parent cd52116 commit f4d7f27

File tree

3 files changed

+13
-2
lines changed

3 files changed

+13
-2
lines changed

src/main/java/org/assertj/vavr/api/AbstractSeqAssert.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
import org.assertj.core.data.Index;
2020
import org.assertj.core.internal.ComparatorBasedComparisonStrategy;
2121
import org.assertj.core.internal.ComparisonStrategy;
22+
import org.assertj.core.internal.Iterables;
2223
import org.assertj.core.internal.StandardComparisonStrategy;
2324
import org.assertj.core.util.CheckReturnValue;
2425

@@ -67,6 +68,7 @@ abstract class AbstractSeqAssert<SELF extends AbstractSeqAssert<SELF, ACTUAL, EL
6768
*/
6869
@CheckReturnValue
6970
public SELF usingElementComparator(Comparator<? super ELEMENT> customComparator) {
71+
this.iterables = new Iterables(new ComparatorBasedComparisonStrategy(customComparator));
7072
seqElementComparisonStrategy = new ComparatorBasedComparisonStrategy(customComparator);
7173
return myself;
7274
}

src/test/java/org/assertj/vavr/api/SeqAssert_containsExactly_inAnyOrder_Test.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,15 @@ void should_pass_if_List_contains_exactly_elements_in_any_order() {
3232
.containsExactlyInAnyOrder(expectedInAnyOrder);
3333
}
3434

35+
@Test
36+
void should_pass_if_List_contains_exactly_elements_in_any_order_using_element_comparator() {
37+
final Set<String> expectedInAnyOrder = HashSet.of("other", "and", "else", "something");
38+
final List<String> uppercaseList = expectedInAnyOrder.map(String::toUpperCase).toList().reverse();
39+
assertThat(uppercaseList)
40+
.usingElementComparator(String::compareToIgnoreCase)
41+
.containsExactlyInAnyOrder(expectedInAnyOrder);
42+
}
43+
3544
@Test
3645
void should_fail_when_List_is_null() {
3746
final Set<String> expectedInAnyOrder = HashSet.of("other", "and", "else", "something");

src/test/java/org/assertj/vavr/api/soft/JUnitSoftVavrAssertionsFailureTest.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ public void should_rule_for_soft_assertion_work() {
4444
// THEN
4545
List<Throwable> failures = multipleFailuresError.getFailures();
4646
assertThat(failures).hasSize(2);
47-
assertThat(failures.get(0)).hasMessageStartingWith(format("[contains] %nExpecting:%n <Left(something)>%nto contain:%n <\"else\">%nbut did not."));
47+
assertThat(failures.get(0)).hasMessageStartingWith(format("[contains] %nExpecting:%n <Left(something)>%nto contain:%n <\"else\"> on the [LEFT]%nbut did not."));
4848
assertThat(failures.get(1)).hasMessageStartingWith(format("[instance] %nExpecting:%n" +
4949
" <Left>%n" +
5050
"to contain a value that is an instance of:%n" +
@@ -53,4 +53,4 @@ public void should_rule_for_soft_assertion_work() {
5353
" <java.lang.String>"));
5454
}
5555

56-
}
56+
}

0 commit comments

Comments
 (0)