use of io.reactivex.rxjava3.subjects.PublishSubject in project RxJava by ReactiveX.
the class CompletableCacheTest method crossDisposeOnError.
@Test
public void crossDisposeOnError() {
PublishSubject<Integer> ps = PublishSubject.create();
final TestObserver<Void> to1 = new TestObserver<>();
final TestObserver<Void> to2 = new TestObserver<Void>() {
@Override
public void onError(Throwable ex) {
super.onError(ex);
to1.dispose();
}
};
Completable c = ps.ignoreElements().cache();
c.subscribe(to2);
c.subscribe(to1);
ps.onError(new TestException());
to1.assertEmpty();
to2.assertFailure(TestException.class);
}
use of io.reactivex.rxjava3.subjects.PublishSubject in project RxJava by ReactiveX.
the class ObservableFlatMapStreamTest method mapperThrowsWhenUpstreamErrors.
@Test
public void mapperThrowsWhenUpstreamErrors() throws Throwable {
TestHelper.withErrorTracking(errors -> {
PublishSubject<Integer> ps = PublishSubject.create();
AtomicInteger counter = new AtomicInteger();
TestObserver<Integer> to = ps.hide().concatMapStream(v -> {
if (counter.getAndIncrement() == 0) {
return Stream.of(1, 2);
}
ps.onError(new IOException());
throw new TestException();
}).test();
ps.onNext(1);
ps.onNext(2);
to.assertFailure(IOException.class, 1, 2);
TestHelper.assertUndeliverable(errors, 0, TestException.class);
});
}
use of io.reactivex.rxjava3.subjects.PublishSubject in project RxJava by ReactiveX.
the class ObservableFlatMapStreamTest method upstreamCancelledCloseCrash.
@Test
public void upstreamCancelledCloseCrash() throws Throwable {
TestHelper.withErrorTracking(errors -> {
PublishSubject<Integer> ps = PublishSubject.create();
TestObserver<Integer> to = ps.flatMapStream(v -> Stream.of(v + 1, v + 2).onClose(() -> {
throw new TestException();
})).take(1).test();
assertTrue(ps.hasObservers());
ps.onNext(1);
to.assertResult(2);
assertFalse(ps.hasObservers());
TestHelper.assertUndeliverable(errors, 0, TestException.class);
});
}
use of io.reactivex.rxjava3.subjects.PublishSubject in project RxJava by ReactiveX.
the class FutureSingleObserverTest method onErrorCancelRace.
@Test
public void onErrorCancelRace() {
RxJavaPlugins.setErrorHandler(Functions.emptyConsumer());
try {
for (int i = 0; i < TestHelper.RACE_DEFAULT_LOOPS; i++) {
final PublishSubject<Integer> ps = PublishSubject.create();
final Future<?> f = ps.single(-99).toFuture();
final TestException ex = new TestException();
Runnable r1 = new Runnable() {
@Override
public void run() {
f.cancel(true);
}
};
Runnable r2 = new Runnable() {
@Override
public void run() {
ps.onError(ex);
}
};
TestHelper.race(r1, r2);
}
} finally {
RxJavaPlugins.reset();
}
}
use of io.reactivex.rxjava3.subjects.PublishSubject in project RxJava by ReactiveX.
the class SingleTimeoutTest method shouldUnsubscribeFromUnderlyingSubscriptionOnDispose.
@Test
public void shouldUnsubscribeFromUnderlyingSubscriptionOnDispose() {
final PublishSubject<String> subject = PublishSubject.create();
final TestScheduler scheduler = new TestScheduler();
final TestObserver<String> observer = subject.single("").timeout(100, TimeUnit.MILLISECONDS, scheduler).test();
assertTrue(subject.hasObservers());
observer.dispose();
assertFalse(subject.hasObservers());
}
Aggregations