Search in sources :

Example 6 with Giant

use of org.assertj.core.internal.objects.data.Giant in project assertj-core by joel-costigliola.

the class RecursiveComparisonAssert_isEqualTo_withFieldComparators_Test method should_be_able_to_compare_objects_recursively_using_some_precision_for_numerical_fields.

@Test
void should_be_able_to_compare_objects_recursively_using_some_precision_for_numerical_fields() {
    // GIVEN
    Giant goliath = new Giant();
    goliath.name = "Goliath";
    goliath.height = 3.0;
    Giant goliathTwin = new Giant();
    goliathTwin.name = "Goliath";
    goliathTwin.height = 3.1;
    // THEN
    then(goliath).usingRecursiveComparison().withComparatorForFields(new AtPrecisionComparator<>(0.2), "height").isEqualTo(goliathTwin);
    then(goliath).usingRecursiveComparison().withEqualsForFields((Double d1, Double d2) -> Math.abs(d1 - d2) <= 0.2, "height").isEqualTo(goliathTwin);
}
Also used : AtPrecisionComparator(org.assertj.core.internal.AtPrecisionComparator) Giant(org.assertj.core.internal.objects.data.Giant) RecursiveComparisonAssert_isEqualTo_BaseTest(org.assertj.core.api.RecursiveComparisonAssert_isEqualTo_BaseTest) Test(org.junit.jupiter.api.Test) ParameterizedTest(org.junit.jupiter.params.ParameterizedTest)

Example 7 with Giant

use of org.assertj.core.internal.objects.data.Giant in project assertj-core by joel-costigliola.

the class RecursiveComparisonAssert_isEqualTo_strictTypeCheck_Test method should_pass_in_strict_type_check_mode_when_objects_data_are_equals_and_expected_type_is_compatible_with_actual_type.

@Test
void should_pass_in_strict_type_check_mode_when_objects_data_are_equals_and_expected_type_is_compatible_with_actual_type() {
    // GIVEN
    Person actual = new Person("John");
    actual.home.address.number = 1;
    actual.dateOfBirth = new Date(123);
    actual.neighbour = new Person("Jack");
    actual.neighbour.home.address.number = 123;
    actual.neighbour.neighbour = new Person("James");
    actual.neighbour.neighbour.home.address.number = 124;
    Giant expected = new Giant();
    expected.name = "John";
    expected.home.address.number = 1;
    expected.dateOfBirth = new Date(123);
    expected.neighbour = new Giant();
    expected.neighbour.name = "Jack";
    expected.neighbour.home.address.number = 123;
    expected.neighbour.neighbour = new Person("James");
    expected.neighbour.neighbour.home.address.number = 124;
    Person expected2 = new Person("John");
    expected2.home.address.number = 1;
    expected2.dateOfBirth = new Date(123);
    expected2.neighbour = new Person("Jack");
    expected2.neighbour.home.address.number = 123;
    expected2.neighbour.neighbour = new Person("James");
    expected2.neighbour.neighbour.home.address.number = 124;
    // WHEN
    recursiveComparisonConfiguration.strictTypeChecking(true);
    // THEN
    assertThat(actual).usingRecursiveComparison().withStrictTypeChecking().isEqualTo(expected).isEqualTo(expected2);
}
Also used : Giant(org.assertj.core.internal.objects.data.Giant) Person(org.assertj.core.internal.objects.data.Person) Date(java.util.Date) Test(org.junit.jupiter.api.Test) RecursiveComparisonAssert_isEqualTo_BaseTest(org.assertj.core.api.RecursiveComparisonAssert_isEqualTo_BaseTest)

Example 8 with Giant

use of org.assertj.core.internal.objects.data.Giant in project assertj-core by joel-costigliola.

the class RecursiveComparisonAssert_isEqualTo_ignoringFields_Test method recursivelyEqualObjectsIgnoringGivenFields.

