@Test(expected = NullPointerException.class) public void bufferOpenCloseOpenNull() { just1.buffer(null, new Function<Object, Observable<Integer>>() { @Override public Observable<Integer> apply(Object o) { return just1; } }); }
@Test(expected = NullPointerException.class) public void bufferBoundarySupplier2SupplierNull() { just1.buffer(new Callable<Observable<Integer>>() { @Override public Observable<Integer> call() { return just1; } }, null); }
@Test(expected = NullPointerException.class) public void bufferSupplierNull() { just1.buffer(1, 1, (Callable<List<Integer>>)null); }
@Test(expected = NullPointerException.class) public void bufferBoundaryNull() { just1.buffer((Observable<Object>)null); }
@Test(expected = NullPointerException.class) public void bufferBoundarySupplierReturnsNull() { just1.buffer(just1, new Callable<Collection<Integer>>() { @Override public Collection<Integer> call() { return null; } }).blockingSubscribe(); }
@Test(expected = NullPointerException.class) public void bufferBoundarySupplier2ReturnsNull() { just1.buffer(new Callable<Observable<Object>>() { @Override public Observable<Object> call() { return null; } }).blockingSubscribe(); }
@Override public Observable<Movie> apply(Observable<List<Movie>> movieList) { return movieList .startWith(new ArrayList<Movie>()) .buffer(2, 1) .skip(1) .flatMap(calculateDelta); } };
@Test public void testComplete() { Observable<String> source = Observable.empty(); Observable<List<String>> buffered = source.buffer(3, 3); buffered.subscribe(observer); Mockito.verify(observer, Mockito.never()).onNext(Mockito.<String>anyList()); Mockito.verify(observer, Mockito.never()).onError(Mockito.any(Throwable.class)); Mockito.verify(observer, Mockito.times(1)).onComplete(); }
@Test public void testSkipAndCountGaplessBuffers() { Observable<String> source = Observable.just("one", "two", "three", "four", "five"); Observable<List<String>> buffered = source.buffer(3, 3); buffered.subscribe(observer); InOrder inOrder = Mockito.inOrder(observer); inOrder.verify(observer, Mockito.times(1)).onNext(list("one", "two", "three")); inOrder.verify(observer, Mockito.times(1)).onNext(list("four", "five")); inOrder.verify(observer, Mockito.never()).onNext(Mockito.<String>anyList()); inOrder.verify(observer, Mockito.never()).onError(Mockito.any(Throwable.class)); inOrder.verify(observer, Mockito.times(1)).onComplete(); }
@Test public void testSkipAndCountBuffersWithGaps() { Observable<String> source = Observable.just("one", "two", "three", "four", "five"); Observable<List<String>> buffered = source.buffer(2, 3); buffered.subscribe(observer); InOrder inOrder = Mockito.inOrder(observer); inOrder.verify(observer, Mockito.times(1)).onNext(list("one", "two")); inOrder.verify(observer, Mockito.times(1)).onNext(list("four", "five")); inOrder.verify(observer, Mockito.never()).onNext(Mockito.<String>anyList()); inOrder.verify(observer, Mockito.never()).onError(Mockito.any(Throwable.class)); inOrder.verify(observer, Mockito.times(1)).onComplete(); }
@Test(timeout = 2000) public void bufferWithTimeTake1() { Observable<Long> source = Observable.interval(40, 40, TimeUnit.MILLISECONDS, scheduler); Observable<List<Long>> result = source.buffer(100, TimeUnit.MILLISECONDS, scheduler).take(1); Observer<Object> o = TestHelper.mockObserver(); result.subscribe(o); scheduler.advanceTimeBy(5, TimeUnit.SECONDS); verify(o).onNext(Arrays.asList(0L, 1L)); verify(o).onComplete(); verify(o, never()).onError(any(Throwable.class)); } @Test(timeout = 2000)
@SuppressWarnings("unchecked") @Test public void bufferTimedOverlapEmpty() { Observable.empty() .buffer(2, 1, TimeUnit.DAYS) .test() .assertResult(Collections.emptyList()); }
@Test public void testLongTimeAction() throws InterruptedException { final CountDownLatch latch = new CountDownLatch(1); LongTimeAction action = new LongTimeAction(latch); Observable.just(1).buffer(10, TimeUnit.MILLISECONDS, 10) .subscribe(action); latch.await(); assertFalse(action.fail); }
@SuppressWarnings("unchecked") @Test public void bufferTimedExactEmpty() { Observable.empty() .buffer(1, TimeUnit.DAYS) .test() .assertResult(Collections.emptyList()); }
@SuppressWarnings("unchecked") @Test public void bufferBoundaryHint() { Observable.range(1, 5).buffer(Observable.timer(1, TimeUnit.MINUTES), 2) .test() .assertResult(Arrays.asList(1, 2, 3, 4, 5)); }
@SuppressWarnings("unchecked") @Test public void bufferTimedExactError() { Observable.error(new TestException()) .buffer(1, TimeUnit.DAYS) .test() .assertFailure(TestException.class); }
@SuppressWarnings("unchecked") @Test public void bufferTimedOverlapError() { Observable.error(new TestException()) .buffer(2, 1, TimeUnit.DAYS) .test() .assertFailure(TestException.class); }
@Test @SuppressWarnings("unchecked") public void supplierThrows2() { Observable.just(1) .buffer(1, TimeUnit.SECONDS, Schedulers.single(), 10, new Callable<Collection<Integer>>() { @Override public Collection<Integer> call() throws Exception { throw new TestException(); } }, false) .test() .assertFailure(TestException.class); }
@SuppressWarnings("unchecked") @Test public void bufferTimedSkipError() { Observable.error(new TestException()) .buffer(1, 2, TimeUnit.DAYS) .test() .assertFailure(TestException.class); }
@Test @SuppressWarnings("unchecked") public void boundaryBufferSupplierThrows() { Observable.never() .buffer(Functions.justCallable(Observable.never()), new Callable<Collection<Object>>() { @Override public Collection<Object> call() throws Exception { throw new TestException(); } }) .test() .assertFailure(TestException.class); }