@Test public void skipError() { AssertSubscriber<Publisher<Integer>> ts = AssertSubscriber.create(); DirectProcessor<Integer> sp = DirectProcessor.create(); sp.window(2, 3) .subscribe(ts); ts.assertValueCount(0) .assertNotComplete() .assertNoError(); sp.onNext(1); sp.onError(new RuntimeException("forced failure")); ts.assertValueCount(1) .assertNotComplete() .assertError(RuntimeException.class) .assertErrorMessage("forced failure"); toList(ts.values() .get(0)).assertValues(1) .assertNotComplete() .assertError(RuntimeException.class) .assertErrorMessage("forced failure"); }
@Test public void skipInGapError() { AssertSubscriber<Publisher<Integer>> ts = AssertSubscriber.create(); DirectProcessor<Integer> sp = DirectProcessor.create(); sp.window(1, 3) .subscribe(ts); ts.assertValueCount(0) .assertNotComplete() .assertNoError(); sp.onNext(1); sp.onNext(2); sp.onError(new RuntimeException("forced failure")); ts.assertValueCount(1) .assertNotComplete() .assertError(RuntimeException.class) .assertErrorMessage("forced failure"); expect(ts, 0, 1); }
@Test public void exactError() { AssertSubscriber<Publisher<Integer>> ts = AssertSubscriber.create(); DirectProcessor<Integer> sp = DirectProcessor.create(); sp.window(2, 2) .subscribe(ts); ts.assertValueCount(0) .assertNotComplete() .assertNoError(); sp.onNext(1); sp.onError(new RuntimeException("forced failure")); ts.assertValueCount(1) .assertNotComplete() .assertError(RuntimeException.class) .assertErrorMessage("forced failure"); toList(ts.values() .get(0)).assertValues(1) .assertNotComplete() .assertError(RuntimeException.class) .assertErrorMessage("forced failure"); }
@Test public void overlapError() { AssertSubscriber<Publisher<Integer>> ts = AssertSubscriber.create(); DirectProcessor<Integer> sp = DirectProcessor.create(); sp.window(2, 1) .subscribe(ts); ts.assertValueCount(0) .assertNotComplete() .assertNoError(); sp.onNext(1); sp.onError(new RuntimeException("forced failure")); ts.assertValueCount(1) .assertNotComplete() .assertError(RuntimeException.class) .assertErrorMessage("forced failure"); toList(ts.values() .get(0)).assertValues(1) .assertNotComplete() .assertError(RuntimeException.class) .assertErrorMessage("forced failure"); }
@Test public void mainError() { AssertSubscriber<Flux<Integer>> ts = AssertSubscriber.create(); DirectProcessor<Integer> sp1 = DirectProcessor.create(); DirectProcessor<Integer> sp2 = DirectProcessor.create(); sp1.window(sp2) .subscribe(ts); ts.assertValueCount(1); sp1.onNext(1); sp1.onNext(2); sp1.onNext(3); sp2.onNext(1); sp1.onNext(4); sp1.onNext(5); sp1.onError(new RuntimeException("forced failure")); ts.assertValueCount(2); expect(ts, 0, 1, 2, 3); toList(ts.values() .get(1)).assertValues(4, 5) .assertError(RuntimeException.class) .assertErrorMessage("forced failure") .assertNotComplete(); ts.assertError(RuntimeException.class) .assertErrorMessage("forced failure") .assertNotComplete(); Assert.assertFalse("sp1 has subscribers", sp1.hasDownstreams()); Assert.assertFalse("sp2 has subscribers", sp1.hasDownstreams()); }
@Test public void otherError() { AssertSubscriber<Flux<Integer>> ts = AssertSubscriber.create(); DirectProcessor<Integer> sp1 = DirectProcessor.create(); DirectProcessor<Integer> sp2 = DirectProcessor.create(); sp1.window(sp2) .subscribe(ts); ts.assertValueCount(1); sp1.onNext(1); sp1.onNext(2); sp1.onNext(3); sp2.onNext(1); sp1.onNext(4); sp1.onNext(5); sp2.onError(new RuntimeException("forced failure")); ts.assertValueCount(2); expect(ts, 0, 1, 2, 3); toList(ts.values() .get(1)).assertValues(4, 5) .assertError(RuntimeException.class) .assertErrorMessage("forced failure") .assertNotComplete(); ts.assertError(RuntimeException.class) .assertErrorMessage("forced failure") .assertNotComplete(); Assert.assertFalse("sp1 has subscribers", sp1.hasDownstreams()); Assert.assertFalse("sp2 has subscribers", sp1.hasDownstreams()); }
@Test public void normalOtherCompletes() { AssertSubscriber<Flux<Integer>> ts = AssertSubscriber.create(); DirectProcessor<Integer> sp1 = DirectProcessor.create(); DirectProcessor<Integer> sp2 = DirectProcessor.create(); sp1.window(sp2) .subscribe(ts); ts.assertValueCount(1); sp1.onNext(1); sp1.onNext(2); sp1.onNext(3); sp2.onNext(1); sp1.onNext(4); sp1.onNext(5); sp2.onComplete(); ts.assertValueCount(2); expect(ts, 0, 1, 2, 3); expect(ts, 1, 4, 5); ts.assertNoError() .assertComplete(); Assert.assertFalse("sp1 has subscribers", sp1.hasDownstreams()); Assert.assertFalse("sp2 has subscribers", sp1.hasDownstreams()); }
@Test public void normal() { AssertSubscriber<Flux<Integer>> ts = AssertSubscriber.create(); DirectProcessor<Integer> sp1 = DirectProcessor.create(); DirectProcessor<Integer> sp2 = DirectProcessor.create(); sp1.window(sp2) .subscribe(ts); ts.assertValueCount(1); sp1.onNext(1); sp1.onNext(2); sp1.onNext(3); sp2.onNext(1); sp1.onNext(4); sp1.onNext(5); sp1.onComplete(); ts.assertValueCount(2); expect(ts, 0, 1, 2, 3); expect(ts, 1, 4, 5); ts.assertNoError() .assertComplete(); Assert.assertFalse("sp1 has subscribers", sp1.hasDownstreams()); Assert.assertFalse("sp2 has subscribers", sp1.hasDownstreams()); }