Class StreamSubject


  • public final class StreamSubject
    extends Subject
    Propositions for Stream subjects.

    Note: the wrapped stream will be drained immediately into a private collection to provide more readable failure messages. You should not use this class if you intend to leave the stream un-consumed or if the stream is very large or infinite.

    If you intend to make multiple assertions on the same stream of data you should instead first collect the contents of the stream into a collection, and then assert directly on that.

    For very large or infinite streams you may want to first limit the stream before asserting on it.

    Author:
    Kurt Alfred Kluever
    • Method Detail

      • actualCustomStringRepresentation

        protected String actualCustomStringRepresentation()
        Description copied from class: Subject
        Supplies the direct string representation of the actual value to other methods which may prefix or otherwise position it in an error message. This should only be overridden to provide an improved string representation of the value under test, as it would appear in any given error message, and should not be used for additional prefixing.

        Subjects should override this with care.

        By default, this returns String.ValueOf(getActualValue()).

        Overrides:
        actualCustomStringRepresentation in class Subject
      • isEmpty

        public void isEmpty()
        Fails if the subject is not empty.
      • isNotEmpty

        public void isNotEmpty()
        Fails if the subject is empty.
      • hasSize

        public void hasSize​(int expectedSize)
        Fails if the subject does not have the given size.

        If you'd like to check that your stream contains more than Integer.MAX_VALUE elements, use assertThat(stream.count()).isEqualTo(...).

      • contains

        public void contains​(@Nullable Object element)
        Fails if the subject does not contain the given element.
      • doesNotContain

        public void doesNotContain​(@Nullable Object element)
        Fails if the subject contains the given element.
      • containsNoDuplicates

        public void containsNoDuplicates()
        Fails if the subject contains duplicate elements.
      • containsAnyOf

        public void containsAnyOf​(@Nullable Object first,
                                  @Nullable Object second,
                                  @Nullable Object @Nullable ... rest)
        Fails if the subject does not contain at least one of the given elements.
      • containsAnyIn

        public void containsAnyIn​(Iterable<?> expected)
        Fails if the subject does not contain at least one of the given elements.
      • containsAtLeast

        @CanIgnoreReturnValue
        public Ordered containsAtLeast​(@Nullable Object first,
                                       @Nullable Object second,
                                       @Nullable Object @Nullable ... rest)
        Fails if the subject does not contain all of the given elements. If an element appears more than once in the given elements, then it must appear at least that number of times in the actual elements.

        To also test that the contents appear in the given order, make a call to inOrder() on the object returned by this method. The expected elements must appear in the given order within the actual elements, but they are not required to be consecutive.

      • containsAtLeastElementsIn

        @CanIgnoreReturnValue
        public Ordered containsAtLeastElementsIn​(Iterable<?> expected)
        Fails if the subject does not contain all of the given elements. If an element appears more than once in the given elements, then it must appear at least that number of times in the actual elements.

        To also test that the contents appear in the given order, make a call to inOrder() on the object returned by this method. The expected elements must appear in the given order within the actual elements, but they are not required to be consecutive.

      • containsExactly

        @CanIgnoreReturnValue
        public Ordered containsExactly​(@Nullable Object @Nullable ... varargs)
        Fails if the subject does not contain exactly the given elements.

        Multiplicity is respected. For example, an object duplicated exactly 3 times in the parameters asserts that the object must likewise be duplicated exactly 3 times in the subject.

        To also test that the contents appear in the given order, make a call to inOrder() on the object returned by this method.

      • containsExactlyElementsIn

        @CanIgnoreReturnValue
        public Ordered containsExactlyElementsIn​(Iterable<?> expected)
        Fails if the subject does not contain exactly the given elements.

        Multiplicity is respected. For example, an object duplicated exactly 3 times in the parameters asserts that the object must likewise be duplicated exactly 3 times in the subject.

        To also test that the contents appear in the given order, make a call to inOrder() on the object returned by this method.

      • containsNoneOf

        public void containsNoneOf​(@Nullable Object first,
                                   @Nullable Object second,
                                   @Nullable Object @Nullable ... rest)
        Fails if the subject contains any of the given elements. (Duplicates are irrelevant to this test, which fails if any of the actual elements equal any of the excluded.)
      • containsNoneIn

        public void containsNoneIn​(Iterable<?> excluded)
        Fails if the subject contains any of the given elements. (Duplicates are irrelevant to this test, which fails if any of the actual elements equal any of the excluded.)
      • isInStrictOrder

        public void isInStrictOrder()
        Fails if the subject is not strictly ordered, according to the natural ordering of its elements. Strictly ordered means that each element in the stream is strictly greater than the element that preceded it.
        Throws:
        ClassCastException - if any pair of elements is not mutually Comparable
        NullPointerException - if any element is null
      • isInStrictOrder

        public void isInStrictOrder​(Comparator<?> comparator)
        Fails if the subject is not strictly ordered, according to the given comparator. Strictly ordered means that each element in the stream is strictly greater than the element that preceded it.
        Throws:
        ClassCastException - if any pair of elements is not mutually Comparable
      • isInOrder

        public void isInOrder()
        Fails if the subject is not ordered, according to the natural ordering of its elements. Ordered means that each element in the stream is greater than or equal to the element that preceded it.
        Throws:
        ClassCastException - if any pair of elements is not mutually Comparable
        NullPointerException - if any element is null
      • isInOrder

        public void isInOrder​(Comparator<?> comparator)
        Fails if the subject is not ordered, according to the given comparator. Ordered means that each element in the stream is greater than or equal to the element that preceded it.
        Throws:
        ClassCastException - if any pair of elements is not mutually Comparable