use of org.assertj.core.internal.objects.data.FriendlyPerson in project assertj-core by joel-costigliola.
the class RecursiveComparisonAssert_isEqualTo_Test method should_report_difference_in_collection.
@Test
void should_report_difference_in_collection() {
// GIVEN
FriendlyPerson actual = new FriendlyPerson();
FriendlyPerson actualFriend = new FriendlyPerson();
actualFriend.home.address.number = 99;
actual.friends = list(actualFriend);
FriendlyPerson expected = new FriendlyPerson();
FriendlyPerson expectedFriend = new FriendlyPerson();
expectedFriend.home.address.number = 10;
expected.friends = list(expectedFriend);
// WHEN
compareRecursivelyFailsAsExpected(actual, expected);
// THEN
ComparisonDifference friendNumberDifference = diff("friends[0].home.address.number", 99, 10);
verifyShouldBeEqualByComparingFieldByFieldRecursivelyCall(actual, expected, friendNumberDifference);
}
use of org.assertj.core.internal.objects.data.FriendlyPerson in project assertj-core by joel-costigliola.
the class RecursiveComparisonAssert_isEqualTo_Test method should_be_able_to_compare_objects_with_cycles_in_ordered_and_unordered_collection.
@Test
void should_be_able_to_compare_objects_with_cycles_in_ordered_and_unordered_collection() {
// GIVEN
FriendlyPerson actual = new FriendlyPerson();
actual.name = "John";
actual.home.address.number = 1;
FriendlyPerson expected = new FriendlyPerson();
expected.name = "John";
expected.home.address.number = 1;
// neighbour - direct cycle
expected.neighbour = actual;
actual.neighbour = expected;
// friends cycle with intermediate collection
FriendlyPerson sherlock = new FriendlyPerson();
sherlock.name = "Sherlock";
sherlock.home.address.number = 221;
// ordered collections
actual.friends.add(sherlock);
actual.friends.add(expected);
expected.friends.add(sherlock);
expected.friends.add(actual);
// unordered collections
// this could cause an infinite recursion if we don't track correctly the visited objects
actual.otherFriends.add(actual);
actual.otherFriends.add(expected);
actual.otherFriends.add(sherlock);
expected.otherFriends.add(sherlock);
expected.otherFriends.add(expected);
expected.otherFriends.add(actual);
// THEN
assertThat(actual).usingRecursiveComparison().isEqualTo(expected);
}
use of org.assertj.core.internal.objects.data.FriendlyPerson in project assertj-core by joel-costigliola.
the class RecursiveComparisonAssert_isEqualTo_ignoringCollectionOrder_Test method should_fail_when_actual_differs_from_expected_even_when_collection_order_is_ignored_in_some_fields.
@Test
void should_fail_when_actual_differs_from_expected_even_when_collection_order_is_ignored_in_some_fields() {
// GIVEN
FriendlyPerson actual = friend("Sherlock Holmes");
actual.friends.add(friend("Molly Hooper"));
FriendlyPerson actualFriend = friend("Dr. John Watson");
actualFriend.friends.add(friend("D.I. Greg Lestrade"));
actualFriend.friends.add(friend("Mrs. Hudson"));
actual.friends.add(actualFriend);
FriendlyPerson expected = friend("Sherlock Holmes");
expected.friends.add(friend("Molly Hooper"));
FriendlyPerson expectedFriend = friend("Dr. John Watson");
expectedFriend.friends.add(friend("Mrs. Hudson"));
expectedFriend.friends.add(friend("D.I. Greg Lestrade"));
expected.friends.add(expectedFriend);
recursiveComparisonConfiguration.ignoreCollectionOrderInFields("friends");
// WHEN
compareRecursivelyFailsAsExpected(actual, expected);
// THEN
ComparisonDifference friendsDifference = diff("friends", actual.friends, expected.friends, format("The following expected elements were not matched in the actual ArrayList:%n" + " [Person [dateOfBirth=null, name=Dr. John Watson, phone=null, home=Home [address=Address [number=1]]]]"));
verifyShouldBeEqualByComparingFieldByFieldRecursivelyCall(actual, expected, friendsDifference);
}
use of org.assertj.core.internal.objects.data.FriendlyPerson in project assertj-core by joel-costigliola.
the class RecursiveComparisonAssert_isEqualTo_ignoringCollectionOrder_Test method should_fail_when_actual_differs_from_expected_even_when_collection_order_is_ignored_in_fields_matching_some_regexes.
@Test
void should_fail_when_actual_differs_from_expected_even_when_collection_order_is_ignored_in_fields_matching_some_regexes() {
// GIVEN
FriendlyPerson actual = friend("Sherlock Holmes");
FriendlyPerson actualFriend = friend("Dr. John Watson");
actualFriend.friends.add(friend("D.I. Greg Lestrade"));
actualFriend.friends.add(friend("Mrs. Hudson"));
actual.friends.add(actualFriend);
actual.friends.add(friend("Molly Hooper"));
FriendlyPerson expected = friend("Sherlock Holmes");
expected.friends.add(friend("Molly Hooper"));
FriendlyPerson expectedFriend = friend("Dr. John Watson");
expectedFriend.friends.add(friend("Mrs. Hudson"));
expectedFriend.friends.add(friend("D.I. Greg Lestrade"));
expected.friends.add(expectedFriend);
recursiveComparisonConfiguration.ignoreCollectionOrderInFieldsMatchingRegexes("friend.");
// WHEN
compareRecursivelyFailsAsExpected(actual, expected);
// THEN
ComparisonDifference friendsDifference = diff("friends", actual.friends, expected.friends, format("The following expected elements were not matched in the actual ArrayList:%n" + " [Person [dateOfBirth=null, name=Dr. John Watson, phone=null, home=Home [address=Address [number=1]]]]"));
verifyShouldBeEqualByComparingFieldByFieldRecursivelyCall(actual, expected, friendsDifference);
}
use of org.assertj.core.internal.objects.data.FriendlyPerson in project assertj-core by joel-costigliola.
the class RecursiveComparisonAssert_isEqualTo_ignoringCollectionOrder_Test method should_pass_for_objects_with_the_same_data_when_collection_order_is_ignored_in_specified_fields_source.
private static Stream<Arguments> should_pass_for_objects_with_the_same_data_when_collection_order_is_ignored_in_specified_fields_source() {
FriendlyPerson friendlyPerson1 = friend("Sherlock Holmes");
friendlyPerson1.friends.add(friend("Dr. John Watson"));
friendlyPerson1.friends.add(friend("Molly Hooper"));
FriendlyPerson friendlyPerson2 = friend("Sherlock Holmes");
friendlyPerson2.friends.add(friend("Molly Hooper"));
friendlyPerson2.friends.add(friend("Dr. John Watson"));
FriendlyPerson friendlyPerson3 = friend("Sherlock Holmes");
FriendlyPerson friendlyPerson4 = friend("Dr. John Watson");
friendlyPerson4.friends.add(friend("D.I. Greg Lestrade"));
friendlyPerson4.friends.add(friend("Mrs. Hudson"));
friendlyPerson3.friends.add(friendlyPerson4);
friendlyPerson3.friends.add(friend("Molly Hooper"));
FriendlyPerson friendlyPerson5 = friend("Sherlock Holmes");
FriendlyPerson friendlyPerson6 = friend("Dr. John Watson");
friendlyPerson6.friends.add(friend("Mrs. Hudson"));
friendlyPerson6.friends.add(friend("D.I. Greg Lestrade"));
friendlyPerson5.friends.add(friendlyPerson6);
friendlyPerson5.friends.add(friend("Molly Hooper"));
return Stream.of(arguments("same data except friends property collection order", friendlyPerson1, friendlyPerson2, array("friends")), arguments("same data except friends property order in subfield collection", friendlyPerson3, friendlyPerson5, array("friends.friends")));
}
Aggregations