private static Stream<Arguments> recursivelyEqualObjectsIgnoringGivenFields() {
    Person person1 = new Person("John");
    person1.home.address.number = 1;
    Person giant1 = new Giant();
    giant1.name = "Giant John";
    ((Giant) giant1).height = 3.1;
    giant1.home.address.number = 1;
    Person person2 = new Person("Jack");
    person2.home.address.number = 1;
    Person person3 = new Person("John");
    person3.home.address.number = 123;
    Human person4 = new Human();
    person4.name = "Jack";
    person4.home.address.number = 456;
    Person person5 = new Person();
    person5.home.address.number = 1;
    Person person6 = new Person();
    person6.home.address.number = 2;
    Person person7 = new Person("John");
    person7.neighbour = new Person("Jack");
    person7.neighbour.home.address.number = 123;
    person7.neighbour.neighbour = new Person("James");
    person7.neighbour.neighbour.home.address.number = 124;
    Person person8 = new Person("John");
    person8.neighbour = new Person("Jim");
    person8.neighbour.home.address.number = 123;
    person8.neighbour.neighbour = new Person("James");
    person8.neighbour.neighbour.home.address.number = 457;
    return Stream.of(arguments(person1, person2, "same data and type, except for one ignored field", list("name")), arguments(list(person1), list(person2), "list of same data and type, except for one ignored field", list("name")), arguments(array(person1), array(person2), "array of same data and type, except for one ignored field", list("name")), arguments(list(person1, giant1), list(person2, person1), "list of same data except name and height which is not even a field from person1", list("name", "height")), arguments(array(person1, giant1), array(person2, person1), "list of same data except name and height which is not even a field from person1", list("name", "height")), arguments(list(person3, person7), list(person4, person8), "list of same data except name and height which is not even a field from person1", list("name", "home.address.number", "neighbour.neighbour.home.address.number", "neighbour.name")), arguments(array(person3, person7), array(person4, person8), "array of same data except name and height which is not even a field from person1", list("name", "home.address.number", "neighbour.neighbour.home.address.number", "neighbour.name")), arguments(giant1, person1, "different type, same data except name and height which is not even a field from person1", list("name", "height")), arguments(person3, person4, "same data, different type, except for several ignored fields", list("name", "home.address.number")), arguments(person5, person6, "same data except for one subfield of an ignored field", list("home")), arguments(person7, person8, "same data except for one subfield of an ignored field", list("neighbour.neighbour.home.address.number", "neighbour.name")));
}
Also used : Human(org.assertj.core.internal.objects.data.Human) Giant(org.assertj.core.internal.objects.data.Giant) Person(org.assertj.core.internal.objects.data.Person)

Aggregations

Giant (org.assertj.core.internal.objects.data.Giant)8 RecursiveComparisonAssert_isEqualTo_BaseTest (org.assertj.core.api.RecursiveComparisonAssert_isEqualTo_BaseTest)6 Test (org.junit.jupiter.api.Test)6 ParameterizedTest (org.junit.jupiter.params.ParameterizedTest)5 Person (org.assertj.core.internal.objects.data.Person)4 AtPrecisionComparator (org.assertj.core.internal.AtPrecisionComparator)3 Human (org.assertj.core.internal.objects.data.Human)3 Date (java.util.Date)2 Timestamp (java.sql.Timestamp)1 Comparator (java.util.Comparator)1 Map (java.util.Map)1 BiPredicate (java.util.function.BiPredicate)1 Stream (java.util.stream.Stream)1 Assertions.assertThat (org.assertj.core.api.Assertions.assertThat)1 Assertions.entry (org.assertj.core.api.Assertions.entry)1 BDDAssertions.then (org.assertj.core.api.BDDAssertions.then)1 MapEntry (org.assertj.core.data.MapEntry)1 CaseInsensitiveStringComparator (org.assertj.core.internal.CaseInsensitiveStringComparator)1 SYMMETRIC_DATE_COMPARATOR (org.assertj.core.internal.objects.SymmetricDateComparator.SYMMETRIC_DATE_COMPARATOR)1 Address (org.assertj.core.internal.objects.data.Address)1