@Test public void whenMultipleSymmetric() { Observable<Integer> source1 = Observable.just(1, 2, 3); Observable<Integer> source2 = Observable.just(4, 5, 6); Observable<Integer> m = JoinObservable.when(JoinObservable.from(source1).and(source2).then(add)).toObservable(); m.subscribe(observer); verify(observer, never()).onError(any(Throwable.class)); verify(observer, times(1)).onNext(1 + 4); verify(observer, times(1)).onNext(2 + 5); verify(observer, times(1)).onNext(3 + 6); verify(observer, times(1)).onComplete(); }
@Test public void whenMultipleAsymSymmetric() { Observable<Integer> source1 = Observable.just(1, 2, 3); Observable<Integer> source2 = Observable.just(4, 5); Observable<Integer> m = JoinObservable.when(JoinObservable.from(source1).and(source2).then(add)).toObservable(); m.subscribe(observer); verify(observer, never()).onError(any(Throwable.class)); verify(observer, times(1)).onNext(1 + 4); verify(observer, times(1)).onNext(2 + 5); verify(observer, times(1)).onComplete(); }
@Test public void whenEmptyEmpty() { Observable<Integer> source1 = Observable.empty(); Observable<Integer> source2 = Observable.empty(); Observable<Integer> m = JoinObservable.when(JoinObservable.from(source1).and(source2).then(add)).toObservable(); m.subscribe(observer); verify(observer, never()).onError(any(Throwable.class)); verify(observer, never()).onNext(any(Integer.class)); verify(observer, times(1)).onComplete(); }
@Test public void whenNeverNever() { Observable<Integer> source1 = Observable.never(); Observable<Integer> source2 = Observable.never(); Observable<Integer> m = JoinObservable.when(JoinObservable.from(source1).and(source2).then(add)).toObservable(); m.subscribe(observer); verify(observer, never()).onError(any(Throwable.class)); verify(observer, never()).onNext(any(Integer.class)); verify(observer, never()).onComplete(); }
@Test public void whenThrowNonEmpty() { Observable<Integer> source1 = Observable.empty(); Observable<Integer> source2 = Observable.error(new TestException("Forced failure")); Observable<Integer> m = JoinObservable.when(JoinObservable.from(source1).and(source2).then(add)).toObservable(); m.subscribe(observer); verify(observer, times(1)).onError(any(Throwable.class)); verify(observer, never()).onNext(any(Integer.class)); verify(observer, never()).onComplete(); }
@Test(expected = NullPointerException.class) public void then2ArgumentNull() { JoinObservable.from(some).and(some).then(null); }
@Test public void then2Throws() { verifyError(JoinObservable.when(JoinObservable.from(some).and(some).then(throwFunc))); }
@Test public void and2() { verifyAnd(JoinObservable.when(JoinObservable.from(some).and(some).then(add)), 2); }
@Test public void and2Error1() { verifyError(JoinObservable.when(JoinObservable.from(error).and(some).then(add))); }
@Test public void and2Error2() { verifyError(JoinObservable.when(JoinObservable.from(some).and(error).then(add))); }