Class AtomicReferenceArrayAssert<T>

All Implemented Interfaces:
ArraySortedAssert<AtomicReferenceArrayAssert<T>,T>, Assert<AtomicReferenceArrayAssert<T>,AtomicReferenceArray<T>>, Descriptable<AtomicReferenceArrayAssert<T>>, EnumerableAssert<AtomicReferenceArrayAssert<T>,T>, ExtensionPoints<AtomicReferenceArrayAssert<T>,AtomicReferenceArray<T>>, IndexedObjectEnumerableAssert<AtomicReferenceArrayAssert<T>,T>, ObjectEnumerableAssert<AtomicReferenceArrayAssert<T>,T>

  • Field Details

    • array

      private T[] array
    • arrays

      ObjectArrays arrays
    • iterables

      Iterables iterables
    • comparatorsForElementPropertyOrFieldNames

      private Map<String,Comparator<?>> comparatorsForElementPropertyOrFieldNames
    • comparatorsForElementPropertyOrFieldTypes

      private TypeComparators comparatorsForElementPropertyOrFieldTypes
  • Constructor Details

  • Method Details

    • as

      public AtomicReferenceArrayAssert<T> as(Description description)
      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.

      This overloaded version of "describedAs" offers more flexibility than the one taking a String by allowing users to pass their own implementation of a description. For example, a description that creates its value lazily, only when an assertion failure occurs.

      Specified by:
      as in interface Descriptable<T>
      Overrides:
      as in class AbstractAssert<AtomicReferenceArrayAssert<T>,AtomicReferenceArray<T>>
      Parameters:
      description - the new description to set.
      Returns:
      this object.
      See Also:
    • as

      public AtomicReferenceArrayAssert<T> as(String description, 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<T>
      Overrides:
      as in class AbstractAssert<AtomicReferenceArrayAssert<T>,AtomicReferenceArray<T>>
      Parameters:
      description - the new description to set.
      args - optional parameter if description is a format String.
      Returns:
      this object.
      See Also:
    • isNullOrEmpty

      public void isNullOrEmpty()
      Verifies that the AtomicReferenceArray is null or empty.

      Example:

       // assertions will pass
       assertThat(new AtomicReferenceArray<>(new String[0])).isNullOrEmpty();
       AtomicReferenceArray array = null;
       assertThat(array).isNullOrEmpty();
       
       // assertion will fail
       assertThat(new AtomicReferenceArray<>(new String[] {"a", "b", "c"})).isNullOrEmpty();

      Specified by:
      isNullOrEmpty in interface EnumerableAssert<AtomicReferenceArrayAssert<T>,T>
      Throws:
      AssertionError - if the AtomicReferenceArray is not null or not empty.
      Since:
      2.7.0 / 3.7.0
    • isEmpty

      public void isEmpty()
      Verifies that the AtomicReferenceArray is empty.

      Example:

       // assertion will pass
       assertThat(new AtomicReferenceArray<>(new String[0])).isEmpty();
       
       // assertion will fail
       assertThat(new AtomicReferenceArray<>(new String[]{"a", "b", "c"})).isEmpty();

      Specified by:
      isEmpty in interface EnumerableAssert<AtomicReferenceArrayAssert<T>,T>
      Throws:
      AssertionError - if the AtomicReferenceArray is not empty.
      Since:
      2.7.0 / 3.7.0
    • isNotEmpty

      public AtomicReferenceArrayAssert<T> isNotEmpty()
      Verifies that the AtomicReferenceArray is not empty.

      Example:

       // assertion will pass
       assertThat(new AtomicReferenceArray<>(new String[]{"a", "b", "c"})).isNotEmpty();
       
       // assertion will fail
       assertThat(new AtomicReferenceArray<>(new String[0])).isNotEmpty();

      Specified by:
      isNotEmpty in interface EnumerableAssert<AtomicReferenceArrayAssert<T>,T>
      Returns:
      this assertion object.
      Throws:
      AssertionError - if the AtomicReferenceArray is empty.
      Since:
      2.7.0 / 3.7.0
    • hasArray

      public AtomicReferenceArrayAssert<T> hasArray(T[] expected)
      Verifies that the AtomicReferenceArray has the given array.

      Example:

       AtomicReferenceArray<String> atomicArray = new AtomicReferenceArray<>(new String[]{"a", "b", "c"});
       
       // assertion will pass
       assertThat(atomicArray).hasArray(new String[]{"a", "b", "c"});
       
       // assertion will fail
       assertThat(atomicArray).hasArray(new String[]{"a", "b", "c", "d"});

      Parameters:
      expected - the array expected to be in the actual AtomicReferenceArray.
      Returns:
      this assertion object.
      Throws:
      AssertionError - if the AtomicReferenceArray does not have the given array.
      Since:
      2.7.0 / 3.7.0
    • hasSize

      public AtomicReferenceArrayAssert<T> hasSize(int expected)
      Verifies that the number of values in the AtomicReferenceArray is equal to the given one.

      Example:

       AtomicReferenceArray<String> atomicArray = new AtomicReferenceArray<>(new String[]{"a", "b", "c"});
       
       assertThat(atomicArray).hasSize(3);
       
       // assertion will fail
       assertThat(atomicArray).hasSize(1);

      Specified by:
      hasSize in interface EnumerableAssert<AtomicReferenceArrayAssert<T>,T>
      Parameters:
      expected - the expected number of values in the actual AtomicReferenceArray.
      Returns:
      this assertion object.
      Throws:
      AssertionError - if the number of values of the AtomicReferenceArray is not equal to the given one.
      Since:
      2.7.0 / 3.7.0
    • hasSameSizeAs

      public AtomicReferenceArrayAssert<T> hasSameSizeAs(Object other)
      Verifies that the actual AtomicReferenceArray has the same size as the given array.

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

      Example:

       AtomicReferenceArray<String> abc = new AtomicReferenceArray<>(new String[]{"a", "b", "c"});
       int[] fourFiveSix = {4, 5, 6};
       int[] sevenEight = {7, 8};
      
       // assertion will pass
       assertThat(abc).hasSameSizeAs(fourFiveSix);
      
       // assertion will fail
       assertThat(abc).hasSameSizeAs(sevenEight);
      Specified by:
      hasSameSizeAs in interface EnumerableAssert<AtomicReferenceArrayAssert<T>,T>
      Parameters:
      other - the array to compare size with actual AtomicReferenceArray.
      Returns:
      this assertion object.
      Throws:
      AssertionError - if the actual AtomicReferenceArray is null.
      AssertionError - if the array parameter is null or is not a true array.
      AssertionError - if actual AtomicReferenceArray and given array don't have the same size.
      Since:
      2.7.0 / 3.7.0
    • hasSameSizeAs

      public AtomicReferenceArrayAssert<T> hasSameSizeAs(Iterable<?> other)
      Verifies that the actual AtomicReferenceArray has the same size as the given Iterable.

      Example:

       AtomicReferenceArray<String> abc = new AtomicReferenceArray<>(new String[]{"a", "b", "c"});
       Iterable<Ring> elvesRings = newArrayList(vilya, nenya, narya);
      
       // assertion will pass
       assertThat(abc).hasSameSizeAs(elvesRings);
       
       // assertion will fail
       assertThat(abc).hasSameSizeAs(Arrays.asList("a", "b"));
      Specified by:
      hasSameSizeAs in interface EnumerableAssert<AtomicReferenceArrayAssert<T>,T>
      Parameters:
      other - the Iterable to compare size with actual AtomicReferenceArray.
      Returns:
      this assertion object.
      Throws:
      AssertionError - if the actual AtomicReferenceArray is null.
      AssertionError - if the other Iterable is null.
      AssertionError - if actual AtomicReferenceArray and given Iterable don't have the same size.
      Since:
      2.7.0 / 3.7.0
    • contains

      public AtomicReferenceArrayAssert<T> contains(T... values)
      Verifies that the actual AtomicReferenceArray contains the given values, in any order.

      Example :

       AtomicReferenceArray<String> abc = new AtomicReferenceArray<>(new String[]{"a", "b", "c"});
      
       // assertions will pass
       assertThat(abc).contains("b", "a")
                      .contains("b", "a", "b");
      
       // assertions will fail
       assertThat(abc).contains("d");
       assertThat(abc).contains("c", "d");
      Specified by:
      contains in interface ObjectEnumerableAssert<AtomicReferenceArrayAssert<T>,T>
      Parameters:
      values - the given values.
      Returns:
      this assertion object.
      Throws:
      NullPointerException - if the given argument is null.
      IllegalArgumentException - if the given argument is an empty array.
      AssertionError - if the actual AtomicReferenceArray is null.
      AssertionError - if the actual AtomicReferenceArray does not contain the given values.
      Since:
      2.7.0 / 3.7.0
    • containsOnly

      public AtomicReferenceArrayAssert<T> containsOnly(T... values)
      Verifies that the actual AtomicReferenceArray contains only the given values and nothing else, in any order.

      Example :

       AtomicReferenceArray<String> abc = new AtomicReferenceArray<>(new String[]{"a", "b", "c"});
      
       // assertions will pass
       assertThat(abc).containsOnly("c", "b", "a")
                      .containsOnly("a", "a", "b", "c", "c");
      
       // assertion will fail because "c" is missing
       assertThat(abc).containsOnly("a", "b");
      Specified by:
      containsOnly in interface ObjectEnumerableAssert<AtomicReferenceArrayAssert<T>,T>
      Parameters:
      values - the given values.
      Returns:
      this assertion object.
      Throws:
      NullPointerException - if the given argument is null.
      IllegalArgumentException - if the given argument is an empty array.
      AssertionError - if the actual AtomicReferenceArray is null.
      AssertionError - if the actual AtomicReferenceArray does not contain the given values, i.e. the actual AtomicReferenceArray contains some or none of the given values, or the actual AtomicReferenceArray contains more values than the given ones.
      Since:
      2.7.0 / 3.7.0
    • containsOnlyElementsOf

      public AtomicReferenceArrayAssert<T> containsOnlyElementsOf(Iterable<? extends T> iterable)
      Same semantic as containsOnly(Object[]) : verifies that actual contains all elements of the given Iterable and nothing else, in any order.

      Example :

       AtomicReferenceArray<Ring> rings = new AtomicReferenceArray<>(new Ring[]{nenya, vilya});
      
       // assertions will pass
       assertThat(rings).containsOnlyElementsOf(newArrayList(nenya, vilya))
                        .containsOnlyElementsOf(newArrayList(nenya, nenya, vilya, vilya));
      
       // assertion will fail as actual does not contain narya
       assertThat(rings).containsOnlyElementsOf(newArrayList(nenya, vilya, narya));
       // assertion will fail as actual contains nenya
       assertThat(rings).containsOnlyElementsOf(newArrayList(vilya));
      Specified by:
      containsOnlyElementsOf in interface ObjectEnumerableAssert<AtomicReferenceArrayAssert<T>,T>
      Parameters:
      iterable - the given Iterable we will get elements from.
      Since:
      2.7.0 / 3.7.0
    • hasSameElementsAs

      public AtomicReferenceArrayAssert<T> hasSameElementsAs(Iterable<? extends T> iterable)
      An alias of containsOnlyElementsOf(Iterable) : verifies that actual contains all elements of the given Iterable and nothing else, in any order.

      Example:
       AtomicReferenceArray<Ring> elvesRings = new AtomicReferenceArray<>(new Ring[]{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<AtomicReferenceArrayAssert<T>,T>
      Parameters:
      iterable - the Iterable whose elements we expect to be present
      Returns:
      this assertion object
      Throws:
      AssertionError - if the actual AtomicReferenceArray is null
      NullPointerException - if the given Iterable is null
      AssertionError - if the actual Iterable does not have the same elements, in any order, as the given Iterable
      Since:
      2.7.0 / 3.7.0
    • containsOnlyOnce

      public AtomicReferenceArrayAssert<T> containsOnlyOnce(T... values)
      Verifies that the actual AtomicReferenceArray contains the given values only once.

      Examples :

       // array is a factory method to create arrays.
       AtomicReferenceArray<String> got = new AtomicReferenceArray<>(new String[]{"winter", "is", "coming"});
      
       // assertions will pass
       assertThat(got).containsOnlyOnce("winter")
                      .containsOnlyOnce("coming", "winter");
      
       // assertions will fail
       AtomicReferenceArray<String> stark= new AtomicReferenceArray<>(new String[]{"Arya", "Stark", "daughter", "of", "Ned", "Stark")});
       assertThat(got).containsOnlyOnce("Lannister");
       assertThat(stark).containsOnlyOnce("Stark");
      Specified by:
      containsOnlyOnce in interface ObjectEnumerableAssert<AtomicReferenceArrayAssert<T>,T>
      Parameters:
      values - the given values.
      Returns:
      this assertion object.
      Throws:
      NullPointerException - if the given argument is null.
      IllegalArgumentException - if the given argument is an empty array.
      AssertionError - if the actual AtomicReferenceArray is null.
      AssertionError - if the actual AtomicReferenceArray does not contain the given values, i.e. the actual AtomicReferenceArray contains some or none of the given values, or the actual AtomicReferenceArray contains more than once these values.
      Since:
      2.7.0 / 3.7.0
    • containsExactly

      public AtomicReferenceArrayAssert<T> containsExactly(T... values)
      Verifies that the actual AtomicReferenceArray contains only the given values and nothing else, in order.

      Example :

       AtomicReferenceArray<Ring> elvesRings = new AtomicReferenceArray<>(new Ring[]{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);
      Specified by:
      containsExactly in interface ObjectEnumerableAssert<AtomicReferenceArrayAssert<T>,T>
      Parameters:
      values - the given values.
      Returns:
      this assertion object.
      Throws:
      NullPointerException - if the given argument is null.
      AssertionError - if the actual AtomicReferenceArray is null.
      AssertionError - if the actual AtomicReferenceArray does not contain the given values with same order, i.e. the actual AtomicReferenceArray contains some or none of the given values, or the actual AtomicReferenceArray contains more values than the given ones or values are the same but the order is not.
      Since:
      2.7.0 / 3.7.0
    • containsExactlyInAnyOrder

      public AtomicReferenceArrayAssert<T> containsExactlyInAnyOrder(T... values)
      Verifies that the actual AtomicReferenceArray contains exactly the given values and nothing else, in any order.

      Example :

       AtomicReferenceArray<Ring> elvesRings = new AtomicReferenceArray<>(new Ring[]{vilya, nenya, narya});
      
       // 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);
      Specified by:
      containsExactlyInAnyOrder in interface ObjectEnumerableAssert<AtomicReferenceArrayAssert<T>,T>
      Parameters:
      values - the given values.
      Returns:
      this assertion object.
      Throws:
      NullPointerException - if the given argument is null.
      AssertionError - if the actual group is null.
      AssertionError - if the actual AtomicReferenceArray does not contain the given values, i.e. it contains some or none of the given values, or more values than the given ones.
    • containsExactlyElementsOf

      public AtomicReferenceArrayAssert<T> containsExactlyElementsOf(Iterable<? extends T> iterable)
      Same as containsExactly(Object...) but handles the Iterable to array conversion : verifies that actual contains all elements of the given Iterable and nothing else in the same order.

      Example :

       AtomicReferenceArray<Ring> elvesRings = new AtomicReferenceArray<>(new Ring[]{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));
      Specified by:
      containsExactlyElementsOf in interface ObjectEnumerableAssert<AtomicReferenceArrayAssert<T>,T>
      Parameters:
      iterable - the given Iterable we will get elements from.
    • containsSequence

      public AtomicReferenceArrayAssert<T> containsSequence(T... sequence)
      Verifies that the actual AtomicReferenceArray contains the given sequence in the correct order and without extra values between the sequence values.

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

      Example:

       AtomicReferenceArray<Ring> elvesRings = new AtomicReferenceArray<>(new Ring[]{vilya, nenya, narya});
      
       // assertion 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);
      Specified by:
      containsSequence in interface ObjectEnumerableAssert<AtomicReferenceArrayAssert<T>,T>
      Parameters:
      sequence - the sequence of objects to look for.
      Returns:
      this assertion object.
      Throws:
      AssertionError - if the actual AtomicReferenceArray is null.
      AssertionError - if the given array is null.
      AssertionError - if the actual AtomicReferenceArray does not contain the given sequence.
    • containsSequence

      public AtomicReferenceArrayAssert<T> containsSequence(Iterable<? extends T> sequence)
      Verifies that the actual AtomicReferenceArray contains the given sequence in the correct order and without extra values between the sequence values.

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

      Example:

       AtomicReferenceArray<Ring> elvesRings = new AtomicReferenceArray<>(new Ring[]{vilya, nenya, narya});
      
       // assertion 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));
      Specified by:
      containsSequence in interface ObjectEnumerableAssert<AtomicReferenceArrayAssert<T>,T>
      Parameters:
      sequence - the sequence of objects to look for.
      Returns:
      this assertion object.
      Throws:
      AssertionError - if the actual AtomicReferenceArray is null.
      AssertionError - if the given array is null.
      AssertionError - if the actual AtomicReferenceArray does not contain the given sequence.
    • doesNotContainSequence

      public AtomicReferenceArrayAssert<T> doesNotContainSequence(T... sequence)
      Verifies that the actual AtomicReferenceArray contains the given sequence in the given order and without extra values between the sequence values.

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

      Example:

       AtomicReferenceArray<Ring> elvesRings = new AtomicReferenceArray<>(new Ring[]{vilya, nenya, narya});
      
       // assertion will pass, the elements order is correct but there is a value between them (nenya)
       assertThat(elvesRings).containsSequence(vilya, narya);
       assertThat(elvesRings).containsSequence(nenya, vilya);
      
       // assertions will fail
       assertThat(elvesRings).containsSequence(vilya, nenya);
       assertThat(elvesRings).containsSequence(nenya, narya);
      Specified by:
      doesNotContainSequence in interface ObjectEnumerableAssert<AtomicReferenceArrayAssert<T>,T>
      Parameters:
      sequence - the sequence of objects to look for.
      Returns:
      this assertion object.
      Throws:
      AssertionError - if the actual AtomicReferenceArray is null.
      AssertionError - if the given array is null.
      AssertionError - if the actual AtomicReferenceArray does not contain the given sequence.
    • doesNotContainSequence

      public AtomicReferenceArrayAssert<T> doesNotContainSequence(Iterable<? extends T> sequence)
      Verifies that the actual AtomicReferenceArray contains the given sequence in the given order and without extra values between the sequence values.

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

      Example:

       AtomicReferenceArray<Ring> elvesRings = new AtomicReferenceArray<>(new Ring[]{vilya, nenya, narya});
      
       // assertion will pass, 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));
      
       // assertions will fail
       assertThat(elvesRings).containsSequence(newArrayList(vilya, nenya));
       assertThat(elvesRings).containsSequence(newArrayList(nenya, narya));
      Specified by:
      doesNotContainSequence in interface ObjectEnumerableAssert<AtomicReferenceArrayAssert<T>,T>
      Parameters:
      sequence - the sequence of objects to look for.
      Returns:
      this assertion object.
      Throws:
      AssertionError - if the actual AtomicReferenceArray is null.
      AssertionError - if the given array is null.
      AssertionError - if the actual AtomicReferenceArray does not contain the given sequence.
    • containsSubsequence

      public AtomicReferenceArrayAssert<T> containsSubsequence(T... subsequence)
      Verifies that the actual AtomicReferenceArray contains the given subsequence in the correct order (possibly with other values between them).

      Example:

       AtomicReferenceArray<Ring> elvesRings = new AtomicReferenceArray<>(new Ring[]{vilya, nenya, narya});
      
       // assertions will pass
       assertThat(elvesRings).containsSubsequence(vilya, nenya)
                             .containsSubsequence(vilya, narya);
      
       // assertion will fail
       assertThat(elvesRings).containsSubsequence(nenya, vilya);
      Specified by:
      containsSubsequence in interface ObjectEnumerableAssert<AtomicReferenceArrayAssert<T>,T>
      Parameters:
      subsequence - the subsequence of objects to look for.
      Returns:
      this assertion object.
      Throws:
      AssertionError - if the actual AtomicReferenceArray is null.
      AssertionError - if the given array is null.
      AssertionError - if the actual AtomicReferenceArray does not contain the given subsequence.
    • containsSubsequence

      public AtomicReferenceArrayAssert<T> containsSubsequence(Iterable<? extends T> subsequence)
      Verifies that the actual AtomicReferenceArray contains the given subsequence in the correct order (possibly with other values between them).

      Example:

       AtomicReferenceArray<Ring> elvesRings = new AtomicReferenceArray<>(new Ring[]{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));
      Specified by:
      containsSubsequence in interface ObjectEnumerableAssert<AtomicReferenceArrayAssert<T>,T>
      Parameters:
      subsequence - the subsequence of objects to look for.
      Returns:
      this assertion object.
      Throws:
      AssertionError - if the actual AtomicReferenceArray is null.
      AssertionError - if the given array is null.
      AssertionError - if the actual AtomicReferenceArray does not contain the given subsequence.
    • doesNotContainSubsequence

      public AtomicReferenceArrayAssert<T> doesNotContainSubsequence(T... subsequence)
      Verifies that the actual AtomicReferenceArray does not contain the given subsequence in the correct order (possibly with other values between them).

      Example:

       AtomicReferenceArray<Ring> elvesRings = new AtomicReferenceArray<>(new Ring[]{vilya, nenya, narya});
      
       // assertions will pass
       assertThat(elvesRings).doesNotContainSubsequence(nenya, vilya);
      
       // assertion will fail
       assertThat(elvesRings).doesNotContainSubsequence(vilya, nenya);
       assertThat(elvesRings).doesNotContainSubsequence(vilya, narya);
      Specified by:
      doesNotContainSubsequence in interface ObjectEnumerableAssert<AtomicReferenceArrayAssert<T>,T>
      Parameters:
      subsequence - the subsequence of objects to look for.
      Returns:
      this assertion object.
      Throws:
      AssertionError - if the actual AtomicReferenceArray is null.
      AssertionError - if the given array is null.
      AssertionError - if the actual AtomicReferenceArray contains the given subsequence.
    • doesNotContainSubsequence

      public AtomicReferenceArrayAssert<T> doesNotContainSubsequence(Iterable<? extends T> subsequence)
      Verifies that the actual AtomicReferenceArray does not contain the given subsequence in the correct order (possibly with other values between them).

      Example:

       AtomicReferenceArray<Ring> elvesRings = new AtomicReferenceArray<>(new Ring[]{vilya, nenya, narya});
      
       // assertions will pass
       assertThat(elvesRings).doesNotContainSubsequence(newArrayList(nenya, vilya));
      
       // assertion will fail
       assertThat(elvesRings).doesNotContainSubsequence(newArrayList(vilya, nenya));
       assertThat(elvesRings).doesNotContainSubsequence(newArrayList(vilya, narya));
      Specified by:
      doesNotContainSubsequence in interface ObjectEnumerableAssert<AtomicReferenceArrayAssert<T>,T>
      Parameters:
      subsequence - the subsequence of objects to look for.
      Returns:
      this assertion object.
      Throws:
      AssertionError - if the actual AtomicReferenceArray is null.
      AssertionError - if the given array is null.
      AssertionError - if the actual AtomicReferenceArray contains the given subsequence.
    • contains

      public AtomicReferenceArrayAssert<T> contains(T value, Index index)
      Verifies that the actual AtomicReferenceArray contains the given object at the given index.

      Example:

       AtomicReferenceArray<Ring> elvesRings = new AtomicReferenceArray<>(new Ring[]{vilya, nenya, narya});
      
       // assertions will pass
       assertThat(elvesRings).contains(vilya, atIndex(0))
                             .contains(nenya, atIndex(1))
                             .contains(narya, atIndex(2));
      
       // assertions will fail
       assertThat(elvesRings).contains(vilya, atIndex(1));
       assertThat(elvesRings).contains(nenya, atIndex(2));
       assertThat(elvesRings).contains(narya, atIndex(0));
      Specified by:
      contains in interface IndexedObjectEnumerableAssert<AtomicReferenceArrayAssert<T>,T>
      Parameters:
      value - the object to look for.
      index - the index where the object should be stored in the actual AtomicReferenceArray.
      Returns:
      this assertion object.
      Throws:
      AssertionError - if the actual AtomicReferenceArray is null or empty.
      NullPointerException - if the given Index is null.
      IndexOutOfBoundsException - if the value of the given Index is equal to or greater than the size of the actual AtomicReferenceArray.
      AssertionError - if the actual AtomicReferenceArray does not contain the given object at the given index.
    • hasOnlyElementsOfTypes

      public AtomicReferenceArrayAssert<T> hasOnlyElementsOfTypes(Class<?>... types)
      Verifies that all elements of the actual group are instances of given classes or interfaces.

      Example :

       AtomicReferenceArray<Object> elvesRings = new AtomicReferenceArray<>(new Object[]{"", new StringBuilder()});
       
       // assertions will pass
       assertThat(objects).hasOnlyElementsOfTypes(CharSequence.class);
       assertThat(objects).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<AtomicReferenceArrayAssert<T>,T>
      Parameters:
      types - the expected classes and interfaces
      Returns:
      this assertion object.
      Throws:
      NullPointerException - if the given argument is null.
      AssertionError - if the actual group is null.
      AssertionError - if not all elements of the actual group are instances of one of the given types
      Since:
      2.7.0 / 3.7.0
    • doesNotContain

      public AtomicReferenceArrayAssert<T> doesNotContain(T value, Index index)
      Verifies that the actual AtomicReferenceArray does not contain the given object at the given index.

      Example:

       AtomicReferenceArray<Ring> elvesRings = new AtomicReferenceArray<>(new Ring[]{vilya, nenya, narya});
      
       // assertions will pass
       assertThat(elvesRings).doesNotContain(vilya, atIndex(1))
                             .doesNotContain(nenya, atIndex(2))
                             .doesNotContain(narya, atIndex(0));
      
       // assertions will fail
       assertThat(elvesRings).doesNotContain(vilya, atIndex(0));
       assertThat(elvesRings).doesNotContain(nenya, atIndex(1));
       assertThat(elvesRings).doesNotContain(narya, atIndex(2));
      Specified by:
      doesNotContain in interface IndexedObjectEnumerableAssert<AtomicReferenceArrayAssert<T>,T>
      Parameters:
      value - the object to look for.
      index - the index where the object should not be stored in the actual AtomicReferenceArray.
      Returns:
      this assertion object.
      Throws:
      AssertionError - if the actual AtomicReferenceArray is null.
      NullPointerException - if the given Index is null.
      AssertionError - if the actual AtomicReferenceArray contains the given object at the given index.
    • doesNotContain

      public AtomicReferenceArrayAssert<T> doesNotContain(T... values)
      Verifies that the actual AtomicReferenceArray does not contain the given values.

      Example :

       AtomicReferenceArray<String> abc = new AtomicReferenceArray<>(new String[]{"a", "b", "c"});
      
       // assertion will pass
       assertThat(abc).doesNotContain("d", "e");
      
       // assertions will fail
       assertThat(abc).doesNotContain("a");
       assertThat(abc).doesNotContain("a", "b", "c");
       assertThat(abc).doesNotContain("a", "x");
      Specified by:
      doesNotContain in interface ObjectEnumerableAssert<AtomicReferenceArrayAssert<T>,T>
      Parameters:
      values - the given values.
      Returns:
      this assertion object.
      Throws:
      NullPointerException - if the given argument is null.
      IllegalArgumentException - if the given argument is an empty array.
      AssertionError - if the actual AtomicReferenceArray is null.
      AssertionError - if the actual AtomicReferenceArray contains any of the given values.
    • doesNotContainAnyElementsOf

      public AtomicReferenceArrayAssert<T> doesNotContainAnyElementsOf(Iterable<? extends T> iterable)
      Verifies that the actual AtomicReferenceArray does not contain any elements of the given Iterable (i.e. none).

      Example:

       AtomicReferenceArray<String> abc = new AtomicReferenceArray<>(new String[]{"a", "b", "c"});
      
       // assertion will pass
       assertThat(actual).doesNotContainAnyElementsOf(newArrayList("d", "e"));
      
       // assertions will fail
       assertThat(actual).doesNotContainAnyElementsOf(newArrayList("a", "b"));
       assertThat(actual).doesNotContainAnyElementsOf(newArrayList("d", "e", "a"));
      Specified by:
      doesNotContainAnyElementsOf in interface ObjectEnumerableAssert<AtomicReferenceArrayAssert<T>,T>
      Parameters:
      iterable - the Iterable whose elements must not be in the actual AtomicReferenceArray.
      Returns:
      this assertion object.
      Throws:
      NullPointerException - if the given argument is null.
      IllegalArgumentException - if the given argument is an empty iterable.
      AssertionError - if the actual AtomicReferenceArray is null.
      AssertionError - if the actual AtomicReferenceArray contains some elements of the given Iterable.
    • doesNotHaveDuplicates

      public AtomicReferenceArrayAssert<T> doesNotHaveDuplicates()
      Verifies that the actual AtomicReferenceArray does not contain duplicates.

      Example :

       AtomicReferenceArray<String> abc = new AtomicReferenceArray<>(new String[]{"a", "b", "c"});
       AtomicReferenceArray<String> aaa = new AtomicReferenceArray<>(new String[]{"a", "a", "a"});
      
       // assertion will pass
       assertThat(abc).doesNotHaveDuplicates();
      
       // assertion will fail
       assertThat(aaa).doesNotHaveDuplicates();
      Specified by:
      doesNotHaveDuplicates in interface ObjectEnumerableAssert<AtomicReferenceArrayAssert<T>,T>
      Returns:
      this assertion object.
      Throws:
      AssertionError - if the actual AtomicReferenceArray is null.
      AssertionError - if the actual AtomicReferenceArray contains duplicates.
    • startsWith

      public AtomicReferenceArrayAssert<T> startsWith(T... sequence)
      Verifies that the actual AtomicReferenceArray starts with the given sequence of objects, without any other objects between them. Similar to containsSequence(Object...), but it also verifies that the first element in the sequence is also the first element of the actual AtomicReferenceArray.

      Example :

       AtomicReferenceArray<String> abc = new AtomicReferenceArray<>(new String[]{"a", "b", "c"});
      
       // assertion will pass
       assertThat(abc).startsWith("a", "b");
      
       // assertion will fail
       assertThat(abc).startsWith("c");
      Specified by:
      startsWith in interface ObjectEnumerableAssert<AtomicReferenceArrayAssert<T>,T>
      Parameters:
      sequence - the sequence of objects to look for.
      Returns:
      this assertion object.
      Throws:
      NullPointerException - if the given argument is null.
      IllegalArgumentException - if the given argument is an empty array.
      AssertionError - if the actual AtomicReferenceArray is null.
      AssertionError - if the actual AtomicReferenceArray does not start with the given sequence of objects.
    • endsWith

      public AtomicReferenceArrayAssert<T> endsWith(T... sequence)
      Verifies that the actual AtomicReferenceArray ends with the given sequence of objects, without any other objects between them. Similar to containsSequence(Object...), but it also verifies that the last element in the sequence is also last element of the actual AtomicReferenceArray.

      Example :

       AtomicReferenceArray<String> abc = new AtomicReferenceArray<>(new String[]{"a", "b", "c"});
      
       // assertion will pass
       assertThat(abc).endsWith("b", "c");
      
       // assertion will fail
       assertThat(abc).endsWith("a");
      Specified by:
      endsWith in interface ObjectEnumerableAssert<AtomicReferenceArrayAssert<T>,T>
      Parameters:
      sequence - the sequence of objects to look for.
      Returns:
      this assertion object.
      Throws:
      NullPointerException - if the given argument is null.
      IllegalArgumentException - if the given argument is an empty array.
      AssertionError - if the actual AtomicReferenceArray is null.
      AssertionError - if the actual AtomicReferenceArray does not end with the given sequence of objects.
    • isSubsetOf

      public AtomicReferenceArrayAssert<T> isSubsetOf(Iterable<? extends T> values)
      Verifies that all elements of actual are present in the given Iterable.

      Example:

       AtomicReferenceArray<Ring> elvesRings = new AtomicReferenceArray<>(new Ring[]{vilya, nenya, narya});
       List<Ring> ringsOfPower = newArrayList(oneRing, vilya, nenya, narya, dwarfRing, manRing);
      
       // assertion will pass:
       assertThat(elvesRings).isSubsetOf(ringsOfPower);
      
       // assertion will fail:
       assertThat(elvesRings).isSubsetOf(newArrayList(nenya, narya));
      Specified by:
      isSubsetOf in interface ObjectEnumerableAssert<AtomicReferenceArrayAssert<T>,T>
      Parameters:
      values - the Iterable that should contain all actual elements.
      Returns:
      this assertion object.
      Throws:
      AssertionError - if the actual Iterable is null.
      NullPointerException - if the given Iterable is null.
      AssertionError - if the actual Iterable is not subset of set Iterable.
    • isSubsetOf

      public AtomicReferenceArrayAssert<T> isSubsetOf(T... values)
      Verifies that all elements of actual are present in the given values.

      Example:

       AtomicReferenceArray<Ring> elvesRings = new AtomicReferenceArray<>(new Ring[]{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);
      Specified by:
      isSubsetOf in interface ObjectEnumerableAssert<AtomicReferenceArrayAssert<T>,T>
      Parameters:
      values - the values that should be used for checking the elements of actual.
      Returns:
      this assertion object.
      Throws:
      AssertionError - if the actual Iterable is null.
      AssertionError - if the actual Iterable is not subset of the given values.
    • containsNull

      public AtomicReferenceArrayAssert<T> containsNull()
      Verifies that the actual AtomicReferenceArray contains at least a null element.

      Example :

       AtomicReferenceArray<String> abc = new AtomicReferenceArray<>(new String[]{"a", "b", "c"});
       AtomicReferenceArray<String> abNull = new AtomicReferenceArray<>(new String[]{"a", "b", null});
      
       // assertion will pass
       assertThat(abNull).containsNull();
      
       // assertion will fail
       assertThat(abc).containsNull();
      Specified by:
      containsNull in interface ObjectEnumerableAssert<AtomicReferenceArrayAssert<T>,T>
      Returns:
      this assertion object.
      Throws:
      AssertionError - if the actual AtomicReferenceArray is null.
      AssertionError - if the actual AtomicReferenceArray does not contain a null element.
    • doesNotContainNull

      public AtomicReferenceArrayAssert<T> doesNotContainNull()
      Verifies that the actual AtomicReferenceArray does not contain null elements.

      Example :

       AtomicReferenceArray<String> abc = new AtomicReferenceArray<>(new String[]{"a", "b", "c"});
       AtomicReferenceArray<String> abNull = new AtomicReferenceArray<>(new String[]{"a", "b", null});
      
       // assertion will pass
       assertThat(abc).doesNotContainNull();
      
       // assertion will fail
       assertThat(abNull).doesNotContainNull();
      Specified by:
      doesNotContainNull in interface ObjectEnumerableAssert<AtomicReferenceArrayAssert<T>,T>
      Returns:
      this assertion object.
      Throws:
      AssertionError - if the actual AtomicReferenceArray is null.
      AssertionError - if the actual AtomicReferenceArray contains a null element.
    • are

      public AtomicReferenceArrayAssert<T> are(Condition<? super T> condition)
      Verifies that each element value satisfies the given condition

      Example :

       AtomicReferenceArray<String> abc = new AtomicReferenceArray<>(new String[]{"a", "b", "c"});
       AtomicReferenceArray<String> abcc = new AtomicReferenceArray<>(new String[]{"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<AtomicReferenceArrayAssert<T>,T>
      Parameters:
      condition - the given condition.
      Returns:
      this object.
      Throws:
      NullPointerException - if the given condition is null.
      AssertionError - if an element cannot be cast to T.
      AssertionError - if one or more elements don't satisfy the given condition.
    • areNot

      public AtomicReferenceArrayAssert<T> areNot(Condition<? super T> condition)
      Verifies that each element value does not satisfy the given condition

      Example :

       AtomicReferenceArray<String> abc = new AtomicReferenceArray<>(new String[]{"a", "b", "c"});
       AtomicReferenceArray<String> abcc = new AtomicReferenceArray<>(new String[]{"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<AtomicReferenceArrayAssert<T>,T>
      Parameters:
      condition - the given condition.
      Returns:
      this object.
      Throws:
      NullPointerException - if the given condition is null.
      AssertionError - if an element cannot be cast to T.
      AssertionError - if one or more elements satisfy the given condition.
    • have

      public AtomicReferenceArrayAssert<T> have(Condition<? super T> condition)
      Verifies that all elements satisfy the given condition.

      Example :

       AtomicReferenceArray<String> abc = new AtomicReferenceArray<>(new String[]{"a", "b", "c"});
       AtomicReferenceArray<String> abcc = new AtomicReferenceArray<>(new String[]{"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<AtomicReferenceArrayAssert<T>,T>
      Parameters:
      condition - the given condition.
      Returns:
      this object.
      Throws:
      NullPointerException - if the given condition is null.
      AssertionError - if an element cannot be cast to T.
      AssertionError - if one or more elements do not satisfy the given condition.
    • doNotHave

      public AtomicReferenceArrayAssert<T> doNotHave(Condition<? super T> condition)
      Verifies that all elements don't satisfy the given condition.

      Example :

       AtomicReferenceArray<String> abc = new AtomicReferenceArray<>(new String[]{"a", "b", "c"});
       AtomicReferenceArray<String> abcc = new AtomicReferenceArray<>(new String[]{"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<AtomicReferenceArrayAssert<T>,T>
      Parameters:
      condition - the given condition.
      Returns:
      this object.
      Throws:
      NullPointerException - if the given condition is null.
      AssertionError - if an element cannot be cast to T.
      AssertionError - if one or more elements satisfy the given condition.
    • areAtLeast

      public AtomicReferenceArrayAssert<T> areAtLeast(int times, Condition<? super T> condition)
      Verifies that there are at least n elements in the actual AtomicReferenceArray satisfying the given condition.

      Example :

       AtomicReferenceArray<Integer> oneThwoThree = new AtomicReferenceArray<>(new Integer[]{1, 2, 3});
      
       Condition<Integer> oddNumber = new Condition<>(value % 2 == 1, "odd number");
      
       // assertion will pass
       oneThwoThree.areAtLeast(2, oddNumber);
      
       // assertion will fail
       oneThwoThree.areAtLeast(3, oddNumber);
      Specified by:
      areAtLeast in interface ObjectEnumerableAssert<AtomicReferenceArrayAssert<T>,T>
      Parameters:
      times - the minimum number of times the condition should be verified.
      condition - the given condition.
      Returns:
      this object.
      Throws:
      NullPointerException - if the given condition is null.
      AssertionError - if an element can not be cast to T.
      AssertionError - if the number of elements satisfying the given condition is < n.
    • areAtLeastOne

      public AtomicReferenceArrayAssert<T> areAtLeastOne(Condition<? super T> condition)
      Verifies that there is at least one element in the actual AtomicReferenceArray satisfying the given condition.

      This method is an alias for areAtLeast(1, condition).

      Example:

       // jedi is a Condition<String>
       AtomicReferenceArray<String> rebels = new AtomicReferenceArray<>(new String[]{"Luke", "Solo", "Leia"});
       
       assertThat(rebels).areAtLeastOne(jedi);
      Specified by:
      areAtLeastOne in interface ObjectEnumerableAssert<AtomicReferenceArrayAssert<T>,T>
      See Also:
    • areAtMost

      public AtomicReferenceArrayAssert<T> areAtMost(int times, Condition<? super T> condition)
      Verifies that there are at most n elements in the actual AtomicReferenceArray satisfying the given condition.

      Example :

       AtomicReferenceArray<Integer> oneThwoThree = new AtomicReferenceArray<>(new Integer[]{1, 2, 3});
      
       Condition<Integer> oddNumber = new Condition<>(value % 2 == 1, "odd number");
      
       // assertions will pass
       oneThwoThree.areAtMost(2, oddNumber);
       oneThwoThree.areAtMost(3, oddNumber);
      
       // assertion will fail
       oneThwoThree.areAtMost(1, oddNumber);
      Specified by:
      areAtMost in interface ObjectEnumerableAssert<AtomicReferenceArrayAssert<T>,T>
      Parameters:
      times - the number of times the condition should be at most verified.
      condition - the given condition.
      Returns:
      this object.
      Throws:
      NullPointerException - if the given condition is null.
      AssertionError - if an element cannot be cast to T.
      AssertionError - if the number of elements satisfying the given condition is > n.
    • areExactly

      public AtomicReferenceArrayAssert<T> areExactly(int times, Condition<? super T> condition)
      Verifies that there are exactly n elements in the actual AtomicReferenceArray satisfying the given condition.

      Example :

       AtomicReferenceArray<Integer> oneThwoThree = new AtomicReferenceArray<>(new Integer[]{1, 2, 3});
      
       Condition<Integer> oddNumber = new Condition<>(value % 2 == 1, "odd number");
      
       // assertion will pass
       oneThwoThree.areExactly(2, oddNumber);
      
       // assertions will fail
       oneThwoThree.areExactly(1, oddNumber);
       oneThwoThree.areExactly(3, oddNumber);
      Specified by:
      areExactly in interface ObjectEnumerableAssert<AtomicReferenceArrayAssert<T>,T>
      Parameters:
      times - the exact number of times the condition should be verified.
      condition - the given condition.
      Returns:
      this object.
      Throws:
      NullPointerException - if the given condition is null.
      AssertionError - if an element cannot be cast to T.
      AssertionError - if the number of elements satisfying the given condition is ≠ n.
    • haveAtLeastOne

      public AtomicReferenceArrayAssert<T> haveAtLeastOne(Condition<? super T> condition)
      Verifies that there is at least one element in the actual AtomicReferenceArray satisfying the given condition.

      This method is an alias for haveAtLeast(1, condition).

      Example:

       AtomicReferenceArray<BasketBallPlayer> bullsPlayers = new AtomicReferenceArray<>(new BasketBallPlayer[]{butler, rose});
      
       // potentialMvp is a Condition<BasketBallPlayer>
       assertThat(bullsPlayers).haveAtLeastOne(potentialMvp);
      Specified by:
      haveAtLeastOne in interface ObjectEnumerableAssert<AtomicReferenceArrayAssert<T>,T>
      See Also:
    • haveAtLeast

      public AtomicReferenceArrayAssert<T> haveAtLeast(int times, Condition<? super T> condition)
      Verifies that there are at least n elements in the actual AtomicReferenceArray satisfying the given condition.

      Example :

       AtomicReferenceArray<Integer> oneThwoThree = new AtomicReferenceArray<>(new Integer[]{1, 2, 3});
      
       Condition<Integer> oddNumber = new Condition<>(value % 2 == 1, "odd number");
      
       // assertion will pass
       oneThwoThree.haveAtLeast(2, oddNumber);
      
       // assertion will fail
       oneThwoThree.haveAtLeast(3, oddNumber);
      This method is an alias for areAtLeast(int, Condition).
      Specified by:
      haveAtLeast in interface ObjectEnumerableAssert<AtomicReferenceArrayAssert<T>,T>
    • haveAtMost

      public AtomicReferenceArrayAssert<T> haveAtMost(int times, Condition<? super T> condition)
      Verifies that there are at most n elements in the actual AtomicReferenceArray satisfying the given condition.

      Example :

       AtomicReferenceArray<Integer> oneThwoThree = new AtomicReferenceArray<>(new Integer[]{1, 2, 3});
      
       Condition<Integer> oddNumber = new Condition<>(value % 2 == 1, "odd number");
      
       // assertions will pass
       oneThwoThree.haveAtMost(2, oddNumber);
       oneThwoThree.haveAtMost(3, oddNumber);
      
       // assertion will fail
       oneThwoThree.haveAtMost(1, oddNumber);
      This method is an alias areAtMost(int, Condition).
      Specified by:
      haveAtMost in interface ObjectEnumerableAssert<AtomicReferenceArrayAssert<T>,T>
    • haveExactly

      public AtomicReferenceArrayAssert<T> haveExactly(int times, Condition<? super T> condition)
      Verifies that there are exactly n elements in the actual AtomicReferenceArray satisfying the given condition.

      Example :

       AtomicReferenceArray<Integer> oneThwoThree = new AtomicReferenceArray<>(new Integer[]{1, 2, 3});
      
       Condition<Integer> oddNumber = new Condition<>(value % 2 == 1, "odd number");
      
       // assertion will pass
       oneThwoThree.haveExactly(2, oddNumber);
      
       // assertions will fail
       oneThwoThree.haveExactly(1, oddNumber);
       oneThwoThree.haveExactly(3, oddNumber);
      This method is an alias areExactly(int, Condition).
      Specified by:
      haveExactly in interface ObjectEnumerableAssert<AtomicReferenceArrayAssert<T>,T>
    • hasAtLeastOneElementOfType

      public AtomicReferenceArrayAssert<T> hasAtLeastOneElementOfType(Class<?> expectedType)
      Verifies that at least one element in the actual AtomicReferenceArray has the specified type (matching includes subclasses of the given type).

      Example:

       AtomicReferenceArray<Number> numbers = new AtomicReferenceArray<>(new Number[]{ 2, 6L, 8.0 });
       
       // successful assertion:
       assertThat(numbers).hasAtLeastOneElementOfType(Long.class);
       
       // assertion failure:
       assertThat(numbers).hasAtLeastOneElementOfType(Float.class);
      Specified by:
      hasAtLeastOneElementOfType in interface ObjectEnumerableAssert<AtomicReferenceArrayAssert<T>,T>
      Parameters:
      expectedType - the expected type.
      Returns:
      this assertion object.
      Throws:
      NullPointerException - if the given type is null.
      AssertionError - if the actual AtomicReferenceArray does not have any elements of the given type.
    • hasOnlyElementsOfType

      public AtomicReferenceArrayAssert<T> hasOnlyElementsOfType(Class<?> expectedType)
      Verifies that all the elements in the actual AtomicReferenceArray belong to the specified type (matching includes subclasses of the given type).

      Example:

       AtomicReferenceArray<Number> numbers = new AtomicReferenceArray<>(new Number[]{ 2, 6, 8 });
       
       // successful assertion:
       assertThat(numbers).hasOnlyElementsOfType(Integer.class);
       
       // assertion failure:
       assertThat(numbers).hasOnlyElementsOfType(Long.class);
      Specified by:
      hasOnlyElementsOfType in interface ObjectEnumerableAssert<AtomicReferenceArrayAssert<T>,T>
      Parameters:
      expectedType - the expected type.
      Returns:
      this assertion object.
      Throws:
      NullPointerException - if the given type is null.
      AssertionError - if one element is not of the expected type.
    • isSorted

      public AtomicReferenceArrayAssert<T> isSorted()
      Verifies that the actual array is sorted in ascending order according to the natural ordering of its elements.

      All array elements must be primitive or implement the Comparable interface and must be mutually comparable (that is, e1.compareTo(e2) must not throw a ClassCastException for any elements e1 and e2 in the array), examples :

      • a array composed of {2, 4, 6} is ok because the element type is a primitive type.
      • a array composed of {"a1", "a2", "a3"} is ok because the element type (String) is Comparable
      • a array composed of Rectangle {r1, r2, r3} is NOT ok because Rectangle is not Comparable
      • a array composed of {True, "abc", False} is NOT ok because elements are not mutually comparable (even though each element type implements Comparable)
      Empty or one element arrays are considered sorted (unless the array element type is not Comparable).

      Specified by:
      isSorted in interface ArraySortedAssert<AtomicReferenceArrayAssert<T>,T>
      Returns:
      this assertion object.
    • isSortedAccordingTo

      public AtomicReferenceArrayAssert<T> isSortedAccordingTo(Comparator<? super T> comparator)
      Verifies that the actual array is sorted according to the given comparator.
      Empty arrays are considered sorted whatever the comparator is.
      One element arrays are considered sorted if the element is compatible with comparator, otherwise an AssertionError is thrown.
      Specified by:
      isSortedAccordingTo in interface ArraySortedAssert<AtomicReferenceArrayAssert<T>,T>
      Parameters:
      comparator - the Comparator used to compare array elements
      Returns:
      this assertion object.
    • containsAll

      public AtomicReferenceArrayAssert<T> containsAll(Iterable<? extends T> iterable)
      Verifies that the actual AtomicReferenceArray contains all the elements of given Iterable, in any order.

      Example :

       AtomicReferenceArray<String> abc = new AtomicReferenceArray<>(new String[]{"a", "b", "c"});
      
       // assertion will pass
       assertThat(abc).containsAll(Arrays.asList("b", "c"));
       
       // assertions will fail
       assertThat(abc).containsAll(Arrays.asList("d"));
       assertThat(abc).containsAll(Arrays.asList("a", "b", "c", "d"));
      Specified by:
      containsAll in interface ObjectEnumerableAssert<AtomicReferenceArrayAssert<T>,T>
      Parameters:
      iterable - the given Iterable we will get elements from.
      Returns:
      this assertion object.
      Throws:
      NullPointerException - if the given argument is null.
      AssertionError - if the actual AtomicReferenceArray is null.
      AssertionError - if the actual AtomicReferenceArray does not contain all the elements of given Iterable.
    • usingElementComparator

      public AtomicReferenceArrayAssert<T> usingElementComparator(Comparator<? super T> elementComparator)
      Use given custom comparator instead of relying on actual element type equals method to compare AtomicReferenceArray 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(invoiceArray).usingComparator(invoicePayeeComparator).isEqualTo(expectedinvoiceArray).
      
       // compares invoices by date, doesNotHaveDuplicates and contains both use the given invoice date comparator
       assertThat(invoiceArray).usingComparator(invoiceDateComparator).doesNotHaveDuplicates().contains(may2010Invoice)
      
       // as assertThat(invoiceArray) creates a new assertion, it falls back to standard comparison strategy
       // based on Invoice's equal method to compare invoiceArray elements to lowestInvoice.
       assertThat(invoiceArray).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<AtomicReferenceArrayAssert<T>,T>
      Parameters:
      elementComparator - the comparator to use for incoming assertion checks.
      Returns:
      this assertion object.
      Throws:
      NullPointerException - if the given comparator is null.
    • usingDefaultElementComparator

      public AtomicReferenceArrayAssert<T> usingDefaultElementComparator()
      Revert to standard comparison for incoming assertion group element checks.

      This method should be used to disable a custom comparison strategy set by calling EnumerableAssert.usingElementComparator(Comparator).

      Specified by:
      usingDefaultElementComparator in interface EnumerableAssert<AtomicReferenceArrayAssert<T>,T>
      Returns:
      this assertion object.
    • usingComparatorForElementFieldsWithNames

      public <C> AtomicReferenceArrayAssert<T> usingComparatorForElementFieldsWithNames(Comparator<C> comparator, 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) invalid input: '<'= precision ? 0 : 1;
         }
       };
      
       AtomicReferenceArray<TolkienCharacter> hobbits = new AtomicReferenceArray<>(new TolkienCharacter[]{frodo});
      
       // assertions will pass
       assertThat(hobbits).usingComparatorForElementFieldsWithNames(closeEnough, "height")
                          .usingFieldByFieldElementComparator()
                          .contains(tallerFrodo);
      
       assertThat(hobbits).usingComparatorForElementFieldsWithNames(closeEnough, "height")
                          .usingElementComparatorOnFields("height")
                          .contains(tallerFrodo);
      
       assertThat(hobbits).usingComparatorForElementFieldsWithNames(closeEnough, "height")
                          .usingElementComparatorIgnoringFields("name")
                          .contains(tallerFrodo);
      
       assertThat(hobbits).usingComparatorForElementFieldsWithNames(closeEnough, "height")
                          .usingRecursiveFieldByFieldElementComparator()
                          .contains(tallerFrodo);
      
       // assertion will fail
       assertThat(hobbits).usingComparatorForElementFieldsWithNames(closeEnough, "height")
                          .usingFieldByFieldElementComparator()
                          .containsExactly(reallyTallFrodo);

      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.7.0 / 3.7.0
    • usingComparatorForElementFieldsWithType

      public <C> AtomicReferenceArrayAssert<T> usingComparatorForElementFieldsWithType(Comparator<C> comparator, Class<C> 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) invalid input: '<'= precision ? 0 : 1;
         }
       };
      
       AtomicReferenceArray<TolkienCharacter> hobbits = new AtomicReferenceArray<>(new TolkienCharacter[]{frodo});
      
       // assertions will pass
       assertThat(hobbits).usingComparatorForElementFieldsWithType(closeEnough, Double.class)
                          .usingFieldByFieldElementComparator()
                          .contains(tallerFrodo);
      
       assertThat(hobbits).usingComparatorForElementFieldsWithType(closeEnough, Double.class)
                          .usingElementComparatorOnFields("height")
                          .contains(tallerFrodo);
      
       assertThat(hobbits).usingComparatorForElementFieldsWithType(closeEnough, Double.class)
                          .usingElementComparatorIgnoringFields("name")
                          .contains(tallerFrodo);
      
       assertThat(hobbits).usingComparatorForElementFieldsWithType(closeEnough, Double.class)
                          .usingRecursiveFieldByFieldElementComparator()
                          .contains(tallerFrodo);
      
       // assertion will fail
       assertThat(hobbits).usingComparatorForElementFieldsWithType(closeEnough, Double.class)
                          .usingFieldByFieldElementComparator()
                          .contains(reallyTallFrodo);

      If multiple compatible comparators have been registered for a given type, the closest in the inheritance chain to the given type is chosen in the following order:
      1. The comparator for the exact given type
      2. The comparator of a superclass of the given type
      3. The comparator of an interface implemented by the given type
      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.7.0 / 3.7.0
    • usingFieldByFieldElementComparator

      public AtomicReferenceArrayAssert<T> usingFieldByFieldElementComparator()
      Use field/property by field/property comparison (including inherited fields/properties) instead of relying on actual type A equals method to compare AtomicReferenceArray 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 frodoClone = new TolkienCharacter("Frodo", 33, HOBBIT);
      
       // Fail if equals has not been overridden in TolkienCharacter as equals default implementation only compares references
       assertThat(atomicArray(frodo)).contains(frodoClone);
      
       // frodo and frodoClone are equals when doing a field by field comparison.
       assertThat(atomicArray(frodo)).usingFieldByFieldElementComparator().contains(frodoClone);
      Returns:
      this assertion object.
      Since:
      2.7.0 / 3.7.0
    • usingRecursiveFieldByFieldElementComparator

      public AtomicReferenceArrayAssert<T> usingRecursiveFieldByFieldElementComparator()
      Use a recursive field/property by field/property comparison (including inherited fields/properties) instead of relying on actual type A equals method to compare AtomicReferenceArray 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.

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

      The recursive comparison handles cycles.

      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);
      
       AtomicReferenceArray<TolkienCharacter> hobbits = new AtomicReferenceArray<>(new TolkienCharacter[] {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.7.0 / 3.7.0
    • usingElementComparatorOnFields

      public AtomicReferenceArrayAssert<T> usingElementComparatorOnFields(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 AtomicReferenceArray 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(atomicArray(frodo)).usingElementComparatorOnFields("race").contains(sam); // OK
      
       // ... but not when comparing both name and race
       assertThat(atomicArray(frodo)).usingElementComparatorOnFields("name", "race").contains(sam); // FAIL
      Returns:
      this assertion object.
      Since:
      2.7.0 / 3.7.0
    • usingElementComparatorIgnoringFields

      public AtomicReferenceArrayAssert<T> usingElementComparatorIgnoringFields(String... fields)
      Use field/property by field/property on all fields/properties except the given ones (including inherited fields/properties)instead of relying on actual type A equals method to compare AtomicReferenceArray 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(atomicArray(frodo)).usingElementComparatorIgnoringFields("name", "age").contains(sam); // OK
      
       // ... but not when comparing both name and race
       assertThat(atomicArray(frodo)).usingElementComparatorIgnoringFields("age").contains(sam); // FAIL
      Returns:
      this assertion object.
      Since:
      2.7.0 / 3.7.0
    • extracting

      public ObjectArrayAssert<Object> extracting(String fieldOrProperty)
      Extract the values of given field or property from the array's elements under test into a new array, this new array becoming the array under test.

      It allows you to test a field/property of the array'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 array of TolkienCharacter, a TolkienCharacter has a name (String) and a Race (a class)
       // they can be public field or properties, both works when extracting their values.
       AtomicReferenceArray<TolkienCharacter> fellowshipOfTheRing = new AtomicReferenceArray<>(new TolkienCharacter[]{
         new TolkienCharacter("Frodo", 33, HOBBIT),
         new TolkienCharacter("Sam", 38, HOBBIT),
         new TolkienCharacter("Gandalf", 2020, MAIA),
         new TolkienCharacter("Legolas", 1000, ELF),
         new TolkienCharacter("Pippin", 28, HOBBIT),
         new TolkienCharacter("Gimli", 139, DWARF),
         new TolkienCharacter("Aragorn", 87, MAN,
         new TolkienCharacter("Boromir", 37, MAN)
       };
      
       // let's verify the names of TolkienCharacter in fellowshipOfTheRing :
      
       assertThat(fellowshipOfTheRing).extracting("name")
                 .contains("Boromir", "Gandalf", "Frodo")
                 .doesNotContain("Sauron", "Elrond");
      
       // you can also extract nested field/property like the name of Race :
      
       assertThat(fellowshipOfTheRing).extracting("race.name")
                                      .contains("Hobbit", "Elf")
                                      .doesNotContain("Orc");
      A property with the given name is looked for first, if it does not exist then a field with the given name is looked for.

      Note that the order of extracted field/property values is consistent with the array order.

      Parameters:
      fieldOrProperty - the field/property to extract from the array under test
      Returns:
      a new assertion object whose object under test is the array of extracted field/property values.
      Throws:
      IntrospectionError - if no field or property exists with the given name
      Since:
      2.7.0 / 3.7.0
    • extracting

      public <P> ObjectArrayAssert<P> extracting(String fieldOrProperty, Class<P> extractingType)
      Extract the values of given field or property from the array's elements under test into a new array, this new array becoming the array under test with type.

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

      Let's take an example to make things clearer :

       // Build an array of TolkienCharacter, a TolkienCharacter has a name (String) and a Race (a class)
       // they can be public field or properties, both works when extracting their values.
       AtomicReferenceArray<TolkienCharacter> fellowshipOfTheRing = new AtomicReferenceArray<>(new TolkienCharacter[]{
         new TolkienCharacter("Frodo", 33, HOBBIT),
         new TolkienCharacter("Sam", 38, HOBBIT),
         new TolkienCharacter("Gandalf", 2020, MAIA),
         new TolkienCharacter("Legolas", 1000, ELF),
         new TolkienCharacter("Pippin", 28, HOBBIT),
         new TolkienCharacter("Gimli", 139, DWARF),
         new TolkienCharacter("Aragorn", 87, MAN,
         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 also extract nested field/property 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 does not exist then a field with the given name is looked for.

      Note that the order of extracted field/property values is consistent with the order of the array under test.

      Parameters:
      fieldOrProperty - the field/property to extract from the array under test
      extractingType - type to return
      Returns:
      a new assertion object whose object under test is the array of extracted field/property values.
      Throws:
      IntrospectionError - if no field or property exists with the given name
      Since:
      2.7.0 / 3.7.0
    • extracting

      public ObjectArrayAssert<Tuple> extracting(String... propertiesOrFields)
      Extract the values of given fields/properties from the array's elements under test into a new array composed of Tuple (a simple data structure), this new array becoming the array under test.

      It allows you to test fields/properties of the the array's elements instead of testing the elements themselves, it can be sometimes 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 array (the Tuple's data order is the same as the given fields/properties order).

      Let's take an example to make things clearer :

       // Build an array of TolkienCharacter, a TolkienCharacter has a name (String) and a Race (a class)
       // they can be public field or properties, both works when extracting their values.
       AtomicReferenceArray<TolkienCharacter> fellowshipOfTheRing = new AtomicReferenceArray<>(new TolkienCharacter[]{
         new TolkienCharacter("Frodo", 33, HOBBIT),
         new TolkienCharacter("Sam", 38, HOBBIT),
         new TolkienCharacter("Gandalf", 2020, MAIA),
         new TolkienCharacter("Legolas", 1000, ELF),
         new TolkienCharacter("Pippin", 28, HOBBIT),
         new TolkienCharacter("Gimli", 139, DWARF),
         new TolkienCharacter("Aragorn", 87, MAN,
         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 does not exist the a field with the given name is looked for.

      Note that the order of extracted property/field values is consistent with the iteration order of the array under test.

      Parameters:
      propertiesOrFields - the properties/fields to extract from the initial array 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 <U> ObjectArrayAssert<U> extracting(Extractor<? super T,U> extractor)
      Extract the values from the array's elements by applying an extracting function on them. The returned array becomes a new object under test.

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

      Let's take a look 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.
       AtomicReferenceArray<TolkienCharacter> fellowshipOfTheRing = new AtomicReferenceArray<>(new TolkienCharacter[]{
         new TolkienCharacter("Frodo", 33, HOBBIT),
         new TolkienCharacter("Sam", 38, HOBBIT),
         new TolkienCharacter("Gandalf", 2020, MAIA),
         new TolkienCharacter("Legolas", 1000, ELF),
         new TolkienCharacter("Pippin", 28, HOBBIT),
         new TolkienCharacter("Gimli", 139, DWARF),
         new TolkienCharacter("Aragorn", 87, MAN,
         new TolkienCharacter("Boromir", 37, MAN)
       };
      
      
       // this extracts the race
       Extractor<TolkienCharacter, Race> race = new Extractor<TolkienCharacter, Race>() {
          @Override
          public Race extract(TolkienCharacter input) {
              return input.getRace();
          }
       }
      
       // fellowship has hobbits, right, my presioussss?
       assertThat(fellowshipOfTheRing).extracting(race).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.
      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:
      2.7.0 / 3.7.0
    • extracting

      public <U, EXCEPTION extends Exception> ObjectArrayAssert<U> extracting(ThrowingExtractor<? super T,U,EXCEPTION> extractor)
      Extract the values from the array's elements by applying an extracting function (which might throw an exception) on them. The returned array 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 safer way than by using extracting(String), as it doesn't utilize introspection.

      Let's take a look 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.
       AtomicReferenceArray<TolkienCharacter> fellowshipOfTheRing = new AtomicReferenceArray<>(new TolkienCharacter[]{
         new TolkienCharacter("Frodo", 33, HOBBIT),
         new TolkienCharacter("Sam", 38, HOBBIT),
         new TolkienCharacter("Gandalf", 2020, MAIA),
         new TolkienCharacter("Legolas", 1000, ELF),
         new TolkienCharacter("Pippin", 28, HOBBIT),
         new TolkienCharacter("Gimli", 139, DWARF),
         new TolkienCharacter("Aragorn", 87, MAN,
         new TolkienCharacter("Boromir", 37, MAN)
       };
      
       assertThat(fellowshipOfTheRing).extracting(input -> {
         if (input.getAge() invalid input: '<' 20) {
           throw new Exception("age invalid input: '<' 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.
      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
    • flatExtracting

      public <U, C extends Collection<U>> ObjectArrayAssert<U> flatExtracting(Extractor<? super T,C> extractor)
      Extract the Iterable values from the array's elements by applying an Iterable extracting function on them and concatenating the result lists into an array which becomes the 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.addChildren(bart, lisa, maggie);
      
       CartoonCharacter pebbles = new CartoonCharacter("Pebbles Flintstone");
       CartoonCharacter fred = new CartoonCharacter("Fred Flintstone");
       fred.getChildren().add(pebbles);
      
       Extractor<CartoonCharacter, List<CartoonCharacter>> childrenOf = new Extractor<CartoonCharacter, List<CartoonCharacter>>() {
          @Override
          public List<CartoonChildren> extract(CartoonCharacter input) {
              return input.getChildren();
          }
       }
      
       AtomicReferenceArray<CartoonCharacter> parents = new AtomicReferenceArray<>(new CartoonCharacter[]{ homer, fred });
       // check children
       assertThat(parents).flatExtracting(childrenOf)
                          .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:
      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
      Since:
      2.7.0 / 3.7.0
    • flatExtracting

      public <U, C extends Collection<U>, EXCEPTION extends Exception> ObjectArrayAssert<U> flatExtracting(ThrowingExtractor<? super T,C,EXCEPTION> extractor)
      Extract the Iterable values from the array's elements by applying an Iterable extracting function (which might throw an exception) on them and concatenating the result lists into an array which becomes the 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.addChildren(bart, lisa, maggie);
      
       CartoonCharacter pebbles = new CartoonCharacter("Pebbles Flintstone");
       CartoonCharacter fred = new CartoonCharacter("Fred Flintstone");
       fred.getChildren().add(pebbles);
      
       AtomicReferenceArray<CartoonCharacter> parents = new AtomicReferenceArray<>(new CartoonCharacter[]{ homer, fred });
       // check children
       assertThat(parents).flatExtracting(input -> {
         if (input.getChildren().size() == 0) {
           throw new Exception("no children");
         }
         return input.getChildren();
       }).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:
      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
      Since:
      3.7.0
    • doFlatExtracting

      private <U, C extends Collection<U>> ObjectArrayAssert<U> doFlatExtracting(Extractor<? super T,C> extractor)
    • flatExtracting

      public ObjectArrayAssert<Object> flatExtracting(String propertyName)
      Extract from array's elements the Iterable/Array values corresponding to the given property/field name and concatenate them into a single array 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.addChildren(bart, lisa, maggie);
      
       CartoonCharacter pebbles = new CartoonCharacter("Pebbles Flintstone");
       CartoonCharacter fred = new CartoonCharacter("Fred Flintstone");
       fred.getChildren().add(pebbles);
      
       AtomicReferenceArray<CartoonCharacter> parents = new AtomicReferenceArray<>(new CartoonCharacter[]{ homer, fred });
       // check children
       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:
      propertyName - 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:
      IllegalArgumentException - if one of the extracted property value was not an array or an iterable.
      Since:
      2.7.0 / 3.7.0
    • extractingResultOf

      public ObjectArrayAssert<Object> extractingResultOf(String method)
      Extract the result of given method invocation from the array's elements under test into a new array, this new array becoming the array under test.

      It allows you to test a method results of the array's elements instead of testing the elements themselves, which can be much less work!

      It is especially useful for classes that does not conform to the Java Bean's getter specification (i.e. public AtomicReferenceArrayAsserttring toString() or public AtomicReferenceArrayAsserttring status() instead of public AtomicReferenceArrayAsserttring getStatus()).

      Let's take an example to make things clearer :

       // Build a array of WesterosHouse, a WesterosHouse has a method: public AtomicReferenceArrayAsserttring sayTheWords()
       AtomicReferenceArray<WesterosHouse> greatHousesOfWesteros = new AtomicReferenceArray<>(new WesterosHouse[]{ 
           new WesterosHouse("Stark", "Winter is Coming"),
           new WesterosHouse("Lannister", "Hear Me Roar!"), 
           new WesterosHouse("Greyjoy", "We Do Not Sow"),
           new WesterosHouse("Baratheon", "Our is the Fury"), 
           new WesterosHouse("Martell", "Unbowed, Unbent, Unbroken"),
           new WesterosHouse("Tyrell", "Growing Strong") });
      
       // let's verify the words of the great houses of Westeros:
       assertThat(greatHousesOfWesteros).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 values is consistent with the order of the array under test.

      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 array of extracted values.
      Throws:
      IllegalArgumentException - if no method exists with the given name, or method is not public, or method does return void, or method accepts arguments.
      Since:
      2.7.0 / 3.7.0
    • extractingResultOf

      public <P> ObjectArrayAssert<P> extractingResultOf(String method, Class<P> extractingType)
      Extract the result of given method invocation from the array's elements under test into a new array, this new array becoming the array under test.

      It allows you to test a method results of the array's elements instead of testing the elements themselves, which can be much less work!

      It is especially useful for classes that do not conform to the Java Bean's getter specification (i.e. public AtomicReferenceArrayAsserttring toString() or public AtomicReferenceArrayAsserttring status() instead of public AtomicReferenceArrayAsserttring getStatus()).

      Let's take an example to make things clearer :

       // Build a array of WesterosHouse, a WesterosHouse has a method: public AtomicReferenceArrayAsserttring sayTheWords()
       AtomicReferenceArray<WesterosHouse> greatHousesOfWesteros = new AtomicReferenceArray<>(new WesterosHouse[]{ 
           new WesterosHouse("Stark", "Winter is Coming"),
           new WesterosHouse("Lannister", "Hear Me Roar!"), 
           new WesterosHouse("Greyjoy", "We Do Not Sow"),
           new WesterosHouse("Baratheon", "Our is the Fury"), 
           new WesterosHouse("Martell", "Unbowed, Unbent, Unbroken"),
           new WesterosHouse("Tyrell", "Growing Strong") });
      
       // let's verify the words of the great houses of Westeros:
       assertThat(greatHousesOfWesteros).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 can not accept any arguments,
      • method can not return void.

      Note that the order of extracted values is consistent with the order of the array under test.

      Parameters:
      method - the name of the method which result is to be extracted from the array under test
      extractingType - type to return
      Returns:
      a new assertion object whose object under test is the array of extracted values.
      Throws:
      IllegalArgumentException - if no method exists with the given name, or method is not public, or method does return void, or method accepts arguments.
      Since:
      2.7.0 / 3.7.0
    • inHexadecimal

      public AtomicReferenceArrayAssert<T> inHexadecimal()
      Enable hexadecimal object representation of Iterable elements instead of standard java representation in error messages.

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

      Example

       
       AtomicReferenceArray<Byte> bytes = new AtomicReferenceArray<>(new Byte[]{ 0x10, 0x20 });
       assertThat(bytes).inHexadecimal().contains(new Byte[] { 0x30 });
      With standard error message:
       Expecting:
        invalid input: '<'[16, 32]>
       to contain:
        invalid input: '<'[48]>
       but could not find:
        invalid input: '<'[48]>
      With Hexadecimal error message:
       Expecting:
        invalid input: '<'[0x10, 0x20]>
       to contain:
        invalid input: '<'[0x30]>
       but could not find:
        invalid input: '<'[0x30]>
      Overrides:
      inHexadecimal in class AbstractAssert<AtomicReferenceArrayAssert<T>,AtomicReferenceArray<T>>
      Returns:
      this assertion object.
      Since:
      2.7.0 / 3.7.0
    • inBinary

      public AtomicReferenceArrayAssert<T> inBinary()
      Description copied from class: AbstractAssert
      Use binary object representation instead of standard representation in error messages.

      Example:

       assertThat(1).inBinary().isEqualTo(2);
      
       org.junit.ComparisonFailure:
       Expected :0b00000000_00000000_00000000_00000010
       Actual   :0b00000000_00000000_00000000_00000001
      Overrides:
      inBinary in class AbstractAssert<AtomicReferenceArrayAssert<T>,AtomicReferenceArray<T>>
      Returns:
      this assertion object.
    • filteredOn

      public AtomicReferenceArrayAssert<T> filteredOn(String propertyOrFieldName, Object expectedValue)
      Filter the array 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);
      
       AtomicReferenceArray<Employee> employees = new AtomicReferenceArray<>(new Employee[]{ 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 array elements.

      You can chain filters:

       // fellowshipOfTheRing is an array 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(Condition) and provide a Condition to specify the filter to apply.
      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 array under test
      Throws:
      IllegalArgumentException - if the given propertyOrFieldName is null or empty.
      IntrospectionError - if the given propertyOrFieldName can't be found in one of the array elements.
      Since:
      2.7.0 / 3.7.0
    • filteredOnNull

      public AtomicReferenceArrayAssert<T> filteredOnNull(String propertyOrFieldName)
      Filter the array under test keeping only elements whose property or field specified by propertyOrFieldName is null.

      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);
      
       AtomicReferenceArray<Employee> employees = new AtomicReferenceArray<>(new Employee[]{ 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 array elements.

      If you need more complex filter, use filteredOn(Condition) and provide a Condition to specify the filter to apply.

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

      public AtomicReferenceArrayAssert<T> filteredOn(String propertyOrFieldName, FilterOperator<?> filterOperator)
      Filter the array 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);
      
       AtomicReferenceArray<Employee> employees = new AtomicReferenceArray<>(new Employee[]{ 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 array 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 an array 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(Condition) and provide a Condition to specify the filter to apply.
      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 array under test
      Throws:
      IllegalArgumentException - if the given propertyOrFieldName is null or empty.
      Since:
      2.7.0 / 3.7.0
    • filteredOn

      public AtomicReferenceArrayAssert<T> filteredOn(Condition<? super T> condition)
      Filter the array under test keeping only elements matching the given Condition.

      Let's 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);
      
       AtomicReferenceArray<Employee> employees = new AtomicReferenceArray<>(new Employee[]{ 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 array under test
      Throws:
      IllegalArgumentException - if the given condition is null.
      Since:
      2.7.0 / 3.7.0
    • allMatch

      public AtomicReferenceArrayAssert<T> allMatch(Predicate<? super T> predicate)
      Verifies that all elements match the given Predicate.

      Example :

       AtomicReferenceArray<String> abc = new AtomicReferenceArray<>(new String[] {"a", "b", "c"});
       AtomicReferenceArray<String> abcc = new AtomicReferenceArray<>(new String[] {"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<AtomicReferenceArrayAssert<T>,T>
      Parameters:
      predicate - the given Predicate.
      Returns:
      this object.
      Throws:
      NullPointerException - if the given predicate is null.
      AssertionError - if an element cannot be cast to T.
      AssertionError - if one or more elements don't satisfy the given predicate.
      Since:
      3.7.0
    • allMatch

      public AtomicReferenceArrayAssert<T> allMatch(Predicate<? super T> predicate, String predicateDescription)
      Verifies that all the elements of actual's array match the given Predicate. The predicate description is used to get an informative error message.

      Example :

       AtomicReferenceArray<String> abc = new AtomicReferenceArray<>(new String[] {"a", "b", "c"});
       AtomicReferenceArray<String> abcc = new AtomicReferenceArray<>(new String[] {"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:
        invalid input: '<'["a", "b", "cc"]>
        to match 'length of 1' predicate but this element did not:
        invalid input: '<'"cc">
      Specified by:
      allMatch in interface ObjectEnumerableAssert<AtomicReferenceArrayAssert<T>,T>
      Parameters:
      predicate - the given Predicate.
      predicateDescription - a description of the Predicate used in the error message
      Returns:
      this object.
      Throws:
      NullPointerException - if the given predicate is null.
      AssertionError - if an element cannot be cast to T.
      AssertionError - if one or more elements don't satisfy the given predicate.
      Since:
      3.7.0
    • allSatisfy

      public AtomicReferenceArrayAssert<T> allSatisfy(Consumer<? super T> requirements)
      Verifies that all the elements satisfy given requirements expressed as a Consumer.

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

      Grouping assertions example:

       // myIcelanderFriends is an AtomicReferenceArray<Person> 
       assertThat(myIcelanderFriends).allSatisfy(person -> {
                                       assertThat(person.getCountry()).isEqualTo("Iceland");
                                       assertThat(person.getPhoneCountryCode()).isEqualTo("+354");
                                     });
      Specified by:
      allSatisfy in interface ObjectEnumerableAssert<AtomicReferenceArrayAssert<T>,T>
      Parameters:
      requirements - the given Consumer.
      Returns:
      this object.
      Throws:
      NullPointerException - if the given Consumer is null.
      AssertionError - if one or more elements don't satisfy given requirements.
      Since:
      3.7.0
    • anySatisfy

      public AtomicReferenceArrayAssert<T> anySatisfy(Consumer<? super T> 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 AtomicReferenceArray to assert is empty, the assertion will fail.

      Grouping assertions example:

       // myIcelanderFriends is an AtomicReferenceArray<Person>
       assertThat(myIcelanderFriends).anySatisfy(person -> {
                                       assertThat(person.getCountry()).isEqualTo("Iceland");
                                       assertThat(person.getPhoneCountryCode()).isEqualTo("+354");
                                       assertThat(person.getSurname()).endsWith("son");
                                     });
                                     
       // assertion fails for empty group, whatever the requirements are.  
       assertThat(emptyArray).anySatisfy($ -> {
                               assertThat(true).isTrue();
                             });
      Specified by:
      anySatisfy in interface ObjectEnumerableAssert<AtomicReferenceArrayAssert<T>,T>
      Parameters:
      requirements - the given Consumer.
      Returns:
      this object.
      Throws:
      NullPointerException - if the given Consumer is null.
      AssertionError - if all elements don't satisfy given requirements.
      Since:
      3.7.0