@Override public void subscribe(SingleObserver<? super Integer> s1) { Single.unsafeCreate(new SingleSource<Integer>() { @Override public void subscribe(SingleObserver<? super Integer> s2) { throw new IllegalArgumentException("original exception"); } }).subscribe(s1); } }
@Test(expected = NullPointerException.class) public void createNull() { Single.unsafeCreate(null); }
@Test(expected = IllegalArgumentException.class) public void unsafeCreate() { Single.unsafeCreate(Single.just(1)); }
@Override public void subscribe(final SingleObserver<? super Integer> s1) { RxJava3Interop.toFlowable(Single.unsafeCreate(new SingleSource<Integer>() { @Override public void subscribe(SingleObserver<? super Integer> s2) { throw new IllegalArgumentException("original exception"); } })).subscribe(new RelaxedSubscriber<Integer>() { @Override public void onSubscribe(Subscription s) { s.request(Long.MAX_VALUE); } @Override public void onComplete() { } @Override public void onError(Throwable e) { s1.onError(e); } @Override public void onNext(Integer v) { s1.onSuccess(v); } }); } }
@Test public void testCreateSuccess() { TestObserver<Object> ts = new TestObserver<Object>(); Single.unsafeCreate(new SingleSource<Object>() { @Override public void subscribe(SingleObserver<? super Object> s) { s.onSubscribe(Disposables.empty()); s.onSuccess("Hello"); } }).toObservable().subscribe(ts); ts.assertValueSequence(Arrays.asList("Hello")); }
final CountDownLatch latch = new CountDownLatch(2); Single<String> s1 = Single.unsafeCreate(new SingleSource<String>() { @Override public void subscribe(final SingleObserver<? super String> s) {
@Test public void testBackpressureAsObservable() { Single<String> s = Single.unsafeCreate(new SingleSource<String>() { @Override public void subscribe(SingleObserver<? super String> t) { t.onSubscribe(Disposables.empty()); t.onSuccess("hello"); } }); TestObserver<String> ts = new TestObserver<String>(); s.toObservable().subscribe(ts); ts.assertValue("hello"); }
final CountDownLatch latch = new CountDownLatch(2); Single<String> s1 = Single.unsafeCreate(new SingleSource<String>() { @Override public void subscribe(final SingleObserver<? super String> s) {
final CountDownLatch latch = new CountDownLatch(2); Single<String> s1 = Single.<String>unsafeCreate(new SingleSource<String>() { @Override public void subscribe(final SingleObserver<? super String> s) {
@Ignore("v2 components should not throw") @Test(expected = RuntimeException.class) public void testOnErrorExceptionIsThrownFromSingleSubscribe() { Single.unsafeCreate(new SingleSource<Integer>() { @Override public void subscribe(SingleObserver<? super Integer> s1) { Single.unsafeCreate(new SingleSource<Integer>() { @Override public void subscribe(SingleObserver<? super Integer> s2) { throw new IllegalArgumentException("original exception"); } }).subscribe(s1); } } ).toObservable().subscribe(new OnErrorFailedSubscriber()); }
@Test public void testCreateError() { TestObserver<Object> ts = new TestObserver<Object>(); Single.unsafeCreate(new SingleSource<Object>() { @Override public void subscribe(SingleObserver<? super Object> s) { s.onSubscribe(Disposables.empty()); s.onError(new RuntimeException("fail")); } }).toObservable().subscribe(ts); ts.assertError(RuntimeException.class); ts.assertErrorMessage("fail"); }
@Ignore("v2 components should not throw") @Test(expected = RuntimeException.class) public void testOnErrorExceptionIsThrownFromSingleUnsafeSubscribe() { Single.unsafeCreate(new SingleSource<Integer>() { @Override public void subscribe(final SingleObserver<? super Integer> s1) {
@Test public void testTimeout() { TestObserver<String> ts = new TestObserver<String>(); Single<String> s1 = Single.<String>unsafeCreate(new SingleSource<String>() { @Override public void subscribe(SingleObserver<? super String> s) { s.onSubscribe(Disposables.empty()); try { Thread.sleep(5000); } catch (InterruptedException e) { // ignore as we expect this for the test } s.onSuccess("success"); } }).subscribeOn(Schedulers.io()); s1.timeout(100, TimeUnit.MILLISECONDS).toObservable().subscribe(ts); ts.awaitTerminalEvent(); ts.assertError(TimeoutException.class); }
@Test public void testTimeoutWithFallback() { TestObserver<String> ts = new TestObserver<String>(); Single<String> s1 = Single.<String>unsafeCreate(new SingleSource<String>() { @Override public void subscribe(SingleObserver<? super String> s) { s.onSubscribe(Disposables.empty()); try { Thread.sleep(5000); } catch (InterruptedException e) { // ignore as we expect this for the test } s.onSuccess("success"); } }).subscribeOn(Schedulers.io()); s1.timeout(100, TimeUnit.MILLISECONDS, Single.just("hello")).toObservable().subscribe(ts); ts.awaitTerminalEvent(); ts.assertNoErrors(); ts.assertValue("hello"); }