@Override public SingleSource<Object> apply(Single<Object> s) throws Exception { return s.onErrorResumeNext(Single.just(1)); } });
@Test(expected = NullPointerException.class) public void onErrorResumeNextFunctionNull() { error.onErrorResumeNext((Function<Throwable, Single<Integer>>)null); }
@Test(expected = NullPointerException.class) public void onErrorResumeNextSingleNull() { error.onErrorResumeNext((Single<Integer>)null); }
public final Single<T> onErrorResumeNext(final Single<? extends T> resumeSingleInCaseOfError) { ObjectHelper.requireNonNull(resumeSingleInCaseOfError, "resumeSingleInCaseOfError is null"); return onErrorResumeNext(Functions.justFunction(resumeSingleInCaseOfError));
public final Single<T> onErrorResumeNext(final Single<? extends T> resumeSingleInCaseOfError) { ObjectHelper.requireNonNull(resumeSingleInCaseOfError, "resumeSingleInCaseOfError is null"); return onErrorResumeNext(Functions.justFunction(resumeSingleInCaseOfError));
@Test public void testOnErrorCalledOnScheduler() throws Exception { final CountDownLatch latch = new CountDownLatch(1); final AtomicReference<Thread> thread = new AtomicReference<Thread>(); Single.<String>error(new Exception()) .delay(0, TimeUnit.MILLISECONDS, Schedulers.newThread()) .doOnError(new Consumer<Throwable>() { @Override public void accept(Throwable throwable) throws Exception { thread.set(Thread.currentThread()); latch.countDown(); } }) .onErrorResumeNext(Single.just("")) .subscribe(); latch.await(); assertNotEquals(Thread.currentThread(), thread.get()); }
@Test public void onErrorResumeNextFunctionReturnsNull() { try { error.onErrorResumeNext(new Function<Throwable, Single<Integer>>() { @Override public Single<Integer> apply(Throwable e) { return null; } }).blockingGet(); } catch (CompositeException ex) { assertTrue(ex.toString(), ex.getExceptions().get(1) instanceof NullPointerException); } }
@Test public void resumeSuccess() { Single.just(1) .onErrorResumeNext(Single.just(2)) .test() .assertResult(1); } }
@Test public void resumeDispose() { TestHelper.checkDisposed(Single.error(new TestException("Main")) .onErrorResumeNext(Single.just(1))); }
@Test public void onErrorResumeNext() { Single.<Integer>error(new TestException()) .onErrorResumeNext(Single.just(1)) .test() .assertResult(1); }
@Test public void resumeErrors() { Single.error(new TestException("Main")) .onErrorResumeNext(Single.error(new TestException("Resume"))) .test() .assertFailureAndMessage(TestException.class, "Resume"); }