Package io.reactivex.rxjava3.subscribers
Class TestSubscriber<T>
- java.lang.Object
-
- io.reactivex.rxjava3.observers.BaseTestConsumer<T,TestSubscriber<T>>
-
- io.reactivex.rxjava3.subscribers.TestSubscriber<T>
-
- Type Parameters:
T- the value type
- All Implemented Interfaces:
FlowableSubscriber<T>,org.reactivestreams.Subscriber<T>,org.reactivestreams.Subscription
public class TestSubscriber<T> extends BaseTestConsumer<T,TestSubscriber<T>> implements FlowableSubscriber<T>, org.reactivestreams.Subscription
ASubscriberimplementation that records events and allows making assertions about them.You can override the
onSubscribe(Subscription),onNext(Object),onError(Throwable)andonComplete()methods but not the others (this is by design).When calling the default request method, you are requesting on behalf of the wrapped actual
Subscriberif any.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description (package private) static classTestSubscriber.EmptySubscriberA subscriber that ignores all events and does not report errors.
-
Field Summary
Fields Modifier and Type Field Description private booleancancelledMakes sure the incoming Subscriptions get cancelled immediately.private org.reactivestreams.Subscriber<? super T>downstreamThe actual subscriber to forward events to.private java.util.concurrent.atomic.AtomicLongmissedRequestedHolds the requested amount until a subscription arrives.private java.util.concurrent.atomic.AtomicReference<org.reactivestreams.Subscription>upstreamHolds the current subscription if any.-
Fields inherited from class io.reactivex.rxjava3.observers.BaseTestConsumer
checkSubscriptionOnce, completions, done, errors, lastThread, tag, timeout, values
-
-
Constructor Summary
Constructors Constructor Description TestSubscriber()Constructs a non-forwardingTestSubscriberwith an initial request value ofLong.MAX_VALUE.TestSubscriber(long initialRequest)Constructs a non-forwardingTestSubscriberwith the specified initial request value.TestSubscriber(@NonNull org.reactivestreams.Subscriber<? super T> downstream)Constructs a forwardingTestSubscriberbut leaves the requesting to the wrappedSubscriber.TestSubscriber(@NonNull org.reactivestreams.Subscriber<? super T> actual, long initialRequest)Constructs a forwardingTestSubscriberwith the specified initial request amount and an actualSubscriberto forward events to.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description protected TestSubscriber<T>assertSubscribed()Assert that theonSubscribe(Subscription)method was called exactly once.voidcancel()static <T> @NonNull TestSubscriber<T>create()Creates aTestSubscriberwithLong.MAX_VALUEinitial request amount.static <T> @NonNull TestSubscriber<T>create(long initialRequested)Creates aTestSubscriberwith the given initial request amount.static <T> TestSubscriber<T>create(@NonNull org.reactivestreams.Subscriber<? super T> delegate)Constructs a forwardingTestSubscriber.protected voiddispose()Cancel/dispose this test consumer.booleanhasSubscription()booleanisCancelled()Returns true if thisTestSubscriberhas been cancelled.protected booleanisDisposed()Returns true if this test consumer was cancelled/disposed.voidonComplete()voidonError(@NonNull java.lang.Throwable t)voidonNext(T t)protected voidonStart()Called after the onSubscribe is called and handled.voidonSubscribe(@NonNull org.reactivestreams.Subscription s)Implementors of this method should make sure everything that needs to be visible inSubscriber.onNext(Object)is established before callingSubscription.request(long).voidrequest(long n)TestSubscriber<T>requestMore(long n)Callsrequest(long)and returns this.-
Methods inherited from class io.reactivex.rxjava3.observers.BaseTestConsumer
assertComplete, assertEmpty, assertError, assertError, assertError, assertFailure, assertNoErrors, assertNotComplete, assertNoValues, assertResult, assertValue, assertValue, assertValueAt, assertValueAt, assertValueCount, assertValues, assertValueSequence, assertValuesOnly, await, await, awaitCount, awaitDone, fail, valueAndClass, values, withTag
-
-
-
-
Field Detail
-
downstream
private final org.reactivestreams.Subscriber<? super T> downstream
The actual subscriber to forward events to.
-
cancelled
private volatile boolean cancelled
Makes sure the incoming Subscriptions get cancelled immediately.
-
upstream
private final java.util.concurrent.atomic.AtomicReference<org.reactivestreams.Subscription> upstream
Holds the current subscription if any.
-
missedRequested
private final java.util.concurrent.atomic.AtomicLong missedRequested
Holds the requested amount until a subscription arrives.
-
-
Constructor Detail
-
TestSubscriber
public TestSubscriber()
Constructs a non-forwardingTestSubscriberwith an initial request value ofLong.MAX_VALUE.
-
TestSubscriber
public TestSubscriber(long initialRequest)
Constructs a non-forwardingTestSubscriberwith the specified initial request value.The
TestSubscriberdoesn't validate theinitialRequestamount so one can test sources with invalid values as well.- Parameters:
initialRequest- the initial request amount
-
TestSubscriber
public TestSubscriber(@NonNull @NonNull org.reactivestreams.Subscriber<? super T> downstream)
Constructs a forwardingTestSubscriberbut leaves the requesting to the wrappedSubscriber.- Parameters:
downstream- the actualSubscriberto forward events to
-
TestSubscriber
public TestSubscriber(@NonNull @NonNull org.reactivestreams.Subscriber<? super T> actual, long initialRequest)
Constructs a forwardingTestSubscriberwith the specified initial request amount and an actualSubscriberto forward events to.The
TestSubscriberdoesn't validate the initialRequest value so one can test sources with invalid values as well.- Parameters:
actual- the actualSubscriberto forward events toinitialRequest- the initial request amount
-
-
Method Detail
-
create
@NonNull public static <T> @NonNull TestSubscriber<T> create()
Creates aTestSubscriberwithLong.MAX_VALUEinitial request amount.- Type Parameters:
T- the value type- Returns:
- the new
TestSubscriberinstance. - See Also:
create(long)
-
create
@NonNull public static <T> @NonNull TestSubscriber<T> create(long initialRequested)
Creates aTestSubscriberwith the given initial request amount.- Type Parameters:
T- the value type- Parameters:
initialRequested- the initial requested amount- Returns:
- the new
TestSubscriberinstance.
-
create
public static <T> TestSubscriber<T> create(@NonNull @NonNull org.reactivestreams.Subscriber<? super T> delegate)
Constructs a forwardingTestSubscriber.- Type Parameters:
T- the value type received- Parameters:
delegate- the actualSubscriberto forward events to- Returns:
- the new TestObserver instance
-
onSubscribe
public void onSubscribe(@NonNull @NonNull org.reactivestreams.Subscription s)
Description copied from interface:FlowableSubscriberImplementors of this method should make sure everything that needs to be visible inSubscriber.onNext(Object)is established before callingSubscription.request(long). In practice this means no initialization should happen after therequest()call and additional behavior is thread safe in respect toonNext.- Specified by:
onSubscribein interfaceFlowableSubscriber<T>- Specified by:
onSubscribein interfaceorg.reactivestreams.Subscriber<T>
-
onStart
protected void onStart()
Called after the onSubscribe is called and handled.
-
onNext
public void onNext(@NonNull T t)
- Specified by:
onNextin interfaceorg.reactivestreams.Subscriber<T>
-
onError
public void onError(@NonNull @NonNull java.lang.Throwable t)
- Specified by:
onErrorin interfaceorg.reactivestreams.Subscriber<T>
-
onComplete
public void onComplete()
- Specified by:
onCompletein interfaceorg.reactivestreams.Subscriber<T>
-
request
public final void request(long n)
- Specified by:
requestin interfaceorg.reactivestreams.Subscription
-
cancel
public final void cancel()
- Specified by:
cancelin interfaceorg.reactivestreams.Subscription
-
isCancelled
public final boolean isCancelled()
Returns true if thisTestSubscriberhas been cancelled.- Returns:
- true if this
TestSubscriberhas been cancelled
-
dispose
protected final void dispose()
Description copied from class:BaseTestConsumerCancel/dispose this test consumer.- Specified by:
disposein classBaseTestConsumer<T,TestSubscriber<T>>
-
isDisposed
protected final boolean isDisposed()
Description copied from class:BaseTestConsumerReturns true if this test consumer was cancelled/disposed.- Specified by:
isDisposedin classBaseTestConsumer<T,TestSubscriber<T>>- Returns:
- true if this test consumer was cancelled/disposed.
-
hasSubscription
public final boolean hasSubscription()
- Returns:
- true if this
TestSubscriberreceived aSubscriptionviaonSubscribe(Subscription)
-
assertSubscribed
protected final TestSubscriber<T> assertSubscribed()
Assert that theonSubscribe(Subscription)method was called exactly once.- Specified by:
assertSubscribedin classBaseTestConsumer<T,TestSubscriber<T>>- Returns:
- this
-
requestMore
public final TestSubscriber<T> requestMore(long n)
Callsrequest(long)and returns this.History: 2.0.1 - experimental
- Parameters:
n- the request amount- Returns:
- this
- Since:
- 2.1
-
-