Class AssertSubscriber<T>
- java.lang.Object
-
- io.smallrye.mutiny.helpers.test.AssertSubscriber<T>
-
- Type Parameters:
T
- the type of the items
- All Implemented Interfaces:
org.reactivestreams.Subscriber<T>
public class AssertSubscriber<T> extends java.lang.Object implements org.reactivestreams.Subscriber<T>
AMulti
Subscriber
for testing purposes that comes with useful assertion helpers.
-
-
Field Summary
Fields Modifier and Type Field Description static java.time.Duration
DEFAULT_TIMEOUT
The default timeout used byawait
method.
-
Constructor Summary
Constructors Constructor Description AssertSubscriber()
Creates a newAssertSubscriber
with 0 requested items and no upfront cancellation.AssertSubscriber(long requested)
Creates a newAssertSubscriber
with no upfront cancellation.AssertSubscriber(long requested, boolean cancelled)
Creates a newAssertSubscriber
.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Deprecated Methods Modifier and Type Method Description AssertSubscriber<T>
assertCompleted()
Assert that the multi has completed.AssertSubscriber<T>
assertFailedWith(java.lang.Class<? extends java.lang.Throwable> expectedTypeOfFailure)
Assert that the multi has failed.AssertSubscriber<T>
assertFailedWith(java.lang.Class<? extends java.lang.Throwable> expectedTypeOfFailure, java.lang.String expectedFailureMessage)
Assert that the multi has failed.AssertSubscriber<T>
assertHasNotReceivedAnyItem()
Assert that no item has been received yet.AssertSubscriber<T>
assertItems(T... expected)
Assert that a sequence of items has been received (in whole and in exact order).AssertSubscriber<T>
assertLastItem(T expected)
Asserts that the last received item is equal toexpected
.AssertSubscriber<T>
assertNotSubscribed()
Assert that the multi has not been subscribed.AssertSubscriber<T>
assertNotTerminated()
Assert that the multi has not been terminated, i.e.AssertSubscriber<T>
assertSubscribed()
Assert that the multi has been subscribed.AssertSubscriber<T>
assertTerminated()
Assert that the multi has been terminated, i.e.AssertSubscriber<T>
await()
Deprecated.UseawaitCompletion()
orawaitFailure()
insteadAssertSubscriber<T>
await(java.time.Duration duration)
Deprecated.UseawaitFailure()
orawaitCompletion()
insteadAssertSubscriber<T>
awaitCompletion()
Awaits for a completion event.AssertSubscriber<T>
awaitCompletion(java.time.Duration duration)
Awaits for a completion event at mostduration
.AssertSubscriber<T>
awaitFailure()
Awaits for a failure event.AssertSubscriber<T>
awaitFailure(java.time.Duration duration)
Awaits for a failure event.AssertSubscriber<T>
awaitFailure(java.util.function.Consumer<java.lang.Throwable> assertion)
Awaits for a failure event and validate it.AssertSubscriber<T>
awaitFailure(java.util.function.Consumer<java.lang.Throwable> assertion, java.time.Duration duration)
Awaits for a failure event and validate it.AssertSubscriber<T>
awaitItems(int number)
Awaits for the subscriber to receivenumber
items in total (including the ones received after calling this method).AssertSubscriber<T>
awaitItems(int number, java.time.Duration duration)
Awaits for the subscriber to receivenumber
items in total (including the ones received after calling this method).AssertSubscriber<T>
awaitNextItem()
Awaits for the next item.AssertSubscriber<T>
awaitNextItem(java.time.Duration duration)
Awaits for the next item.AssertSubscriber<T>
awaitNextItems(int number)
Awaits for the nextnumber
items.AssertSubscriber<T>
awaitNextItems(int number, int request)
Awaits for the nextnumber
items.AssertSubscriber<T>
awaitNextItems(int number, int request, java.time.Duration duration)
Awaits for the nextnumber
items.AssertSubscriber<T>
awaitNextItems(int number, java.time.Duration duration)
Awaits for the nextnumber
items.AssertSubscriber<T>
awaitSubscription()
Awaits for a subscription event (the subscriber receives aSubscription
from the upstream.AssertSubscriber<T>
awaitSubscription(java.time.Duration duration)
Awaits for a subscription event (the subscriber receives aSubscription
from the upstream.AssertSubscriber<T>
cancel()
Cancel the subscription.static <T> AssertSubscriber<T>
create()
Creates a newAssertSubscriber
with 0 requested items and no upfront cancellation.static <T> AssertSubscriber<T>
create(long requested)
Creates a newAssertSubscriber
with no upfront cancellation.java.lang.Throwable
getFailure()
The reported failure, if any.java.util.List<T>
getItems()
The list of items that have been received.T
getLastItem()
boolean
hasCompleted()
Check whether the multi has completed.boolean
isCancelled()
Check whether the subscription has been cancelled or not.void
onComplete()
void
onError(java.lang.Throwable t)
void
onNext(T t)
void
onSubscribe(org.reactivestreams.Subscription s)
AssertSubscriber<T>
request(long req)
Request items.AssertSubscriber<T>
run(java.lang.Runnable action)
Run an action.
-
-
-
Constructor Detail
-
AssertSubscriber
public AssertSubscriber(long requested, boolean cancelled)
Creates a newAssertSubscriber
.- Parameters:
requested
- the number of initially requested itemscancelled
-true
if the subscription is immediately cancelled,false
otherwise
-
AssertSubscriber
public AssertSubscriber()
Creates a newAssertSubscriber
with 0 requested items and no upfront cancellation.
-
AssertSubscriber
public AssertSubscriber(long requested)
Creates a newAssertSubscriber
with no upfront cancellation.- Parameters:
requested
- the number of initially requested items
-
-
Method Detail
-
create
public static <T> AssertSubscriber<T> create()
Creates a newAssertSubscriber
with 0 requested items and no upfront cancellation.- Type Parameters:
T
- the items type- Returns:
- a new subscriber
-
create
public static <T> AssertSubscriber<T> create(long requested)
Creates a newAssertSubscriber
with no upfront cancellation.- Type Parameters:
T
- the items type- Parameters:
requested
- the number of initially requested items- Returns:
- a new subscriber
-
assertCompleted
public AssertSubscriber<T> assertCompleted()
Assert that the multi has completed.- Returns:
- this
AssertSubscriber
-
assertFailedWith
public AssertSubscriber<T> assertFailedWith(java.lang.Class<? extends java.lang.Throwable> expectedTypeOfFailure, java.lang.String expectedFailureMessage)
Assert that the multi has failed.- Parameters:
expectedTypeOfFailure
- the expected failure typeexpectedFailureMessage
- a message to be contained in the failure message, ornull
when any message is fine- Returns:
- this
AssertSubscriber
-
assertFailedWith
public AssertSubscriber<T> assertFailedWith(java.lang.Class<? extends java.lang.Throwable> expectedTypeOfFailure)
Assert that the multi has failed.- Parameters:
expectedTypeOfFailure
- the expected failure type- Returns:
- this
AssertSubscriber
-
assertHasNotReceivedAnyItem
public AssertSubscriber<T> assertHasNotReceivedAnyItem()
Assert that no item has been received yet.- Returns:
- this
AssertSubscriber
-
assertSubscribed
public AssertSubscriber<T> assertSubscribed()
Assert that the multi has been subscribed.- Returns:
- this
AssertSubscriber
-
assertNotSubscribed
public AssertSubscriber<T> assertNotSubscribed()
Assert that the multi has not been subscribed.- Returns:
- this
AssertSubscriber
-
assertTerminated
public AssertSubscriber<T> assertTerminated()
Assert that the multi has been terminated, i.e. received a failure or a completion event.- Returns:
- this
AssertSubscriber
-
assertNotTerminated
public AssertSubscriber<T> assertNotTerminated()
Assert that the multi has not been terminated, i.e. did not received a failure or a completion event.- Returns:
- this
AssertSubscriber
-
assertItems
@SafeVarargs public final AssertSubscriber<T> assertItems(T... expected)
Assert that a sequence of items has been received (in whole and in exact order).- Parameters:
expected
- a sequence of items- Returns:
- this
AssertSubscriber
-
getLastItem
public T getLastItem()
- Returns:
- get the last received item, potentially
null
if no items have been received.
-
assertLastItem
public AssertSubscriber<T> assertLastItem(T expected)
Asserts that the last received item is equal toexpected
. The assertion fails if no items have been received.- Parameters:
expected
- the expected item, must not benull
- Returns:
- this
AssertSubscriber
-
await
@Deprecated public AssertSubscriber<T> await()
Deprecated.UseawaitCompletion()
orawaitFailure()
insteadAwait for the multi to be terminated. It waits at mostDEFAULT_TIMEOUT
.- Returns:
- this
AssertSubscriber
-
awaitNextItem
public AssertSubscriber<T> awaitNextItem()
Awaits for the next item. If no item have been received before the default timeout, anAssertionError
is thrown.Note that it requests one item from the upstream.
- Returns:
- this
AssertSubscriber
- See Also:
awaitNextItems(int, int)
-
awaitNextItem
public AssertSubscriber<T> awaitNextItem(java.time.Duration duration)
Awaits for the next item. If no item have been received before the given timeout, anAssertionError
is thrown.Note that it requests one item from the upstream.
- Parameters:
duration
- the timeout, must not benull
- Returns:
- this
AssertSubscriber
- See Also:
awaitNextItems(int, int)
-
awaitNextItems
public AssertSubscriber<T> awaitNextItems(int number)
Awaits for the nextnumber
items. If not enough items have been received before the default timeout, anAssertionError
is thrown.This method requests
number
items the upstream.- Parameters:
number
- the number of items to expect, must be neither 0 nor negative.- Returns:
- this
AssertSubscriber
- See Also:
awaitNextItems(int, int)
-
awaitNextItems
public AssertSubscriber<T> awaitNextItems(int number, int request)
Awaits for the nextnumber
items. If not enough items have been received before the default timeout, anAssertionError
is thrown.- Parameters:
number
- the number of items to expect, must neither be 0 nor negative.request
- if not 0, the number of items to request upstream.- Returns:
- this
AssertSubscriber
-
awaitNextItems
public AssertSubscriber<T> awaitNextItems(int number, java.time.Duration duration)
Awaits for the nextnumber
items. If not enough items have been received before the given timeout, anAssertionError
is thrown.This method requests
number
items upstream.- Parameters:
number
- the number of items to expect, must be neither 0 nor negative.duration
- the timeout, must not benull
- Returns:
- this
AssertSubscriber
-
awaitNextItems
public AssertSubscriber<T> awaitNextItems(int number, int request, java.time.Duration duration)
Awaits for the nextnumber
items. If not enough items have been received before the given timeout, anAssertionError
is thrown.- Parameters:
number
- the number of items to expect, must be neither 0 nor negative.request
- if not 0, the number of items to request upstream.duration
- the timeout, must not benull
- Returns:
- this
AssertSubscriber
-
awaitItems
public AssertSubscriber<T> awaitItems(int number)
Awaits for the subscriber to receivenumber
items in total (including the ones received after calling this method). If not enough items have been received before the default timeout, anAssertionError
is thrown. UnlikeawaitNextItems(int, int)
, this method does not request items from the upstream.- Parameters:
number
- the number of items to expect, must be neither 0 nor negative.- Returns:
- this
AssertSubscriber
-
awaitItems
public AssertSubscriber<T> awaitItems(int number, java.time.Duration duration)
Awaits for the subscriber to receivenumber
items in total (including the ones received after calling this method). If not enough items have been received before the given timeout, anAssertionError
is thrown. UnlikeawaitNextItems(int, int)
, this method does not requests items from the upstream.- Parameters:
number
- the number of items to expect, must be neither 0 nor negative.duration
- the timeout, must not benull
- Returns:
- this
AssertSubscriber
-
awaitCompletion
public AssertSubscriber<T> awaitCompletion()
Awaits for a completion event. It waits at mostDEFAULT_TIMEOUT
.If the timeout expired, or if a failure event is received instead of the expected completion, the check fails.
- Returns:
- this
AssertSubscriber
-
awaitCompletion
public AssertSubscriber<T> awaitCompletion(java.time.Duration duration)
Awaits for a completion event at mostduration
.If the timeout expired, or if a failure event is received instead of the expected completion, the check fails.
- Parameters:
duration
- the duration, must not benull
- Returns:
- this
AssertSubscriber
-
awaitFailure
public AssertSubscriber<T> awaitFailure()
Awaits for a failure event. It waits at mostDEFAULT_TIMEOUT
.If the timeout expired, or if a completion event is received instead of the expected failure, the check fails.
- Returns:
- this
AssertSubscriber
-
awaitFailure
public AssertSubscriber<T> awaitFailure(java.util.function.Consumer<java.lang.Throwable> assertion)
Awaits for a failure event and validate it. It waits at mostDEFAULT_TIMEOUT
.If the timeout expired, or if a completion event is received instead of the expected failure, the check fails. The received failure is validated using the
assertion
consumer. The code of the consumer is expected to throw anAssertionError
to indicate that the failure didn't pass the validation. The consumer is not called if no failures are received.- Parameters:
assertion
- a check validating the received failure (if any). Must not benull
- Returns:
- this
AssertSubscriber
-
awaitFailure
public AssertSubscriber<T> awaitFailure(java.time.Duration duration)
Awaits for a failure event. It waits at mostduration
.If the timeout expired, or if a completion event is received instead of the expected failure, the check fails.
- Parameters:
duration
- the max duration to wait, must not benull
- Returns:
- this
AssertSubscriber
-
awaitFailure
public AssertSubscriber<T> awaitFailure(java.util.function.Consumer<java.lang.Throwable> assertion, java.time.Duration duration)
Awaits for a failure event and validate it. It waits at mostduration
.If the timeout expired, or if a completion event is received instead of the expected failure, the check fails. The received failure is validated using the
assertion
consumer. The code of the consumer is expected to throw anAssertionError
to indicate that the failure didn't pass the validation. The consumer is not called if no failures are received.- Parameters:
assertion
- a check validating the received failure (if any). Must not benull
duration
- the max duration to wait, must not benull
- Returns:
- this
AssertSubscriber
-
awaitSubscription
public AssertSubscriber<T> awaitSubscription()
Awaits for a subscription event (the subscriber receives aSubscription
from the upstream. It waits at mostDEFAULT_TIMEOUT
.If the timeout expired, the check fails.
- Returns:
- this
AssertSubscriber
-
awaitSubscription
public AssertSubscriber<T> awaitSubscription(java.time.Duration duration)
Awaits for a subscription event (the subscriber receives aSubscription
from the upstream. It waits at mostduration
.If the timeout expired, the check fails.
- Parameters:
duration
- the duration, must not benull
- Returns:
- this
AssertSubscriber
-
await
@Deprecated public AssertSubscriber<T> await(java.time.Duration duration)
Deprecated.UseawaitFailure()
orawaitCompletion()
insteadAwait for the multi to be terminated.- Parameters:
duration
- the timeout duration- Returns:
- this
AssertSubscriber
-
cancel
public AssertSubscriber<T> cancel()
Cancel the subscription.- Returns:
- this
AssertSubscriber
-
request
public AssertSubscriber<T> request(long req)
Request items.- Parameters:
req
- the number of items to request.- Returns:
- this
AssertSubscriber
-
onSubscribe
public void onSubscribe(org.reactivestreams.Subscription s)
- Specified by:
onSubscribe
in interfaceorg.reactivestreams.Subscriber<T>
-
onError
public void onError(java.lang.Throwable t)
- Specified by:
onError
in interfaceorg.reactivestreams.Subscriber<T>
-
onComplete
public void onComplete()
- Specified by:
onComplete
in interfaceorg.reactivestreams.Subscriber<T>
-
getItems
public java.util.List<T> getItems()
The list of items that have been received.- Returns:
- the list
-
getFailure
public java.lang.Throwable getFailure()
The reported failure, if any.- Returns:
- the failure or
null
-
run
public AssertSubscriber<T> run(java.lang.Runnable action)
Run an action.- Parameters:
action
- the action- Returns:
- this
AssertSubscriber
-
isCancelled
public boolean isCancelled()
Check whether the subscription has been cancelled or not.- Returns:
- a boolean
-
hasCompleted
public boolean hasCompleted()
Check whether the multi has completed.- Returns:
- a boolean
-
-