@Test public void createNullError() { Single.create(new SingleOnSubscribe<Object>() { @Override public void subscribe(SingleEmitter<Object> s) throws Exception { s.onError(null); s.onError(null); } }) .test() .assertFailure(NullPointerException.class); }
@Test public void ambWithOrder() { Single<Integer> error = Single.error(new RuntimeException()); Single.just(1).ambWith(error).test().assertValue(1); }
@Test public void elementAtIndex0WithDefaultOnEmptySource() { elementAt(Flowable.empty(), 0, 5) .test() .assertResult(5); }
@Test public void empty() { singleOrError(Flowable.empty()) .test() .assertFailure(NoSuchElementException.class); }
@Test public void doOnDispose() { final int[] count = { 0 }; Single.never().doOnDispose(new Action() { @Override public void run() throws Exception { count[0]++; } }).test(true); assertEquals(1, count[0]); }
@Test public void doOnEventThrowsSuccess() { Single.just(1) .doOnEvent(new BiConsumer<Integer, Throwable>() { @Override public void accept(Integer v, Throwable e) throws Exception { throw new TestException(); } }) .test() .assertFailure(TestException.class); }
@Test public void elementAtOrErrorIndex1OnEmptySource() { Observable.empty() .elementAtOrError(1) .test() .assertFailure(NoSuchElementException.class); }
@Test public void firstOrErrorError() { firstOrError(Flowable.error(new RuntimeException("error")) ) .test() .assertNoValues() .assertErrorMessage("error") .assertError(RuntimeException.class); }
@Test public void firstOrErrorNoElement() { firstOrError(Flowable.empty() ) .test() .assertNoValues() .assertError(NoSuchElementException.class); }
@Test public void elementAtOrErrorNoElement() { elementAtOrError(Flowable.empty(), 0) .test() .assertNoValues() .assertError(NoSuchElementException.class); }
@Test public void elementAtOrErrorMultipleElements() { elementAtOrError(Flowable.just(1, 2, 3), 1) .test() .assertNoErrors() .assertValue(2); }
@Test public void lastOrErrorOneElement() { Observable.just(1) .lastOrError() .test() .assertNoErrors() .assertValue(1); }
@Test public void prefetch() { Observable.sequenceEqual(Observable.range(1, 20), Observable.range(1, 20), 2) .test() .assertResult(true); }
@Test public void elementAtOrErrorOneElement() { Observable.just(1) .elementAtOrError(0) .test() .assertNoErrors() .assertValue(1); }
@Test public void lastOrErrorNoElement() { lastOrError(Flowable.empty() ) .test() .assertNoValues() .assertError(NoSuchElementException.class); }
@Test public void delayedDisposed() { PublishSubject<Integer> ps = PublishSubject.create(); Single<Integer> cache = ps.single(-99).cache(); TestObserver<Integer> ts1 = cache.test(); TestObserver<Integer> ts2 = cache.test(); ts1.cancel(); ps.onNext(1); ps.onComplete(); ts1.assertNoValues().assertNoErrors().assertNotComplete(); ts2.assertResult(1); }
@Test public void otherOnNextPublisher() { PublishProcessor<Integer> pp = PublishProcessor.create(); PublishProcessor<Integer> source = PublishProcessor.create(); TestObserver<Integer> ts = takeUntil(single(source, -99), pp) .test(); pp.onNext(1); ts.assertFailure(CancellationException.class); }
@Test public void otherErrorPublisher() { PublishProcessor<Integer> pp = PublishProcessor.create(); PublishProcessor<Integer> source = PublishProcessor.create(); TestObserver<Integer> ts = takeUntil(single(source, -99), pp) .test(); pp.onError(new TestException()); ts.assertFailure(TestException.class); }
@Test public void error() { elementAt(Flowable.error(new TestException()), 1, 10) .test() .assertFailure(TestException.class); elementAt(Flowable.error(new TestException()), 1) .test() .assertFailure(TestException.class); }