@Override public ObservableSource<Object> apply(Observable<Object> o) throws Exception { return o.filter(Functions.alwaysTrue()); } });
@Test public void testFirstOrElseWithPredicateOfNoneMatchingThePredicate() { Observable<String> src = Observable.just("a", "b", "c"); src.filter(IS_D).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 testFirstOrElseWithPredicateOfSome() { Observable<String> src = Observable.just("a", "b", "c", "d", "e", "f"); src.filter(IS_D).first("default").subscribe(wo); verify(wo, times(1)).onSuccess(anyString()); verify(wo, times(1)).onSuccess("d"); verify(wo, never()).onError(any(Throwable.class)); }
@Test public void testTakeFirstWithPredicateOfNoneMatchingThePredicate() { Observable<Integer> o = Observable.just(1, 3, 5, 7, 9, 7, 5, 3, 1); o.filter(IS_EVEN).take(1).subscribe(w); verify(w, never()).onNext(anyInt()); verify(w, times(1)).onComplete(); verify(w, never()).onError(any(Throwable.class)); }
@Test public void testFirstOrElseWithPredicateOfSomeObservable() { Observable<String> src = Observable.just("a", "b", "c", "d", "e", "f"); src.filter(IS_D).first("default").toObservable().subscribe(w); verify(w, times(1)).onNext(anyString()); verify(w, times(1)).onNext("d"); verify(w, never()).onError(any(Throwable.class)); verify(w, times(1)).onComplete(); }
@Test public void testFirstOrElseWithPredicateOfNoneMatchingThePredicateObservable() { Observable<String> src = Observable.just("a", "b", "c"); src.filter(IS_D).first("default").toObservable().subscribe(w); verify(w, times(1)).onNext(anyString()); verify(w, times(1)).onNext("default"); verify(w, never()).onError(any(Throwable.class)); verify(w, times(1)).onComplete(); }
@Test public void testFirstWithPredicateOfNoneMatchingThePredicate() { Observable<Integer> o = Observable.just(1, 3, 5, 7, 9, 7, 5, 3, 1); o.filter(IS_EVEN).firstElement().subscribe(wm); verify(wm, never()).onSuccess(anyInt()); verify(wm).onComplete(); verify(wm, never()).onError(any(Throwable.class)); }
@Override public Observable<Object> apply(Observable<Object> f) throws Exception { return f.doFinally(ObservableDoFinallyTest.this).filter(Functions.alwaysTrue()); } });
@Test public void justConditional() { Observable.just(1) .doAfterNext(afterNext) .filter(Functions.alwaysTrue()) .subscribeWith(to) .assertResult(1); assertEquals(Arrays.asList(1, -1), values); }
@Test public void normalJustConditional() { Observable.just(1) .doFinally(this) .filter(Functions.alwaysTrue()) .test() .assertResult(1); assertEquals(1, calls); }
@Test public void asyncFusedRejectedConditional() { TestObserver<Integer> to0 = ObserverFusion.newTest(QueueFuseable.ASYNC); Observable.range(1, 5) .doAfterNext(afterNext) .filter(Functions.alwaysTrue()) .subscribe(to0); ObserverFusion.assertFusion(to0, QueueFuseable.NONE) .assertResult(1, 2, 3, 4, 5); assertEquals(Arrays.asList(-1, -2, -3, -4, -5), values); }
@Test public void syncFusedConditional() { TestObserver<Integer> to0 = ObserverFusion.newTest(QueueFuseable.SYNC); Observable.range(1, 5) .doAfterNext(afterNext) .filter(Functions.alwaysTrue()) .subscribe(to0); ObserverFusion.assertFusion(to0, QueueFuseable.SYNC) .assertResult(1, 2, 3, 4, 5); assertEquals(Arrays.asList(-1, -2, -3, -4, -5), values); }
@Test public void rangeConditional() { Observable.range(1, 5) .doAfterNext(afterNext) .filter(Functions.alwaysTrue()) .subscribeWith(to) .assertResult(1, 2, 3, 4, 5); assertEquals(Arrays.asList(1, -1, 2, -2, 3, -3, 4, -4, 5, -5), values); }
@Test public void emptyConditional() { Observable.<Integer>empty() .doAfterNext(afterNext) .filter(Functions.alwaysTrue()) .subscribeWith(to) .assertResult(); assertTrue(values.isEmpty()); }
@Test public void syncFusedBoundaryConditional() { TestObserver<Integer> to = ObserverFusion.newTest(QueueFuseable.SYNC | QueueFuseable.BOUNDARY); Observable.range(1, 5) .doFinally(this) .filter(Functions.alwaysTrue()) .subscribe(to); ObserverFusion.assertFusion(to, QueueFuseable.NONE) .assertResult(1, 2, 3, 4, 5); assertEquals(1, calls); }
@Test public void syncFusedConditional() { TestObserver<Integer> to = ObserverFusion.newTest(QueueFuseable.SYNC); Observable.range(1, 5) .doFinally(this) .filter(Functions.alwaysTrue()) .subscribe(to); ObserverFusion.assertFusion(to, QueueFuseable.SYNC) .assertResult(1, 2, 3, 4, 5); assertEquals(1, calls); }
@Test public void errorConditional() { Observable.<Integer>error(new TestException()) .doAfterNext(afterNext) .filter(Functions.alwaysTrue()) .subscribeWith(to) .assertFailure(TestException.class); assertTrue(values.isEmpty()); }
@Test public void normalEmptyConditional() { Observable.empty() .doFinally(this) .filter(Functions.alwaysTrue()) .test() .assertResult(); assertEquals(1, calls); }
@Test public void normalTakeConditional() { Observable.range(1, 10) .doFinally(this) .filter(Functions.alwaysTrue()) .take(5) .test() .assertResult(1, 2, 3, 4, 5); assertEquals(1, calls); }
@Test public void normalErrorConditional() { Observable.error(new TestException()) .doFinally(this) .filter(Functions.alwaysTrue()) .test() .assertFailure(TestException.class); assertEquals(1, calls); }