Class Objects


  • public class Objects
    extends Object
    Reusable assertions for Objects.
    Author:
    Yvonne Wang, Alex Ruiz, Nicolas François, Mikhail Mazursky
    • Constructor Detail

      • Objects

        Objects()
    • Method Detail

      • getComparator

        public Comparator<?> getComparator()
      • getFailures

        public Failures getFailures()
      • assertIsInstanceOf

        public void assertIsInstanceOf​(AssertionInfo info,
                                       Object actual,
                                       Class<?> type)
        Verifies that the given object is an instance of the given type.
        Parameters:
        info - contains information about the assertion.
        actual - the given object.
        type - the type to check the given object against.
        Throws:
        NullPointerException - if the given type is null.
        AssertionError - if the given object is null.
        AssertionError - if the given object is not an instance of the given type.
      • assertIsInstanceOfAny

        public void assertIsInstanceOfAny​(AssertionInfo info,
                                          Object actual,
                                          Class<?>[] types)
        Verifies that the given object is an instance of any of the given types.
        Parameters:
        info - contains information about the assertion.
        actual - the given object.
        types - the types to check the given object against.
        Throws:
        NullPointerException - if the given array is null.
        IllegalArgumentException - if the given array is empty.
        NullPointerException - if the given array has null elements.
        AssertionError - if the given object is null.
        AssertionError - if the given object is not an instance of any of the given types.
      • objectIsInstanceOfOneOfGivenClasses

        private boolean objectIsInstanceOfOneOfGivenClasses​(Object actual,
                                                            Class<?>[] types,
                                                            AssertionInfo info)
      • assertIsNotInstanceOf

        public void assertIsNotInstanceOf​(AssertionInfo info,
                                          Object actual,
                                          Class<?> type)
        Verifies that the given object is not an instance of the given type.
        Parameters:
        info - contains information about the assertion.
        actual - the given object.
        type - the type to check the given object against.
        Throws:
        NullPointerException - if the given type is null.
        AssertionError - if the given object is null.
        AssertionError - if the given object is an instance of the given type.
      • assertIsNotInstanceOfAny

        public void assertIsNotInstanceOfAny​(AssertionInfo info,
                                             Object actual,
                                             Class<?>[] types)
        Verifies that the given object is not an instance of any of the given types.
        Parameters:
        info - contains information about the assertion.
        actual - the given object.
        types - the types to check the given object against.
        Throws:
        NullPointerException - if the given array is null.
        IllegalArgumentException - if the given array is empty.
        NullPointerException - if the given array has null elements.
        AssertionError - if the given object is null.
        AssertionError - if the given object is an instance of any of the given types.
      • assertHasSameClassAs

        public void assertHasSameClassAs​(AssertionInfo info,
                                         Object actual,
                                         Object other)
        Verifies that the actual value has the same class as the given object.
        Parameters:
        info - contains information about the assertion.
        actual - the given object.
        other - the object to check type against.
        Throws:
        AssertionError - if the actual has not the same type has the given object.
        NullPointerException - if the actual value is null.
        NullPointerException - if the given object is null.
      • assertDoesNotHaveSameClassAs

        public void assertDoesNotHaveSameClassAs​(AssertionInfo info,
                                                 Object actual,
                                                 Object other)
        Verifies that the actual value does not have the same class as the given object.
        Parameters:
        info - contains information about the assertion.
        actual - the given object.
        other - the object to check type against.
        Throws:
        AssertionError - if the actual has the same type has the given object.
        NullPointerException - if the actual value is null.
        NullPointerException - if the given object is null.
      • assertIsExactlyInstanceOf

        public void assertIsExactlyInstanceOf​(AssertionInfo info,
                                              Object actual,
                                              Class<?> type)
        Verifies that the actual value is exactly an instance of given type.
        Parameters:
        info - contains information about the assertion.
        actual - the given object.
        type - the type to check the actual value against.
        Throws:
        AssertionError - if the actual is not exactly an instance of given type.
        NullPointerException - if the actual value is null.
        NullPointerException - if the given object is null.
      • actualIsExactlyInstanceOfType

        private boolean actualIsExactlyInstanceOfType​(Object actual,
                                                      Class<?> expectedType,
                                                      AssertionInfo info)
      • assertIsNotExactlyInstanceOf

        public void assertIsNotExactlyInstanceOf​(AssertionInfo info,
                                                 Object actual,
                                                 Class<?> type)
        Verifies that the actual value is not exactly an instance of given type.
        Parameters:
        info - contains information about the assertion.
        actual - the given object.
        type - the type to check the actual value against.
        Throws:
        AssertionError - if the actual is exactly an instance of given type.
        NullPointerException - if the actual value is null.
        NullPointerException - if the given object is null.
      • assertIsOfAnyClassIn

        public void assertIsOfAnyClassIn​(AssertionInfo info,
                                         Object actual,
                                         Class<?>[] types)
        Verifies that the actual value type is in given types.
        Parameters:
        info - contains information about the assertion.
        actual - the given object.
        types - the types to check the actual value against.
        Throws:
        AssertionError - if the actual value type is in given type.
        NullPointerException - if the actual value is null.
        NullPointerException - if the given types is null.
      • assertIsNotOfAnyClassIn

        public void assertIsNotOfAnyClassIn​(AssertionInfo info,
                                            Object actual,
                                            Class<?>[] types)
        Verifies that the actual value type is not in given types.
        Parameters:
        info - contains information about the assertion.
        actual - the given object.
        types - the types to check the actual value against.
        Throws:
        AssertionError - if the actual value type is in given type.
        NullPointerException - if the actual value is null.
        NullPointerException - if the given types is null.
      • checkIsNotNullAndIsNotEmpty

        private void checkIsNotNullAndIsNotEmpty​(Class<?>[] types)
      • assertEqual

        public void assertEqual​(AssertionInfo info,
                                Object actual,
                                Object expected)
        Asserts that two objects are equal.
        Parameters:
        info - contains information about the assertion.
        actual - the "actual" object.
        expected - the "expected" object.
        Throws:
        AssertionError - if actual is not equal to expected. This method will throw a org.junit.ComparisonFailure instead if JUnit is in the classpath and the given objects are not equal.
      • assertNotEqual

        public void assertNotEqual​(AssertionInfo info,
                                   Object actual,
                                   Object other)
        Asserts that two objects are not equal.
        Parameters:
        info - contains information about the assertion.
        actual - the given object.
        other - the object to compare actual to.
        Throws:
        AssertionError - if actual is equal to other.
      • areEqual

        private boolean areEqual​(Object actual,
                                 Object other)
        Compares actual and other with standard strategy (null safe equals check).
        Parameters:
        actual - the object to compare to other
        other - the object to compare to actual
        Returns:
        true if actual and other are equal (null safe equals check), false otherwise.
      • assertNull

        public void assertNull​(AssertionInfo info,
                               Object actual)
        Asserts that the given object is null.
        Parameters:
        info - contains information about the assertion.
        actual - the given object.
        Throws:
        AssertionError - if the given object is not null.
      • assertNotNull

        public void assertNotNull​(AssertionInfo info,
                                  Object actual)
        Asserts that the given object is not null.
        Parameters:
        info - contains information about the assertion.
        actual - the given object.
        Throws:
        AssertionError - if the given object is null.
      • assertNotNull

        public void assertNotNull​(AssertionInfo info,
                                  Object actual,
                                  String label)
        Asserts that the given object is not null.
        Parameters:
        info - contains information about the assertion.
        actual - the given object.
        label - the label to represent actual in the error message
        Throws:
        AssertionError - if the given object is null.
      • assertSame

        public void assertSame​(AssertionInfo info,
                               Object actual,
                               Object expected)
        Asserts that two objects refer to the same object.
        Parameters:
        info - contains information about the assertion.
        actual - the given object.
        expected - the expected object.
        Throws:
        AssertionError - if the given objects do not refer to the same object.
      • assertNotSame

        public void assertNotSame​(AssertionInfo info,
                                  Object actual,
                                  Object other)
        Asserts that two objects do not refer to the same object.
        Parameters:
        info - contains information about the assertion.
        actual - the given object.
        other - the object to compare actual to.
        Throws:
        AssertionError - if the given objects refer to the same object.
      • assertIsIn

        public void assertIsIn​(AssertionInfo info,
                               Object actual,
                               Object[] values)
        Asserts that the given object is present in the given array.
        Parameters:
        info - contains information about the assertion.
        actual - the given object.
        values - the given array.
        Throws:
        NullPointerException - if the given array is null.
        AssertionError - if the given object is not present in the given array.
      • assertIsNotIn

        public void assertIsNotIn​(AssertionInfo info,
                                  Object actual,
                                  Object[] values)
        Asserts that the given object is not present in the given array.
        Parameters:
        info - contains information about the assertion.
        actual - the given object.
        values - the given array.
        Throws:
        NullPointerException - if the given array is null.
        AssertionError - if the given object is present in the given array.
      • checkArrayIsNotNull

        private void checkArrayIsNotNull​(Object[] values)
      • isItemInArray

        private boolean isItemInArray​(Object item,
                                      Object[] arrayOfValues)
        Returns true if given item is in given array, false otherwise.
        Parameters:
        item - the object to look for in arrayOfValues
        arrayOfValues - the array of values
        Returns:
        true if given item is in given array, false otherwise.
      • assertIsIn

        public void assertIsIn​(AssertionInfo info,
                               Object actual,
                               Iterable<?> values)
        Asserts that the given object is present in the given collection.
        Parameters:
        info - contains information about the assertion.
        actual - the given object.
        values - the given iterable.
        Throws:
        NullPointerException - if the given collection is null.
        AssertionError - if the given object is not present in the given collection.
      • assertIsNotIn

        public void assertIsNotIn​(AssertionInfo info,
                                  Object actual,
                                  Iterable<?> values)
        Asserts that the given object is not present in the given collection.
        Parameters:
        info - contains information about the assertion.
        actual - the given object.
        values - the given collection.
        Throws:
        NullPointerException - if the given iterable is null.
        AssertionError - if the given object is present in the given collection.
      • checkNotNullIterable

        private void checkNotNullIterable​(Iterable<?> values)
      • isActualIn

        private boolean isActualIn​(Object actual,
                                   Iterable<?> values)
      • assertIsEqualToIgnoringNullFields

        public <A> void assertIsEqualToIgnoringNullFields​(AssertionInfo info,
                                                          A actual,
                                                          A other,
                                                          Map<String,​Comparator<?>> comparatorByPropertyOrField,
                                                          TypeComparators comparatorByType)
        Assert that the given object is lenient equals by ignoring null fields value on other object (including inherited fields).
        Type Parameters:
        A - the actual type
        Parameters:
        info - contains information about the assertion.
        actual - the given object.
        other - the object to compare actual to.
        comparatorByPropertyOrField - comparators use for specific fields
        comparatorByType - comparators use for specific types
        Throws:
        NullPointerException - if the actual type is null.
        NullPointerException - if the other type is null.
        AssertionError - if the actual and the given object are not lenient equals.
        AssertionError - if the other object is not an instance of the actual type.
      • assertIsEqualToComparingOnlyGivenFields

        public <A> void assertIsEqualToComparingOnlyGivenFields​(AssertionInfo info,
                                                                A actual,
                                                                A other,
                                                                Map<String,​Comparator<?>> comparatorByPropertyOrField,
                                                                TypeComparators comparatorByType,
                                                                String... fields)
        Assert that the given object is lenient equals to other object by comparing given fields value only.
        Type Parameters:
        A - the actual type
        Parameters:
        info - contains information about the assertion.
        actual - the given object.
        other - the object to compare actual to.
        comparatorByPropertyOrField - comparators use for specific fields
        comparatorByType - comparators use for specific types
        fields - accepted fields
        Throws:
        NullPointerException - if the other type is null.
        AssertionError - if actual is null.
        AssertionError - if the actual and the given object are not lenient equals.
        AssertionError - if the other object is not an instance of the actual type.
        IntrospectionError - if a field does not exist in actual.
      • assertIsEqualToIgnoringGivenFields

        public <A> void assertIsEqualToIgnoringGivenFields​(AssertionInfo info,
                                                           A actual,
                                                           A other,
                                                           Map<String,​Comparator<?>> comparatorByPropertyOrField,
                                                           TypeComparators comparatorByType,
                                                           String... fields)
        Assert that the given object is lenient equals to the other by comparing all fields (including inherited fields) unless given ignored ones.
        Type Parameters:
        A - the actual type
        Parameters:
        info - contains information about the assertion.
        actual - the given object.
        other - the object to compare actual to.
        comparatorByPropertyOrField - comparators use for specific fields
        comparatorByType - comparators use for specific types
        fields - the fields to ignore in comparison
        Throws:
        NullPointerException - if the other type is null.
        AssertionError - if actual is null.
        AssertionError - if the actual and the given object are not lenient equals.
        AssertionError - if the other object is not an instance of the actual type.
      • canReadFieldValue

        private <A> boolean canReadFieldValue​(Field field,
                                              A actual)
      • assertHasNoNullFieldsOrPropertiesExcept

        public <A> void assertHasNoNullFieldsOrPropertiesExcept​(AssertionInfo info,
                                                                A actual,
                                                                String... propertiesOrFieldsToIgnore)
        Assert that the given object has no null fields except the given ones.
        Type Parameters:
        A - the actual type.
        Parameters:
        info - contains information about the assertion.
        actual - the given object.
        propertiesOrFieldsToIgnore - the fields to ignore in comparison.
        Throws:
        AssertionError - if actual is null.
        AssertionError - if some of the fields of the actual object are null.
      • assertHasAllNullFieldsOrPropertiesExcept

        public <A> void assertHasAllNullFieldsOrPropertiesExcept​(AssertionInfo info,
                                                                 A actual,
                                                                 String... propertiesOrFieldsToIgnore)
        Asserts that the given object has null fields except the given ones.
        Type Parameters:
        A - the actual type.
        Parameters:
        info - contains information about the assertion.
        actual - the given object.
        propertiesOrFieldsToIgnore - the fields to ignore in comparison.
        Throws:
        AssertionError - is actual is null.
        AssertionError - if some of the fields of the actual object are not null.
      • assertIsEqualToComparingFieldByFieldRecursively

        public <A> void assertIsEqualToComparingFieldByFieldRecursively​(AssertionInfo info,
                                                                        Object actual,
                                                                        Object other,
                                                                        Map<String,​Comparator<?>> comparatorByPropertyOrField,
                                                                        TypeComparators comparatorByType)
        Assert that the given object is "deeply" equals to other by comparing all fields recursively.
        Type Parameters:
        A - the actual type
        Parameters:
        info - contains information about the assertion.
        actual - the given object.
        comparatorByPropertyOrField - comparators use for specific fields
        comparatorByType - comparators use for specific types
        other - the object to compare actual to.
        Throws:
        AssertionError - if actual is null.
        AssertionError - if the actual and the given object are not "deeply" equal.
      • getPropertyOrFieldValue

        private <A> Object getPropertyOrFieldValue​(A a,
                                                   String fieldName)
        Get property value first and in case of error try field value.

        This method supports nested field/property (e.g. "address.street.number").

        Type Parameters:
        A - the actual type
        Parameters:
        a - the object to get field value from
        fieldName - Field name to read, can be nested
        Returns:
        (nested) field value or property value if field was not accessible.
        Throws:
        IntrospectionError - is field value can't get retrieved.
      • getDeclaredFieldsIncludingInherited

        public static Set<Field> getDeclaredFieldsIncludingInherited​(Class<?> clazz)
        Returns the declared fields of given class and its superclasses stopping at superclass in java.lang package whose fields are not included.
        Parameters:
        clazz - the class we want the declared fields.
        Returns:
        the declared fields of given class and its superclasses.
      • getFieldsNames

        public static Set<String> getFieldsNames​(Class<?> clazz)
      • getDeclaredFieldsIgnoringSyntheticAndStatic

        private static Set<Field> getDeclaredFieldsIgnoringSyntheticAndStatic​(Class<?> clazz)
        Returns the declared fields of a given class excluding any synthetic or static fields. Synthetic fields are fields that are generated by the compiler for access purposes, or by instrumentation tools e.g. JaCoCo adds in a $jacocoData field and therefore should be ignored when comparing fields. Static fields are used as constants, and are not associated with an object.
        Parameters:
        clazz - the class we want the declared fields.
        Returns:
        the declared fields of given class excluding any synthetic fields.
      • assertHasFieldOrProperty

        public <A> void assertHasFieldOrProperty​(AssertionInfo info,
                                                 A actual,
                                                 String name)
      • assertHasFieldOrPropertyWithValue

        public <A> void assertHasFieldOrPropertyWithValue​(AssertionInfo info,
                                                          A actual,
                                                          String name,
                                                          Object expectedValue)
      • extractPropertyOrField

        private <A> Object extractPropertyOrField​(A actual,
                                                  String name)
      • assertHasSameHashCodeAs

        public <A> void assertHasSameHashCodeAs​(AssertionInfo info,
                                                A actual,
                                                Object other)
        Asserts that the actual object has the same hashCode as the given object.
        Type Parameters:
        A - the actual type
        Parameters:
        info - contains information about the assertion.
        actual - the given object.
        other - the object to check hashCode against.
        Throws:
        AssertionError - if the actual object is null.
        AssertionError - if the given object is null.
        AssertionError - if the actual object has not the same hashCode as the given object.