@Override public ObservableSource<Object> apply(Observable<Object> o) throws Exception { return o.dematerialize(); } });
@Test public void testDematerialize2() { Throwable exception = new Throwable("test"); Observable<Integer> o = Observable.error(exception); Observable<Integer> dematerialize = o.materialize().dematerialize(); Observer<Integer> observer = TestHelper.mockObserver(); dematerialize.subscribe(observer); verify(observer, times(1)).onError(exception); verify(observer, times(0)).onComplete(); verify(observer, times(0)).onNext(any(Integer.class)); }
@Test public void testCompletePassThru() { Observable<Integer> o = Observable.empty(); Observable<Integer> dematerialize = o.dematerialize(); Observer<Integer> observer = TestHelper.mockObserver(); TestObserver<Integer> ts = new TestObserver<Integer>(observer); dematerialize.subscribe(ts); System.out.println(ts.errors()); verify(observer, never()).onError(any(Throwable.class)); verify(observer, times(1)).onComplete(); verify(observer, times(0)).onNext(any(Integer.class)); }
@Test public void testErrorPassThru() { Exception exception = new Exception("test"); Observable<Integer> o = Observable.error(exception); Observable<Integer> dematerialize = o.dematerialize(); Observer<Integer> observer = TestHelper.mockObserver(); dematerialize.subscribe(observer); verify(observer, times(1)).onError(exception); verify(observer, times(0)).onComplete(); verify(observer, times(0)).onNext(any(Integer.class)); }
@Test public void testDematerialize1() { Observable<Notification<Integer>> notifications = Observable.just(1, 2).materialize(); Observable<Integer> dematerialize = notifications.dematerialize(); Observer<Integer> observer = TestHelper.mockObserver(); dematerialize.subscribe(observer); verify(observer, times(1)).onNext(1); verify(observer, times(1)).onNext(2); verify(observer, times(1)).onComplete(); verify(observer, never()).onError(any(Throwable.class)); }
@Test public void testDematerialize3() { Exception exception = new Exception("test"); Observable<Integer> o = Observable.error(exception); Observable<Integer> dematerialize = o.materialize().dematerialize(); Observer<Integer> observer = TestHelper.mockObserver(); dematerialize.subscribe(observer); verify(observer, times(1)).onError(exception); verify(observer, times(0)).onComplete(); verify(observer, times(0)).onNext(any(Integer.class)); }
@Test public void testMaterializeDematerializeChaining() { Observable<Integer> obs = Observable.just(1); Observable<Integer> chained = obs.materialize().dematerialize(); Observer<Integer> observer = TestHelper.mockObserver(); chained.subscribe(observer); verify(observer, times(1)).onNext(1); verify(observer, times(1)).onComplete(); verify(observer, times(0)).onError(any(Throwable.class)); }
@Test public void testHonorsContractWhenThrows() { Observable<Integer> source = Observable.error(new TestException()); Observable<Integer> result = source.materialize().dematerialize(); Observer<Integer> o = TestHelper.mockObserver(); result.subscribe(o); verify(o, never()).onNext(any(Integer.class)); verify(o, never()).onComplete(); verify(o).onError(any(TestException.class)); }
@Test public void testHonorsContractWhenCompleted() { Observable<Integer> source = Observable.just(1); Observable<Integer> result = source.materialize().dematerialize(); Observer<Integer> o = TestHelper.mockObserver(); result.subscribe(o); verify(o).onNext(1); verify(o).onComplete(); verify(o, never()).onError(any(Throwable.class)); }
@Test public void dispose() { TestHelper.checkDisposed(Observable.just(Notification.createOnComplete()).dematerialize()); }
@Test public void testErrorThrownIssue1685() { Subject<Object> subject = ReplaySubject.create(); Observable.error(new RuntimeException("oops")) .materialize() .delay(1, TimeUnit.SECONDS) .dematerialize() .subscribe(subject); subject.subscribe(); subject.materialize().blockingFirst(); System.out.println("Done"); }