You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Describe the bug
When using usingRecursiveFieldByFieldElementComparatorOnFields to compare equality with objects that have nested unordered iterables, the comparison checks for existence of the fields to be compared inside of the class type parameter of the iterable.
assertj core version: 3.25.1
java version: 17
test framework version: JUnit 5
os (if relevant):
Test case reproducing the bug
@TestvoidtestRecursiveComparisonWithNestedIterable() {
Collection<Name> names = newHashSet<>();
names.add(newName("john", "doe"));
names.add(newName("jane", "smith"));
// List.copyOf passes test, Set.copyOf fails testPersonactual = newPerson(Set.copyOf(names));
Personexpected = newPerson(Set.copyOf(names));
assertThat(Set.of(actual))
.usingRecursiveFieldByFieldElementComparatorOnFields("names")
.containsExactlyInAnyOrder(expected);
}
classPerson {
Collection<Name> names;
publicPerson(Collection<Name> names) {
this.names = names;
}
}
className {
Stringfirst;
Stringlast;
publicName(Stringfirst, Stringlast) {
this.first = first;
this.last = last;
}
}
/*/* Stack traceThe following fields don't exist: {names}java.lang.IllegalArgumentException: The following fields don't exist: {names} at org.assertj.core.api.recursive.comparison.RecursiveComparisonConfiguration.checkComparedFieldsExist(RecursiveComparisonConfiguration.java:1086) at org.assertj.core.api.recursive.comparison.RecursiveComparisonDifferenceCalculator$ComparisonState.initDualValuesToCompare(RecursiveComparisonDifferenceCalculator.java:144) at org.assertj.core.api.recursive.comparison.RecursiveComparisonDifferenceCalculator$ComparisonState.access$100(RecursiveComparisonDifferenceCalculator.java:73) at org.assertj.core.api.recursive.comparison.RecursiveComparisonDifferenceCalculator.determineDifferences(RecursiveComparisonDifferenceCalculator.java:235) at org.assertj.core.api.recursive.comparison.RecursiveComparisonDifferenceCalculator.searchIterableForElement(RecursiveComparisonDifferenceCalculator.java:599) at org.assertj.core.api.recursive.comparison.RecursiveComparisonDifferenceCalculator.compareUnorderedIterables(RecursiveComparisonDifferenceCalculator.java:569) at org.assertj.core.api.recursive.comparison.RecursiveComparisonDifferenceCalculator.determineDifferences(RecursiveComparisonDifferenceCalculator.java:313) at org.assertj.core.api.recursive.comparison.RecursiveComparisonDifferenceCalculator.determineDifferences(RecursiveComparisonDifferenceCalculator.java:226) at org.assertj.core.internal.ConfigurableRecursiveFieldByFieldComparator.areEqual(ConfigurableRecursiveFieldByFieldComparator.java:55) at org.assertj.core.internal.ConfigurableRecursiveFieldByFieldComparator.compare(ConfigurableRecursiveFieldByFieldComparator.java:50) at org.assertj.core.internal.ComparatorBasedComparisonStrategy.iterableContains(ComparatorBasedComparisonStrategy.java:91) at org.assertj.core.internal.Iterables.iterableContains(Iterables.java:367) at org.assertj.core.internal.Iterables.assertContainsExactlyInAnyOrder(Iterables.java:1402) at org.assertj.core.api.AbstractIterableAssert.containsExactlyInAnyOrderForProxy(AbstractIterableAssert.java:442) at org.assertj.core.api.AbstractIterableAssert.containsExactlyInAnyOrder(AbstractIterableAssert.java:435)*/
The text was updated successfully, but these errors were encountered:
alexander-ly
changed the title
Recursive comparison checks for existence of fields in nested unordered iterables type parameter
Recursive comparison checks for existence of fields in types that parameterize nested unordered iterables
Jan 10, 2024
Describe the bug
When using
usingRecursiveFieldByFieldElementComparatorOnFields
to compare equality with objects that have nested unordered iterables, the comparison checks for existence of the fields to be compared inside of the class type parameter of the iterable.Test case reproducing the bug
The text was updated successfully, but these errors were encountered: