@Test public void testFlatMapTransformsOnCompletedFuncThrows() { Observable<Integer> onNext = Observable.fromIterable(Arrays.asList(1, 2, 3)); Observable<Integer> onComplete = Observable.fromIterable(Arrays.asList(4)); Observable<Integer> onError = Observable.fromIterable(Arrays.asList(5)); Observable<Integer> source = Observable.fromIterable(Arrays.<Integer> asList()); Observer<Object> o = TestHelper.mockObserver(); source.flatMap(just(onNext), just(onError), funcThrow0(onComplete)).subscribe(o); verify(o).onError(any(TestException.class)); verify(o, never()).onNext(any()); verify(o, never()).onComplete(); }
@Test public void testFlatMapTransformsOnNextFuncThrows() { Observable<Integer> onComplete = Observable.fromIterable(Arrays.asList(4)); Observable<Integer> onError = Observable.fromIterable(Arrays.asList(5)); Observable<Integer> source = Observable.fromIterable(Arrays.asList(10, 20, 30)); Observer<Object> o = TestHelper.mockObserver(); source.flatMap(funcThrow(1, onError), just(onError), just0(onComplete)).subscribe(o); verify(o).onError(any(TestException.class)); verify(o, never()).onNext(any()); verify(o, never()).onComplete(); }
@Test(expected = NullPointerException.class) public void fromIterableIteratorNull() { Observable.fromIterable(new Iterable<Object>() { @Override public Iterator<Object> iterator() { return null; } }).blockingLast(); }
@Test public void testObservableFromIterable() { Observable<String> o = Observable.fromIterable(Arrays.<String> asList("one", "two", "three")); Observer<String> observer = TestHelper.mockObserver(); o.subscribe(observer); verify(observer, times(1)).onNext("one"); verify(observer, times(1)).onNext("two"); verify(observer, times(1)).onNext("three"); verify(observer, Mockito.never()).onError(any(Throwable.class)); verify(observer, times(1)).onComplete(); }
@Test public void testSkipLast1() { Observable<String> o = Observable.fromIterable(Arrays.asList("one", "two", "three")).skipLast(2); Observer<String> observer = TestHelper.mockObserver(); InOrder inOrder = inOrder(observer); o.subscribe(observer); inOrder.verify(observer, never()).onNext("two"); inOrder.verify(observer, never()).onNext("three"); verify(observer, times(1)).onNext("one"); verify(observer, never()).onError(any(Throwable.class)); verify(observer, times(1)).onComplete(); }
@Test public void testSkipLast2() { Observable<String> o = Observable.fromIterable(Arrays.asList("one", "two")).skipLast(2); Observer<String> observer = TestHelper.mockObserver(); o.subscribe(observer); verify(observer, never()).onNext(any(String.class)); verify(observer, never()).onError(any(Throwable.class)); verify(observer, times(1)).onComplete(); }
@Test public void testFlatMapTransformsMergeException() { Observable<Integer> onNext = Observable.error(new TestException()); Observable<Integer> onComplete = Observable.fromIterable(Arrays.asList(4)); Observable<Integer> onError = Observable.fromIterable(Arrays.asList(5)); Observable<Integer> source = Observable.fromIterable(Arrays.asList(10, 20, 30)); Observer<Object> o = TestHelper.mockObserver(); source.flatMap(just(onNext), just(onError), funcThrow0(onComplete)).subscribe(o); verify(o).onError(any(TestException.class)); verify(o, never()).onNext(any()); verify(o, never()).onComplete(); }
@Test public void testListViaObservableObservable() { Observable<String> w = Observable.fromIterable(Arrays.asList("one", "two", "three")); Observable<List<String>> observable = w.toList().toObservable(); Observer<List<String>> observer = TestHelper.mockObserver(); observable.subscribe(observer); verify(observer, times(1)).onNext(Arrays.asList("one", "two", "three")); verify(observer, Mockito.never()).onError(any(Throwable.class)); verify(observer, times(1)).onComplete(); }
@Test @Ignore("Null values not allowed") public void testSkipLastWithNull() { Observable<String> o = Observable.fromIterable(Arrays.asList("one", null, "two")).skipLast(1); Observer<String> observer = TestHelper.mockObserver(); o.subscribe(observer); verify(observer, times(1)).onNext("one"); verify(observer, times(1)).onNext(null); verify(observer, never()).onNext("two"); verify(observer, never()).onError(any(Throwable.class)); verify(observer, times(1)).onComplete(); }
@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 testWrappingMock() { Observable<Integer> oi = Observable.fromIterable(Arrays.asList(1, 2)); Observer<Integer> mockObserver = TestHelper.mockObserver(); oi.subscribe(new TestObserver<Integer>(mockObserver)); InOrder inOrder = inOrder(mockObserver); inOrder.verify(mockObserver, times(1)).onNext(1); inOrder.verify(mockObserver, times(1)).onNext(2); inOrder.verify(mockObserver, times(1)).onComplete(); inOrder.verifyNoMoreInteractions(); }
@Test public void testWrappingMockWhenUnsubscribeInvolved() { Observable<Integer> oi = Observable.fromIterable(Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9)).take(2); Observer<Integer> mockObserver = TestHelper.mockObserver(); oi.subscribe(new TestObserver<Integer>(mockObserver)); InOrder inOrder = inOrder(mockObserver); inOrder.verify(mockObserver, times(1)).onNext(1); inOrder.verify(mockObserver, times(1)).onNext(2); inOrder.verify(mockObserver, times(1)).onComplete(); inOrder.verifyNoMoreInteractions(); }
@Test public void fromIterable() { ArrayList<String> items = new ArrayList<String>(); items.add("one"); items.add("two"); items.add("three"); assertEquals((Long)3L, Observable.fromIterable(items).count().blockingGet()); assertEquals("two", Observable.fromIterable(items).skip(1).take(1).blockingSingle()); assertEquals("three", Observable.fromIterable(items).takeLast(1).blockingSingle()); }
@Test public void iteratorThrows() { Observable.fromIterable(new CrashingIterable(1, 100, 100)) .test() .assertFailureAndMessage(TestException.class, "iterator()"); }
@Test public void hasNext2Throws() { Observable.fromIterable(new CrashingIterable(100, 2, 100)) .test() .assertFailureAndMessage(TestException.class, "hasNext()", 0); }
@Test public void testSubscribeMultipleTimes() { Observable<Integer> o = Observable.fromIterable(Arrays.asList(1, 2, 3)); for (int i = 0; i < 10; i++) { TestObserver<Integer> ts = new TestObserver<Integer>(); o.subscribe(ts); ts.assertValues(1, 2, 3); ts.assertNoErrors(); ts.assertComplete(); } }
@Test public void testAssert() { Observable<Integer> oi = Observable.fromIterable(Arrays.asList(1, 2)); TestObserver<Integer> o = new TestObserver<Integer>(); oi.subscribe(o); o.assertValues(1, 2); o.assertValueCount(2); o.assertTerminated(); }
@Test public void assertNeverAtNotMatchingValue() { Observable<Integer> oi = Observable.fromIterable(Arrays.asList(1, 2)); TestObserver<Integer> o = new TestObserver<Integer>(); oi.subscribe(o); o.assertNever(3); o.assertValueCount(2); o.assertTerminated(); }
@Test public void assertNeverAtMatchingValue() { Observable<Integer> oi = Observable.fromIterable(Arrays.asList(1, 2)); TestObserver<Integer> o = new TestObserver<Integer>(); oi.subscribe(o); o.assertValues(1, 2); thrown.expect(AssertionError.class); o.assertNever(2); o.assertValueCount(2); o.assertTerminated(); }
@Test public void syncIterableHidden() { Observable.fromIterable(Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)) .hide() .to(ObserverFusion.<Integer>test(QueueDisposable.ANY, false)) .assertOf(ObserverFusion.<Integer>assertNotFuseable()) .assertOf(ObserverFusion.<Integer>assertFusionMode(QueueDisposable.NONE)) .assertValues(1, 2, 3, 4, 5, 6, 7, 8, 9, 10) .assertNoErrors() .assertComplete(); } }