us.observeOn(Schedulers.single()) .subscribe(new Observer<Integer>() { Disposable upstream;
@Test public void workerNotDisposedPrematurelyAsyncInNormalOut() { DisposeTrackingScheduler s = new DisposeTrackingScheduler(); UnicastSubject<Integer> up = UnicastSubject.create(); up.onNext(1); up.onComplete(); Observable.concat( up.observeOn(s), Observable.just(2) ) .test() .assertResult(1, 2); assertEquals(1, s.disposedCount.get()); }
@Test public void inputAsyncFused() { UnicastSubject<Integer> us = UnicastSubject.create(); TestObserver<Integer> to = us.observeOn(Schedulers.single()).test(); TestHelper.emit(us, 1, 2, 3, 4, 5); to .awaitDone(5, TimeUnit.SECONDS) .assertResult(1, 2, 3, 4, 5); }
@Test public void inputAsyncFusedError() { UnicastSubject<Integer> us = UnicastSubject.create(); TestObserver<Integer> to = us.observeOn(Schedulers.single()).test(); us.onError(new TestException()); to .awaitDone(5, TimeUnit.SECONDS) .assertFailure(TestException.class); }
@Test public void inputAsyncFusedErrorDelayed() { UnicastSubject<Integer> us = UnicastSubject.create(); TestObserver<Integer> to = us.observeOn(Schedulers.single(), true).test(); us.onError(new TestException()); to .awaitDone(5, TimeUnit.SECONDS) .assertFailure(TestException.class); }
@Test public void inputOutputAsyncFusedError() { TestObserver<Integer> to = ObserverFusion.newTest(QueueFuseable.ANY); UnicastSubject<Integer> us = UnicastSubject.create(); us.observeOn(Schedulers.single()) .subscribe(to); us.onError(new TestException()); to .awaitDone(5, TimeUnit.SECONDS) .assertFailure(TestException.class); ObserverFusion.assertFusion(to, QueueFuseable.ASYNC) .awaitDone(5, TimeUnit.SECONDS) .assertFailure(TestException.class); }
@Test public void inputOutputAsyncFusedErrorDelayed() { TestObserver<Integer> to = ObserverFusion.newTest(QueueFuseable.ANY); UnicastSubject<Integer> us = UnicastSubject.create(); us.observeOn(Schedulers.single(), true) .subscribe(to); us.onError(new TestException()); to .awaitDone(5, TimeUnit.SECONDS) .assertFailure(TestException.class); ObserverFusion.assertFusion(to, QueueFuseable.ASYNC) .awaitDone(5, TimeUnit.SECONDS) .assertFailure(TestException.class); }