@Override public void run() { ps.onError(ex); } };
@Override public void run() { ps2.onError(ex); } };
@Override public void run() { ps.onError(ex); } };
@Override public void run() { ps1.onError(ex); } };
@Override public void run() { ps1.onError(ex1); } };
@Override public void run() { ps2.onError(ex); } };
@Override public void run() { ps.onError(ex); } };
@Override public void run() { ps.onError(ex0); } };
@Override public void run() { ps2.onError(ex2); } };
@Override public void run() { ps2.onError(ex2); } };
@Test public void testFirstFails() { s2.onNext("a"); s1.onError(new RuntimeException("Forced failure")); inOrder.verify(observer, times(1)).onError(any(RuntimeException.class)); s2.onNext("b"); s1.onNext("1"); s1.onNext("2"); inOrder.verify(observer, never()).onComplete(); inOrder.verify(observer, never()).onNext(any(String.class)); inOrder.verifyNoMoreInteractions(); }
@Test public void testHidingError() { PublishSubject<Integer> src = PublishSubject.create(); Observable<Integer> dst = src.hide(); assertFalse(dst instanceof PublishSubject); Observer<Object> o = TestHelper.mockObserver(); dst.subscribe(o); src.onError(new TestException()); verify(o, never()).onNext(any()); verify(o, never()).onComplete(); verify(o).onError(any(TestException.class)); }
@Test public void shouldErrorIfUnderlyingErrors() { Observer<String> observer = TestHelper.mockObserver(); TestObserver<String> to = new TestObserver<String>(observer); withTimeout.subscribe(observer); testScheduler.advanceTimeBy(2, TimeUnit.SECONDS); underlyingSubject.onError(new UnsupportedOperationException()); testScheduler.advanceTimeBy(2, TimeUnit.SECONDS); verify(observer).onError(any(UnsupportedOperationException.class)); to.dispose(); }
@SuppressWarnings("unchecked") @Test public void testInnerError() { // TODO verify: concatMapEager subscribes first then consumes the sources is okay PublishSubject<Integer> ps = PublishSubject.create(); Observable.concatArrayEager(Observable.just(1), ps) .subscribe(to); ps.onError(new TestException()); to.assertValue(1); to.assertError(TestException.class); to.assertNotComplete(); }
@SuppressWarnings("unchecked") @Test public void bufferTimedExactBoundedError() { TestScheduler scheduler = new TestScheduler(); PublishSubject<Integer> ps = PublishSubject.create(); TestObserver<List<Integer>> to = ps .buffer(1, TimeUnit.MILLISECONDS, scheduler, 1, Functions.<Integer>createArrayList(16), true) .test(); ps.onError(new TestException()); to .assertFailure(TestException.class); }
@Test public void exactOnError() { TestScheduler scheduler = new TestScheduler(); PublishSubject<Integer> ps = PublishSubject.create(); TestObserver<Integer> to = ps.window(1, 1, TimeUnit.SECONDS, scheduler) .flatMap(Functions.<Observable<Integer>>identity()) .test(); ps.onError(new TestException()); to.assertFailure(TestException.class); }
@Test public void overlappingOnError() { TestScheduler scheduler = new TestScheduler(); PublishSubject<Integer> ps = PublishSubject.create(); TestObserver<Integer> to = ps.window(2, 1, TimeUnit.SECONDS, scheduler) .flatMap(Functions.<Observable<Integer>>identity()) .test(); ps.onError(new TestException()); to.assertFailure(TestException.class); }
@Test public void skipOnError() { TestScheduler scheduler = new TestScheduler(); PublishSubject<Integer> ps = PublishSubject.create(); TestObserver<Integer> to = ps.window(1, 2, TimeUnit.SECONDS, scheduler) .flatMap(Functions.<Observable<Integer>>identity()) .test(); ps.onError(new TestException()); to.assertFailure(TestException.class); }
@Test public void untilPublisherMainError() { PublishSubject<Integer> main = PublishSubject.create(); PublishSubject<Integer> other = PublishSubject.create(); TestObserver<Integer> to = main.takeUntil(other).test(); assertTrue("Main no observers?", main.hasObservers()); assertTrue("Other no observers?", other.hasObservers()); main.onError(new TestException()); assertFalse("Main has observers?", main.hasObservers()); assertFalse("Other has observers?", other.hasObservers()); to.assertFailure(TestException.class); }
@Test public void testCurrentStateMethodsError() { PublishSubject<Object> as = PublishSubject.create(); assertFalse(as.hasThrowable()); assertFalse(as.hasComplete()); assertNull(as.getThrowable()); as.onError(new TestException()); assertTrue(as.hasThrowable()); assertFalse(as.hasComplete()); assertTrue(as.getThrowable() instanceof TestException); }