@Override public void run() { normal.completable.toSingleDefault(1).subscribe(new Consumer<Integer>() { @Override public void accept(Integer integer) { throw new TestException(); } }); } });
@Test public void testFirstOrElseOfNone() { Observable<String> src = Observable.empty(); src.first("default").subscribe(wo); verify(wo, times(1)).onSuccess(anyString()); verify(wo, times(1)).onSuccess("default"); verify(wo, never()).onError(any(Throwable.class)); }
@Test public void testList() { Flowable<String> w = Flowable.fromIterable(Arrays.asList("one", "two", "three")); Single<List<String>> observable = toList(w); SingleObserver<List<String>> observer = TestHelper.mockSingleObserver(); observable.subscribe(observer); verify(observer, times(1)).onSuccess(Arrays.asList("one", "two", "three")); verify(observer, Mockito.never()).onError(any(Throwable.class)); }
private void verifyError(Single<Boolean> observable) { SingleObserver<Boolean> observer = TestHelper.mockSingleObserver(); observable.subscribe(observer); InOrder inOrder = inOrder(observer); inOrder.verify(observer, times(1)).onError(isA(TestException.class)); inOrder.verifyNoMoreInteractions(); }
@Test public void testContains() { Single<Boolean> o = Observable.just("a", "b", "c").contains("b"); // FIXME nulls not allowed, changed to "c" SingleObserver<Boolean> observer = TestHelper.mockSingleObserver(); o.subscribe(observer); verify(observer, times(1)).onSuccess(true); verify(observer, never()).onSuccess(false); verify(observer, never()).onError( any(Throwable.class)); }
@Test @Ignore("Null values are not allowed") public void testListWithNullValue() { Observable<String> w = Observable.fromIterable(Arrays.asList("one", null, "three")); Single<List<String>> observable = w.toList(); SingleObserver<List<String>> observer = TestHelper.mockSingleObserver(); observable.subscribe(observer); verify(observer, times(1)).onSuccess(Arrays.asList("one", null, "three")); verify(observer, Mockito.never()).onError(any(Throwable.class)); }
@Test public void testIsEmptyWithEmpty() { Flowable<Integer> w = Flowable.empty(); Single<Boolean> observable = RxJava3Interop.isEmpty(w); SingleObserver<Boolean> observer = TestHelper.mockSingleObserver(); observable.subscribe(observer); verify(observer, times(1)).onSuccess(true); verify(observer, never()).onSuccess(false); verify(observer, never()).onError(any(Throwable.class)); }
@Test public void testCountZeroItems() { Observable<String> o = Observable.empty(); o.count().subscribe(wo); // we should be called only once verify(wo, times(1)).onSuccess(anyLong()); verify(wo).onSuccess(0L); verify(wo, never()).onError(any(Throwable.class)); }
@Test @Ignore("null values are not allowed") public void testContainsWithNull() { Single<Boolean> o = Observable.just("a", "b", null).contains(null); SingleObserver<Object> observer = TestHelper.mockSingleObserver(); o.subscribe(observer); verify(observer, times(1)).onSuccess(true); verify(observer, never()).onSuccess(false); verify(observer, never()).onError( any(Throwable.class)); }
@Test public void testFirstOrDefault() { Single<Integer> o = Observable.just(1, 2, 3) .first(4); o.subscribe(wo); InOrder inOrder = inOrder(wo); inOrder.verify(wo, times(1)).onSuccess(1); inOrder.verifyNoMoreInteractions(); }
@Test public void testFirstOrDefaultWithOneElement() { Single<Integer> o = Observable.just(1).first(2); o.subscribe(wo); InOrder inOrder = inOrder(wo); inOrder.verify(wo, times(1)).onSuccess(1); inOrder.verifyNoMoreInteractions(); }
@Test public void testFirstOrDefaultWithEmpty() { Single<Integer> o = Observable.<Integer> empty() .first(1); o.subscribe(wo); InOrder inOrder = inOrder(wo); inOrder.verify(wo, times(1)).onSuccess(1); inOrder.verifyNoMoreInteractions(); }
@Test public void testLastOrDefaultWithEmpty() { Single<Integer> o = Observable.<Integer> empty() .last(1); SingleObserver<Integer> observer = TestHelper.mockSingleObserver(); o.subscribe(observer); InOrder inOrder = inOrder(observer); inOrder.verify(observer, times(1)).onSuccess(1); // inOrder.verify(observer, times(1)).onComplete(); inOrder.verifyNoMoreInteractions(); }
@Test public void testSingleOrDefaultWithEmpty() { Single<Integer> o = Observable.<Integer> empty() .single(1); SingleObserver<Integer> observer = TestHelper.mockSingleObserver(); o.subscribe(observer); InOrder inOrder = inOrder(observer); inOrder.verify(observer, times(1)).onSuccess(1); inOrder.verifyNoMoreInteractions(); }
@Test public void testSingleOrDefault() { Single<Integer> observable = single(Flowable.just(1), 2); SingleObserver<Integer> observer = TestHelper.mockSingleObserver(); observable.subscribe(observer); InOrder inOrder = inOrder(observer); inOrder.verify(observer, times(1)).onSuccess(1); inOrder.verifyNoMoreInteractions(); }
@Test public void testSingleOrDefaultWithTooManyElements() { Single<Integer> observable = single(Flowable.just(1, 2), 3); SingleObserver<Integer> observer = TestHelper.mockSingleObserver(); observable.subscribe(observer); InOrder inOrder = inOrder(observer); inOrder.verify(observer, times(1)).onError( isA(IllegalArgumentException.class)); inOrder.verifyNoMoreInteractions(); }
@Test public void testErrorObservable() { TestObserver<String> subscriber = TestObserver.create(); IllegalArgumentException error = new IllegalArgumentException("Error"); Single<String> single = single(Flowable.<String>error(error), ""); single.subscribe(subscriber); subscriber.assertError(error); }
@Test public void testJustTwoEmissionsObservableThrowsError() { TestObserver<String> subscriber = TestObserver.create(); Single<String> single = single(Flowable.just("First", "Second"), ""); single.subscribe(subscriber); subscriber.assertError(IllegalArgumentException.class); }
@Test public void testEmptyObservable() { TestObserver<String> subscriber = TestObserver.create(); Single<String> single = single(Flowable.<String>empty(), ""); single.subscribe(subscriber); subscriber.assertResult(""); }
@Test public void andThenSingleNever() { TestObserver<String> ts = new TestObserver<String>(); Completable.never().andThen(Single.just("foo")).subscribe(ts); ts.assertNoValues(); ts.assertNotTerminated(); }