@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 normalBackpressured() { AssertSubscriber<Integer> ts = AssertSubscriber.create(0); Flux.range(1, 10).reduceWith(() -> 0, (a, b) -> b).subscribe(ts); ts.assertNoValues().assertNoError().assertNotComplete(); ts.request(2); ts.assertValues(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"))); }