Class AbstractIterableAssert<SELF extends AbstractIterableAssert<SELF,​ACTUAL,​ELEMENT,​ELEMENT_ASSERT>,​ACTUAL extends java.lang.Iterable<? extends ELEMENT>,​ELEMENT,​ELEMENT_ASSERT extends AbstractAssert<ELEMENT_ASSERT,​ELEMENT>>

    • Method Summary

      All Methods Static Methods Instance Methods Abstract Methods Concrete Methods 
      Modifier and Type Method Description
      SELF allMatch​(java.util.function.Predicate<? super ELEMENT> predicate)
      Verifies that all the elements of actual match the given Predicate.
      SELF allMatch​(java.util.function.Predicate<? super ELEMENT> predicate, java.lang.String predicateDescription)
      Verifies that all the elements of actual match the given Predicate.
      SELF allSatisfy​(java.util.function.Consumer<? super ELEMENT> requirements)
      Verifies that all the elements satisfy given requirements expressed as a Consumer.
      SELF anyMatch​(java.util.function.Predicate<? super ELEMENT> predicate)
      Verifies whether any elements match the provided Predicate.
      SELF anySatisfy​(java.util.function.Consumer<? super ELEMENT> requirements)
      Verifies that at least one element satisfies the given requirements expressed as a Consumer.
      SELF are​(Condition<? super ELEMENT> condition)
      Verifies that each element value satisfies the given condition.
      SELF areAtLeast​(int times, Condition<? super ELEMENT> condition)
      Verifies that there are at least n elements in the actual group satisfying the given condition.
      SELF areAtLeastOne​(Condition<? super ELEMENT> condition)
      Verifies that there is at least one element in the actual group satisfying the given condition.
      SELF areAtMost​(int times, Condition<? super ELEMENT> condition)
      Verifies that there are at most n elements in the actual group satisfying the given condition.
      SELF areExactly​(int times, Condition<? super ELEMENT> condition)
      Verifies that there are exactly n elements in the actual group satisfying the given condition.
      SELF areNot​(Condition<? super ELEMENT> condition)
      Verifies that each element value does not satisfy the given condition.
      SELF as​(java.lang.String description, java.lang.Object... args)
      Sets the description of the assertion that is going to be called after.
      SELF as​(Description description)
      Sets the description of the assertion that is going to be called after.
      SELF contains​(ELEMENT... values)
      Verifies that the actual group contains the given values, in any order.
      SELF containsAll​(java.lang.Iterable<? extends ELEMENT> iterable)
      Verifies that the actual group contains all the elements of given Iterable, in any order.
      SELF containsAnyElementsOf​(java.lang.Iterable<? extends ELEMENT> iterable)
      Verifies that the Iterable under test contains at least one of the given Iterable elements.
      SELF containsAnyOf​(ELEMENT... values)
      Verifies that the actual Iterable contains at least one of the given values.
      SELF containsExactly​(ELEMENT... values)
      Verifies that the actual group contains exactly the given values and nothing else, in order.
      This assertion should only be used with groups that have a consistent iteration order (i.e.
      SELF containsExactlyElementsOf​(java.lang.Iterable<? extends ELEMENT> iterable)
      Same as ObjectEnumerableAssert.containsExactly(Object...) but handle the Iterable to array conversion : verifies that actual contains exactly the elements of the given iterable and nothing else in the same order.
      SELF containsExactlyInAnyOrder​(ELEMENT... values)
      Verifies that the actual group contains exactly the given values and nothing else, in any order.
      SELF containsExactlyInAnyOrderElementsOf​(java.lang.Iterable<? extends ELEMENT> values)
      Verifies that the actual group contains exactly the given values and nothing else, in any order.
      SELF containsNull()
      Verifies that the actual group contains at least a null element.
      SELF containsOnly​(ELEMENT... values)
      Verifies that the actual group contains only the given values and nothing else, in any order and ignoring duplicates (i.e.
      SELF containsOnlyElementsOf​(java.lang.Iterable<? extends ELEMENT> iterable)
      Same semantic as ObjectEnumerableAssert.containsOnly(Object[]) : verifies that actual contains all the elements of the given iterable and nothing else, in any order and ignoring duplicates (i.e.
      SELF containsOnlyNulls()
      Verifies that the actual group contains only null elements and nothing else.
      SELF containsOnlyOnce​(ELEMENT... values)
      Verifies that the actual group contains the given values only once.
      SELF containsSequence​(ELEMENT... sequence)
      Verifies that the actual group contains the given sequence in the correct order and without extra values between the sequence values.
      SELF containsSequence​(java.lang.Iterable<? extends ELEMENT> sequence)
      Verifies that the actual group contains the given sequence in the correct order and without extra values between the sequence values.
      SELF containsSubsequence​(ELEMENT... subsequence)
      Verifies that the actual group contains the given subsequence in the correct order (possibly with other values between them).
      SELF containsSubsequence​(java.lang.Iterable<? extends ELEMENT> subsequence)
      Verifies that the actual group contains the given subsequence in the correct order (possibly with other values between them).
      SELF describedAs​(java.lang.String description, java.lang.Object... args)
      Sets the description of the assertion that is going to be called after.
      SELF describedAs​(Description description)
      Sets the description of the assertion that is going to be called after.
      SELF doesNotContain​(ELEMENT... values)
      Verifies that the actual group does not contain the given values.
      SELF doesNotContainAnyElementsOf​(java.lang.Iterable<? extends ELEMENT> iterable)
      Verifies that actual does not contain any elements of the given Iterable (i.e.
      SELF doesNotContainNull()
      Verifies that the actual group does not contain null elements.
      SELF doesNotContainSequence​(ELEMENT... sequence)
      Verifies that the actual group does not contain the given sequence, a sequence is defined by an ordered group of values without extra values between them.
      SELF doesNotContainSequence​(java.lang.Iterable<? extends ELEMENT> sequence)
      Verifies that the actual group does not contain the given sequence, a sequence is defined by an ordered group of values without extra values between them.
      SELF doesNotContainSubsequence​(ELEMENT... subsequence)
      Verifies that the actual group does not contain the given subsequence, a subsequence is defined by an ordered group of values with possibly extra values between them.
      SELF doesNotContainSubsequence​(java.lang.Iterable<? extends ELEMENT> subsequence)
      Verifies that the actual group does not contain the given subsequence, a subsequence is defined by an ordered group of values with possibly extra values between them.
      SELF doesNotHave​(Condition<? super ACTUAL> condition)
      Verifies that the actual value does not satisfy the given condition.
      SELF doesNotHaveAnyElementsOfTypes​(java.lang.Class<?>... unexpectedTypes)
      Verifies that all elements in the actual Iterable do not have the specified types (including subclasses).
      SELF doesNotHaveDuplicates()
      Verifies that the actual group does not contain duplicates.
      SELF doesNotHaveSameClassAs​(java.lang.Object other)
      Verifies that the actual value does not have the same class as the given object.
      private <V> AbstractListAssert<?,​java.util.List<? extends V>,​V,​ObjectAssert<V>> doFlatExtracting​(java.util.function.Function<? super ELEMENT,​? extends java.util.Collection<V>> extractor)  
      SELF doNotHave​(Condition<? super ELEMENT> condition)
      Verifies that all elements do not satisfy the given condition.
      ELEMENT_ASSERT element​(int index)
      Navigate and allow to perform assertions on the chosen element of the Iterable under test.
      SELF endsWith​(ELEMENT[] sequence)
      Verifies that the actual group ends with the given sequence of objects, without any other objects between them.
      SELF endsWith​(ELEMENT first, ELEMENT... rest)
      Verifies that the actual group ends with the given sequence of objects, without any other objects between them.
      AbstractListAssert<?,​java.util.List<? extends java.lang.Object>,​java.lang.Object,​ObjectAssert<java.lang.Object>> extracting​(java.lang.String propertyOrField)
      Extract the values of the given field or property from the Iterable's elements under test into a new Iterable, this new Iterable becoming the Iterable under test.
      AbstractListAssert<?,​java.util.List<? extends Tuple>,​Tuple,​ObjectAssert<Tuple>> extracting​(java.lang.String... propertiesOrFields)
      Extract the values of the given fields/properties from the Iterable's elements under test into a new Iterable composed of Tuples (a simple data structure), this new Iterable becoming the Iterable under test.
      <P> AbstractListAssert<?,​java.util.List<? extends P>,​P,​ObjectAssert<P>> extracting​(java.lang.String propertyOrField, java.lang.Class<P> extractingType)
      Extract the values of given field or property from the Iterable's elements under test into a new Iterable, this new Iterable becoming the Iterable under test.
      AbstractListAssert<?,​java.util.List<? extends Tuple>,​Tuple,​ObjectAssert<Tuple>> extracting​(java.util.function.Function<? super ELEMENT,​?>... extractors)
      Use the given Functions to extract the values from the Iterable's elements into a new Iterable composed of Tuples (a simple data structure containing the extracted values), this new Iterable becoming the object under test.
      <V> AbstractListAssert<?,​java.util.List<? extends V>,​V,​ObjectAssert<V>> extracting​(java.util.function.Function<? super ELEMENT,​V> extractor)
      Extract the values from Iterable's elements under test by applying an extracting function on them.
      <V,​EXCEPTION extends java.lang.Exception>
      AbstractListAssert<?,​java.util.List<? extends V>,​V,​ObjectAssert<V>>
      extracting​(ThrowingExtractor<? super ELEMENT,​V,​EXCEPTION> extractor)
      Extract the values from Iterable's elements under test by applying an extracting function (which might throw an exception) on them.
      AbstractListAssert<?,​java.util.List<? extends java.lang.Object>,​java.lang.Object,​ObjectAssert<java.lang.Object>> extractingResultOf​(java.lang.String method)
      Extract the result of given method invocation on the Iterable's elements under test into a new Iterable, this new Iterable becoming the Iterable under test.
      <P> AbstractListAssert<?,​java.util.List<? extends P>,​P,​ObjectAssert<P>> extractingResultOf​(java.lang.String method, java.lang.Class<P> extractedType)
      Extract the result of given method invocation on the Iterable's elements under test into a new list of the given class, this new List becoming the object under test.
      SELF filteredOn​(java.lang.String propertyOrFieldName, java.lang.Object expectedValue)
      Filter the iterable under test keeping only elements having a property or field equal to expectedValue, the property/field is specified by propertyOrFieldName parameter.
      SELF filteredOn​(java.lang.String propertyOrFieldName, FilterOperator<?> filterOperator)
      Filter the iterable under test keeping only elements having a property or field matching the filter expressed with the FilterOperator, the property/field is specified by propertyOrFieldName parameter.
      SELF filteredOn​(java.util.function.Predicate<? super ELEMENT> predicate)
      Filter the iterable under test keeping only elements matching the given Predicate.
      SELF filteredOn​(Condition<? super ELEMENT> condition)
      Filter the iterable under test keeping only elements matching the given Condition.
      SELF filteredOnAssertions​(java.util.function.Consumer<? super ELEMENT> elementAssertions)
      Filter the iterable under test keeping only elements matching the given assertions specified with a Consumer.
      SELF filteredOnNull​(java.lang.String propertyOrFieldName)
      Filter the iterable under test keeping only elements whose property or field specified by propertyOrFieldName is null.
      ELEMENT_ASSERT first()
      Navigate and allow to perform assertions on the first element of the Iterable under test.
      AbstractListAssert<?,​java.util.List<? extends java.lang.Object>,​java.lang.Object,​ObjectAssert<java.lang.Object>> flatExtracting​(java.lang.String fieldOrPropertyName)
      Extract from Iterable's elements the Iterable/Array values corresponding to the given property/field name and concatenate them into a single list becoming the new object under test.
      AbstractListAssert<?,​java.util.List<? extends java.lang.Object>,​java.lang.Object,​ObjectAssert<java.lang.Object>> flatExtracting​(java.lang.String... fieldOrPropertyNames)
      Extract the given property/field values from each Iterable's element and flatten the extracted values in a list that is used as the new object under test.
      AbstractListAssert<?,​java.util.List<? extends java.lang.Object>,​java.lang.Object,​ObjectAssert<java.lang.Object>> flatExtracting​(java.util.function.Function<? super ELEMENT,​?>... extractors)
      Extract multiple values from each Iterable's element according to the given Functions and concatenate/flatten the extracted values in a list that is used as the new object under test.
      <V> AbstractListAssert<?,​java.util.List<? extends V>,​V,​ObjectAssert<V>> flatExtracting​(java.util.function.Function<? super ELEMENT,​? extends java.util.Collection<V>> extractor)
      Extract the Iterable values from Iterable's elements under test by applying an Iterable extracting function on them and concatenating the result lists.
      <EXCEPTION extends java.lang.Exception>
      AbstractListAssert<?,​java.util.List<? extends java.lang.Object>,​java.lang.Object,​ObjectAssert<java.lang.Object>>
      flatExtracting​(ThrowingExtractor<? super ELEMENT,​?,​EXCEPTION>... extractors)
      Extract multiple values from each Iterable's element according to the given ThrowingExtractors and concatenate/flatten the extracted values in a list that is used as the new object under test.
      <V,​EXCEPTION extends java.lang.Exception>
      AbstractListAssert<?,​java.util.List<? extends V>,​V,​ObjectAssert<V>>
      flatExtracting​(ThrowingExtractor<? super ELEMENT,​? extends java.util.Collection<V>,​EXCEPTION> extractor)
      Extract the Iterable values from Iterable's elements under test by applying an Iterable extracting function (which might throw a checked exception) on them and concatenating the result lists.
      protected TypeComparators getComparatorsByType()  
      protected TypeComparators getComparatorsForElementPropertyOrFieldTypes()  
      SELF has​(Condition<? super ACTUAL> condition)
      Verifies that the actual value satisfies the given condition.
      SELF hasAtLeastOneElementOfType​(java.lang.Class<?> expectedType)
      Verifies that at least one element in the actual Iterable has the specified type (matching includes subclasses of the given type).
      SELF hasOnlyElementsOfType​(java.lang.Class<?> expectedType)
      Verifies that all elements in the actual Iterable have the specified type (matching includes subclasses of the given type).
      SELF hasOnlyElementsOfTypes​(java.lang.Class<?>... types)
      Verifies that all elements of the actual group are instances of the given types.
      SELF hasOnlyOneElementSatisfying​(java.util.function.Consumer<? super ELEMENT> elementAssertions)
      Verifies that the unique element of the Iterable satifies the given assertions expressed as a Consumer, if it does not, only the first error is reported, use SoftAssertions to get all the errors.
      SELF hasSameClassAs​(java.lang.Object other)
      Verifies that the actual value has the same class as the given object.
      SELF hasSameElementsAs​(java.lang.Iterable<? extends ELEMENT> iterable)
      An alias of ObjectEnumerableAssert.containsOnlyElementsOf(Iterable) : verifies that actual contains all the elements of the given iterable and nothing else, in any order.
      SELF hasSameSizeAs​(java.lang.Iterable<?> other)
      Verifies that the actual group has the same size as given Iterable.
      SELF hasSameSizeAs​(java.lang.Object other)
      Verifies that the actual group has the same size as given array.
      SELF hasSize​(int expected)
      Verifies that the number of values in the actual group is equal to the given one.
      SELF hasSizeBetween​(int lowerBoundary, int higherBoundary)
      Verifies that the number of values in the actual iterable is between the given boundaries (inclusive).
      SELF hasSizeGreaterThan​(int boundary)
      Verifies that the number of values in the actual iterable is greater than the given boundary.
      SELF hasSizeGreaterThanOrEqualTo​(int boundary)
      Verifies that the number of values in the actual iterable is greater than or equal to the given boundary.
      SELF hasSizeLessThan​(int boundary)
      Verifies that the number of values in the actual iterable is less than the given boundary.
      SELF hasSizeLessThanOrEqualTo​(int boundary)
      Verifies that the number of values in the actual iterable is less than or equal to the given boundary.
      SELF hasToString​(java.lang.String expectedToString)
      Verifies that actual actual.toString() is equal to the given String.
      SELF have​(Condition<? super ELEMENT> condition)
      Verifies that all elements satisfy the given condition.
      SELF haveAtLeast​(int times, Condition<? super ELEMENT> condition)
      Verifies that there are at least n elements in the actual group satisfying the given condition.
      SELF haveAtLeastOne​(Condition<? super ELEMENT> condition)
      Verifies that there is at least one element in the actual group satisfying the given condition.
      SELF haveAtMost​(int times, Condition<? super ELEMENT> condition)
      Verifies that there are at most n elements in the actual group satisfying the given condition.
      SELF haveExactly​(int times, Condition<? super ELEMENT> condition)
      Verifies that there are exactly n elements in the actual group satisfying the given condition.
      SELF inBinary()
      Enable binary representation of Iterable elements instead of standard representation in error messages.
      SELF inHexadecimal()
      Enable hexadecimal representation of Iterable elements instead of standard representation in error messages.
      SELF is​(Condition<? super ACTUAL> condition)
      Verifies that the actual value satisfies the given condition.
      void isEmpty()
      Verifies that the actual group of values is empty.
      SELF isEqualTo​(java.lang.Object expected)
      Verifies that the actual value is equal to the given one.
      SELF isExactlyInstanceOf​(java.lang.Class<?> type)
      Verifies that the actual value is exactly an instance of the given type.
      SELF isIn​(java.lang.Iterable<?> values)
      Verifies that the actual value is present in the given values.
      SELF isIn​(java.lang.Object... values)
      Verifies that the actual value is present in the given array of values.
      SELF isInstanceOf​(java.lang.Class<?> type)
      Verifies that the actual value is an instance of the given type.
      SELF isInstanceOfAny​(java.lang.Class<?>... types)
      Verifies that the actual value is an instance of any of the given types.
      SELF isNot​(Condition<? super ACTUAL> condition)
      Verifies that the actual value does not satisfy the given condition.
      SELF isNotEmpty()
      Verifies that the actual group of values is not empty.
      SELF isNotEqualTo​(java.lang.Object other)
      Verifies that the actual value is not equal to the given one.
      SELF isNotExactlyInstanceOf​(java.lang.Class<?> type)
      Verifies that the actual value is not exactly an instance of given type.
      SELF isNotIn​(java.lang.Iterable<?> values)
      Verifies that the actual value is not present in the given values.
      SELF isNotIn​(java.lang.Object... values)
      Verifies that the actual value is not present in the given array of values.
      SELF isNotInstanceOf​(java.lang.Class<?> type)
      Verifies that the actual value is not an instance of the given type.
      SELF isNotInstanceOfAny​(java.lang.Class<?>... types)
      Verifies that the actual value is not an instance of any of the given types.
      SELF isNotNull()
      Verifies that the actual value is not null.
      SELF isNotOfAnyClassIn​(java.lang.Class<?>... types)
      Verifies that the actual value type is not in given types.
      SELF isNotSameAs​(java.lang.Object other)
      Verifies that the actual value is not the same as the given one, ie using == comparison.
      void isNullOrEmpty()
      Verifies that the actual group of values is null or empty.
      SELF isOfAnyClassIn​(java.lang.Class<?>... types)
      Verifies that the actual value type is in given types.
      SELF isSameAs​(java.lang.Object expected)
      Verifies that the actual value is the same as the given one, ie using == comparison.
      SELF isSubsetOf​(ELEMENT... values)
      Verifies that all the elements of actual are present in the given values.
      SELF isSubsetOf​(java.lang.Iterable<? extends ELEMENT> values)
      Verifies that all the elements of actual are present in the given Iterable.
      ELEMENT_ASSERT last()
      Navigate and allow to perform assertions on the last element of the Iterable under test.
      private ELEMENT lastElement()  
      protected java.lang.String navigationDescription​(java.lang.String propertyName)  
      protected abstract SELF newAbstractIterableAssert​(java.lang.Iterable<? extends ELEMENT> iterable)  
      private <V> AbstractListAssert<?,​java.util.List<? extends V>,​V,​ObjectAssert<V>> newListAssertInstanceForMethodsChangingElementType​(java.util.List<V> values)  
      SELF noneMatch​(java.util.function.Predicate<? super ELEMENT> predicate)
      Verifies that no elements match the given Predicate.
      SELF noneSatisfy​(java.util.function.Consumer<? super ELEMENT> restrictions)
      Verifies that no elements satisfy the given restrictions expressed as a Consumer.
      SELF overridingErrorMessage​(java.lang.String newErrorMessage, java.lang.Object... args)
      Overrides AssertJ default error message by the given one.
      private static java.lang.String removeAssert​(java.lang.String text)  
      AbstractIterableSizeAssert<SELF,​ACTUAL,​ELEMENT,​ELEMENT_ASSERT> size()
      Returns an Assert object that allows performing assertions on the size of the Iterable under test.
      SELF startsWith​(ELEMENT... sequence)
      Verifies that the actual group starts with the given sequence of objects, without any other objects between them.
      protected abstract ELEMENT_ASSERT toAssert​(ELEMENT value, java.lang.String description)  
      SELF usingComparator​(java.util.Comparator<? super ACTUAL> customComparator)
      Use the given custom comparator instead of relying on actual type A equals method for incoming assertion checks.
      SELF usingComparator​(java.util.Comparator<? super ACTUAL> customComparator, java.lang.String customComparatorDescription)
      Use the given custom comparator instead of relying on actual type A equals method for incoming assertion checks.
      <T> SELF usingComparatorForElementFieldsWithNames​(java.util.Comparator<T> comparator, java.lang.String... elementPropertyOrFieldNames)
      Allows to set a comparator to compare properties or fields of elements with the given names.
      <T> SELF usingComparatorForElementFieldsWithType​(java.util.Comparator<T> comparator, java.lang.Class<T> type)
      Allows to set a specific comparator to compare properties or fields of elements with the given type.
      <T> SELF usingComparatorForType​(java.util.Comparator<T> comparator, java.lang.Class<T> type)
      Allows to set a specific comparator for the given type of elements or their fields.
      protected SELF usingComparisonStrategy​(ComparisonStrategy comparisonStrategy)  
      SELF usingDefaultComparator()
      Revert to standard comparison for the incoming assertion checks.
      SELF usingDefaultElementComparator()
      Revert to standard comparison for incoming assertion group element checks.
      SELF usingElementComparator​(java.util.Comparator<? super ELEMENT> elementComparator)
      Use given custom comparator instead of relying on actual type A equals method to compare group elements for incoming assertion checks.
      SELF usingElementComparatorIgnoringFields​(java.lang.String... fields)
      Use field/property by field/property comparison on all fields/properties except the given ones (including inherited fields/properties) instead of relying on actual type A equals method to compare group elements for incoming assertion checks.
      SELF usingElementComparatorOnFields​(java.lang.String... fields)
      Use field/property by field/property comparison on the given fields/properties only (including inherited fields/properties) instead of relying on actual type A equals method to compare group elements for incoming assertion checks.
      private SELF usingExtendedByTypesElementComparator​(java.util.Comparator<java.lang.Object> elementComparator)  
      SELF usingFieldByFieldElementComparator()
      Use field/property by field/property comparison (including inherited fields/properties) instead of relying on actual type A equals method to compare group elements for incoming assertion checks.
      SELF usingRecursiveFieldByFieldElementComparator()
      Use a recursive field/property by field/property comparison (including inherited fields/properties) instead of relying on actual type equals method to compare group elements for incoming assertion checks.
      (package private) SELF withAssertionState​(AbstractAssert assertInstance)  
      (package private) SELF withComparatorsForElementPropertyOrFieldNames​(java.util.Map<java.lang.String,​java.util.Comparator<?>> comparatorsForElementPropertyOrFieldNames)  
      (package private) SELF withComparatorsForElementPropertyOrFieldTypes​(TypeComparators comparatorsForElementPropertyOrFieldTypes)  
      SELF withFailMessage​(java.lang.String newErrorMessage, java.lang.Object... args)
      (package private) SELF withIterables​(Iterables iterables)  
      SELF withThreadDumpOnError()
      In case of an assertion error, a thread dump will be printed to System.err.
      (package private) SELF withTypeComparators​(TypeComparators comparatorsByType)  
      <OTHER_ELEMENT>
      SELF
      zipSatisfy​(java.lang.Iterable<OTHER_ELEMENT> other, java.util.function.BiConsumer<? super ELEMENT,​OTHER_ELEMENT> zipRequirements)
      Verifies that the zipped pairs of actual and other elements, i.e: (actual 1st element, other 1st element), (actual 2nd element, other 2nd element), ...
      • Methods inherited from class java.lang.Object

        clone, finalize, getClass, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • comparatorsForElementPropertyOrFieldNames

        private java.util.Map<java.lang.String,​java.util.Comparator<?>> comparatorsForElementPropertyOrFieldNames
      • comparatorsForElementPropertyOrFieldTypes

        private TypeComparators comparatorsForElementPropertyOrFieldTypes
    • Constructor Detail

      • AbstractIterableAssert

        public AbstractIterableAssert​(ACTUAL actual,
                                      java.lang.Class<?> selfType)
    • Method Detail

      • isNullOrEmpty

        public void isNullOrEmpty()
        Verifies that the actual group of values is null or empty.

        Example:

         // assertions will pass
         List<String> strings = new ArrayList<>();
         assertThat(strings).isNullOrEmpty();
         assertThat(new int[] { }).isNullOrEmpty();
        
         // assertions will fail
         assertThat(new String[] { "a", "b"}).isNullOrEmpty();
         assertThat(Arrays.asList(1, 2, 3)).isNullOrEmpty();
        Specified by:
        isNullOrEmpty in interface EnumerableAssert<SELF extends AbstractIterableAssert<SELF,​ACTUAL,​ELEMENT,​ELEMENT_ASSERT>,​ACTUAL extends java.lang.Iterable<? extends ELEMENT>>
      • isEmpty

        public void isEmpty()
        Verifies that the actual group of values is empty.

        Example:

         // assertions will pass
         assertThat(new ArrayList()).isEmpty();
         assertThat(new int[] { }).isEmpty();
        
         // assertions will fail
         assertThat(new String[] { "a", "b" }).isEmpty();
         assertThat(Arrays.asList(1, 2, 3)).isEmpty();
        Specified by:
        isEmpty in interface EnumerableAssert<SELF extends AbstractIterableAssert<SELF,​ACTUAL,​ELEMENT,​ELEMENT_ASSERT>,​ACTUAL extends java.lang.Iterable<? extends ELEMENT>>
      • isNotEmpty

        public SELF isNotEmpty()
        Verifies that the actual group of values is not empty.

        Example:

         // assertions will pass
         assertThat(new String[] { "a", "b" }).isNotEmpty();
         assertThat(Arrays.asList(1, 2, 3)).isNotEmpty();
        
         // assertions will fail
         assertThat(new ArrayList()).isNotEmpty();
         assertThat(new int[] { }).isNotEmpty();
        Specified by:
        isNotEmpty in interface EnumerableAssert<SELF extends AbstractIterableAssert<SELF,​ACTUAL,​ELEMENT,​ELEMENT_ASSERT>,​ACTUAL extends java.lang.Iterable<? extends ELEMENT>>
        Returns:
        this assertion object.
      • hasSize

        public SELF hasSize​(int expected)
        Verifies that the number of values in the actual group is equal to the given one.

        Example:

         // assertions will pass
         assertThat(new String[] { "a", "b" }).hasSize(2);
         assertThat(Arrays.asList(1, 2, 3)).hasSize(3);
        
         // assertions will fail
         assertThat(new ArrayList()).hasSize(1);
         assertThat(new int[] { 1, 2, 3 }).hasSize(2);
        Specified by:
        hasSize in interface EnumerableAssert<SELF extends AbstractIterableAssert<SELF,​ACTUAL,​ELEMENT,​ELEMENT_ASSERT>,​ACTUAL extends java.lang.Iterable<? extends ELEMENT>>
        Parameters:
        expected - the expected number of values in the actual group.
        Returns:
        this assertion object.
      • hasSizeGreaterThan

        public SELF hasSizeGreaterThan​(int boundary)
        Verifies that the number of values in the actual iterable is greater than the given boundary.

        Example:

         // assertion will pass
         assertThat(Arrays.asList(1, 2, 3)).hasSizeGreaterThan(2);
        
         // assertion will fail
         assertThat(Arrays.asList(1, 2, 3)).hasSizeGreaterThan(3);
        Specified by:
        hasSizeGreaterThan in interface EnumerableAssert<SELF extends AbstractIterableAssert<SELF,​ACTUAL,​ELEMENT,​ELEMENT_ASSERT>,​ACTUAL extends java.lang.Iterable<? extends ELEMENT>>
        Parameters:
        boundary - the given value to compare the actual size to.
        Returns:
        this assertion object.
        Throws:
        java.lang.AssertionError - if the number of values of the actual iterable is not greater than the boundary.
        Since:
        3.12.0
      • hasSizeGreaterThanOrEqualTo

        public SELF hasSizeGreaterThanOrEqualTo​(int boundary)
        Verifies that the number of values in the actual iterable is greater than or equal to the given boundary.

        Example:

         // assertions will pass
         assertThat(Arrays.asList(1, 2, 3)).hasSizeGreaterThanOrEqualTo(1)
                                           .hasSizeGreaterThanOrEqualTo(3);
        
         // assertion will fail
         assertThat(Arrays.asList(1, 2, 3)).hasSizeGreaterThanOrEqualTo(4);
        Specified by:
        hasSizeGreaterThanOrEqualTo in interface EnumerableAssert<SELF extends AbstractIterableAssert<SELF,​ACTUAL,​ELEMENT,​ELEMENT_ASSERT>,​ACTUAL extends java.lang.Iterable<? extends ELEMENT>>
        Parameters:
        boundary - the given value to compare the actual size to.
        Returns:
        this assertion object.
        Throws:
        java.lang.AssertionError - if the number of values of the actual iterable is not greater than or equal to the boundary.
        Since:
        3.12.0
      • hasSizeLessThan

        public SELF hasSizeLessThan​(int boundary)
        Verifies that the number of values in the actual iterable is less than the given boundary.

        Example:

         // assertion will pass
         assertThat(Arrays.asList(1, 2, 3)).hasSizeLessThan(4);
        
         // assertion will fail
         assertThat(Arrays.asList(1, 2, 3)).hasSizeLessThan(3);
        Specified by:
        hasSizeLessThan in interface EnumerableAssert<SELF extends AbstractIterableAssert<SELF,​ACTUAL,​ELEMENT,​ELEMENT_ASSERT>,​ACTUAL extends java.lang.Iterable<? extends ELEMENT>>
        Parameters:
        boundary - the given value to compare the actual size to.
        Returns:
        this assertion object.
        Throws:
        java.lang.AssertionError - if the number of values of the actual iterable is not less than the boundary.
        Since:
        3.12.0
      • hasSizeLessThanOrEqualTo

        public SELF hasSizeLessThanOrEqualTo​(int boundary)
        Verifies that the number of values in the actual iterable is less than or equal to the given boundary.

        Example:

         // assertions will pass
         assertThat(Arrays.asList(1, 2, 3)).hasSizeLessThanOrEqualTo(5)
                                           .hasSizeLessThanOrEqualTo(3);
        
         // assertion will fail
         assertThat(Arrays.asList(1, 2, 3)).hasSizeLessThanOrEqualTo(2);
        Specified by:
        hasSizeLessThanOrEqualTo in interface EnumerableAssert<SELF extends AbstractIterableAssert<SELF,​ACTUAL,​ELEMENT,​ELEMENT_ASSERT>,​ACTUAL extends java.lang.Iterable<? extends ELEMENT>>
        Parameters:
        boundary - the given value to compare the actual size to.
        Returns:
        this assertion object.
        Throws:
        java.lang.AssertionError - if the number of values of the actual iterable is not less than or equal to the boundary.
        Since:
        3.12.0
      • hasSizeBetween

        public SELF hasSizeBetween​(int lowerBoundary,
                                   int higherBoundary)
        Verifies that the number of values in the actual iterable is between the given boundaries (inclusive).

        Example:

         // assertions will pass
         assertThat(Arrays.asList(1, 2, 3)).hasSizeBetween(2, 3)
                                           .hasSizeBetween(3, 4)
                                           .hasSizeBetween(3, 3);
        
         // assertion will fail
         assertThat(Arrays.asList(1, 2, 3)).hasSizeBetween(4, 6);
        Specified by:
        hasSizeBetween in interface EnumerableAssert<SELF extends AbstractIterableAssert<SELF,​ACTUAL,​ELEMENT,​ELEMENT_ASSERT>,​ACTUAL extends java.lang.Iterable<? extends ELEMENT>>
        Parameters:
        lowerBoundary - the lower boundary compared to which actual size should be greater than or equal to.
        higherBoundary - the higher boundary compared to which actual size should be less than or equal to.
        Returns:
        this assertion object.
        Throws:
        java.lang.AssertionError - if the number of values of the actual iterable is not between the boundaries.
        Since:
        3.12.0
      • hasOnlyOneElementSatisfying

        public SELF hasOnlyOneElementSatisfying​(java.util.function.Consumer<? super ELEMENT> elementAssertions)
        Verifies that the unique element of the Iterable satifies the given assertions expressed as a Consumer, if it does not, only the first error is reported, use SoftAssertions to get all the errors.

        Example:

         List<Jedi> jedis = asList(new Jedi("Yoda", "red"));
        
         // assertions will pass
        
         assertThat(jedis).hasOnlyOneElementSatisfying(yoda -> assertThat(yoda.getName()).startsWith("Y"));
        
         assertThat(jedis).hasOnlyOneElementSatisfying(yoda -> {
           assertThat(yoda.getName()).isEqualTo("Yoda");
           assertThat(yoda.getLightSaberColor()).isEqualTo("red");
         });
        
         // assertions will fail
        
         assertThat(jedis).hasOnlyOneElementSatisfying(yoda -> assertThat(yoda.getName()).startsWith("Vad"));
        
         // fail as one the assertions is not satisfied
         assertThat(jedis).hasOnlyOneElementSatisfying(yoda -> {
           assertThat(yoda.getName()).isEqualTo("Yoda");
           assertThat(yoda.getLightSaberColor()).isEqualTo("purple");
         });
        
         // fail but only report the first error
         assertThat(jedis).hasOnlyOneElementSatisfying(yoda -> {
           assertThat(yoda.getName()).isEqualTo("Luke");
           assertThat(yoda.getLightSaberColor()).isEqualTo("green");
         });
        
         // fail and reports the errors thanks to Soft assertions
         assertThat(jedis).hasOnlyOneElementSatisfying(yoda -> {
           SoftAssertions softly = new SoftAssertions();
           softly.assertThat(yoda.getName()).isEqualTo("Luke");
           softly.assertThat(yoda.getLightSaberColor()).isEqualTo("green");
           softly.assertAll();
         });
        
         // even if the assertion is correct, there are too many jedis !
         jedis.add(new Jedi("Luke", "green"));
         assertThat(jedis).hasOnlyOneElementSatisfying(yoda -> assertThat(yoda.getName()).startsWith("Yo"));
        Specified by:
        hasOnlyOneElementSatisfying in interface ObjectEnumerableAssert<SELF extends AbstractIterableAssert<SELF,​ACTUAL,​ELEMENT,​ELEMENT_ASSERT>,​ACTUAL extends java.lang.Iterable<? extends ELEMENT>>
        Parameters:
        elementAssertions - the assertions to perform on the unique element.
        Returns:
        this assertion object.
        Throws:
        java.lang.AssertionError - if the Iterable does not have a unique element.
        java.lang.AssertionError - if the Iterable's unique element does not satifies the given assertions.
        Since:
        3.5.0
      • hasSameSizeAs

        public SELF hasSameSizeAs​(java.lang.Object other)
        Verifies that the actual group has the same size as given array.

        Parameter is declared as Object to accept both Object[] and primitive arrays (e.g. int[]).

        Example:
         int[] oneTwoThree = {1, 2, 3};
         Iterable<Ring> elvesRings = newArrayList(vilya, nenya, narya);
        
         // assertion will pass
         assertThat(elvesRings).hasSameSizeAs(oneTwoThree);
        
         // assertions will fail
         assertThat(elvesRings).hasSameSizeAs(new int[] { 1, 2});
         assertThat(elvesRings).hasSameSizeAs(new int[] { 1, 2, 3, 4});
        Specified by:
        hasSameSizeAs in interface EnumerableAssert<SELF extends AbstractIterableAssert<SELF,​ACTUAL,​ELEMENT,​ELEMENT_ASSERT>,​ACTUAL extends java.lang.Iterable<? extends ELEMENT>>
        Parameters:
        other - the array to compare size with actual group.
        Returns:
        this assertion object.
      • hasSameSizeAs

        public SELF hasSameSizeAs​(java.lang.Iterable<?> other)
        Verifies that the actual group has the same size as given Iterable.

        Example:

         Iterable<String> abc = newArrayList("a", "b", "c");
         Iterable<Ring> elvesRings = newArrayList(vilya, nenya, narya);
        
         // assertion will pass
         assertThat(elvesRings).hasSameSizeAs(abc);
        
         // assertions will fail
         assertThat(elvesRings).hasSameSizeAs(Arrays.asList(1, 2));
         assertThat(elvesRings).hasSameSizeAs(Arrays.asList(1, 2, 3, 4));
        Specified by:
        hasSameSizeAs in interface EnumerableAssert<SELF extends AbstractIterableAssert<SELF,​ACTUAL,​ELEMENT,​ELEMENT_ASSERT>,​ACTUAL extends java.lang.Iterable<? extends ELEMENT>>
        Parameters:
        other - the Iterable to compare size with actual group.
        Returns:
        this assertion object.
      • contains

        public SELF contains​(ELEMENT... values)
        Verifies that the actual group contains the given values, in any order.

        Example:

         Iterable<String> abc = newArrayList("a", "b", "c");
        
         // assertions will pass
         assertThat(abc).contains("b", "a");
         assertThat(abc).contains("b", "a", "b");
        
         // assertion will fail
         assertThat(abc).contains("d");

        If you want to specify the elements to check with an Iterable, use containsAll(Iterable) instead.

        Specified by:
        contains in interface ObjectEnumerableAssert<SELF extends AbstractIterableAssert<SELF,​ACTUAL,​ELEMENT,​ELEMENT_ASSERT>,​ACTUAL extends java.lang.Iterable<? extends ELEMENT>>
        Parameters:
        values - the given values.
        Returns:
        this assertion object.
      • containsOnly

        public SELF containsOnly​(ELEMENT... values)
        Verifies that the actual group contains only the given values and nothing else, in any order and ignoring duplicates (i.e. once a value is found, its duplicates are also considered found).

        If you need to check exactly the elements and their duplicates use:

        Example:

         Iterable<String> abc = newArrayList("a", "b", "c");
        
         // assertions will pass as order does not matter
         assertThat(abc).containsOnly("c", "b", "a");
         // duplicates are ignored
         assertThat(abc).containsOnly("a", "a", "b", "c", "c");
         // ... on both actual and expected values
         assertThat(asList("a", "a", "b")).containsOnly("a", "b")
                                          .containsOnly("a", "a", "b", "b");
        
         // assertion will fail because "c" is missing in the given values
         assertThat(abc).containsOnly("a", "b");
         // assertion will fail because "d" is missing in abc (use isSubsetOf if you want this assertion to pass)
         assertThat(abc).containsOnly("a", "b", "c", "d");

        If you need to check that actual is a subset of the given values, use ObjectEnumerableAssert.isSubsetOf(Object...).

        If you want to specify the elements to check with an Iterable, use containsOnlyElementsOf(Iterable) instead.

        Specified by:
        containsOnly in interface ObjectEnumerableAssert<SELF extends AbstractIterableAssert<SELF,​ACTUAL,​ELEMENT,​ELEMENT_ASSERT>,​ACTUAL extends java.lang.Iterable<? extends ELEMENT>>
        Parameters:
        values - the given values.
        Returns:
        this assertion object.
      • containsOnlyOnce

        public SELF containsOnlyOnce​(ELEMENT... values)
        Verifies that the actual group contains the given values only once.

        Examples :

         // lists are used in the examples but it would also work with arrays
        
         // assertions will pass
         assertThat(newArrayList("winter", "is", "coming")).containsOnlyOnce("winter");
         assertThat(newArrayList("winter", "is", "coming")).containsOnlyOnce("coming", "winter");
        
         // assertions will fail
         assertThat(newArrayList("winter", "is", "coming")).containsOnlyOnce("Lannister");
         assertThat(newArrayList("Arya", "Stark", "daughter", "of", "Ned", "Stark")).containsOnlyOnce("Stark");
         assertThat(newArrayList("Arya", "Stark", "daughter", "of", "Ned", "Stark")).containsOnlyOnce("Stark", "Lannister", "Arya");
        Specified by:
        containsOnlyOnce in interface ObjectEnumerableAssert<SELF extends AbstractIterableAssert<SELF,​ACTUAL,​ELEMENT,​ELEMENT_ASSERT>,​ACTUAL extends java.lang.Iterable<? extends ELEMENT>>
        Parameters:
        values - the given values.
        Returns:
        this assertion object.
      • containsOnlyNulls

        public SELF containsOnlyNulls()
        Verifies that the actual group contains only null elements and nothing else.

        Example:

         // assertion will pass
         Iterable<String> items = Arrays.asList(null, null, null);
         assertThat(items).containsOnlyNulls();
        
         // assertion will fail because items2 contains a not null element
         Iterable<String> items2 = Arrays.asList(null, null, "notNull");
         assertThat(items2).containsOnlyNulls();
        
         // assertion will fail since an empty iterable does not contain any elements and therefore no null ones.
         Iterable<String> empty = new ArrayList<>();
         assertThat(empty).containsOnlyNulls();
        Specified by:
        containsOnlyNulls in interface ObjectEnumerableAssert<SELF extends AbstractIterableAssert<SELF,​ACTUAL,​ELEMENT,​ELEMENT_ASSERT>,​ACTUAL extends java.lang.Iterable<? extends ELEMENT>>
        Returns:
        this assertion object.
      • containsExactly

        public SELF containsExactly​(ELEMENT... values)
        Verifies that the actual group contains exactly the given values and nothing else, in order.
        This assertion should only be used with groups that have a consistent iteration order (i.e. don't use it with HashSet, prefer ObjectEnumerableAssert.containsOnly(Object...) in that case).

        Example:

         // an Iterable is used in the example but it would also work with an array
         Iterable<Ring> elvesRings = newArrayList(vilya, nenya, narya);
        
         // assertion will pass
         assertThat(elvesRings).containsExactly(vilya, nenya, narya);
        
         // assertion will fail as actual and expected order differ
         assertThat(elvesRings).containsExactly(nenya, vilya, narya);

        If you want to specify the elements to check with an Iterable, use containsExactlyElementsOf(Iterable) instead.

        Specified by:
        containsExactly in interface ObjectEnumerableAssert<SELF extends AbstractIterableAssert<SELF,​ACTUAL,​ELEMENT,​ELEMENT_ASSERT>,​ACTUAL extends java.lang.Iterable<? extends ELEMENT>>
        Parameters:
        values - the given values.
        Returns:
        this assertion object.
      • containsExactlyInAnyOrder

        public SELF containsExactlyInAnyOrder​(ELEMENT... values)
        Verifies that the actual group contains exactly the given values and nothing else, in any order.

        Example:

         // an Iterable is used in the example but it would also work with an array
         Iterable<Ring> elvesRings = newArrayList(vilya, nenya, narya, vilya);
        
         // assertion will pass
         assertThat(elvesRings).containsExactlyInAnyOrder(vilya, vilya, nenya, narya);
        
         // assertion will fail as vilya is contained twice in elvesRings.
         assertThat(elvesRings).containsExactlyInAnyOrder(nenya, vilya, narya);

        If you want to specify the elements to check with an Iterable, use containsExactlyInAnyOrderElementsOf(Iterable) instead.

        Specified by:
        containsExactlyInAnyOrder in interface ObjectEnumerableAssert<SELF extends AbstractIterableAssert<SELF,​ACTUAL,​ELEMENT,​ELEMENT_ASSERT>,​ACTUAL extends java.lang.Iterable<? extends ELEMENT>>
        Parameters:
        values - the given values.
        Returns:
        this assertion object.
      • containsExactlyInAnyOrderElementsOf

        public SELF containsExactlyInAnyOrderElementsOf​(java.lang.Iterable<? extends ELEMENT> values)
        Verifies that the actual group contains exactly the given values and nothing else, in any order.

        Example:

         // an Iterable is used in the example but it would also work with an array
         Iterable<Ring> elvesRings = newArrayList(vilya, nenya, narya, vilya);
         Iterable<Ring> elvesRingsSomeMissing = newArrayList(vilya, nenya, narya);
         Iterable<Ring> elvesRingsDifferentOrder = newArrayList(nenya, narya, vilya, vilya);
        
         // assertion will pass
         assertThat(elvesRings).containsExactlyInAnyOrder(elvesRingsDifferentOrder);
        
         // assertion will fail as vilya is contained twice in elvesRings.
         assertThat(elvesRings).containsExactlyInAnyOrder(elvesRingsSomeMissing);

        If you want to directly specify the elements to check, use containsExactlyInAnyOrder(Object...) instead.

        Specified by:
        containsExactlyInAnyOrderElementsOf in interface ObjectEnumerableAssert<SELF extends AbstractIterableAssert<SELF,​ACTUAL,​ELEMENT,​ELEMENT_ASSERT>,​ACTUAL extends java.lang.Iterable<? extends ELEMENT>>
        Parameters:
        values - the given values.
        Returns:
        this assertion object.
      • isSubsetOf

        public SELF isSubsetOf​(java.lang.Iterable<? extends ELEMENT> values)
        Verifies that all the elements of actual are present in the given Iterable.

        Example:

         // an Iterable is used in the example but it would also work with an array
         List<Ring> ringsOfPower = newArrayList(oneRing, vilya, nenya, narya, dwarfRing, manRing);
         Iterable<Ring> elvesRings = newArrayList(vilya, nenya, narya);
        
         // assertion will pass:
         assertThat(elvesRings).isSubsetOf(ringsOfPower);
        
         // assertion will fail:
         assertThat(elvesRings).isSubsetOf(newArrayList(nenya, narya));

        If you want to directly specify the set of elements, use isSubsetOf(Object...) instead.

        Specified by:
        isSubsetOf in interface ObjectEnumerableAssert<SELF extends AbstractIterableAssert<SELF,​ACTUAL,​ELEMENT,​ELEMENT_ASSERT>,​ACTUAL extends java.lang.Iterable<? extends ELEMENT>>
        Parameters:
        values - the Iterable that should contain all actual elements.
        Returns:
        this assertion object.
      • isSubsetOf

        public SELF isSubsetOf​(ELEMENT... values)
        Verifies that all the elements of actual are present in the given values.

        Example:

         // an Iterable is used in the example but it would also work with an array
         Iterable<Ring> elvesRings = newArrayList(vilya, nenya, narya);
        
         // assertions will pass:
         assertThat(elvesRings).isSubsetOf(vilya, nenya, narya)
                               .isSubsetOf(vilya, nenya, narya, dwarfRing);
        
         // assertions will fail:
         assertThat(elvesRings).isSubsetOf(vilya, nenya);
         assertThat(elvesRings).isSubsetOf(vilya, nenya, dwarfRing);

        If you want to specify the set of elements an Iterable, use isSubsetOf(Iterable) instead.

        Specified by:
        isSubsetOf in interface ObjectEnumerableAssert<SELF extends AbstractIterableAssert<SELF,​ACTUAL,​ELEMENT,​ELEMENT_ASSERT>,​ACTUAL extends java.lang.Iterable<? extends ELEMENT>>
        Parameters:
        values - the values that should be used for checking the elements of actual.
        Returns:
        this assertion object.
      • containsSequence

        public SELF containsSequence​(ELEMENT... sequence)
        Verifies that the actual group contains the given sequence in the correct order and without extra values between the sequence values.

        Use ObjectEnumerableAssert.containsSubsequence(Object...) to allow values between the expected sequence values.

        Example:

         // an Iterable is used in the example but it would also work with an array
         Iterable<Ring> elvesRings = newArrayList(vilya, nenya, narya);
        
         // assertions will pass
         assertThat(elvesRings).containsSequence(vilya, nenya)
                               .containsSequence(nenya, narya);
        
         // assertions will fail, the elements order is correct but there is a value between them (nenya)
         assertThat(elvesRings).containsSequence(vilya, narya);
         assertThat(elvesRings).containsSequence(nenya, vilya);

        If you want to specify the sequence to check with an Iterable, use containsSequence(Iterable) instead.

        Specified by:
        containsSequence in interface ObjectEnumerableAssert<SELF extends AbstractIterableAssert<SELF,​ACTUAL,​ELEMENT,​ELEMENT_ASSERT>,​ACTUAL extends java.lang.Iterable<? extends ELEMENT>>
        Parameters:
        sequence - the sequence of objects to look for.
        Returns:
        this assertion object.
      • containsSequence

        public SELF containsSequence​(java.lang.Iterable<? extends ELEMENT> sequence)
        Verifies that the actual group contains the given sequence in the correct order and without extra values between the sequence values.

        Use ObjectEnumerableAssert.containsSubsequence(Iterable) to allow values between the expected sequence values.

        Example:

         Iterable<Ring> elvesRings = newArrayList(vilya, nenya, narya);
        
         // assertions will pass
         assertThat(elvesRings).containsSequence(newArrayList(vilya, nenya))
                               .containsSequence(newArrayList(nenya, narya));
        
         // assertions will fail, the elements order is correct but there is a value between them (nenya)
         assertThat(elvesRings).containsSequence(newArrayList(vilya, narya));
         assertThat(elvesRings).containsSequence(newArrayList(nenya, vilya));

        If you want to directly specify the elements of the sequence to check, use containsSequence(Object...) instead.

        Specified by:
        containsSequence in interface ObjectEnumerableAssert<SELF extends AbstractIterableAssert<SELF,​ACTUAL,​ELEMENT,​ELEMENT_ASSERT>,​ACTUAL extends java.lang.Iterable<? extends ELEMENT>>
        Parameters:
        sequence - the sequence of objects to look for.
        Returns:
        this assertion object.
      • doesNotContainSequence

        public SELF doesNotContainSequence​(ELEMENT... sequence)
        Verifies that the actual group does not contain the given sequence, a sequence is defined by an ordered group of values without extra values between them.

        Use ObjectEnumerableAssert.doesNotContainSubsequence(Object...) to also ensure the sequence does not exist with values between the expected sequence values.

        Example:

         // an Iterable is used in the example but it would also work with an array
         Iterable<Ring> elvesRings = newArrayList(vilya, nenya, narya);
        
         // assertions will pass, the elements order is correct but there is a value between them (nenya)
         assertThat(elvesRings).doesNotContainSequence(vilya, narya)
                               .doesNotContainSequence(nenya, vilya);
        
         // assertions will fail
         assertThat(elvesRings).doesNotContainSequence(vilya, nenya);
         assertThat(elvesRings).doesNotContainSequence(nenya, narya);

        If you want to specify the sequence not to find with an Iterable, use doesNotContainSequence(Iterable) instead.

        Specified by:
        doesNotContainSequence in interface ObjectEnumerableAssert<SELF extends AbstractIterableAssert<SELF,​ACTUAL,​ELEMENT,​ELEMENT_ASSERT>,​ACTUAL extends java.lang.Iterable<? extends ELEMENT>>
        Parameters:
        sequence - the sequence of objects to look for.
        Returns:
        this assertion object.
      • doesNotContainSequence

        public SELF doesNotContainSequence​(java.lang.Iterable<? extends ELEMENT> sequence)
        Verifies that the actual group does not contain the given sequence, a sequence is defined by an ordered group of values without extra values between them.

        Use ObjectEnumerableAssert.doesNotContainSubsequence(Iterable) to also ensure the sequence does not exist with values between the sequence values.

        Example:

         // an Iterable is used in the example but it would also work with an array
         Iterable<Ring> elvesRings = newArrayList(vilya, nenya, narya);
        
         // assertions will pass, the elements order is correct but there is a value between them (nenya)
         assertThat(elvesRings).doesNotContainSequence(newArrayList(vilya, narya))
                               .doesNotContainSequence(newArrayList(nenya, vilya));
        
         // assertions will fail
         assertThat(elvesRings).doesNotContainSequence(newArrayList(vilya, nenya));
         assertThat(elvesRings).doesNotContainSequence(newArrayList(nenya, narya));

        If you want to directly specify the elements of the sequence not to find, use doesNotContainSequence(Object...) instead.

        Specified by:
        doesNotContainSequence in interface ObjectEnumerableAssert<SELF extends AbstractIterableAssert<SELF,​ACTUAL,​ELEMENT,​ELEMENT_ASSERT>,​ACTUAL extends java.lang.Iterable<? extends ELEMENT>>
        Parameters:
        sequence - the sequence of objects to look for.
        Returns:
        this assertion object.
      • containsSubsequence

        public SELF containsSubsequence​(ELEMENT... subsequence)
        Verifies that the actual group contains the given subsequence in the correct order (possibly with other values between them).

        Example:

         // an Iterable is used in the example but it would also work with an array
         Iterable<Ring> elvesRings = newArrayList(vilya, nenya, narya);
        
         // assertions will pass
         assertThat(elvesRings).containsSubsequence(vilya, nenya)
                               .containsSubsequence(vilya, narya);
        
         // assertion will fail
         assertThat(elvesRings).containsSubsequence(nenya, vilya);

        If you want to specify the elements of the subsequence to check with an Iterable, use containsSubsequence(Iterable) instead.

        Specified by:
        containsSubsequence in interface ObjectEnumerableAssert<SELF extends AbstractIterableAssert<SELF,​ACTUAL,​ELEMENT,​ELEMENT_ASSERT>,​ACTUAL extends java.lang.Iterable<? extends ELEMENT>>
        Parameters:
        subsequence - the sequence of objects to look for.
        Returns:
        this assertion object.
      • containsSubsequence

        public SELF containsSubsequence​(java.lang.Iterable<? extends ELEMENT> subsequence)
        Verifies that the actual group contains the given subsequence in the correct order (possibly with other values between them).

        Example:

         Iterable<Ring> elvesRings = newArrayList(vilya, nenya, narya);
        
         // assertions will pass
         assertThat(elvesRings).containsSubsequence(newArrayList(vilya, nenya))
                               .containsSubsequence(newArrayList(vilya, narya));
        
         // assertion will fail
         assertThat(elvesRings).containsSubsequence(newArrayList(nenya, vilya));

        If you want to directly specify the subsequence to check, use containsSubsequence(Object...) instead.

        Specified by:
        containsSubsequence in interface ObjectEnumerableAssert<SELF extends AbstractIterableAssert<SELF,​ACTUAL,​ELEMENT,​ELEMENT_ASSERT>,​ACTUAL extends java.lang.Iterable<? extends ELEMENT>>
        Parameters:
        subsequence - the sequence of objects to look for.
        Returns:
        this assertion object.
      • doesNotContainSubsequence

        public SELF doesNotContainSubsequence​(ELEMENT... subsequence)
        Verifies that the actual group does not contain the given subsequence, a subsequence is defined by an ordered group of values with possibly extra values between them.

        Example:

         // an Iterable is used in the example but it would also work with an array
         Iterable<Ring> elvesRings = newArrayList(vilya, nenya, narya);
        
         // assertions will pass
         assertThat(elvesRings).doesNotContainSubsequence(nenya, vilya)
                               .doesNotContainSubsequence(narya, vilya);
        
         // assertion will fail
         assertThat(elvesRings).doesNotContainSubsequence(vilya, nenya);
         assertThat(elvesRings).doesNotContainSubsequence(vilya, narya);

        If you want to specify the subsequence not to find with an Iterable, use doesNotContainSubsequence(Iterable) instead.

        Specified by:
        doesNotContainSubsequence in interface ObjectEnumerableAssert<SELF extends AbstractIterableAssert<SELF,​ACTUAL,​ELEMENT,​ELEMENT_ASSERT>,​ACTUAL extends java.lang.Iterable<? extends ELEMENT>>
        Parameters:
        subsequence - the sequence of objects to look for.
        Returns:
        this assertion object.
      • doesNotContainSubsequence

        public SELF doesNotContainSubsequence​(java.lang.Iterable<? extends ELEMENT> subsequence)
        Verifies that the actual group does not contain the given subsequence, a subsequence is defined by an ordered group of values with possibly extra values between them.

        Example:

         Iterable<Ring> elvesRings = newArrayList(vilya, nenya, narya);
        
         // assertions will pass
         assertThat(elvesRings).doesNotContainSubsequence(newArrayList(nenya, vilya));
                               .doesNotContainSubsequence(newArrayList(narya, vilya));
        
         // assertion will fail
         assertThat(elvesRings).doesNotContainSubsequence(newArrayList(vilya, nenya));
         assertThat(elvesRings).doesNotContainSubsequence(newArrayList(vilya, narya));

        If you want to directly specify the elements of the subsequence not to find, use doesNotContainSubsequence(Object...) instead.

        Specified by:
        doesNotContainSubsequence in interface ObjectEnumerableAssert<SELF extends AbstractIterableAssert<SELF,​ACTUAL,​ELEMENT,​ELEMENT_ASSERT>,​ACTUAL extends java.lang.Iterable<? extends ELEMENT>>
        Parameters:
        subsequence - the sequence of objects to look for.
        Returns:
        this assertion object.
      • doesNotContain

        public SELF doesNotContain​(ELEMENT... values)
        Description copied from interface: ObjectEnumerableAssert
        Verifies that the actual group does not contain the given values.

        Example:

         // an Iterable is used in the example but it would also work with an array
         Iterable<String> abc = newArrayList("a", "b", "c");
        
         // assertions will pass
         assertThat(abc).doesNotContain("d")
                        .doesNotContain("d", "e");
        
         // assertions will fail
         assertThat(abc).doesNotContain("a");
         assertThat(abc).doesNotContain("a", "b");
         assertThat(abc).doesNotContain("c", "d");

        If you want to specify the elements not to find with an Iterable, use doesNotContainAnyElementsOf(Iterable) instead.

        Specified by:
        doesNotContain in interface ObjectEnumerableAssert<SELF extends AbstractIterableAssert<SELF,​ACTUAL,​ELEMENT,​ELEMENT_ASSERT>,​ACTUAL extends java.lang.Iterable<? extends ELEMENT>>
        Parameters:
        values - the given values.
        Returns:
        this assertion object.
      • doesNotContainAnyElementsOf

        public SELF doesNotContainAnyElementsOf​(java.lang.Iterable<? extends ELEMENT> iterable)
        Description copied from interface: ObjectEnumerableAssert
        Verifies that actual does not contain any elements of the given Iterable (i.e. none).

        Example:

         Iterable<String> abc = newArrayList("a", "b", "c");
        
         // assertion succeeds:
         assertThat(actual).doesNotContainAnyElementsOf(newArrayList("d", "e"));
        
         // assertion fails:
         assertThat(actual).doesNotContainAnyElementsOf(newArrayList("d", "e", "a"));

        If you want to directly specify the elements not to find, use doesNotContain(Object...) instead.

        Specified by:
        doesNotContainAnyElementsOf in interface ObjectEnumerableAssert<SELF extends AbstractIterableAssert<SELF,​ACTUAL,​ELEMENT,​ELEMENT_ASSERT>,​ACTUAL extends java.lang.Iterable<? extends ELEMENT>>
        Parameters:
        iterable - the Iterable whose elements must not be in the actual group.
        Returns:
        this assertion object.
      • doesNotHaveDuplicates

        public SELF doesNotHaveDuplicates()
        Verifies that the actual group does not contain duplicates.

        Example:

         // an Iterable is used in the example but it would also work with an array
         Iterable<String> abc = newArrayList("a", "b", "c");
         Iterable<String> lotsOfAs = newArrayList("a", "a", "a");
        
         // assertion will pass
         assertThat(abc).doesNotHaveDuplicates();
        
         // assertion will fail
         assertThat(lotsOfAs).doesNotHaveDuplicates();
        Specified by:
        doesNotHaveDuplicates in interface ObjectEnumerableAssert<SELF extends AbstractIterableAssert<SELF,​ACTUAL,​ELEMENT,​ELEMENT_ASSERT>,​ACTUAL extends java.lang.Iterable<? extends ELEMENT>>
        Returns:
        this assertion object.
      • startsWith

        public SELF startsWith​(ELEMENT... sequence)
        Verifies that the actual group starts with the given sequence of objects, without any other objects between them. Similar to ObjectEnumerableAssert.containsSequence(Object...), but it also verifies that the first element in the sequence is also first element of the actual group.

        Example:

         // an Iterable is used in the example but it would also work with an array
         Iterable<String> abc = newArrayList("a", "b", "c");
        
         // assertions will pass
         assertThat(abc).startsWith("a")
                        .startsWith("a", "b");
        
         // assertion will fail
         assertThat(abc).startsWith("c");
        Specified by:
        startsWith in interface ObjectEnumerableAssert<SELF extends AbstractIterableAssert<SELF,​ACTUAL,​ELEMENT,​ELEMENT_ASSERT>,​ACTUAL extends java.lang.Iterable<? extends ELEMENT>>
        Parameters:
        sequence - the sequence of objects to look for.
        Returns:
        this assertion object.
      • endsWith

        public SELF endsWith​(ELEMENT first,
                             ELEMENT... rest)
        Verifies that the actual group ends with the given sequence of objects, without any other objects between them. Similar to ObjectEnumerableAssert.containsSequence(Object...), but it also verifies that the last element in the sequence is also last element of the actual group.

        Example:

         // an Iterable is used in the example but it would also work with an array
         Iterable<String> abc = newArrayList("a", "b", "c");
        
         // assertions will pass
         assertThat(abc).endsWith("c")
                        .endsWith("b", "c");
        
         // assertions will fail
         assertThat(abc).endsWith("a");
         assertThat(abc).endsWith("a", "b");
        Specified by:
        endsWith in interface ObjectEnumerableAssert<SELF extends AbstractIterableAssert<SELF,​ACTUAL,​ELEMENT,​ELEMENT_ASSERT>,​ACTUAL extends java.lang.Iterable<? extends ELEMENT>>
        Parameters:
        first - the first element of the sequence of objects to look for.
        rest - the rest of the sequence of objects to look for.
        Returns:
        this assertion object.
      • endsWith

        public SELF endsWith​(ELEMENT[] sequence)
        Verifies that the actual group ends with the given sequence of objects, without any other objects between them. Similar to ObjectEnumerableAssert.containsSequence(Object...), but it also verifies that the last element in the sequence is also last element of the actual group.

        Example:

         // an Iterable is used in the example but it would also work with an array
         Iterable<String> abc = newArrayList("a", "b", "c");
        
         // assertions will pass
         assertThat(abc).endsWith(new String[0])
                        .endsWith(new String[] {"c"})
                        .endsWith(new String[] {"b", "c"});
        
         // assertions will fail
         assertThat(abc).endsWith(new String[] {"a"});
         assertThat(abc).endsWith(new String[] {"a", "b"});
        Specified by:
        endsWith in interface ObjectEnumerableAssert<SELF extends AbstractIterableAssert<SELF,​ACTUAL,​ELEMENT,​ELEMENT_ASSERT>,​ACTUAL extends java.lang.Iterable<? extends ELEMENT>>
        Parameters:
        sequence - the sequence of objects to look for.
        Returns:
        this assertion object.
      • containsNull

        public SELF containsNull()
        Verifies that the actual group contains at least a null element.

        Example:

         Iterable<String> abc = newArrayList("a", "b", "c");
         Iterable<String> abNull = newArrayList("a", "b", null);
        
         // assertion will pass
         assertThat(abNull).containsNull();
        
         // assertion will fail
         assertThat(abc).containsNull();
        Specified by:
        containsNull in interface ObjectEnumerableAssert<SELF extends AbstractIterableAssert<SELF,​ACTUAL,​ELEMENT,​ELEMENT_ASSERT>,​ACTUAL extends java.lang.Iterable<? extends ELEMENT>>
        Returns:
        this assertion object.
      • doesNotContainNull

        public SELF doesNotContainNull()
        Verifies that the actual group does not contain null elements.

        Example:

         Iterable<String> abc = newArrayList("a", "b", "c");
         Iterable<String> abNull = newArrayList("a", "b", null);
        
         // assertion will pass
         assertThat(abc).doesNotContainNull();
        
         // assertion will fail
         assertThat(abNull).doesNotContainNull();
        Specified by:
        doesNotContainNull in interface ObjectEnumerableAssert<SELF extends AbstractIterableAssert<SELF,​ACTUAL,​ELEMENT,​ELEMENT_ASSERT>,​ACTUAL extends java.lang.Iterable<? extends ELEMENT>>
        Returns:
        this assertion object.
      • are

        public SELF are​(Condition<? super ELEMENT> condition)
        Verifies that each element value satisfies the given condition.

        Example:

         Iterable<String> abc  = newArrayList("a", "b", "c");
         Iterable<String> abcc = newArrayList("a", "b", "cc");
        
         Condition<String> singleCharacterString
              = new Condition<>(s -> s.length() == 1, "single character String");
        
         // assertion will pass
         assertThat(abc).are(singleCharacterString);
        
         // assertion will fail
         assertThat(abcc).are(singleCharacterString);
        Specified by:
        are in interface ObjectEnumerableAssert<SELF extends AbstractIterableAssert<SELF,​ACTUAL,​ELEMENT,​ELEMENT_ASSERT>,​ACTUAL extends java.lang.Iterable<? extends ELEMENT>>
        Parameters:
        condition - the given condition.
        Returns:
        this object.
      • areNot

        public SELF areNot​(Condition<? super ELEMENT> condition)
        Verifies that each element value does not satisfy the given condition.

        Example:

         Iterable<String> abc = newArrayList("a", "b", "c");
         Iterable<String> abcc = newArrayList("a", "b", "cc");
        
         Condition<String> moreThanOneCharacter =
             = new Condition<>(s -> s.length() > 1, "more than one character");
        
         // assertion will pass
         assertThat(abc).areNot(moreThanOneCharacter);
        
         // assertion will fail
         assertThat(abcc).areNot(moreThanOneCharacter);
        Specified by:
        areNot in interface ObjectEnumerableAssert<SELF extends AbstractIterableAssert<SELF,​ACTUAL,​ELEMENT,​ELEMENT_ASSERT>,​ACTUAL extends java.lang.Iterable<? extends ELEMENT>>
        Parameters:
        condition - the given condition.
        Returns:
        this object.
      • have

        public SELF have​(Condition<? super ELEMENT> condition)
        Verifies that all elements satisfy the given condition.

        Example:

         Iterable<String> abc = newArrayList("a", "b", "c");
         Iterable<String> abcc = newArrayList("a", "b", "cc");
        
         Condition<String> onlyOneCharacter =
             = new Condition<>(s -> s.length() == 1, "only one character");
        
         // assertion will pass
         assertThat(abc).have(onlyOneCharacter);
        
         // assertion will fail
         assertThat(abcc).have(onlyOneCharacter);
        Specified by:
        have in interface ObjectEnumerableAssert<SELF extends AbstractIterableAssert<SELF,​ACTUAL,​ELEMENT,​ELEMENT_ASSERT>,​ACTUAL extends java.lang.Iterable<? extends ELEMENT>>
        Parameters:
        condition - the given condition.
        Returns:
        this object.
      • doNotHave

        public SELF doNotHave​(Condition<? super ELEMENT> condition)
        Verifies that all elements do not satisfy the given condition.

        Example:

         Iterable<String> abc = newArrayList("a", "b", "c");
         Iterable<String> abcc = newArrayList("a", "b", "cc");
        
         Condition<String> moreThanOneCharacter =
             = new Condition<>(s -> s.length() > 1, "more than one character");
        
         // assertion will pass
         assertThat(abc).doNotHave(moreThanOneCharacter);
        
         // assertion will fail
         assertThat(abcc).doNotHave(moreThanOneCharacter);
        Specified by:
        doNotHave in interface ObjectEnumerableAssert<SELF extends AbstractIterableAssert<SELF,​ACTUAL,​ELEMENT,​ELEMENT_ASSERT>,​ACTUAL extends java.lang.Iterable<? extends ELEMENT>>
        Parameters:
        condition - the given condition.
        Returns:
        this object.
      • areAtLeast

        public SELF areAtLeast​(int times,
                               Condition<? super ELEMENT> condition)
        Verifies that there are at least n elements in the actual group satisfying the given condition.

        Example:

         Iterable<Integer> oneTwoThree = newArrayList(1, 2, 3);
        
         Condition<Integer> oddNumber = new Condition<>(value % 2 == 1, "odd number");
        
         // assertion will pass
         oneTwoThree.areAtLeast(2, oddNumber);
        
         // assertion will fail
         oneTwoThree.areAtLeast(3, oddNumber);
        Specified by:
        areAtLeast in interface ObjectEnumerableAssert<SELF extends AbstractIterableAssert<SELF,​ACTUAL,​ELEMENT,​ELEMENT_ASSERT>,​ACTUAL extends java.lang.Iterable<? extends ELEMENT>>
        Parameters:
        times - the minimum number of times the condition should be verified.
        condition - the given condition.
        Returns:
        this object.
      • areAtMost

        public SELF areAtMost​(int times,
                              Condition<? super ELEMENT> condition)
        Verifies that there are at most n elements in the actual group satisfying the given condition.

        Example:

         Iterable<Integer> oneTwoThree = newArrayList(1, 2, 3);
        
         Condition<Integer> oddNumber = new Condition<>(value % 2 == 1, "odd number");
        
         // assertions will pass
         oneTwoThree.areAtMost(2, oddNumber)
                    .areAtMost(3, oddNumber);
        
         // assertion will fail
         oneTwoThree.areAtMost(1, oddNumber);
        Specified by:
        areAtMost in interface ObjectEnumerableAssert<SELF extends AbstractIterableAssert<SELF,​ACTUAL,​ELEMENT,​ELEMENT_ASSERT>,​ACTUAL extends java.lang.Iterable<? extends ELEMENT>>
        Parameters:
        times - the number of times the condition should be at most verified.
        condition - the given condition.
        Returns:
        this object.
      • areExactly

        public SELF areExactly​(int times,
                               Condition<? super ELEMENT> condition)
        Verifies that there are exactly n elements in the actual group satisfying the given condition.

        Example:

         Iterable<Integer> oneTwoThree = newArrayList(1, 2, 3);
        
         Condition<Integer> oddNumber = new Condition<>(value % 2 == 1, "odd number");
        
         // assertion will pass
         oneTwoThree.areExactly(2, oddNumber);
        
         // assertions will fail
         oneTwoThree.areExactly(1, oddNumber);
         oneTwoThree.areExactly(3, oddNumber);
        Specified by:
        areExactly in interface ObjectEnumerableAssert<SELF extends AbstractIterableAssert<SELF,​ACTUAL,​ELEMENT,​ELEMENT_ASSERT>,​ACTUAL extends java.lang.Iterable<? extends ELEMENT>>
        Parameters:
        times - the exact number of times the condition should be verified.
        condition - the given condition.
        Returns:
        this object.
      • haveAtLeast

        public SELF haveAtLeast​(int times,
                                Condition<? super ELEMENT> condition)
        Verifies that there are at least n elements in the actual group satisfying the given condition.

        Example:

         Iterable<Integer> oneTwoThree = newArrayList(1, 2, 3);
        
         Condition<Integer> oddNumber = new Condition<>(value % 2 == 1, "odd number");
        
         // assertion will pass
         oneTwoThree.haveAtLeast(2, oddNumber);
        
         // assertion will fail
         oneTwoThree.haveAtLeast(3, oddNumber);
        This method is an alias for ObjectEnumerableAssert.areAtLeast(int, Condition).
        Specified by:
        haveAtLeast in interface ObjectEnumerableAssert<SELF extends AbstractIterableAssert<SELF,​ACTUAL,​ELEMENT,​ELEMENT_ASSERT>,​ACTUAL extends java.lang.Iterable<? extends ELEMENT>>
        Parameters:
        times - the minimum number of times the condition must hold.
        condition - the given condition.
        Returns:
        this assertion object.
      • haveAtMost

        public SELF haveAtMost​(int times,
                               Condition<? super ELEMENT> condition)
        Verifies that there are at most n elements in the actual group satisfying the given condition.

        Example:

         Iterable<Integer> oneTwoThree = newArrayList(1, 2, 3);
        
         Condition<Integer> oddNumber = new Condition<>(value % 2 == 1, "odd number");
        
         // assertions will pass
         oneTwoThree.haveAtMost(2, oddNumber);
         oneTwoThree.haveAtMost(3, oddNumber);
        
         // assertion will fail
         oneTwoThree.haveAtMost(1, oddNumber);
        This method is an alias ObjectEnumerableAssert.areAtMost(int, Condition).
        Specified by:
        haveAtMost in interface ObjectEnumerableAssert<SELF extends AbstractIterableAssert<SELF,​ACTUAL,​ELEMENT,​ELEMENT_ASSERT>,​ACTUAL extends java.lang.Iterable<? extends ELEMENT>>
        Parameters:
        times - the maximum number of times the condition must hold.
        condition - the given condition.
        Returns:
        this assertion object.
      • haveExactly

        public SELF haveExactly​(int times,
                                Condition<? super ELEMENT> condition)
        Verifies that there are exactly n elements in the actual group satisfying the given condition.

        Example:

         Iterable<Integer> oneTwoThree = newArrayList(1, 2, 3);
        
         Condition<Integer> oddNumber = new Condition<>(value % 2 == 1, "odd number");
        
         // assertion will pass
         oneTwoThree.haveExactly(2, oddNumber);
        
         // assertions will fail
         oneTwoThree.haveExactly(1, oddNumber);
         oneTwoThree.haveExactly(3, oddNumber);
        This method is an alias ObjectEnumerableAssert.areExactly(int, Condition).
        Specified by:
        haveExactly in interface ObjectEnumerableAssert<SELF extends AbstractIterableAssert<SELF,​ACTUAL,​ELEMENT,​ELEMENT_ASSERT>,​ACTUAL extends java.lang.Iterable<? extends ELEMENT>>
        Parameters:
        times - the exact number of times the condition must hold.
        condition - the given condition.
        Returns:
        this assertion object.
      • hasAtLeastOneElementOfType

        public SELF hasAtLeastOneElementOfType​(java.lang.Class<?> expectedType)
        Verifies that at least one element in the actual Iterable has the specified type (matching includes subclasses of the given type).

        Example:

         List<Number> numbers = new ArrayList<Number>();
         numbers.add(1);
         numbers.add(2L);
        
         // successful assertion:
         assertThat(numbers).hasAtLeastOneElementOfType(Long.class);
        
         // assertion failure:
         assertThat(numbers).hasAtLeastOneElementOfType(Float.class);
        Specified by:
        hasAtLeastOneElementOfType in interface ObjectEnumerableAssert<SELF extends AbstractIterableAssert<SELF,​ACTUAL,​ELEMENT,​ELEMENT_ASSERT>,​ACTUAL extends java.lang.Iterable<? extends ELEMENT>>
        Parameters:
        expectedType - the expected type.
        Returns:
        this assertion object.
        Throws:
        java.lang.NullPointerException - if the given type is null.
        java.lang.AssertionError - if the actual Object group does not have any elements of the given type.
      • hasOnlyElementsOfType

        public SELF hasOnlyElementsOfType​(java.lang.Class<?> expectedType)
        Verifies that all elements in the actual Iterable have the specified type (matching includes subclasses of the given type).

        Example:

         List<Number> numbers = new ArrayList<Number>();
         numbers.add(1);
         numbers.add(2);
         numbers.add(3);
        
         // successful assertions:
         assertThat(numbers).hasOnlyElementsOfType(Number.class);
         assertThat(numbers).hasOnlyElementsOfType(Integer.class);
        
         // assertion failure:
         assertThat(numbers).hasOnlyElementsOfType(Long.class);
        Specified by:
        hasOnlyElementsOfType in interface ObjectEnumerableAssert<SELF extends AbstractIterableAssert<SELF,​ACTUAL,​ELEMENT,​ELEMENT_ASSERT>,​ACTUAL extends java.lang.Iterable<? extends ELEMENT>>
        Parameters:
        expectedType - the expected type.
        Returns:
        this assertion object.
        Throws:
        java.lang.NullPointerException - if the given type is null.
        java.lang.AssertionError - if one element is not of the expected type.
      • doesNotHaveAnyElementsOfTypes

        public SELF doesNotHaveAnyElementsOfTypes​(java.lang.Class<?>... unexpectedTypes)
        Verifies that all elements in the actual Iterable do not have the specified types (including subclasses).

        Example:

         List<Number> numbers = new ArrayList<>();
         numbers.add(1);
         numbers.add(2);
         numbers.add(3.0);
        
         // successful assertions:
         assertThat(numbers).doesNotHaveAnyElementsOfTypes(Long.class, Float.class);
        
         // assertion failure:
         assertThat(numbers).doesNotHaveAnyElementsOfTypes(Long.class, Integer.class);
        Specified by:
        doesNotHaveAnyElementsOfTypes in interface ObjectEnumerableAssert<SELF extends AbstractIterableAssert<SELF,​ACTUAL,​ELEMENT,​ELEMENT_ASSERT>,​ACTUAL extends java.lang.Iterable<? extends ELEMENT>>
        Parameters:
        unexpectedTypes - the not expected types.
        Returns:
        this assertion object.
        Throws:
        java.lang.NullPointerException - if the given type is null.
        java.lang.AssertionError - if one element's type matches the given types.
        Since:
        2.9.0 / 3.9.0
      • hasOnlyElementsOfTypes

        public SELF hasOnlyElementsOfTypes​(java.lang.Class<?>... types)
        Verifies that all elements of the actual group are instances of the given types.

        Example:

         Iterable<? extends Object> objects = Arrays.asList("foo", new StringBuilder());
        
         // assertions will pass
         assertThat(objects).hasOnlyElementsOfTypes(CharSequence.class)
                            .hasOnlyElementsOfTypes(String.class, StringBuilder.class);
        
         // assertions will fail
         assertThat(objects).hasOnlyElementsOfTypes(Number.class);
         assertThat(objects).hasOnlyElementsOfTypes(String.class, Number.class);
         assertThat(objects).hasOnlyElementsOfTypes(String.class);
        Specified by:
        hasOnlyElementsOfTypes in interface ObjectEnumerableAssert<SELF extends AbstractIterableAssert<SELF,​ACTUAL,​ELEMENT,​ELEMENT_ASSERT>,​ACTUAL extends java.lang.Iterable<? extends ELEMENT>>
        Parameters:
        types - the expected classes and interfaces
        Returns:
        this assertion object.
      • containsAll

        public SELF containsAll​(java.lang.Iterable<? extends ELEMENT> iterable)
        Verifies that the actual group contains all the elements of given Iterable, in any order.

        Example:

         Iterable<String> abc = Arrays.asList("a", "b", "c");
        
         // assertions will pass
         assertThat(abc).containsAll(Arrays.asList("b", "c"))
                        .containsAll(Arrays.asList("a", "b", "c"));
        
         // assertions will fail
         assertThat(abc).containsAll(Arrays.asList("d"));
         assertThat(abc).containsAll(Arrays.asList("a", "b", "c", "d"));

        If you want to directly specify the elements to check, use contains(Object...) instead.

        Specified by:
        containsAll in interface ObjectEnumerableAssert<SELF extends AbstractIterableAssert<SELF,​ACTUAL,​ELEMENT,​ELEMENT_ASSERT>,​ACTUAL extends java.lang.Iterable<? extends ELEMENT>>
        Parameters:
        iterable - the given Iterable we will get elements from.
        Returns:
        this assertion object.
      • usingElementComparator

        public SELF usingElementComparator​(java.util.Comparator<? super ELEMENT> elementComparator)
        Use given custom comparator instead of relying on actual type A equals method to compare group elements for incoming assertion checks.

        Custom comparator is bound to assertion instance, meaning that if a new assertion is created, it will use default comparison strategy.

        Examples :
         // compares invoices by payee
         assertThat(invoiceList).usingComparator(invoicePayeeComparator).isEqualTo(expectedInvoiceList);
        
         // compares invoices by date, doesNotHaveDuplicates and contains both use the given invoice date comparator
         assertThat(invoiceList).usingComparator(invoiceDateComparator).doesNotHaveDuplicates().contains(may2010Invoice);
        
         // as assertThat(invoiceList) creates a new assertion, it falls back to standard comparison strategy
         // based on Invoice's equal method to compare invoiceList elements to lowestInvoice.
         assertThat(invoiceList).contains(lowestInvoice);
        
         // standard comparison : the fellowshipOfTheRing includes Gandalf but not Sauron (believe me) ...
         assertThat(fellowshipOfTheRing).contains(gandalf)
                                        .doesNotContain(sauron);
        
         // ... but if we compare only races, Sauron is in fellowshipOfTheRing because he's a Maia like Gandalf.
         assertThat(fellowshipOfTheRing).usingElementComparator(raceComparator)
                                        .contains(sauron);
        Specified by:
        usingElementComparator in interface EnumerableAssert<SELF extends AbstractIterableAssert<SELF,​ACTUAL,​ELEMENT,​ELEMENT_ASSERT>,​ACTUAL extends java.lang.Iterable<? extends ELEMENT>>
        Parameters:
        elementComparator - the comparator to use for incoming assertion checks.
        Returns:
        this assertion object.
      • usingExtendedByTypesElementComparator

        private SELF usingExtendedByTypesElementComparator​(java.util.Comparator<java.lang.Object> elementComparator)
      • containsAnyOf

        public SELF containsAnyOf​(ELEMENT... values)
        Verifies that the actual Iterable contains at least one of the given values.

        Example :

         Iterable<String> abc = Arrays.asList("a", "b", "c");
        
         // assertions will pass
         assertThat(abc).containsAnyOf("b")
                        .containsAnyOf("b", "c")
                        .containsAnyOf("a", "b", "c")
                        .containsAnyOf("a", "b", "c", "d")
                        .containsAnyOf("e", "f", "g", "b");
        
         // assertions will fail
         assertThat(abc).containsAnyOf("d");
         assertThat(abc).containsAnyOf("d", "e", "f", "g");
        Specified by:
        containsAnyOf in interface ObjectEnumerableAssert<SELF extends AbstractIterableAssert<SELF,​ACTUAL,​ELEMENT,​ELEMENT_ASSERT>,​ACTUAL extends java.lang.Iterable<? extends ELEMENT>>
        Parameters:
        values - the values whose at least one which is expected to be in the Iterable under test.
        Returns:
        this assertion object.
        Throws:
        java.lang.NullPointerException - if the array of values is null.
        java.lang.IllegalArgumentException - if the array of values is empty and the Iterable under test is not empty.
        java.lang.AssertionError - if the Iterable under test is null.
        java.lang.AssertionError - if the Iterable under test does not contain any of the given values.
        Since:
        2.9.0 / 3.9.0
      • containsAnyElementsOf

        public SELF containsAnyElementsOf​(java.lang.Iterable<? extends ELEMENT> iterable)
        Verifies that the Iterable under test contains at least one of the given Iterable elements.

        Example :

         Iterable<String> abc = Arrays.asList("a", "b", "c");
        
         // assertions will pass
         assertThat(abc).containsAnyElementsOf(Arrays.asList("b"))
                        .containsAnyElementsOf(Arrays.asList("b", "c"))
                        .containsAnyElementsOf(Arrays.asList("a", "b", "c"))
                        .containsAnyElementsOf(Arrays.asList("a", "b", "c", "d"))
                        .containsAnyElementsOf(Arrays.asList("e", "f", "g", "b"));
        
         // assertions will fail
         assertThat(abc).containsAnyElementsOf(Arrays.asList("d"));
         assertThat(abc).containsAnyElementsOf(Arrays.asList("d", "e", "f", "g"));
        Specified by:
        containsAnyElementsOf in interface ObjectEnumerableAssert<SELF extends AbstractIterableAssert<SELF,​ACTUAL,​ELEMENT,​ELEMENT_ASSERT>,​ACTUAL extends java.lang.Iterable<? extends ELEMENT>>
        Parameters:
        iterable - the iterable whose at least one element is expected to be in the Iterable under test.
        Returns:
        this assertion object.
        Throws:
        java.lang.NullPointerException - if the iterable of expected values is null.
        java.lang.IllegalArgumentException - if the iterable of expected values is empty and the Iterable under test is not empty.
        java.lang.AssertionError - if the Iterable under test is null.
        java.lang.AssertionError - if the Iterable under test does not contain any of elements from the given Iterable.
        Since:
        2.9.0 / 3.9.0
      • extracting

        public AbstractListAssert<?,​java.util.List<? extends java.lang.Object>,​java.lang.Object,​ObjectAssert<java.lang.Object>> extracting​(java.lang.String propertyOrField)
        Extract the values of the given field or property from the Iterable's elements under test into a new Iterable, this new Iterable becoming the Iterable under test.

        It allows you to test a property/field of the Iterable's elements instead of testing the elements themselves, which can be be much less work !

        Let's take a look at an example to make things clearer :

         // build a list of TolkienCharacters: a TolkienCharacter has a name, and age and a Race (a specific class)
         // they can be public field or properties, both can be extracted.
         List<TolkienCharacter> fellowshipOfTheRing = new ArrayList<TolkienCharacter>();
        
         fellowshipOfTheRing.add(new TolkienCharacter("Frodo", 33, HOBBIT));
         fellowshipOfTheRing.add(new TolkienCharacter("Sam", 38, HOBBIT));
         fellowshipOfTheRing.add(new TolkienCharacter("Gandalf", 2020, MAIA));
         fellowshipOfTheRing.add(new TolkienCharacter("Legolas", 1000, ELF));
         fellowshipOfTheRing.add(new TolkienCharacter("Pippin", 28, HOBBIT));
         fellowshipOfTheRing.add(new TolkienCharacter("Gimli", 139, DWARF));
         fellowshipOfTheRing.add(new TolkienCharacter("Aragorn", 87, MAN);
         fellowshipOfTheRing.add(new TolkienCharacter("Boromir", 37, MAN));
        
         // let's verify the names of the TolkienCharacters in fellowshipOfTheRing :
        
         assertThat(fellowshipOfTheRing).extracting("name")
                   .contains("Boromir", "Gandalf", "Frodo")
                   .doesNotContain("Sauron", "Elrond");
        
         // you can extract nested properties/fields like the name of the race :
        
         assertThat(fellowshipOfTheRing).extracting("race.name")
                                        .contains("Hobbit", "Elf")
                                        .doesNotContain("Orc");

        A property with the given name is searched for first. If it doesn't exist a field with the given name is looked for. If the field does not exist an IntrospectionError is thrown. By default private fields are read but you can change this with Assertions.setAllowComparingPrivateFields(boolean). Trying to read a private field when it's not allowed leads to an IntrospectionError.

        Note that the order of extracted property/field values is consistent with the iteration order of the Iterable under test, for example if it's a HashSet, you won't be able to make any assumptions on the extracted values order.


        Extracting also support maps, that is, instead of extracting values from an Object, it extracts maps values corresponding to the given keys.

        Example:

         Employee yoda = new Employee(1L, new Name("Yoda"), 800);
         Employee luke = new Employee(2L, new Name("Luke"), 22);
         Employee han = new Employee(3L, new Name("Han"), 31);
        
         // build two maps
         Map<String, Employee> map1 = new HashMap<>();
         map1.put("key1", yoda);
         map1.put("key2", luke);
        
         Map<String, Employee> map2 = new HashMap<>();
         map2.put("key1", yoda);
         map2.put("key2", han);
        
         // instead of a list of objects, we have a list of maps
         List<Map<String, Employee>> maps = asList(map1, map2);
        
         // extracting a property in that case = get values from maps using the property as a key
         assertThat(maps).extracting("key2").containsExactly(luke, han);
         assertThat(maps).extracting("key1").containsExactly(yoda, yoda);
        
         // type safe version
         assertThat(maps).extracting(key2, Employee.class).containsExactly(luke, han);
        
         // it works with several keys, extracted values being wrapped in a Tuple
         assertThat(maps).extracting("key1", "key2").containsExactly(tuple(yoda, luke), tuple(yoda, han));
        
         // unknown keys leads to null (map behavior)
         assertThat(maps).extracting("bad key").containsExactly(null, null);
        Parameters:
        propertyOrField - the property/field to extract from the elements of the Iterable under test
        Returns:
        a new assertion object whose object under test is the list of extracted property/field values.
        Throws:
        IntrospectionError - if no field or property exists with the given name in one of the initial Iterable's element.
      • extractingResultOf

        public AbstractListAssert<?,​java.util.List<? extends java.lang.Object>,​java.lang.Object,​ObjectAssert<java.lang.Object>> extractingResultOf​(java.lang.String method)
        Extract the result of given method invocation on the Iterable's elements under test into a new Iterable, this new Iterable becoming the Iterable under test.

        It allows you to test the method results of the Iterable's elements instead of testing the elements themselves. This is especially useful for classes that do not conform to the Java Bean's getter specification (i.e. public String toString() or public String status() instead of public String getStatus()).

        Let's take a look at an example to make things clearer :

         // Build a array of WesterosHouse, a WesterosHouse has a method: public String sayTheWords()
        
         List<WesterosHouse> greatHouses = new ArrayList<WesterosHouse>();
         greatHouses.add(new WesterosHouse("Stark", "Winter is Coming"));
         greatHouses.add(new WesterosHouse("Lannister", "Hear Me Roar!"));
         greatHouses.add(new WesterosHouse("Greyjoy", "We Do Not Sow"));
         greatHouses.add(new WesterosHouse("Baratheon", "Our is the Fury"));
         greatHouses.add(new WesterosHouse("Martell", "Unbowed, Unbent, Unbroken"));
         greatHouses.add(new WesterosHouse("Tyrell", "Growing Strong"));
        
         // let's verify the words of the great houses of Westeros:
         assertThat(greatHouses).extractingResultOf("sayTheWords")
                                .contains("Winter is Coming", "We Do Not Sow", "Hear Me Roar")
                                .doesNotContain("Lannisters always pay their debts");
        Following requirements have to be met to extract method results:
        • method has to be public,
        • method cannot accept any arguments,
        • method cannot return void.

        Note that the order of extracted results is consistent with the iteration order of the Iterable under test, for example if it's a HashSet, you won't be able to make any assumptions on the extracted results order.

        Parameters:
        method - the name of the method which result is to be extracted from the array under test
        Returns:
        a new assertion object whose object under test is the Iterable of extracted values.
        Throws:
        java.lang.IllegalArgumentException - if no method exists with the given name, or method is not public, or method does return void, or method accepts arguments.
      • extractingResultOf

        public <P> AbstractListAssert<?,​java.util.List<? extends P>,​P,​ObjectAssert<P>> extractingResultOf​(java.lang.String method,
                                                                                                                            java.lang.Class<P> extractedType)
        Extract the result of given method invocation on the Iterable's elements under test into a new list of the given class, this new List becoming the object under test.

        It allows you to test the method results of the Iterable's elements instead of testing the elements themselves, it is especially useful for classes that do not conform to the Java Bean's getter specification (i.e. public String toString() or public String status() instead of public String getStatus()).

        Let's take an example to make things clearer :

         // Build a array of WesterosHouse, a WesterosHouse has a method: public String sayTheWords()
         List<WesterosHouse> greatHouses = new ArrayList<WesterosHouse>();
         greatHouses.add(new WesterosHouse("Stark", "Winter is Coming"));
         greatHouses.add(new WesterosHouse("Lannister", "Hear Me Roar!"));
         greatHouses.add(new WesterosHouse("Greyjoy", "We Do Not Sow"));
         greatHouses.add(new WesterosHouse("Baratheon", "Our is the Fury"));
         greatHouses.add(new WesterosHouse("Martell", "Unbowed, Unbent, Unbroken"));
         greatHouses.add(new WesterosHouse("Tyrell", "Growing Strong"));
        
         // let's verify the words of the great houses of Westeros:
         assertThat(greatHouses).extractingResultOf("sayTheWords", String.class)
                                .contains("Winter is Coming", "We Do Not Sow", "Hear Me Roar")
                                .doesNotContain("Lannisters always pay their debts");
        Following requirements have to be met to extract method results:
        • method has to be public,
        • method cannot accept any arguments,
        • method cannot return void.

        Note that the order of extracted property/field values is consistent with the iteration order of the Iterable under test, for example if it's a HashSet, you won't be able to make any assumptions of the extracted values order.

        Type Parameters:
        P - the type of elements extracted.
        Parameters:
        method - the name of the method which result is to be extracted from the array under test
        extractedType - type of element of the extracted List
        Returns:
        a new assertion object whose object under test is the Iterable of extracted values.
        Throws:
        java.lang.IllegalArgumentException - if no method exists with the given name, or method is not public, or method does return void or method accepts arguments.
      • extracting

        public <P> AbstractListAssert<?,​java.util.List<? extends P>,​P,​ObjectAssert<P>> extracting​(java.lang.String propertyOrField,
                                                                                                                    java.lang.Class<P> extractingType)
        Extract the values of given field or property from the Iterable's elements under test into a new Iterable, this new Iterable becoming the Iterable under test.

        It allows you to test a property/field of the Iterable's elements instead of testing the elements themselves, which can be much less work !

        Let's take an example to make things clearer :

         // Build a list of TolkienCharacter, a TolkienCharacter has a name, and age and a Race (a specific class)
         // they can be public field or properties, both can be extracted.
         List<TolkienCharacter> fellowshipOfTheRing = new ArrayList<TolkienCharacter>();
        
         fellowshipOfTheRing.add(new TolkienCharacter("Frodo", 33, HOBBIT));
         fellowshipOfTheRing.add(new TolkienCharacter("Sam", 38, HOBBIT));
         fellowshipOfTheRing.add(new TolkienCharacter("Gandalf", 2020, MAIA));
         fellowshipOfTheRing.add(new TolkienCharacter("Legolas", 1000, ELF));
         fellowshipOfTheRing.add(new TolkienCharacter("Pippin", 28, HOBBIT));
         fellowshipOfTheRing.add(new TolkienCharacter("Gimli", 139, DWARF));
         fellowshipOfTheRing.add(new TolkienCharacter("Aragorn", 87, MAN);
         fellowshipOfTheRing.add(new TolkienCharacter("Boromir", 37, MAN));
        
         // let's verify the names of TolkienCharacter in fellowshipOfTheRing :
         assertThat(fellowshipOfTheRing).extracting("name", String.class)
                   .contains("Boromir", "Gandalf", "Frodo")
                   .doesNotContain("Sauron", "Elrond");
        
         // you can extract nested property/field like the name of Race :
         assertThat(fellowshipOfTheRing).extracting("race.name", String.class)
                                        .contains("Hobbit", "Elf")
                                        .doesNotContain("Orc");
        A property with the given name is looked for first, if it doesn't exist then a field with the given name is looked for, if the field does not exist an IntrospectionError is thrown, by default private fields are read but you can change this with Assertions.setAllowComparingPrivateFields(boolean), trying to read a private field when it's not allowed leads to an IntrospectionError.

        Note that the order of extracted property/field values is consistent with the iteration order of the Iterable under test, for example if it's a HashSet, you won't be able to make any assumptions on the extracted values order.


        Extracting also support maps, that is, instead of extracting values from an Object, it extract maps values corresponding to the given keys.

        Example:

         Employee yoda = new Employee(1L, new Name("Yoda"), 800);
         Employee luke = new Employee(2L, new Name("Luke"), 22);
         Employee han = new Employee(3L, new Name("Han"), 31);
        
         // build two maps
         Map<String, Employee> map1 = new HashMap<>();
         map1.put("key1", yoda);
         map1.put("key2", luke);
        
         Map<String, Employee> map2 = new HashMap<>();
         map2.put("key1", yoda);
         map2.put("key2", han);
        
         // instead of a list of objects, we have a list of maps
         List<Map<String, Employee>> maps = asList(map1, map2);
        
         // extracting a property in that case = get values from maps using property as a key
         assertThat(maps).extracting(key2, Employee.class).containsExactly(luke, han);
        
         // non type safe version
         assertThat(maps).extracting("key2").containsExactly(luke, han);
         assertThat(maps).extracting("key1").containsExactly(yoda, yoda);
        
         // it works with several keys, extracted values being wrapped in a Tuple
         assertThat(maps).extracting("key1", "key2").containsExactly(tuple(yoda, luke), tuple(yoda, han));
        
         // unknown keys leads to null (map behavior)
         assertThat(maps).extracting("bad key").containsExactly(null, null);
        Type Parameters:
        P - the type of elements extracted.
        Parameters:
        propertyOrField - the property/field to extract from the Iterable under test
        extractingType - type to return
        Returns:
        a new assertion object whose object under test is the list of extracted property/field values.
        Throws:
        IntrospectionError - if no field or property exists with the given name in one of the initial Iterable's element.
      • extracting

        public AbstractListAssert<?,​java.util.List<? extends Tuple>,​Tuple,​ObjectAssert<Tuple>> extracting​(java.lang.String... propertiesOrFields)
        Extract the values of the given fields/properties from the Iterable's elements under test into a new Iterable composed of Tuples (a simple data structure), this new Iterable becoming the Iterable under test.

        It allows you to test fields/properties of the Iterable's elements instead of testing the elements themselves, which can be much less work!

        The Tuple data corresponds to the extracted values of the given fields/properties, for instance if you ask to extract "id", "name" and "email" then each Tuple data will be composed of id, name and email extracted from the element of the initial Iterable (the Tuple's data order is the same as the given fields/properties order).

        Let's take an example to make things clearer :

         // Build a list of TolkienCharacter, a TolkienCharacter has a name, and age and a Race (a specific class)
         // they can be public field or properties, both can be extracted.
         List<TolkienCharacter> fellowshipOfTheRing = new ArrayList<TolkienCharacter>();
        
         fellowshipOfTheRing.add(new TolkienCharacter("Frodo", 33, HOBBIT));
         fellowshipOfTheRing.add(new TolkienCharacter("Sam", 38, HOBBIT));
         fellowshipOfTheRing.add(new TolkienCharacter("Gandalf", 2020, MAIA));
         fellowshipOfTheRing.add(new TolkienCharacter("Legolas", 1000, ELF));
         fellowshipOfTheRing.add(new TolkienCharacter("Pippin", 28, HOBBIT));
         fellowshipOfTheRing.add(new TolkienCharacter("Gimli", 139, DWARF));
         fellowshipOfTheRing.add(new TolkienCharacter("Aragorn", 87, MAN);
         fellowshipOfTheRing.add(new TolkienCharacter("Boromir", 37, MAN));
        
         // let's verify 'name' and 'age' of some TolkienCharacter in fellowshipOfTheRing :
         assertThat(fellowshipOfTheRing).extracting("name", "age")
                                        .contains(tuple("Boromir", 37),
                                                  tuple("Sam", 38),
                                                  tuple("Legolas", 1000));
        
        
         // extract 'name', 'age' and Race name values :
         assertThat(fellowshipOfTheRing).extracting("name", "age", "race.name")
                                        .contains(tuple("Boromir", 37, "Man"),
                                                  tuple("Sam", 38, "Hobbit"),
                                                  tuple("Legolas", 1000, "Elf"));
        A property with the given name is looked for first, if it doesn't exist then a field with the given name is looked for, if the field does not exist an IntrospectionError is thrown, by default private fields are read but you can change this with Assertions.setAllowComparingPrivateFields(boolean), trying to read a private field when it's not allowed leads to an IntrospectionError.

        Note that the order of extracted property/field values is consistent with the iteration order of the Iterable under test, for example if it's a HashSet, you won't be able to make any assumptions on the extracted values order.


        Extracting also support maps, that is, instead of extracting values from an Object, it extract maps values corresponding to the given keys.

        Example:

         Employee yoda = new Employee(1L, new Name("Yoda"), 800);
         Employee luke = new Employee(2L, new Name("Luke"), 22);
         Employee han = new Employee(3L, new Name("Han"), 31);
        
         // build two maps
         Map<String, Employee> map1 = new HashMap<>();
         map1.put("key1", yoda);
         map1.put("key2", luke);
        
         Map<String, Employee> map2 = new HashMap<>();
         map2.put("key1", yoda);
         map2.put("key2", han);
        
         // instead of a list of objects, we have a list of maps
         List<Map<String, Employee>> maps = asList(map1, map2);
        
         // extracting a property in that case = get values from maps using property as a key
         assertThat(maps).extracting("key2").containsExactly(luke, han);
         assertThat(maps).extracting("key1").containsExactly(yoda, yoda);
        
         // it works with several keys, extracted values being wrapped in a Tuple
         assertThat(maps).extracting("key1", "key2").containsExactly(tuple(yoda, luke), tuple(yoda, han));
        
         // unknown keys leads to null (map behavior)
         assertThat(maps).extracting("bad key").containsExactly(null, null);
        Parameters:
        propertiesOrFields - the properties/fields to extract from the elements of the Iterable under test
        Returns:
        a new assertion object whose object under test is the list of Tuple with extracted properties/fields values as data.
        Throws:
        IntrospectionError - if one of the given name does not match a field or property in one of the initial Iterable's element.
      • extracting

        public <V> AbstractListAssert<?,​java.util.List<? extends V>,​V,​ObjectAssert<V>> extracting​(java.util.function.Function<? super ELEMENT,​V> extractor)
        Extract the values from Iterable's elements under test by applying an extracting function on them. The returned iterable becomes a new object under test.

        It allows to test values from the elements in more safe way than by using extracting(String), as it doesn't utilize introspection.

        Let's have a look at an example :

         // Build a list of TolkienCharacter, a TolkienCharacter has a name, and age and a Race (a specific class)
         // they can be public field or properties, both can be extracted.
         List<TolkienCharacter> fellowshipOfTheRing = new ArrayList<TolkienCharacter>();
        
         fellowshipOfTheRing.add(new TolkienCharacter("Frodo", 33, HOBBIT));
         fellowshipOfTheRing.add(new TolkienCharacter("Sam", 38, HOBBIT));
         fellowshipOfTheRing.add(new TolkienCharacter("Gandalf", 2020, MAIA));
         fellowshipOfTheRing.add(new TolkienCharacter("Legolas", 1000, ELF));
         fellowshipOfTheRing.add(new TolkienCharacter("Pippin", 28, HOBBIT));
         fellowshipOfTheRing.add(new TolkienCharacter("Gimli", 139, DWARF));
         fellowshipOfTheRing.add(new TolkienCharacter("Aragorn", 87, MAN);
         fellowshipOfTheRing.add(new TolkienCharacter("Boromir", 37, MAN));
        
         // fellowship has hobbitses, right, my presioussss?
         assertThat(fellowshipOfTheRing).extracting(TolkienCharacter::getRace).contains(HOBBIT);
        Note that the order of extracted property/field values is consistent with the iteration order of the Iterable under test, for example if it's a HashSet, you won't be able to make any assumptions on the extracted values order.
        Type Parameters:
        V - the type of elements extracted.
        Parameters:
        extractor - the object transforming input object to desired one
        Returns:
        a new assertion object whose object under test is the list of values extracted
      • extracting

        public <V,​EXCEPTION extends java.lang.Exception> AbstractListAssert<?,​java.util.List<? extends V>,​V,​ObjectAssert<V>> extracting​(ThrowingExtractor<? super ELEMENT,​V,​EXCEPTION> extractor)
        Extract the values from Iterable's elements under test by applying an extracting function (which might throw an exception) on them. The returned iterable becomes a new object under test.

        Any checked exception raised in the extractor is rethrown wrapped in a RuntimeException.

        It allows to test values from the elements in more safe way than by using extracting(String), as it doesn't utilize introspection.

        Let's have a look at an example :

         // Build a list of TolkienCharacter, a TolkienCharacter has a name, and age and a Race (a specific class)
         // they can be public field or properties, both can be extracted.
         List<TolkienCharacter> fellowshipOfTheRing = new ArrayList<TolkienCharacter>();
        
         fellowshipOfTheRing.add(new TolkienCharacter("Frodo", 33, HOBBIT));
         fellowshipOfTheRing.add(new TolkienCharacter("Sam", 38, HOBBIT));
         fellowshipOfTheRing.add(new TolkienCharacter("Gandalf", 2020, MAIA));
         fellowshipOfTheRing.add(new TolkienCharacter("Legolas", 1000, ELF));
         fellowshipOfTheRing.add(new TolkienCharacter("Pippin", 28, HOBBIT));
         fellowshipOfTheRing.add(new TolkienCharacter("Gimli", 139, DWARF));
         fellowshipOfTheRing.add(new TolkienCharacter("Aragorn", 87, MAN);
         fellowshipOfTheRing.add(new TolkienCharacter("Boromir", 37, MAN));
        
         assertThat(fellowshipOfTheRing).extracting(input -> {
           if (input.getAge() < 20) {
             throw new Exception("age < 20");
           }
           return input.getName();
         }).contains("Frodo");
        Note that the order of extracted property/field values is consistent with the iteration order of the Iterable under test, for example if it's a HashSet, you won't be able to make any assumptions on the extracted values order.
        Type Parameters:
        EXCEPTION - the exception type of ThrowingExtractor
        V - the type of elements extracted.
        Parameters:
        extractor - the object transforming input object to desired one
        Returns:
        a new assertion object whose object under test is the list of values extracted
        Since:
        3.7.0
      • newListAssertInstanceForMethodsChangingElementType

        private <V> AbstractListAssert<?,​java.util.List<? extends V>,​V,​ObjectAssert<V>> newListAssertInstanceForMethodsChangingElementType​(java.util.List<V> values)
      • flatExtracting

        public <V> AbstractListAssert<?,​java.util.List<? extends V>,​V,​ObjectAssert<V>> flatExtracting​(java.util.function.Function<? super ELEMENT,​? extends java.util.Collection<V>> extractor)
        Extract the Iterable values from Iterable's elements under test by applying an Iterable extracting function on them and concatenating the result lists. The returned iterable becomes a new object under test.

        It allows testing the results of extracting values that are represented by Iterables.

        For example:

         CartoonCharacter bart = new CartoonCharacter("Bart Simpson");
         CartoonCharacter lisa = new CartoonCharacter("Lisa Simpson");
         CartoonCharacter maggie = new CartoonCharacter("Maggie Simpson");
         CartoonCharacter homer = new CartoonCharacter("Homer Simpson");
         homer.getChildren().add(bart);
         homer.getChildren().add(lisa);
         homer.getChildren().add(maggie);
        
         CartoonCharacter pebbles = new CartoonCharacter("Pebbles Flintstone");
         CartoonCharacter fred = new CartoonCharacter("Fred Flintstone");
         fred.getChildren().add(pebbles);
        
         List<CartoonCharacter> parents = list(homer, fred);
        
         // check children property which is a List<CartoonCharacter>
         assertThat(parents).flatExtracting(CartoonCharacter::getChildren)
                            .containsOnly(bart, lisa, maggie, pebbles);
        The order of extracted values is consistent with both the order of the collection itself, as well as the extracted collections.
        Type Parameters:
        V - the type of elements extracted.
        Parameters:
        extractor - the object transforming input object to an Iterable of desired ones
        Returns:
        a new assertion object whose object under test is the list of values extracted
        Throws:
        java.lang.NullPointerException - if one of the Iterable's element is null.
      • flatExtracting

        public <V,​EXCEPTION extends java.lang.Exception> AbstractListAssert<?,​java.util.List<? extends V>,​V,​ObjectAssert<V>> flatExtracting​(ThrowingExtractor<? super ELEMENT,​? extends java.util.Collection<V>,​EXCEPTION> extractor)
        Extract the Iterable values from Iterable's elements under test by applying an Iterable extracting function (which might throw a checked exception) on them and concatenating the result lists. The returned iterable becomes a new object under test.

        It allows testing the results of extracting values that are represented by Iterables.

        For example:

         CartoonCharacter bart = new CartoonCharacter("Bart Simpson");
         CartoonCharacter lisa = new CartoonCharacter("Lisa Simpson");
         CartoonCharacter maggie = new CartoonCharacter("Maggie Simpson");
         CartoonCharacter homer = new CartoonCharacter("Homer Simpson");
         homer.getChildren().add(bart);
         homer.getChildren().add(lisa);
         homer.getChildren().add(maggie);
        
         CartoonCharacter pebbles = new CartoonCharacter("Pebbles Flintstone");
         CartoonCharacter fred = new CartoonCharacter("Fred Flintstone");
         fred.getChildren().add(pebbles);
        
         List<CartoonCharacter> parents = list(homer, fred);
        
         // check children property where getChildren() can throw an Exception!
         assertThat(parents).flatExtracting(CartoonCharacter::getChildren)
                            .containsOnly(bart, lisa, maggie, pebbles);
        The order of extracted values is consistent with both the order of the collection itself, as well as the extracted collections.
        Type Parameters:
        V - the type of elements extracted.
        EXCEPTION - the exception type of ThrowingExtractor
        Parameters:
        extractor - the object transforming input object to an Iterable of desired ones
        Returns:
        a new assertion object whose object under test is the list of values extracted
        Throws:
        java.lang.NullPointerException - if one of the Iterable's element is null.
        Since:
        3.7.0
      • doFlatExtracting

        private <V> AbstractListAssert<?,​java.util.List<? extends V>,​V,​ObjectAssert<V>> doFlatExtracting​(java.util.function.Function<? super ELEMENT,​? extends java.util.Collection<V>> extractor)
      • flatExtracting

        public AbstractListAssert<?,​java.util.List<? extends java.lang.Object>,​java.lang.Object,​ObjectAssert<java.lang.Object>> flatExtracting​(java.util.function.Function<? super ELEMENT,​?>... extractors)
        Extract multiple values from each Iterable's element according to the given Functions and concatenate/flatten the extracted values in a list that is used as the new object under test.

        If extracted values were not flattened, instead of a simple list like (given 2 extractors) :

        element1.value1, element1.value2, element2.value1, element2.value2, ...  
        we would get a list of list like :
        list(element1.value1, element1.value2), list(element2.value1, element2.value2), ...  

        Code example:

         // fellowshipOfTheRing is a List<TolkienCharacter>
        
         // values are extracted in order and flattened : age1, name1, age2, name2, age3 ...
         assertThat(fellowshipOfTheRing).flatExtracting(TolkienCharacter::getAge,
                                                        TolkienCharacter::getName)
                                        .contains(33 ,"Frodo",
                                                  1000, "Legolas",
                                                  87, "Aragorn");
        The resulting extracted values list is ordered by Iterable's element first and then extracted values, this is why is in the example that age values come before names.
        Parameters:
        extractors - all the extractors to apply on each actual Iterable's elements
        Returns:
        a new assertion object whose object under test is a flattened list of all extracted values.
      • flatExtracting

        public <EXCEPTION extends java.lang.Exception> AbstractListAssert<?,​java.util.List<? extends java.lang.Object>,​java.lang.Object,​ObjectAssert<java.lang.Object>> flatExtracting​(ThrowingExtractor<? super ELEMENT,​?,​EXCEPTION>... extractors)
        Extract multiple values from each Iterable's element according to the given ThrowingExtractors and concatenate/flatten the extracted values in a list that is used as the new object under test.

        If extracted values were not flattened, instead of a simple list like (given 2 extractors) :

        element1.value1, element1.value2, element2.value1, element2.value2, ...  
        we would get a list of list like :
        list(element1.value1, element1.value2), list(element2.value1, element2.value2), ...  

        Code example:

         // fellowshipOfTheRing is a List<TolkienCharacter>
        
         // values are extracted in order and flattened : age1, name1, age2, name2, age3 ...
         assertThat(fellowshipOfTheRing).flatExtracting(input -> {
           if (input.getAge() < 20) {
             throw new Exception("age < 20");
           }
           return input.getName();
         }, input2 -> {
           if (input2.getAge() < 20) {
             throw new Exception("age < 20");
           }
           return input2.getAge();
         }).contains(33 ,"Frodo",
             1000, "Legolas",
             87, "Aragorn");
        The resulting extracted values list is ordered by Iterable's element first and then extracted values, this is why is in the example that age values come before names.
        Type Parameters:
        EXCEPTION - the exception type of ThrowingExtractor
        Parameters:
        extractors - all the extractors to apply on each actual Iterable's elements
        Returns:
        a new assertion object whose object under test is a flattened list of all extracted values.
        Since:
        3.7.0
      • flatExtracting

        public AbstractListAssert<?,​java.util.List<? extends java.lang.Object>,​java.lang.Object,​ObjectAssert<java.lang.Object>> flatExtracting​(java.lang.String fieldOrPropertyName)
        Extract from Iterable's elements the Iterable/Array values corresponding to the given property/field name and concatenate them into a single list becoming the new object under test.

        It allows testing the elements of extracting values that are represented by iterables or arrays.

        For example:

         CartoonCharacter bart = new CartoonCharacter("Bart Simpson");
         CartoonCharacter lisa = new CartoonCharacter("Lisa Simpson");
         CartoonCharacter maggie = new CartoonCharacter("Maggie Simpson");
         CartoonCharacter homer = new CartoonCharacter("Homer Simpson");
         homer.getChildren().add(bart);
         homer.getChildren().add(lisa);
         homer.getChildren().add(maggie);
        
         CartoonCharacter pebbles = new CartoonCharacter("Pebbles Flintstone");
         CartoonCharacter fred = new CartoonCharacter("Fred Flintstone");
         fred.getChildren().add(pebbles);
        
         List<CartoonCharacter> parents = list(homer, fred);
        
         // check children which is a List<CartoonCharacter>
         assertThat(parents).flatExtracting("children")
                            .containsOnly(bart, lisa, maggie, pebbles);
        The order of extracted values is consisted with both the order of the collection itself, as well as the extracted collections.
        Parameters:
        fieldOrPropertyName - the object transforming input object to an Iterable of desired ones
        Returns:
        a new assertion object whose object under test is the list of values extracted
        Throws:
        java.lang.IllegalArgumentException - if one of the extracted property value was not an array or an iterable.
      • extracting

        public AbstractListAssert<?,​java.util.List<? extends Tuple>,​Tuple,​ObjectAssert<Tuple>> extracting​(java.util.function.Function<? super ELEMENT,​?>... extractors)
        Use the given Functions to extract the values from the Iterable's elements into a new Iterable composed of Tuples (a simple data structure containing the extracted values), this new Iterable becoming the object under test.

        It allows you to test values from the Iterable's elements instead of testing the elements themselves, which sometimes can be much less work!

        The Tuple data corresponds to the extracted values from the Iterable's elements, for instance if you pass functions extracting "id", "name" and "email" values then each Tuple data will be composed of an id, a name and an email extracted from the element of the initial Iterable (the Tuple's data order is the same as the given functions order).

        Let's take a look at an example to make things clearer :

         // Build a list of TolkienCharacter, a TolkienCharacter has a name, and age and a Race (a specific class)
         // they can be public field or properties, both can be extracted.
         List<TolkienCharacter> fellowshipOfTheRing = new ArrayList<TolkienCharacter>();
        
         fellowshipOfTheRing.add(new TolkienCharacter("Frodo", 33, HOBBIT));
         fellowshipOfTheRing.add(new TolkienCharacter("Sam", 38, HOBBIT));
         fellowshipOfTheRing.add(new TolkienCharacter("Gandalf", 2020, MAIA));
         fellowshipOfTheRing.add(new TolkienCharacter("Legolas", 1000, ELF));
         fellowshipOfTheRing.add(new TolkienCharacter("Pippin", 28, HOBBIT));
         fellowshipOfTheRing.add(new TolkienCharacter("Gimli", 139, DWARF));
         fellowshipOfTheRing.add(new TolkienCharacter("Aragorn", 87, MAN);
         fellowshipOfTheRing.add(new TolkienCharacter("Boromir", 37, MAN));
        
         // let's verify 'name', 'age' and Race of some TolkienCharacter in fellowshipOfTheRing :
         assertThat(fellowshipOfTheRing).extracting(TolkienCharacter::getName,
                                                    character -> character.getAge(),
                                                    TolkienCharacter::getRace)
                                        .containsOnly(tuple("Frodo", 33, HOBBIT),
                                                      tuple("Sam", 38, HOBBIT),
                                                      tuple("Gandalf", 2020, MAIA),
                                                      tuple("Legolas", 1000, ELF),
                                                      tuple("Pippin", 28, HOBBIT),
                                                      tuple("Gimli", 139, DWARF),
                                                      tuple("Aragorn", 87, MAN),
                                                      tuple("Boromir", 37, MAN));
        You can use lambda expression or a method reference to extract the expected values.

        Use Tuple.tuple(Object...) to initialize the expected values.

        Note that the order of the extracted tuples list is consistent with the iteration order of the Iterable under test, for example if it's a HashSet, you won't be able to make any assumptions on the extracted tuples order.

        Parameters:
        extractors - the extractor functions to extract a value from an element of the Iterable under test.
        Returns:
        a new assertion object whose object under test is the list of Tuples containing the extracted values.
      • flatExtracting

        public AbstractListAssert<?,​java.util.List<? extends java.lang.Object>,​java.lang.Object,​ObjectAssert<java.lang.Object>> flatExtracting​(java.lang.String... fieldOrPropertyNames)
        Extract the given property/field values from each Iterable's element and flatten the extracted values in a list that is used as the new object under test.

        Given 2 properties, if the extracted values were not flattened, instead having a simple list like :

        element1.value1, element1.value2, element2.value1, element2.value2, ...  
        ... we would get a list of list :
        list(element1.value1, element1.value2), list(element2.value1, element2.value2), ...  

        Code example:

         // fellowshipOfTheRing is a List<TolkienCharacter>
        
         // values are extracted in order and flattened : age1, name1, age2, name2, age3 ...
         assertThat(fellowshipOfTheRing).flatExtracting("age", "name")
                                        .contains(33 ,"Frodo",
                                                  1000, "Legolas",
                                                  87, "Aragorn");
        Parameters:
        fieldOrPropertyNames - the field and/or property names to extract from each actual Iterable's element
        Returns:
        a new assertion object whose object under test is a flattened list of all extracted values.
        Throws:
        java.lang.IllegalArgumentException - if fieldOrPropertyNames vararg is null or empty
        Since:
        2.5.0 / 3.5.0
      • containsExactlyElementsOf

        public SELF containsExactlyElementsOf​(java.lang.Iterable<? extends ELEMENT> iterable)
        Same as ObjectEnumerableAssert.containsExactly(Object...) but handle the Iterable to array conversion : verifies that actual contains exactly the elements of the given iterable and nothing else in the same order.

        Example:

         Iterable<Ring> elvesRings = newArrayList(vilya, nenya, narya);
        
         // assertion will pass
         assertThat(elvesRings).containsExactlyElementsOf(newLinkedList(vilya, nenya, narya));
        
         // assertion will fail as actual and expected order differ
         assertThat(elvesRings).containsExactlyElementsOf(newLinkedList(nenya, vilya, narya));

        If you want to directly specify the elements to check, use containsExactly(Object...) instead.

        Specified by:
        containsExactlyElementsOf in interface ObjectEnumerableAssert<SELF extends AbstractIterableAssert<SELF,​ACTUAL,​ELEMENT,​ELEMENT_ASSERT>,​ACTUAL extends java.lang.Iterable<? extends ELEMENT>>
        Parameters:
        iterable - the given Iterable we will get elements from.
        Returns:
        this assertion object.
      • containsOnlyElementsOf

        public SELF containsOnlyElementsOf​(java.lang.Iterable<? extends ELEMENT> iterable)
        Same semantic as ObjectEnumerableAssert.containsOnly(Object[]) : verifies that actual contains all the elements of the given iterable and nothing else, in any order and ignoring duplicates (i.e. once a value is found, its duplicates are also considered found).

        Use ObjectEnumerableAssert.isSubsetOf(Iterable) to check that actual is a subset of given iterable

        Example:

         Iterable<Ring> rings = newArrayList(nenya, vilya);
        
         // assertion will pass
         assertThat(rings).containsOnlyElementsOf(newArrayList(nenya, vilya))
                          .containsOnlyElementsOf(newArrayList(nenya, nenya, vilya, vilya));
         assertThat(newArrayList(nenya, nenya, vilya, vilya)).containsOnlyElementsOf(rings);
        
         // assertion will fail as actual does not contain narya
         assertThat(rings).containsOnlyElementsOf(newLinkedList(nenya, vilya, narya));
         // assertion will fail as actual contains nenya
         assertThat(rings).containsOnlyElementsOf(newLinkedList(vilya));

        If you want to directly specify the elements to check, use containsOnly(Object...) instead.

        Specified by:
        containsOnlyElementsOf in interface ObjectEnumerableAssert<SELF extends AbstractIterableAssert<SELF,​ACTUAL,​ELEMENT,​ELEMENT_ASSERT>,​ACTUAL extends java.lang.Iterable<? extends ELEMENT>>
        Parameters:
        iterable - the given Iterable we will get elements from.
        Returns:
        this assertion object.
      • hasSameElementsAs

        public SELF hasSameElementsAs​(java.lang.Iterable<? extends ELEMENT> iterable)
        An alias of ObjectEnumerableAssert.containsOnlyElementsOf(Iterable) : verifies that actual contains all the elements of the given iterable and nothing else, in any order.

        Example:

         Iterable<Ring> elvesRings = newArrayList(vilya, nenya, narya);
        
         // assertions will pass:
         assertThat(elvesRings).hasSameElementsAs(newArrayList(nenya, narya, vilya))
                               .hasSameElementsAs(newArrayList(nenya, narya, vilya, nenya));
        
         // assertions will fail:
         assertThat(elvesRings).hasSameElementsAs(newArrayList(nenya, narya));
         assertThat(elvesRings).hasSameElementsAs(newArrayList(nenya, narya, vilya, oneRing));
        Specified by:
        hasSameElementsAs in interface ObjectEnumerableAssert<SELF extends AbstractIterableAssert<SELF,​ACTUAL,​ELEMENT,​ELEMENT_ASSERT>,​ACTUAL extends java.lang.Iterable<? extends ELEMENT>>
        Parameters:
        iterable - the Iterable whose elements we expect to be present
        Returns:
        this assertion object
      • usingComparatorForElementFieldsWithNames

        public <T> SELF usingComparatorForElementFieldsWithNames​(java.util.Comparator<T> comparator,
                                                                 java.lang.String... elementPropertyOrFieldNames)
        Allows to set a comparator to compare properties or fields of elements with the given names. A typical usage is for comparing fields of numeric type at a given precision.

        To be used, comparators need to be specified by this method before calling any of:

        Comparators specified by this method have precedence over comparators specified by usingComparatorForElementFieldsWithType.

        Example:

         public class TolkienCharacter {
           private String name;
           private double height;
           // constructor omitted
         }
        
         TolkienCharacter frodo = new TolkienCharacter("Frodo", 1.2);
         TolkienCharacter tallerFrodo = new TolkienCharacter("Frodo", 1.3);
         TolkienCharacter reallyTallFrodo = new TolkienCharacter("Frodo", 1.9);
        
         Comparator<Double> closeEnough = new Comparator<Double>() {
           double precision = 0.5;
           public int compare(Double d1, Double d2) {
             return Math.abs(d1 - d2) <= precision ? 0 : 1;
           }
         };
        
         // assertions will pass
         assertThat(asList(frodo)).usingComparatorForElementFieldsWithNames(closeEnough, "height")
                                  .usingFieldByFieldElementComparator()
                                  .contains(tallerFrodo);
        
         assertThat(asList(frodo)).usingComparatorForElementFieldsWithNames(closeEnough, "height")
                                  .usingElementComparatorOnFields("height")
                                  .contains(tallerFrodo);
        
         assertThat(asList(frodo)).usingComparatorForElementFieldsWithNames(closeEnough, "height")
                                  .usingElementComparatorIgnoringFields("name")
                                  .contains(tallerFrodo);
        
         assertThat(asList(frodo)).usingComparatorForElementFieldsWithNames(closeEnough, "height")
                                  .usingRecursiveFieldByFieldElementComparator()
                                  .contains(tallerFrodo);
        
         // assertion will fail
         assertThat(asList(frodo)).usingComparatorForElementFieldsWithNames(closeEnough, "height")
                                  .usingFieldByFieldElementComparator()
                                  .containsExactly(reallyTallFrodo);
        Type Parameters:
        T - the type of elements to compare.
        Parameters:
        comparator - the Comparator to use
        elementPropertyOrFieldNames - the names of the properties and/or fields of the elements the comparator should be used for
        Returns:
        this assertions object
        Since:
        2.5.0 / 3.5.0
      • usingComparatorForElementFieldsWithType

        public <T> SELF usingComparatorForElementFieldsWithType​(java.util.Comparator<T> comparator,
                                                                java.lang.Class<T> type)
        Allows to set a specific comparator to compare properties or fields of elements with the given type. A typical usage is for comparing fields of numeric type at a given precision.

        To be used, comparators need to be specified by this method before calling any of:

        Comparators specified by usingComparatorForElementFieldsWithNames have precedence over comparators specified by this method.

        Example:

         public class TolkienCharacter {
           private String name;
           private double height;
           // constructor omitted
         }
         TolkienCharacter frodo = new TolkienCharacter("Frodo", 1.2);
         TolkienCharacter tallerFrodo = new TolkienCharacter("Frodo", 1.3);
         TolkienCharacter reallyTallFrodo = new TolkienCharacter("Frodo", 1.9);
        
         Comparator<Double> closeEnough = new Comparator<Double>() {
           double precision = 0.5;
           public int compare(Double d1, Double d2) {
             return Math.abs(d1 - d2) <= precision ? 0 : 1;
           }
         };
        
         // assertions will pass
         assertThat(Arrays.asList(frodo)).usingComparatorForElementFieldsWithType(closeEnough, Double.class)
                                         .usingFieldByFieldElementComparator()
                                         .contains(tallerFrodo);
        
         assertThat(Arrays.asList(frodo)).usingComparatorForElementFieldsWithType(closeEnough, Double.class)
                                         .usingElementComparatorOnFields("height")
                                         .contains(tallerFrodo);
        
         assertThat(Arrays.asList(frodo)).usingComparatorForElementFieldsWithType(closeEnough, Double.class)
                                         .usingElementComparatorIgnoringFields("name")
                                         .contains(tallerFrodo);
        
         assertThat(Arrays.asList(frodo)).usingComparatorForElementFieldsWithType(closeEnough, Double.class)
                                         .usingRecursiveFieldByFieldElementComparator()
                                         .contains(tallerFrodo);
        
         // assertion will fail
         assertThat(Arrays.asList(frodo)).usingComparatorForElementFieldsWithType(closeEnough, Double.class)
                                         .usingFieldByFieldElementComparator()
                                         .contains(reallyTallFrodo);
        Type Parameters:
        T - the type of elements to compare.
        Parameters:
        comparator - the Comparator to use
        type - the Class of the type of the element fields the comparator should be used for
        Returns:
        this assertions object
        Since:
        2.5.0 / 3.5.0
      • usingFieldByFieldElementComparator

        public SELF usingFieldByFieldElementComparator()
        Use field/property by field/property comparison (including inherited fields/properties) instead of relying on actual type A equals method to compare group elements for incoming assertion checks. Private fields are included but this can be disabled using Assertions.setAllowExtractingPrivateFields(boolean).

        This can be handy if equals method of the objects to compare does not suit you.

        Note that the comparison is not recursive, if one of the fields/properties is an Object, it will be compared to the other field/property using its equals method.

        You can specify a custom comparator per name or type of element field with usingComparatorForElementFieldsWithNames(Comparator, String...) and usingComparatorForElementFieldsWithType(Comparator, Class).

        Example:

         TolkienCharacter frodo = new TolkienCharacter("Frodo", 33, HOBBIT);
         TolkienCharacter frodoClone = new TolkienCharacter("Frodo", 33, HOBBIT);
        
         // Fail if equals has not been overridden in TolkienCharacter as equals default implementation only compares references
         assertThat(newArrayList(frodo)).contains(frodoClone);
        
         // frodo and frodoClone are equals when doing a field by field comparison.
         assertThat(newArrayList(frodo)).usingFieldByFieldElementComparator().contains(frodoClone);
        Returns:
        this assertion object.
      • usingRecursiveFieldByFieldElementComparator

        public SELF usingRecursiveFieldByFieldElementComparator()
        Use a recursive field/property by field/property comparison (including inherited fields/properties) instead of relying on actual type equals method to compare group elements for incoming assertion checks. This can be useful if actual's equals implementation does not suit you.

        The recursive property/field comparison is not applied on fields having a custom equals implementation, i.e. the overridden equals method will be used instead of a field/property by field/property comparison.

        The recursive comparison handles cycles.

        You can specify a custom comparator per (nested) name or type of element field with usingComparatorForElementFieldsWithNames and usingComparatorForElementFieldsWithType.

        The objects to compare can be of different types but must have the same properties/fields. For example if actual object has a name String field, the other object must also have one.

        If an object has a field and a property with the same name, the property value will be used over the field.

        Example:

         TolkienCharacter frodo = new TolkienCharacter("Frodo", 33, HOBBIT);
         TolkienCharacter pippin = new TolkienCharacter("Pippin", 28, HOBBIT);
         frodo.setFriend(pippin);
         pippin.setFriend(frodo);
        
         TolkienCharacter frodoClone = new TolkienCharacter("Frodo", 33, HOBBIT);
         TolkienCharacter pippinClone = new TolkienCharacter("Pippin", 28, HOBBIT);
         frodoClone.setFriend(pippinClone);
         pippinClone.setFriend(frodoClone);
        
         List<TolkienCharacter> hobbits = Arrays.asList(frodo, pippin);
        
         // fails if equals has not been overridden in TolkienCharacter as it would compares object references
         assertThat(hobbits).contains(frodoClone, pippinClone);
        
         // frodo/frodoClone and pippin/pippinClone are equals when doing a recursive property/field by property/field comparison
         assertThat(hobbits).usingRecursiveFieldByFieldElementComparator()
                            .contains(frodoClone, pippinClone);
         
        Returns:
        this assertion object.
        Since:
        2.5.0 / 3.5.0
      • usingElementComparatorOnFields

        public SELF usingElementComparatorOnFields​(java.lang.String... fields)
        Use field/property by field/property comparison on the given fields/properties only (including inherited fields/properties) instead of relying on actual type A equals method to compare group elements for incoming assertion checks. Private fields are included but this can be disabled using Assertions.setAllowExtractingPrivateFields(boolean).

        This can be handy if equals method of the objects to compare does not suit you.

        You can specify a custom comparator per name or type of element field with usingComparatorForElementFieldsWithNames(Comparator, String...) and usingComparatorForElementFieldsWithType(Comparator, Class).

        Note that the comparison is not recursive, if one of the fields/properties is an Object, it will be compared to the other field/property using its equals method.

        Example:
         TolkienCharacter frodo = new TolkienCharacter("Frodo", 33, HOBBIT);
         TolkienCharacter sam = new TolkienCharacter("Sam", 38, HOBBIT);
        
         // frodo and sam both are hobbits, so they are equals when comparing only race
         assertThat(newArrayList(frodo)).usingElementComparatorOnFields("race").contains(sam); // OK
        
         // ... but not when comparing both name and race
         assertThat(newArrayList(frodo)).usingElementComparatorOnFields("name", "race").contains(sam); // FAIL
        Parameters:
        fields - the fields/properties to compare using element comparators
        Returns:
        this assertion object.
      • usingElementComparatorIgnoringFields

        public SELF usingElementComparatorIgnoringFields​(java.lang.String... fields)
        Use field/property by field/property comparison on all fields/properties except the given ones (including inherited fields/properties) instead of relying on actual type A equals method to compare group elements for incoming assertion checks. Private fields are included but this can be disabled using Assertions.setAllowExtractingPrivateFields(boolean).

        This can be handy if equals method of the objects to compare does not suit you.

        You can specify a custom comparator per name or type of element field with usingComparatorForElementFieldsWithNames(Comparator, String...) and usingComparatorForElementFieldsWithType(Comparator, Class).

        Note that the comparison is not recursive, if one of the fields/properties is an Object, it will be compared to the other field/property using its equals method.

        Example:
         TolkienCharacter frodo = new TolkienCharacter("Frodo", 33, HOBBIT);
         TolkienCharacter sam = new TolkienCharacter("Sam", 38, HOBBIT);
        
         // frodo and sam both are hobbits, so they are equals when comparing only race (i.e. ignoring all other fields)
         assertThat(newArrayList(frodo)).usingElementComparatorIgnoringFields("name", "age").contains(sam); // OK
        
         // ... but not when comparing both name and race
         assertThat(newArrayList(frodo)).usingElementComparatorIgnoringFields("age").contains(sam); // FAIL
        Parameters:
        fields - the fields/properties to compare using element comparators
        Returns:
        this assertion object.
      • inHexadecimal

        public SELF inHexadecimal()
        Enable hexadecimal representation of Iterable elements instead of standard representation in error messages.

        It can be useful to better understand what the error was with a more meaningful error message.

        Example

         final List<Byte> bytes = newArrayList((byte) 0x10, (byte) 0x20);
        With standard error message:
         assertThat(bytes).contains((byte) 0x30);
        
         Expecting:
          <[16, 32]>
         to contain:
          <[48]>
         but could not find:
          <[48]>
        With Hexadecimal error message:
         assertThat(bytes).inHexadecimal().contains((byte) 0x30);
        
         Expecting:
          <[0x10, 0x20]>
         to contain:
          <[0x30]>
         but could not find:
          <[0x30]>
        Overrides:
        inHexadecimal in class AbstractAssert<SELF extends AbstractIterableAssert<SELF,​ACTUAL,​ELEMENT,​ELEMENT_ASSERT>,​ACTUAL extends java.lang.Iterable<? extends ELEMENT>>
        Returns:
        this assertion object.
      • inBinary

        public SELF inBinary()
        Enable binary representation of Iterable elements instead of standard representation in error messages.

        Example:

         final List<Byte> bytes = newArrayList((byte) 0x10, (byte) 0x20);
        With standard error message:
         assertThat(bytes).contains((byte) 0x30);
        
         Expecting:
          <[16, 32]>
         to contain:
          <[48]>
         but could not find:
          <[48]>
        With binary error message:
         assertThat(bytes).inBinary().contains((byte) 0x30);
        
         Expecting:
          <[0b00010000, 0b00100000]>
         to contain:
          <[0b00110000]>
         but could not find:
          <[0b00110000]>
        Overrides:
        inBinary in class AbstractAssert<SELF extends AbstractIterableAssert<SELF,​ACTUAL,​ELEMENT,​ELEMENT_ASSERT>,​ACTUAL extends java.lang.Iterable<? extends ELEMENT>>
        Returns:
        this assertion object.
      • filteredOn

        public SELF filteredOn​(java.lang.String propertyOrFieldName,
                               java.lang.Object expectedValue)
        Filter the iterable under test keeping only elements having a property or field equal to expectedValue, the property/field is specified by propertyOrFieldName parameter.

        The filter first tries to get the value from a property (named propertyOrFieldName), if no such property exists it tries to read the value from a field. Reading private fields is supported by default, this can be globally disabled by calling Assertions.setAllowExtractingPrivateFields(false).

        When reading nested property/field, if an intermediate value is null the whole nested property/field is considered to be null, thus reading "address.street.name" value will return null if "street" value is null.

        As an example, let's check all employees 800 years old (yes, special employees):

         Employee yoda   = new Employee(1L, new Name("Yoda"), 800);
         Employee obiwan = new Employee(2L, new Name("Obiwan"), 800);
         Employee luke   = new Employee(3L, new Name("Luke", "Skywalker"), 26);
         Employee noname = new Employee(4L, null, 50);
        
         List<Employee> employees = newArrayList(yoda, luke, obiwan, noname);
        
         assertThat(employees).filteredOn("age", 800)
                              .containsOnly(yoda, obiwan);
        Nested properties/fields are supported:
         // Name is bean class with 'first' and 'last' String properties
        
         // name is null for noname => it does not match the filter on "name.first"
         assertThat(employees).filteredOn("name.first", "Luke")
                              .containsOnly(luke);
        
         assertThat(employees).filteredOn("name.last", "Vader")
                              .isEmpty();

        If you want to filter on null value, use filteredOnNull(String) as Java will resolve the call to filteredOn(String, FilterOperator) instead of this method.

        An IntrospectionError is thrown if the given propertyOrFieldName can't be found in one of the iterable elements.

        You can chain filters:

         // fellowshipOfTheRing is a list of TolkienCharacter having race and name fields
         // 'not' filter is statically imported from Assertions.not
        
         assertThat(fellowshipOfTheRing).filteredOn("race.name", "Man")
                                        .filteredOn("name", not("Boromir"))
                                        .containsOnly(aragorn);
        If you need more complex filter, use filteredOn(Predicate) or filteredOn(Condition).
        Parameters:
        propertyOrFieldName - the name of the property or field to read
        expectedValue - the value to compare element's property or field with
        Returns:
        a new assertion object with the filtered iterable under test
        Throws:
        java.lang.IllegalArgumentException - if the given propertyOrFieldName is null or empty.
        IntrospectionError - if the given propertyOrFieldName can't be found in one of the iterable elements.
      • filteredOnNull

        public SELF filteredOnNull​(java.lang.String propertyOrFieldName)
        Filter the iterable under test keeping only elements whose property or field specified by propertyOrFieldName is null.

        The filter first tries to get the value from a property (named propertyOrFieldName), if no such property exists it tries to read the value from a field. Reading private fields is supported by default, this can be globally disabled by calling Assertions.setAllowExtractingPrivateFields(false).

        When reading nested property/field, if an intermediate value is null the whole nested property/field is considered to be null, thus reading "address.street.name" value will return null if "street" value is null.

        As an example, let's check all employees 800 years old (yes, special employees):

         Employee yoda   = new Employee(1L, new Name("Yoda"), 800);
         Employee obiwan = new Employee(2L, new Name("Obiwan"), 800);
         Employee luke   = new Employee(3L, new Name("Luke", "Skywalker"), 26);
         Employee noname = new Employee(4L, null, 50);
        
         List<Employee> employees = newArrayList(yoda, luke, obiwan, noname);
        
         assertThat(employees).filteredOnNull("name")
                              .containsOnly(noname);
        Nested properties/fields are supported:
         // Name is bean class with 'first' and 'last' String properties
        
         assertThat(employees).filteredOnNull("name.last")
                              .containsOnly(yoda, obiwan, noname);
        An IntrospectionError is thrown if the given propertyOrFieldName can't be found in one of the iterable elements.

        If you need more complex filter, use filteredOn(Predicate) or filteredOn(Condition).

        Parameters:
        propertyOrFieldName - the name of the property or field to read
        Returns:
        a new assertion object with the filtered iterable under test
        Throws:
        IntrospectionError - if the given propertyOrFieldName can't be found in one of the iterable elements.
      • filteredOn

        public SELF filteredOn​(java.lang.String propertyOrFieldName,
                               FilterOperator<?> filterOperator)
        Filter the iterable under test keeping only elements having a property or field matching the filter expressed with the FilterOperator, the property/field is specified by propertyOrFieldName parameter.

        The existing filters are :

        Whatever filter is applied, it first tries to get the value from a property (named propertyOrFieldName), if no such property exists it tries to read the value from a field. Reading private fields is supported by default, this can be globally disabled by calling Assertions.setAllowExtractingPrivateFields(false).

        When reading nested property/field, if an intermediate value is null the whole nested property/field is considered to be null, thus reading "address.street.name" value will return null if "street" value is null.

        As an example, let's check stuff on some special employees :

         Employee yoda   = new Employee(1L, new Name("Yoda"), 800);
         Employee obiwan = new Employee(2L, new Name("Obiwan"), 800);
         Employee luke   = new Employee(3L, new Name("Luke", "Skywalker"), 26);
        
         List<Employee> employees = newArrayList(yoda, luke, obiwan, noname);
        
         // 'not' filter is statically imported from Assertions.not
         assertThat(employees).filteredOn("age", not(800))
                              .containsOnly(luke);
        
         // 'in' filter is statically imported from Assertions.in
         // Name is bean class with 'first' and 'last' String properties
         assertThat(employees).filteredOn("name.first", in("Yoda", "Luke"))
                              .containsOnly(yoda, luke);
        
         // 'notIn' filter is statically imported from Assertions.notIn
         assertThat(employees).filteredOn("name.first", notIn("Yoda", "Luke"))
                              .containsOnly(obiwan);
        An IntrospectionError is thrown if the given propertyOrFieldName can't be found in one of the iterable elements.

        Note that combining filter operators is not supported, thus the following code is not correct:

         // Combining filter operators like not(in(800)) is NOT supported
         // -> throws UnsupportedOperationException
         assertThat(employees).filteredOn("age", not(in(800)))
                              .contains(luke);

        You can chain filters:

         // fellowshipOfTheRing is a list of TolkienCharacter having race and name fields
         // 'not' filter is statically imported from Assertions.not
        
         assertThat(fellowshipOfTheRing).filteredOn("race.name", "Man")
                                        .filteredOn("name", not("Boromir"))
                                        .containsOnly(aragorn);
        If you need more complex filter, use filteredOn(Predicate) or filteredOn(Condition).
        Parameters:
        propertyOrFieldName - the name of the property or field to read
        filterOperator - the filter operator to apply
        Returns:
        a new assertion object with the filtered iterable under test
        Throws:
        java.lang.IllegalArgumentException - if the given propertyOrFieldName is null or empty.
      • filteredOn

        public SELF filteredOn​(Condition<? super ELEMENT> condition)
        Filter the iterable under test keeping only elements matching the given Condition.

        If you prefer Predicate over Condition, use filteredOn(Predicate).

        Example : check old employees whose age > 100:

         Employee yoda   = new Employee(1L, new Name("Yoda"), 800);
         Employee obiwan = new Employee(2L, new Name("Obiwan"), 800);
         Employee luke   = new Employee(3L, new Name("Luke", "Skywalker"), 26);
         Employee noname = new Employee(4L, null, 50);
        
         List<Employee> employees = newArrayList(yoda, luke, obiwan, noname);
        
         // old employee condition, "old employees" describes the condition in error message
         // you just have to implement 'matches' method
         Condition<Employee> oldEmployees = new Condition<Employee>("old employees") {
               @Override
               public boolean matches(Employee employee) {
                 return employee.getAge() > 100;
               }
             };
           }
         assertThat(employees).filteredOn(oldEmployees)
                              .containsOnly(yoda, obiwan);
        You can combine Condition with condition operator like Not:
         // 'not' filter is statically imported from Assertions.not
         assertThat(employees).filteredOn(not(oldEmployees))
                              .contains(luke, noname);
        Parameters:
        condition - the filter condition / predicate
        Returns:
        a new assertion object with the filtered iterable under test
        Throws:
        java.lang.IllegalArgumentException - if the given condition is null.
      • filteredOnAssertions

        public SELF filteredOnAssertions​(java.util.function.Consumer<? super ELEMENT> elementAssertions)
        Filter the iterable under test keeping only elements matching the given assertions specified with a Consumer.

        Example : check young hobbits whose age < 34:

         TolkienCharacter pippin = new TolkienCharacter("Pippin", 28, HOBBIT);
         TolkienCharacter frodo = new TolkienCharacter("Frodo", 33, HOBBIT);
         TolkienCharacter merry = new TolkienCharacter("Merry", 36, HOBBIT);
         TolkienCharacter sam = new TolkienCharacter("Sam", 38, HOBBIT);
        
         List<TolkienCharacter> hobbits = list(frodo, sam, merry, pippin);
        
         assertThat(hobbits).filteredOnAssertions(hobbit -> assertThat(hobbit.age).isLessThan(34))
                            .containsOnly(frodo, pippin);
        Parameters:
        elementAssertions - containing AssertJ assertions to filter on
        Returns:
        a new assertion object with the filtered iterable under test
        Throws:
        java.lang.IllegalArgumentException - if the given predicate is null.
        Since:
        3.11.0
      • first

        public ELEMENT_ASSERT first()
        Navigate and allow to perform assertions on the first element of the Iterable under test.

        By default available assertions after first() are Object assertions, it is possible though to get more specific assertions if you create IterableAssert with either:

        Example: default Object assertions

         // default iterable assert => element assert is ObjectAssert
         Iterable<TolkienCharacter> hobbits = newArrayList(frodo, sam, pippin);
        
         // assertion succeeds, only Object assertions are available after first()
         assertThat(hobbits).first()
                            .isEqualTo(frodo);
        
         // assertion fails
         assertThat(hobbits).first()
                            .isEqualTo(pippin);

        If you have created the Iterable assertion using an AssertFactory or the element assert class, you will be able to chain first() with more specific typed assertion.

        Example: use of String assertions after first()

         Iterable<String> hobbits = newArrayList("frodo", "sam", "pippin");
        
         // assertion succeeds
         // String assertions are available after first()
         assertThat(hobbits, StringAssert.class).first()
                                                .startsWith("fro")
                                                .endsWith("do");
         // assertion fails
         assertThat(hobbits, StringAssert.class).first()
                                                .startsWith("pip");
        Returns:
        the assertion on the first element
        Throws:
        java.lang.AssertionError - if the actual Iterable is empty.
        Since:
        2.5.0 / 3.5.0
      • last

        public ELEMENT_ASSERT last()
        Navigate and allow to perform assertions on the last element of the Iterable under test.

        By default available assertions after last() are Object assertions, it is possible though to get more specific assertions if you create IterableAssert with either:

        Example: default Object assertions

         // default iterable assert => element assert is ObjectAssert
         Iterable<TolkienCharacter> hobbits = newArrayList(frodo, sam, pippin);
        
         // assertion succeeds, only Object assertions are available after last()
         assertThat(hobbits).last()
                            .isEqualTo(pippin);
        
         // assertion fails
         assertThat(hobbits).last()
                            .isEqualTo(frodo);

        If you have created the Iterable assertion using an AssertFactory or the element assert class, you will be able to chain last() with more specific typed assertion.

        Example: use of String assertions after last()

         Iterable<String> hobbits = newArrayList("frodo", "sam", "pippin");
        
         // assertion succeeds
         // String assertions are available after last()
         assertThat(hobbits, StringAssert.class).last()
                                                .startsWith("pi")
                                                .endsWith("in");
         // assertion fails
         assertThat(hobbits, StringAssert.class).last()
                                                .startsWith("fro");
        Returns:
        the assertion on the first element
        Throws:
        java.lang.AssertionError - if the actual Iterable is empty.
        Since:
        2.5.0 / 3.5.0
      • lastElement

        private ELEMENT lastElement()
      • element

        public ELEMENT_ASSERT element​(int index)
        Navigate and allow to perform assertions on the chosen element of the Iterable under test.

        By default available assertions after element(index) are Object assertions, it is possible though to get more specific assertions if you create IterableAssert with either:

        Example: default Object assertions

         // default iterable assert => element assert is ObjectAssert
         Iterable<TolkienCharacter> hobbits = newArrayList(frodo, sam, pippin);
        
         // assertion succeeds, only Object assertions are available after element(index)
         assertThat(hobbits).element(1)
                            .isEqualTo(sam);
        
         // assertion fails
         assertThat(hobbits).element(1)
                            .isEqualTo(pippin);

        If you have created the Iterable assertion using an AssertFactory or the element assert class, you will be able to chain element(index) with more specific typed assertion.

        Example: use of String assertions after element(index)

         Iterable<String> hobbits = newArrayList("frodo", "sam", "pippin");
        
         // assertion succeeds
         // String assertions are available after element(index)
         assertThat(hobbits, StringAssert.class).element(1)
                                                .startsWith("sa")
                                                .endsWith("am");
         // assertion fails
         assertThat(hobbits, StringAssert.class).element(1)
                                                .startsWith("fro");
        Parameters:
        index - the element's index
        Returns:
        the assertion on the given element
        Throws:
        java.lang.AssertionError - if the given index is out of bound.
        Since:
        2.5.0 / 3.5.0
      • toAssert

        protected abstract ELEMENT_ASSERT toAssert​(ELEMENT value,
                                                   java.lang.String description)
      • navigationDescription

        protected java.lang.String navigationDescription​(java.lang.String propertyName)
      • removeAssert

        private static java.lang.String removeAssert​(java.lang.String text)
      • filteredOn

        public SELF filteredOn​(java.util.function.Predicate<? super ELEMENT> predicate)
        Filter the iterable under test keeping only elements matching the given Predicate.

        Example : check old employees whose age > 100:

         Employee yoda   = new Employee(1L, new Name("Yoda"), 800);
         Employee obiwan = new Employee(2L, new Name("Obiwan"), 800);
         Employee luke   = new Employee(3L, new Name("Luke", "Skywalker"), 26);
        
         List<Employee> employees = newArrayList(yoda, luke, obiwan);
        
         assertThat(employees).filteredOn(employee -> employee.getAge() > 100)
                              .containsOnly(yoda, obiwan);
        Parameters:
        predicate - the filter predicate
        Returns:
        a new assertion object with the filtered iterable under test
        Throws:
        java.lang.IllegalArgumentException - if the given predicate is null.
      • allMatch

        public SELF allMatch​(java.util.function.Predicate<? super ELEMENT> predicate)
        Verifies that all the elements of actual match the given Predicate.

        Example :

         Iterable<String> abc  = newArrayList("a", "b", "c");
         Iterable<String> abcc = newArrayList("a", "b", "cc");
        
         // assertion will pass
         assertThat(abc).allMatch(s -> s.length() == 1);
        
         // assertion will fail
         assertThat(abcc).allMatch(s -> s.length() == 1);
        Note that you can achieve the same result with are(Condition) or have(Condition).
        Specified by:
        allMatch in interface ObjectEnumerableAssert<SELF extends AbstractIterableAssert<SELF,​ACTUAL,​ELEMENT,​ELEMENT_ASSERT>,​ACTUAL extends java.lang.Iterable<? extends ELEMENT>>
        Parameters:
        predicate - the given Predicate.
        Returns:
        this object.
      • allMatch

        public SELF allMatch​(java.util.function.Predicate<? super ELEMENT> predicate,
                             java.lang.String predicateDescription)
        Verifies that all the elements of actual match the given Predicate. The predicate description is used to get an informative error message.

        Example :

         Iterable<String> abc = newArrayList("a", "b", "c");
         Iterable<String> abcc = newArrayList("a", "b", "cc");
        
         // assertion will pass
         assertThat(abc).allMatch(s -> s.length() == 1, "length of 1");
        
         // assertion will fail
         assertThat(abcc).allMatch(s -> s.length() == 1, "length of 1");
        The message of the failed assertion would be:
        Expecting all elements of:
          <["a", "b", "cc"]>
          to match 'length of 1' predicate but this element did not:
          <"cc">
        Specified by:
        allMatch in interface ObjectEnumerableAssert<SELF extends AbstractIterableAssert<SELF,​ACTUAL,​ELEMENT,​ELEMENT_ASSERT>,​ACTUAL extends java.lang.Iterable<? extends ELEMENT>>
        Parameters:
        predicate - the given Predicate.
        predicateDescription - a description of the Predicate used in the error message
        Returns:
        this object.
      • allSatisfy

        public SELF allSatisfy​(java.util.function.Consumer<? super ELEMENT> requirements)
        Verifies that all the elements satisfy given requirements expressed as a Consumer.

        This is useful to perform a group of assertions on elements.

        Example:

         assertThat(myIcelanderFriends).allSatisfy(person -> {
                                         assertThat(person.getCountry()).isEqualTo("Iceland");
                                         assertThat(person.getPhoneCountryCode()).isEqualTo("+354");
                                       });

        If the actual iterable/array is empty, this assertion succeeds as there is no elements to check.

        Specified by:
        allSatisfy in interface ObjectEnumerableAssert<SELF extends AbstractIterableAssert<SELF,​ACTUAL,​ELEMENT,​ELEMENT_ASSERT>,​ACTUAL extends java.lang.Iterable<? extends ELEMENT>>
        Parameters:
        requirements - the given Consumer.
        Returns:
        this object.
      • zipSatisfy

        public <OTHER_ELEMENT> SELF zipSatisfy​(java.lang.Iterable<OTHER_ELEMENT> other,
                                               java.util.function.BiConsumer<? super ELEMENT,​OTHER_ELEMENT> zipRequirements)
        Verifies that the zipped pairs of actual and other elements, i.e: (actual 1st element, other 1st element), (actual 2nd element, other 2nd element), ... all satisfy the given zipRequirements.

        This assertion assumes that actual and other have the same size but they can contain different type of elements making it handy to compare objects converted to another type, for example Domain and View/DTO objects.

        Example:

         List<Adress> addressModels = findGoodRestaurants();
         List<AdressView> addressViews = convertToView(addressModels);
        
         // compare addressViews and addressModels respective paired elements.
         assertThat(addressViews).zipSatisfy(addressModels, (AdressView view, Adress model) -> {
            assertThat(view.getZipcode() + ' ' + view.getCity()).isEqualTo(model.getCityLine());
            assertThat(view.getStreet()).isEqualTo(model.getStreet().toUpperCase());
         });
        Type Parameters:
        OTHER_ELEMENT - the type of the other iterable elements.
        Parameters:
        other - the iterable to zip actual with.
        zipRequirements - the given requirements that each pair must satisfy.
        Returns:
        this assertion object.
        Throws:
        java.lang.NullPointerException - if the given zipRequirements BiConsumer is null.
        java.lang.NullPointerException - if the other iterable to zip actual with is null.
        java.lang.AssertionError - if the Iterable under test is null.
        java.lang.AssertionError - if actual and other don't have the same size.
        java.lang.AssertionError - if one or more pairs don't satisfy the given requirements.
        Since:
        3.9.0
      • anySatisfy

        public SELF anySatisfy​(java.util.function.Consumer<? super ELEMENT> requirements)
        Verifies that at least one element satisfies the given requirements expressed as a Consumer.

        This is useful to check that a group of assertions is verified by (at least) one element.

        If the group of elements to assert is empty, the assertion will fail.

        Example:

         // assume that one icelander in myIcelanderFriends has a name finishing by 'son'
         assertThat(myIcelanderFriends).anySatisfy(person -> {
                                          assertThat(person.getCountry()).isEqualTo("Iceland");
                                          assertThat(person.getSurname()).endsWith("son");
                                        });
        
         // assertion fails for empty group, whatever the requirements are.
         assertThat(emptyGroup).anySatisfy($ -> assertThat(true).isTrue());
        Specified by:
        anySatisfy in interface ObjectEnumerableAssert<SELF extends AbstractIterableAssert<SELF,​ACTUAL,​ELEMENT,​ELEMENT_ASSERT>,​ACTUAL extends java.lang.Iterable<? extends ELEMENT>>
        Parameters:
        requirements - the given Consumer.
        Returns:
        this object.
      • noneSatisfy

        public SELF noneSatisfy​(java.util.function.Consumer<? super ELEMENT> restrictions)
        Verifies that no elements satisfy the given restrictions expressed as a Consumer.

        Example:

         // assume that all icelander in myIcelanderFriends are not from Brazil
         assertThat(myIcelanderFriends).noneSatisfy(person -> {
                                          assertThat(person.getCountry()).isEqualTo("Brazil");
                                        });
        
        Note that this assertion succeeds if the group (collection, array, ...) is empty whatever the restrictions are.
        Specified by:
        noneSatisfy in interface ObjectEnumerableAssert<SELF extends AbstractIterableAssert<SELF,​ACTUAL,​ELEMENT,​ELEMENT_ASSERT>,​ACTUAL extends java.lang.Iterable<? extends ELEMENT>>
        Parameters:
        restrictions - the given restrictions as Consumer that no elements should met.
        Returns:
        this object.
      • as

        public SELF as​(java.lang.String description,
                       java.lang.Object... args)
        Description copied from class: AbstractAssert
        Sets the description of the assertion that is going to be called after.

        You must set it before calling the assertion otherwise it is ignored as the failing assertion breaks the chained call by throwing an AssertionError.

        The description follows String.format(String, Object...) syntax.

        Example :

         try {
           // set a bad age to Mr Frodo which is really 33 years old.
           frodo.setAge(50);
           // specify a test description (call as() before the assertion !), it supports String format syntax.
           assertThat(frodo.getAge()).as("check %s's age", frodo.getName()).isEqualTo(33);
         } catch (AssertionError e) {
           assertThat(e).hasMessage("[check Frodo's age] expected:<[33]> but was:<[50]>");
         }
        Specified by:
        as in interface Descriptable<SELF extends AbstractIterableAssert<SELF,​ACTUAL,​ELEMENT,​ELEMENT_ASSERT>>
        Overrides:
        as in class AbstractAssert<SELF extends AbstractIterableAssert<SELF,​ACTUAL,​ELEMENT,​ELEMENT_ASSERT>,​ACTUAL extends java.lang.Iterable<? extends ELEMENT>>
        Parameters:
        description - the new description to set.
        args - optional parameter if description is a format String.
        Returns:
        this object.
        See Also:
        Descriptable.describedAs(String, Object...)
      • isExactlyInstanceOf

        public SELF isExactlyInstanceOf​(java.lang.Class<?> type)
        Description copied from class: AbstractAssert
        Verifies that the actual value is exactly an instance of the given type.

        Example:

         // assertions will pass
         assertThat("abc").isExactlyInstanceOf(String.class);
         assertThat(new ArrayList<String>()).isExactlyInstanceOf(ArrayList.class);
         assertThat(new HashMap<String, Integer>()).isExactlyInstanceOf(HashMap.class);
        
         // assertions will fail
         assertThat(1).isExactlyInstanceOf(String.class);
         assertThat(new ArrayList<String>()).isExactlyInstanceOf(List.class);
         assertThat(new HashMap<String, Integer>()).isExactlyInstanceOf(Map.class);
        Specified by:
        isExactlyInstanceOf in interface Assert<SELF extends AbstractIterableAssert<SELF,​ACTUAL,​ELEMENT,​ELEMENT_ASSERT>,​ACTUAL extends java.lang.Iterable<? extends ELEMENT>>
        Overrides:
        isExactlyInstanceOf in class AbstractAssert<SELF extends AbstractIterableAssert<SELF,​ACTUAL,​ELEMENT,​ELEMENT_ASSERT>,​ACTUAL extends java.lang.Iterable<? extends ELEMENT>>
        Parameters:
        type - the type to check the actual value against.
        Returns:
        this assertion object.
      • isInstanceOfAny

        public SELF isInstanceOfAny​(java.lang.Class<?>... types)
        Description copied from class: AbstractAssert
        Verifies that the actual value is an instance of any of the given types.

        Example:

         // assertions will pass
         assertThat("abc").isInstanceOfAny(String.class, Integer.class);
         assertThat(new ArrayList<String>()).isInstanceOfAny(LinkedList.class, ArrayList.class);
         assertThat(new HashMap<String, Integer>()).isInstanceOfAny(TreeMap.class, Map.class);
        
         // assertions will fail
         assertThat(1).isInstanceOfAny(Double.class, Float.class);
         assertThat(new ArrayList<String>()).isInstanceOfAny(LinkedList.class, Vector.class);
        Specified by:
        isInstanceOfAny in interface Assert<SELF extends AbstractIterableAssert<SELF,​ACTUAL,​ELEMENT,​ELEMENT_ASSERT>,​ACTUAL extends java.lang.Iterable<? extends ELEMENT>>
        Overrides:
        isInstanceOfAny in class AbstractAssert<SELF extends AbstractIterableAssert<SELF,​ACTUAL,​ELEMENT,​ELEMENT_ASSERT>,​ACTUAL extends java.lang.Iterable<? extends ELEMENT>>
        Parameters:
        types - the types to check the actual value against.
        Returns:
        this assertion object.
      • isNotExactlyInstanceOf

        public SELF isNotExactlyInstanceOf​(java.lang.Class<?> type)
        Description copied from class: AbstractAssert
        Verifies that the actual value is not exactly an instance of given type.

        Example:

         // assertions will pass
         assertThat(1).isNotExactlyInstanceOf(String.class);
         assertThat(new ArrayList<String>()).isNotExactlyInstanceOf(List.class);
         assertThat(new HashMap<String, Integer>()).isNotExactlyInstanceOf(Map.class);
        
         // assertions will fail
         assertThat("abc").isNotExactlyInstanceOf(String.class);
         assertThat(new ArrayList<String>()).isNotExactlyInstanceOf(ArrayList.class);
         assertThat(new HashMap<String, Integer>()).isNotExactlyInstanceOf(HashMap.class);
        Specified by:
        isNotExactlyInstanceOf in interface Assert<SELF extends AbstractIterableAssert<SELF,​ACTUAL,​ELEMENT,​ELEMENT_ASSERT>,​ACTUAL extends java.lang.Iterable<? extends ELEMENT>>
        Overrides:
        isNotExactlyInstanceOf in class AbstractAssert<SELF extends AbstractIterableAssert<SELF,​ACTUAL,​ELEMENT,​ELEMENT_ASSERT>,​ACTUAL extends java.lang.Iterable<? extends ELEMENT>>
        Parameters:
        type - the type to check the actual value against.
        Returns:
        this assertion object.
      • isNotInstanceOfAny

        public SELF isNotInstanceOfAny​(java.lang.Class<?>... types)
        Description copied from class: AbstractAssert
        Verifies that the actual value is not an instance of any of the given types.

        Example:

         // assertions will pass
         assertThat(1).isNotInstanceOfAny(Double.class, Float.class);
         assertThat(new ArrayList<String>()).isNotInstanceOfAny(LinkedList.class, Vector.class);
        
         // assertions will fail
         assertThat(1).isNotInstanceOfAny(Double.class, Integer.class);
         assertThat(new ArrayList<String>()).isNotInstanceOfAny(LinkedList.class, ArrayList.class);
         assertThat(new HashMap<String, Integer>()).isNotInstanceOfAny(TreeMap.class, Map.class);
        Specified by:
        isNotInstanceOfAny in interface Assert<SELF extends AbstractIterableAssert<SELF,​ACTUAL,​ELEMENT,​ELEMENT_ASSERT>,​ACTUAL extends java.lang.Iterable<? extends ELEMENT>>
        Overrides:
        isNotInstanceOfAny in class AbstractAssert<SELF extends AbstractIterableAssert<SELF,​ACTUAL,​ELEMENT,​ELEMENT_ASSERT>,​ACTUAL extends java.lang.Iterable<? extends ELEMENT>>
        Parameters:
        types - the types to check the actual value against.
        Returns:
        this assertion object.
      • isNotOfAnyClassIn

        public SELF isNotOfAnyClassIn​(java.lang.Class<?>... types)
        Description copied from class: AbstractAssert
        Verifies that the actual value type is not in given types.

        Example:

         // assertions will pass
         assertThat(new HashMap<String, Integer>()).isNotOfAnyClassIn(Map.class, TreeMap.class);
         assertThat(new ArrayList<String>()).isNotOfAnyClassIn(LinkedList.class, List.class);
        
         // assertions will fail
         assertThat(new HashMap<String, Integer>()).isNotOfAnyClassIn(HashMap.class, TreeMap.class);
         assertThat(new ArrayList<String>()).isNotOfAnyClassIn(ArrayList.class, LinkedList.class);
        Specified by:
        isNotOfAnyClassIn in interface Assert<SELF extends AbstractIterableAssert<SELF,​ACTUAL,​ELEMENT,​ELEMENT_ASSERT>,​ACTUAL extends java.lang.Iterable<? extends ELEMENT>>
        Overrides:
        isNotOfAnyClassIn in class AbstractAssert<SELF extends AbstractIterableAssert<SELF,​ACTUAL,​ELEMENT,​ELEMENT_ASSERT>,​ACTUAL extends java.lang.Iterable<? extends ELEMENT>>
        Parameters:
        types - the types to check the actual value against.
        Returns:
        this assertion object.
      • isNotSameAs

        public SELF isNotSameAs​(java.lang.Object other)
        Description copied from class: AbstractAssert
        Verifies that the actual value is not the same as the given one, ie using == comparison.

        Example:

         // Name is a class with first and last fields, two Names are equals if both first and last are equals.
         Name tyrion = new Name("Tyrion", "Lannister");
         Name alias  = tyrion;
         Name clone  = new Name("Tyrion", "Lannister");
        
         // assertions succeed:
         assertThat(clone).isNotSameAs(tyrion)
                          .isEqualTo(tyrion);
        
         // assertion fails:
         assertThat(alias).isNotSameAs(tyrion);
        Specified by:
        isNotSameAs in interface Assert<SELF extends AbstractIterableAssert<SELF,​ACTUAL,​ELEMENT,​ELEMENT_ASSERT>,​ACTUAL extends java.lang.Iterable<? extends ELEMENT>>
        Overrides:
        isNotSameAs in class AbstractAssert<SELF extends AbstractIterableAssert<SELF,​ACTUAL,​ELEMENT,​ELEMENT_ASSERT>,​ACTUAL extends java.lang.Iterable<? extends ELEMENT>>
        Parameters:
        other - the given value to compare the actual value to.
        Returns:
        this assertion object.
      • isOfAnyClassIn

        public SELF isOfAnyClassIn​(java.lang.Class<?>... types)
        Description copied from class: AbstractAssert
        Verifies that the actual value type is in given types.

        Example:

         // assertions will pass
         assertThat(new HashMap<String, Integer>()).isOfAnyClassIn(HashMap.class, TreeMap.class);
         assertThat(new ArrayList<String>()).isOfAnyClassIn(ArrayList.class, LinkedList.class);
        
         // assertions will fail
         assertThat(new HashMap<String, Integer>()).isOfAnyClassIn(TreeMap.class, Map.class);
         assertThat(new ArrayList<String>()).isOfAnyClassIn(LinkedList.class, List.class);
        Specified by:
        isOfAnyClassIn in interface Assert<SELF extends AbstractIterableAssert<SELF,​ACTUAL,​ELEMENT,​ELEMENT_ASSERT>,​ACTUAL extends java.lang.Iterable<? extends ELEMENT>>
        Overrides:
        isOfAnyClassIn in class AbstractAssert<SELF extends AbstractIterableAssert<SELF,​ACTUAL,​ELEMENT,​ELEMENT_ASSERT>,​ACTUAL extends java.lang.Iterable<? extends ELEMENT>>
        Parameters:
        types - the types to check the actual value against.
        Returns:
        this assertion object.
      • isSameAs

        public SELF isSameAs​(java.lang.Object expected)
        Description copied from class: AbstractAssert
        Verifies that the actual value is the same as the given one, ie using == comparison.

        Example:

         // Name is a class with first and last fields, two Names are equals if both first and last are equals.
         Name tyrion = new Name("Tyrion", "Lannister");
         Name alias  = tyrion;
         Name clone  = new Name("Tyrion", "Lannister");
        
         // assertions succeed:
         assertThat(tyrion).isSameAs(alias)
                           .isEqualTo(clone);
        
         // assertion fails:
         assertThat(tyrion).isSameAs(clone);
        Specified by:
        isSameAs in interface Assert<SELF extends AbstractIterableAssert<SELF,​ACTUAL,​ELEMENT,​ELEMENT_ASSERT>,​ACTUAL extends java.lang.Iterable<? extends ELEMENT>>
        Overrides:
        isSameAs in class AbstractAssert<SELF extends AbstractIterableAssert<SELF,​ACTUAL,​ELEMENT,​ELEMENT_ASSERT>,​ACTUAL extends java.lang.Iterable<? extends ELEMENT>>
        Parameters:
        expected - the given value to compare the actual value to.
        Returns:
        this assertion object.
      • overridingErrorMessage

        public SELF overridingErrorMessage​(java.lang.String newErrorMessage,
                                           java.lang.Object... args)
        Description copied from class: AbstractAssert
        Overrides AssertJ default error message by the given one.

        You must set it before calling the assertion otherwise it is ignored as the failing assertion breaks the chained call by throwing an AssertionError.

        The new error message is built using String.format(String, Object...) if you provide args parameter (if you don't, the error message is taken as it is).

        Example :

        assertThat(player.isRookie()).overridingErrorMessage("Expecting Player <%s> to be a rookie but was not.", player)
                                      .isTrue();
        Overrides:
        overridingErrorMessage in class AbstractAssert<SELF extends AbstractIterableAssert<SELF,​ACTUAL,​ELEMENT,​ELEMENT_ASSERT>,​ACTUAL extends java.lang.Iterable<? extends ELEMENT>>
        Parameters:
        newErrorMessage - the error message that will replace the default one provided by Assertj.
        args - the args used to fill error message as in String.format(String, Object...).
        Returns:
        this assertion object.
      • usingComparator

        public SELF usingComparator​(java.util.Comparator<? super ACTUAL> customComparator)
        Description copied from class: AbstractAssert
        Use the given custom comparator instead of relying on actual type A equals method for incoming assertion checks.

        The custom comparator is bound to assertion instance, meaning that if a new assertion instance is created, the default comparison strategy will be used.

        Examples :

         // frodo and sam are instances of Character with Hobbit race (obviously :).
         // raceComparator implements Comparator<Character>
         assertThat(frodo).usingComparator(raceComparator).isEqualTo(sam);
        Specified by:
        usingComparator in interface Assert<SELF extends AbstractIterableAssert<SELF,​ACTUAL,​ELEMENT,​ELEMENT_ASSERT>,​ACTUAL extends java.lang.Iterable<? extends ELEMENT>>
        Overrides:
        usingComparator in class AbstractAssert<SELF extends AbstractIterableAssert<SELF,​ACTUAL,​ELEMENT,​ELEMENT_ASSERT>,​ACTUAL extends java.lang.Iterable<? extends ELEMENT>>
        Parameters:
        customComparator - the comparator to use for the incoming assertion checks.
        Returns:
        this assertion object.
      • usingComparator

        public SELF usingComparator​(java.util.Comparator<? super ACTUAL> customComparator,
                                    java.lang.String customComparatorDescription)
        Description copied from class: AbstractAssert
        Use the given custom comparator instead of relying on actual type A equals method for incoming assertion checks.

        The custom comparator is bound to assertion instance, meaning that if a new assertion instance is created, the default comparison strategy will be used.

        Examples :

         // frodo and sam are instances of Character with Hobbit race (obviously :).
         // raceComparator implements Comparator<Character>
         assertThat(frodo).usingComparator(raceComparator, "Hobbit Race Comparator").isEqualTo(sam);
        Specified by:
        usingComparator in interface Assert<SELF extends AbstractIterableAssert<SELF,​ACTUAL,​ELEMENT,​ELEMENT_ASSERT>,​ACTUAL extends java.lang.Iterable<? extends ELEMENT>>
        Overrides:
        usingComparator in class AbstractAssert<SELF extends AbstractIterableAssert<SELF,​ACTUAL,​ELEMENT,​ELEMENT_ASSERT>,​ACTUAL extends java.lang.Iterable<? extends ELEMENT>>
        Parameters:
        customComparator - the comparator to use for the incoming assertion checks.
        customComparatorDescription - comparator description to be used in assertion error messages
        Returns:
        this assertion object.
      • withThreadDumpOnError

        public SELF withThreadDumpOnError()
        Description copied from class: AbstractAssert
        In case of an assertion error, a thread dump will be printed to System.err.

        Example :

         assertThat("Messi").withThreadDumpOnError().isEqualTo("Ronaldo");
        will print a thread dump, something similar to this:
        "JDWP Command Reader"
         	java.lang.Thread.State: RUNNABLE
        
         "JDWP Event Helper Thread"
         	java.lang.Thread.State: RUNNABLE
        
         "JDWP Transport Listener: dt_socket"
         	java.lang.Thread.State: RUNNABLE
        
         "Signal Dispatcher"
         	java.lang.Thread.State: RUNNABLE
        
         "Finalizer"
         	java.lang.Thread.State: WAITING
         		at java.lang.Object.wait(Native Method)
         		at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:135)
         		at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:151)
         		at java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:189)
        
         "Reference Handler"
         	java.lang.Thread.State: WAITING
         		at java.lang.Object.wait(Native Method)
         		at java.lang.Object.wait(Object.java:503)
         		at java.lang.ref.Reference$ReferenceHandler.run(Reference.java:133)
        
         "main"
         	java.lang.Thread.State: RUNNABLE
         		at sun.management.ThreadImpl.dumpThreads0(Native Method)
         		at sun.management.ThreadImpl.dumpAllThreads(ThreadImpl.java:446)
         		at org.assertj.core.internal.Failures.threadDumpDescription(Failures.java:193)
         		at org.assertj.core.internal.Failures.printThreadDumpIfNeeded(Failures.java:141)
         		at org.assertj.core.internal.Failures.failure(Failures.java:91)
         		at org.assertj.core.internal.Objects.assertEqual(Objects.java:314)
         		at org.assertj.core.api.AbstractAssert.isEqualTo(AbstractAssert.java:198)
         		at org.assertj.examples.ThreadDumpOnErrorExample.main(ThreadDumpOnErrorExample.java:28)
        Specified by:
        withThreadDumpOnError in interface Assert<SELF extends AbstractIterableAssert<SELF,​ACTUAL,​ELEMENT,​ELEMENT_ASSERT>,​ACTUAL extends java.lang.Iterable<? extends ELEMENT>>
        Overrides:
        withThreadDumpOnError in class AbstractAssert<SELF extends AbstractIterableAssert<SELF,​ACTUAL,​ELEMENT,​ELEMENT_ASSERT>,​ACTUAL extends java.lang.Iterable<? extends ELEMENT>>
        Returns:
        this assertion object.
      • size

        public AbstractIterableSizeAssert<SELF,​ACTUAL,​ELEMENT,​ELEMENT_ASSERT> size()
        Returns an Assert object that allows performing assertions on the size of the Iterable under test.

        Once this method is called, the object under test is no longer the Iterable but its size, to perform assertions on the Iterable, call AbstractIterableSizeAssert.returnToIterable().

        Example:

         Iterable<Ring> elvesRings = newArrayList(vilya, nenya, narya);
        
         // assertion will pass:
         assertThat(elvesRings).size().isGreaterThan(1)
                                      .isLessThanOrEqualTo(3)
                               .returnToIterable().contains(narya)
                                                  .doesNotContain(oneRing);
        
         // assertion will fail:
         assertThat(elvesRings).size().isGreaterThan(3);
        Returns:
        AbstractIterableSizeAssert built with the Iterable's size.
        Throws:
        java.lang.NullPointerException - if the given Iterable is null.
      • getComparatorsForElementPropertyOrFieldTypes

        protected TypeComparators getComparatorsForElementPropertyOrFieldTypes()
      • newAbstractIterableAssert

        protected abstract SELF newAbstractIterableAssert​(java.lang.Iterable<? extends ELEMENT> iterable)
      • withComparatorsForElementPropertyOrFieldNames

        SELF withComparatorsForElementPropertyOrFieldNames​(java.util.Map<java.lang.String,​java.util.Comparator<?>> comparatorsForElementPropertyOrFieldNames)
      • withComparatorsForElementPropertyOrFieldTypes

        SELF withComparatorsForElementPropertyOrFieldTypes​(TypeComparators comparatorsForElementPropertyOrFieldTypes)