/** * This won't compile if super/extends isn't done correctly on generics. */ @Test public void testCovarianceOfMerge() { Observable<HorrorMovie> horrors = Observable.just(new HorrorMovie()); Observable<Observable<HorrorMovie>> metaHorrors = Observable.just(horrors); Observable.<Media> merge(metaHorrors); }
@Override public Integer apply(Integer v) throws Exception { Observable.just(1).delay(10, TimeUnit.SECONDS).blockingLatest().iterator().hasNext(); return v; } })
@Override public Observable<HorrorMovie> apply(Observable<Movie> t) { return Observable.just(new HorrorMovie()).map(new Function<HorrorMovie, HorrorMovie>() { @Override public HorrorMovie apply(HorrorMovie v) { return v; } }); } }
@Override public Integer apply(Integer v) throws Exception { Observable.just(1).delay(10, TimeUnit.SECONDS).blockingFirst(); return v; } })
@Test public void testTakeFirstWithPredicateOfSome() { Observable<Integer> o = Observable.just(1, 3, 5, 4, 6, 3); o.filter(IS_EVEN).take(1).subscribe(w); verify(w, times(1)).onNext(anyInt()); verify(w).onNext(4); verify(w, times(1)).onComplete(); verify(w, never()).onError(any(Throwable.class)); }
@Test public void testContainsWithInexistence() { Single<Boolean> o = Observable.just("a", "b").contains("c"); // FIXME null values are not allowed, removed SingleObserver<Object> observer = TestHelper.mockSingleObserver(); o.subscribe(observer); verify(observer, times(1)).onSuccess(false); verify(observer, never()).onSuccess(true); verify(observer, never()).onError( any(Throwable.class)); }
@Test public void testIsEmptyWithOneItem() { Observable<Integer> w = Observable.just(1); Single<Boolean> observable = w.isEmpty(); SingleObserver<Boolean> observer = TestHelper.mockSingleObserver(); observable.subscribe(observer); verify(observer, never()).onSuccess(true); verify(observer, times(1)).onSuccess(false); verify(observer, never()).onError(any(Throwable.class)); }
@Test public void testIgnoreElements() { Completable o = Observable.just(1, 2, 3).ignoreElements(); CompletableObserver observer = TestHelper.mockCompletableObserver(); o.subscribe(observer); verify(observer, never()).onError(any(Throwable.class)); verify(observer, times(1)).onComplete(); }
@Test public void testCountAFewItems() { Observable<String> o = Observable.just("a", "b", "c", "d"); o.count().subscribe(wo); // we should be called only once verify(wo, times(1)).onSuccess(anyLong()); verify(wo).onSuccess(4L); verify(wo, never()).onError(any(Throwable.class)); }
@Test public void testMergeCovariance() { Observable<Media> o1 = Observable.<Media> just(new HorrorMovie(), new Movie()); Observable<Media> o2 = Observable.just(new Media(), new HorrorMovie()); Observable<Observable<Media>> os = Observable.just(o1, o2); List<Media> values = Observable.merge(os).toList().blockingGet(); assertEquals(4, values.size()); }
@Test public void manySources() { Observable<?>[] a = new Observable[32]; Arrays.fill(a, Observable.never()); a[31] = Observable.just(1); Observable.amb(Arrays.asList(a)) .test() .assertResult(1); }
@Test public void testMergeCovariance2() { Observable<Media> o1 = Observable.just(new HorrorMovie(), new Movie(), new Media()); Observable<Media> o2 = Observable.just(new Media(), new HorrorMovie()); Observable<Observable<Media>> os = Observable.just(o1, o2); List<Media> values = Observable.merge(os).toList().blockingGet(); assertEquals(5, values.size()); }
@Test(expected = NullPointerException.class) public void reduceFunctionReturnsNull() { Observable.just(1, 1).reduce(new BiFunction<Integer, Integer, Integer>() { @Override public Integer apply(Integer a, Integer b) { return null; } }).blockingGet(); }
@SuppressWarnings("unchecked") @Test public void ambIterableOrder() { Observable<Integer> error = Observable.error(new RuntimeException()); Observable.amb(Arrays.asList(Observable.just(1), error)).test().assertValue(1).assertComplete(); }
@Test public void reduceInts() { Observable<Integer> o = Observable.just(1, 2, 3); int value = o.reduce(new BiFunction<Integer, Integer, Integer>() { @Override public Integer apply(Integer t1, Integer t2) { return t1 + t2; } }).blockingGet(); assertEquals(6, value); }
@SuppressWarnings("unchecked") @Test public void ambArrayOrder() { Observable<Integer> error = Observable.error(new RuntimeException()); Observable.ambArray(Observable.just(1), error).test().assertValue(1).assertComplete(); } }
@Test public void testComposeWithDeltaLogic() { List<Movie> list1 = Arrays.asList(new Movie(), new HorrorMovie(), new ActionMovie()); List<Movie> list2 = Arrays.asList(new ActionMovie(), new Movie(), new HorrorMovie(), new ActionMovie()); Observable<List<Movie>> movies = Observable.just(list1, list2); movies.compose(deltaTransformer); }
@Test public void reduceIntsObservable() { Observable<Integer> o = Observable.just(1, 2, 3); int value = o.reduce(new BiFunction<Integer, Integer, Integer>() { @Override public Integer apply(Integer t1, Integer t2) { return t1 + t2; } }).toObservable().blockingSingle(); assertEquals(6, value); }
@Test public void andThenNever() { TestObserver<String> ts = new TestObserver<String>(); Completable.never().andThen(Observable.just("foo")).subscribe(ts); ts.assertNoValues(); ts.assertNotTerminated(); }