@Override public MaybeSource<Object> apply(Flowable<Object> f) throws Exception { return f.lastElement(); } });
@Override public Flowable<Object> apply(Flowable<Object> f) throws Exception { return f.lastElement().toFlowable(); } });
@Override public Publisher<Integer> createPublisher(final long elements) { return Flowable.range(1, 10).lastElement().toFlowable() ; }
@Test public void testLastViaFlowable() { Flowable.just(1, 2, 3).lastElement(); }
private void insertAndFind() { // Documents to insert Flowable<JsonObject> documents = Flowable.just( new JsonObject().put("username", "temporalfox").put("firstname", "Julien").put("password", "bilto"), new JsonObject().put("username", "purplefox").put("firstname", "Tim").put("password", "wibble") ); mongo .rxCreateCollection("users") .andThen( // After collection is created we insert each document documents.flatMap(doc -> mongo.rxInsert("users", doc).toFlowable()) ) .doOnNext(id -> { System.out.println("Inserted document " + id); }) .lastElement() .flatMapSingle(id -> { // Everything has been inserted now we can query mongo System.out.println("Insertions done"); return mongo.rxFind("users", new JsonObject()); }) .subscribe(results -> { System.out.println("Results " + results); }, error -> { System.out.println("Err"); error.printStackTrace(); }); } }
@Test public void testLastWithEmpty() { Maybe<Integer> maybe = Flowable.<Integer> empty().lastElement(); MaybeObserver<Integer> observer = TestHelper.mockMaybeObserver(); maybe.subscribe(observer); InOrder inOrder = inOrder(observer); inOrder.verify(observer).onComplete(); inOrder.verify(observer, never()).onError(any(Throwable.class)); inOrder.verifyNoMoreInteractions(); }
@Test public void testLastWithElements() { Maybe<Integer> last = Flowable.just(1, 2, 3).lastElement(); assertEquals(3, last.blockingGet().intValue()); }
@Test public void testLastWithOneElement() { Maybe<Integer> maybe = Flowable.just(1).lastElement(); MaybeObserver<Integer> observer = TestHelper.mockMaybeObserver(); maybe.subscribe(observer); InOrder inOrder = inOrder(observer); inOrder.verify(observer, times(1)).onSuccess(1); // inOrder.verify(observer, times(1)).onComplete(); inOrder.verifyNoMoreInteractions(); }
@Test public void testLast() { Maybe<Integer> maybe = Flowable.just(1, 2, 3).lastElement(); MaybeObserver<Integer> observer = TestHelper.mockMaybeObserver(); maybe.subscribe(observer); InOrder inOrder = inOrder(observer); inOrder.verify(observer, times(1)).onSuccess(3); // inOrder.verify(observer, times(1)).onComplete(); inOrder.verifyNoMoreInteractions(); }
@Test public void testLastMultiSubscribe() { Maybe<Integer> last = Flowable.just(1, 2, 3).lastElement(); assertEquals(3, last.blockingGet().intValue()); assertEquals(3, last.blockingGet().intValue()); }
@Test public void testLastWithPredicateAndEmpty() { Maybe<Integer> maybe = Flowable.just(1) .filter( new Predicate<Integer>() { @Override public boolean test(Integer t1) { return t1 % 2 == 0; } }).lastElement(); MaybeObserver<Integer> observer = TestHelper.mockMaybeObserver(); maybe.subscribe(observer); InOrder inOrder = inOrder(observer); inOrder.verify(observer).onComplete(); inOrder.verify(observer, never()).onError(any(Throwable.class)); inOrder.verifyNoMoreInteractions(); }
@Test public void testLastWithNoElements() { Maybe<?> last = Flowable.empty().lastElement(); assertNull(last.blockingGet()); }
@Test public void testLastWithPredicateAndOneElement() { Maybe<Integer> maybe = Flowable.just(1, 2) .filter( new Predicate<Integer>() { @Override public boolean test(Integer t1) { return t1 % 2 == 0; } }) .lastElement(); MaybeObserver<Integer> observer = TestHelper.mockMaybeObserver(); maybe.subscribe(observer); InOrder inOrder = inOrder(observer); inOrder.verify(observer, times(1)).onSuccess(2); // inOrder.verify(observer, times(1)).onComplete(); inOrder.verifyNoMoreInteractions(); }
@Test public void testLastWithPredicate() { Maybe<Integer> maybe = Flowable.just(1, 2, 3, 4, 5, 6) .filter(new Predicate<Integer>() { @Override public boolean test(Integer t1) { return t1 % 2 == 0; } }) .lastElement(); MaybeObserver<Integer> observer = TestHelper.mockMaybeObserver(); maybe.subscribe(observer); InOrder inOrder = inOrder(observer); inOrder.verify(observer, times(1)).onSuccess(6); // inOrder.verify(observer, times(1)).onComplete(); inOrder.verifyNoMoreInteractions(); }
/** * We expect an ArithmeticException exception here because last() emits a single value * but then we divide by 0. */ @Test(expected = ArithmeticException.class) public void testMapWithErrorInFunc() { Flowable.range(1, 1).lastElement().map(new Function<Integer, Integer>() { @Override public Integer apply(Integer i) { return i / 0; } }).blockingGet(); }
@Test public void error() { Flowable.error(new TestException()) .lastElement() .test() .assertFailure(TestException.class); }
/** * While mapping over range(1,0).last() we expect NoSuchElementException since the sequence is empty. */ @Test public void testErrorPassesThruMap() { assertNull(Flowable.range(1, 0).lastElement().map(new Function<Integer, Integer>() { @Override public Integer apply(Integer i) { return i; } }).blockingGet()); }
@Test public void dispose() { TestHelper.checkDisposed(Flowable.never().lastElement().toFlowable()); TestHelper.checkDisposed(Flowable.never().lastElement()); TestHelper.checkDisposed(Flowable.just(1).lastOrError().toFlowable()); TestHelper.checkDisposed(Flowable.just(1).lastOrError()); TestHelper.checkDisposed(Flowable.just(1).last(2).toFlowable()); TestHelper.checkDisposed(Flowable.just(1).last(2)); }
asyncResult = response.body().lastElement().ignoreElement() .andThen(Single.just(responseConstructor.newInstance(response.request(), responseStatusCode, deserializedHeaders, responseHeaders.toMap(), null))); } else {