@Test(expected = NullPointerException.class) public void generateStateFunctionInitialStateNull() { Flowable.generate(null, new BiFunction<Object, Emitter<Object>, Object>() { @Override public Object apply(Object s, Emitter<Object> o) { o.onNext(1); return s; } }); }
@Test(expected = NullPointerException.class) public void generateStateConsumerNull() { Flowable.generate(new Callable<Integer>() { @Override public Integer call() { return 1; } }, (BiConsumer<Integer, Emitter<Object>>)null); }
@Test(expected = NullPointerException.class) public void generateStateConsumerInitialStateNull() { BiConsumer<Integer, Emitter<Integer>> generator = new BiConsumer<Integer, Emitter<Integer>>() { @Override public void accept(Integer s, Emitter<Integer> o) { o.onNext(1); } }; Flowable.generate(null, generator); }
@Test(expected = NullPointerException.class) public void generateConsumerNull() { Flowable.generate(null); }
@Test(expected = NullPointerException.class) public void generateFunctionDisposeNull() { Flowable.generate(new Callable<Object>() { @Override public Object call() { return 1; } }, new BiFunction<Object, Emitter<Object>, Object>() { @Override public Object apply(Object s, Emitter<Object> o) { o.onNext(1); return s; } }, null); }
@Test(expected = NullPointerException.class) public void generateConsumerDisposeNull() { BiConsumer<Integer, Emitter<Integer>> generator = new BiConsumer<Integer, Emitter<Integer>>() { @Override public void accept(Integer s, Emitter<Integer> o) { o.onNext(1); } }; Flowable.generate(new Callable<Integer>() { @Override public Integer call() { return 1; } }, generator, null); }
@Test(expected = NullPointerException.class) public void generateConsumerEmitsNull() { Flowable.generate(new Consumer<Emitter<Object>>() { @Override public void accept(Emitter<Object> s) { s.onNext(null); } }).blockingLast(); }
@Test public void generateFunctionStateNullAllowed() { Flowable.generate(new Callable<Object>() { @Override public Object call() { return null; } }, new BiFunction<Object, Emitter<Object>, Object>() { @Override public Object apply(Object s, Emitter<Object> o) { o.onComplete(); return s; } }).blockingSubscribe(); }
@Test public void generateConsumerStateNullAllowed() { BiConsumer<Integer, Emitter<Integer>> generator = new BiConsumer<Integer, Emitter<Integer>>() { @Override public void accept(Integer s, Emitter<Integer> o) { o.onComplete(); } }; Flowable.generate(new Callable<Integer>() { @Override public Integer call() { return null; } }, generator).blockingSubscribe(); }
@Override public Publisher<Long> createPublisher(final long elements) { return Flowable.generate(Functions.justCallable(0L), new BiFunction<Long, Emitter<Long>, Long>() { @Override public Long apply(Long s, Emitter<Long> e) throws Exception { e.onNext(s); if (++s == elements) { e.onComplete(); } return s; } }, Functions.<Long>emptyConsumer()) ; } }
@Test public void multipleOnNext() { Flowable.generate(new Consumer<Emitter<Object>>() { @Override public void accept(Emitter<Object> e) throws Exception { e.onNext(1); e.onNext(2); } }) .test(1) .assertFailure(IllegalStateException.class, 1); }
@Test public void badRequest() { TestHelper.assertBadRequestReported(Flowable.generate(new Callable<Object>() { @Override public Object call() throws Exception { return 1; } }, new BiConsumer<Object, Emitter<Object>>() { @Override public void accept(Object s, Emitter<Object> e) throws Exception { e.onComplete(); } }, Functions.emptyConsumer())); }
@Test public void multipleOnComplete() { Flowable.generate(new Consumer<Emitter<Object>>() { @Override public void accept(Emitter<Object> e) throws Exception { e.onComplete(); e.onComplete(); } }) .test(1) .assertResult(); } }
public static Flowable<Event> getEventStream(final String type, final int numInstances) { return Flowable.<Event>generate(new EventConsumer(type, numInstances)) .subscribeOn(Schedulers.newThread()); }
@Test public void dispose() { TestHelper.checkDisposed(Flowable.generate(new Callable<Object>() { @Override public Object call() throws Exception { return 1; } }, new BiConsumer<Object, Emitter<Object>>() { @Override public void accept(Object s, Emitter<Object> e) throws Exception { e.onComplete(); } }, Functions.emptyConsumer())); }
@Test public void stateSupplierThrows() { Flowable.generate(new Callable<Object>() { @Override public Object call() throws Exception { throw new TestException(); } }, new BiConsumer<Object, Emitter<Object>>() { @Override public void accept(Object s, Emitter<Object> e) throws Exception { e.onNext(s); } }, Functions.emptyConsumer()) .test() .assertFailure(TestException.class); }
@Test public void generatorThrows() { Flowable.generate(new Callable<Object>() { @Override public Object call() throws Exception { return 1; } }, new BiConsumer<Object, Emitter<Object>>() { @Override public void accept(Object s, Emitter<Object> e) throws Exception { throw new TestException(); } }, Functions.emptyConsumer()) .test() .assertFailure(TestException.class); }
@Test public void nullError() { final int[] call = { 0 }; Flowable.generate(Functions.justCallable(1), new BiConsumer<Integer, Emitter<Object>>() { @Override public void accept(Integer s, Emitter<Object> e) throws Exception { try { e.onError(null); } catch (NullPointerException ex) { call[0]++; } } }, Functions.emptyConsumer()) .test() .assertFailure(NullPointerException.class); assertEquals(0, call[0]); }
@Test public void rebatchAndTake() { Flowable.generate(new Callable<Object>() { @Override public Object call() throws Exception { return 1; } }, new BiConsumer<Object, Emitter<Object>>() { @Override public void accept(Object s, Emitter<Object> e) throws Exception { e.onNext(1); } }, Functions.emptyConsumer()) .rebatchRequests(1) .take(5) .test() .assertResult(1, 1, 1, 1, 1); }
@Test public void multipleOnError() { List<Throwable> errors = TestHelper.trackPluginErrors(); try { Flowable.generate(new Consumer<Emitter<Object>>() { @Override public void accept(Emitter<Object> e) throws Exception { e.onError(new TestException("First")); e.onError(new TestException("Second")); } }) .test(1) .assertFailure(TestException.class); TestHelper.assertUndeliverable(errors, 0, TestException.class, "Second"); } finally { RxJavaPlugins.reset(); } }