@Test(expected = NullPointerException.class) public void zipIterableNull() { Single.zip((Iterable<Single<Integer>>)null, new Function<Object[], Object>() { @Override public Object apply(Object[] v) { return 1; } }); }
@Test(expected = NullPointerException.class) public void zip2FirstNull() { Single.zip(null, just1, new BiFunction<Object, Integer, Object>() { @Override public Object apply(Object a, Integer b) { return 1; } }); }
@SuppressWarnings("unchecked") @Test(expected = NullPointerException.class) public void zipIterableOneFunctionReturnsNull() { Single.zip(Arrays.asList(just1, just1), new Function<Object[], Object>() { @Override public Object apply(Object[] v) { return null; } }).blockingGet(); }
@SuppressWarnings("unchecked") @Test(expected = NullPointerException.class) public void zipIterableOneIsNull() { Single.zip(Arrays.asList(null, Single.just(1)), new Function<Object[], Object>() { @Override public Object apply(Object[] v) { return 1; } }) .blockingGet(); }
@SuppressWarnings("unchecked") @Test(expected = NullPointerException.class) public void zipIterableTwoIsNull() { Single.zip(Arrays.asList(Single.just(1), null), new Function<Object[], Object>() { @Override public Object apply(Object[] v) { return 1; } }) .blockingGet(); }
@Test public void oneIterable() { Single.zip(Collections.singleton(Single.just(1)), new Function<Object[], Object>() { @Override public Object apply(Object[] a) throws Exception { return (Integer)a[0] + 1; } }) .test() .assertResult(2); }
@SuppressWarnings("unchecked") @Test public void zipperReturnsNull() { Single.zip(Arrays.asList(Single.just(1), Single.just(2)), new Function<Object[], Object>() { @Override public Object apply(Object[] a) throws Exception { return null; } }) .test() .assertFailure(NullPointerException.class); }
@SuppressWarnings("unchecked") @Test public void zipperThrows() { Single.zip(Arrays.asList(Single.just(1), Single.just(2)), new Function<Object[], Object>() { @Override public Object apply(Object[] b) throws Exception { throw new TestException(); } }) .test() .assertFailure(TestException.class); }
@SuppressWarnings("unchecked") @Test public void singleSourceZipperReturnsNull() { Single.zip(Arrays.asList(Single.just(1)), Functions.justFunction(null)) .test() .assertFailureAndMessage(NullPointerException.class, "The zipper returned a null value"); } }
@Test public void hasNextThrows() { Single.zip(new CrashingMappedIterable<Single<Integer>>(100, 20, 100, new Function<Integer, Single<Integer>>() { @Override public Single<Integer> apply(Integer v) throws Exception { return Single.just(v); } }), addString) .test() .assertFailureAndMessage(TestException.class, "hasNext()"); }
@Test public void iteratorThrows() { Single.zip(new CrashingMappedIterable<Single<Integer>>(1, 100, 100, new Function<Integer, Single<Integer>>() { @Override public Single<Integer> apply(Integer v) throws Exception { return Single.just(v); } }), addString) .test() .assertFailureAndMessage(TestException.class, "iterator()"); }
@SuppressWarnings("unchecked") @Test public void firstError() { Single.zip(Arrays.asList(Single.error(new TestException()), Single.just(1)), addString) .test() .assertFailure(TestException.class); }
@Test public void zipperThrows() { Single.zip(Single.just(1), Single.just(2), new BiFunction<Integer, Integer, Object>() { @Override public Object apply(Integer a, Integer b) throws Exception { throw new TestException(); } }) .test() .assertFailure(TestException.class); }
@Test public void zipperReturnsNull() { Single.zip(Single.just(1), Single.just(2), new BiFunction<Integer, Integer, Object>() { @Override public Object apply(Integer a, Integer b) throws Exception { return null; } }) .test() .assertFailure(NullPointerException.class); }
@Test public void zip2() { Single.zip(Single.just(1), Single.just(2), new BiFunction<Integer, Integer, Object>() { @Override public Object apply(Integer a, Integer b) throws Exception { return a + "" + b; } }) .test() .assertResult("12"); }
@Test public void firstError() { Single.zip(Single.error(new TestException()), Single.just(1), addString) .test() .assertFailure(TestException.class); }
@Test public void secondError() { Single.zip(Single.just(1), Single.<Integer>error(new TestException()), addString) .test() .assertFailure(TestException.class); }
@SuppressWarnings("unchecked") @Test public void dispose() { PublishSubject<Integer> pp = PublishSubject.create(); TestObserver<Object> to = Single.zip(Arrays.asList(pp.single(0), pp.single(0)), addString) .test(); assertTrue(pp.hasObservers()); to.cancel(); assertFalse(pp.hasObservers()); }
@Test public void zip4() { Single.zip(Single.just(1), Single.just(2), Single.just(3), Single.just(4), new Function4<Integer, Integer, Integer, Integer, Object>() { @Override public Object apply(Integer a, Integer b, Integer c, Integer d) throws Exception { return a + "" + b + c + d; } }) .test() .assertResult("1234"); }
@Test public void dispose() { PublishSubject<Integer> pp = PublishSubject.create(); TestObserver<Object> to = Single.zip(pp.single(0), pp.single(0), addString) .test(); assertTrue(pp.hasObservers()); to.cancel(); assertFalse(pp.hasObservers()); }