@Test public void normal() { AssertSubscriber<Integer> ts = AssertSubscriber.create(); Flux.range(1, 10).filter(v -> v % 2 == 0).subscribe(ts); ts.assertValues(2, 4, 6, 8, 10).assertComplete().assertNoError(); }
@Test public void supplierReturnsNull() { AssertSubscriber<Integer> ts = AssertSubscriber.create(); Flux.range(1, 10).<Integer>reduceWith(() -> null, (a, b) -> b).subscribe(ts); ts.assertNoValues().assertNotComplete().assertError(NullPointerException.class); }
@Test public void normal() { AssertSubscriber<Integer> ts = AssertSubscriber.create(); Flux.range(1, 10).reduceWith(() -> 0, (a, b) -> b).subscribe(ts); ts.assertValues(10).assertComplete().assertNoError(); }
@Test public void syncFusion() { AssertSubscriber<Object> ts = AssertSubscriber.create(); Flux.range(1, 10).filter(v -> (v & 1) == 0).subscribe(ts); ts.assertValues(2, 4, 6, 8, 10).assertNoError().assertComplete(); }
@Test public void normalBackpressuredArray() { AssertSubscriber<Integer> ts = AssertSubscriber.create(2); Flux.just(1, 2, 3, 4, 5, 6, 7, 8, 9, 10).filter(v -> v % 2 == 0).subscribe(ts); ts.assertValues(2, 4).assertNotComplete().assertNoError(); ts.request(10); ts.assertValues(2, 4, 6, 8, 10).assertComplete().assertNoError(); }
@Test public void predicateThrows() { AssertSubscriber<Integer> ts = AssertSubscriber.create(2); Flux.range(1, 10) .filter( v -> { throw new RuntimeException("forced failure"); }) .subscribe(ts); ts.assertNoValues() .assertNotComplete() .assertError(RuntimeException.class) .assertErrorMessage("forced failure"); }
@Test public void accumulatorThrows() { AssertSubscriber<Integer> ts = AssertSubscriber.create(); Flux.range(1, 10) .reduceWith( () -> 0, (a, b) -> { throw new RuntimeException("forced failure"); }) .subscribe(ts); ts.assertNoValues() .assertNotComplete() .assertError(RuntimeException.class) .assertErrorWith(e -> Assert.assertTrue(e.getMessage().contains("forced failure"))); }
@Test public void asyncFusionBackpressured2() { AssertSubscriber<Object> ts = AssertSubscriber.create(1); UnicastProcessor<Integer> up = UnicastProcessor.create(new ConcurrentLinkedQueue<>()); Flux.just(1).hide().flatMap(w -> up.filter(v -> (v & 1) == 0), false, 1, 1).subscribe(ts); up.onNext(1); up.onNext(2); ts.assertValues(2).assertNoError().assertNotComplete(); up.onComplete(); ts.assertValues(2).assertNoError().assertComplete(); }
@Test(expected = NullPointerException.class) public void predicateNull() { Flux.never().filter(null); }