@Test public void testSetResultOnCompletedFuture() { ArrayList<Future<Object>> futures = new ArrayList<>(); futures.add(Future.succeededFuture()); futures.add(Future.succeededFuture()); futures.add(Future.succeededFuture(new Object())); futures.add(Future.succeededFuture(new Object())); futures.add(Future.failedFuture(new Exception())); futures.add(Future.failedFuture(new Exception())); for (Future<Object> future : futures) { try { future.complete(new Object()); fail(); } catch (IllegalStateException ignore) { } assertFalse(future.tryComplete(new Object())); try { future.complete(null); fail(); } catch (IllegalStateException ignore) { } assertFalse(future.tryComplete(null)); try { future.fail(new Exception()); fail(); } catch (IllegalStateException ignore) { } assertFalse(future.tryFail(new Exception())); } }
@Test public void testOtherwiseWithNullFunction() { Future<Integer> fut = Future.future(); try { fut.otherwise((Function<Throwable, Integer>) null); fail(); } catch (NullPointerException ignore) { } try { asyncResult(fut).otherwise((Function<Throwable, Integer>) null); fail(); } catch (NullPointerException ignore) { } }
@Test public void testRecoverWithNullFunction() { Future<Integer> fut = Future.future(); try { fut.recover(null); fail(); } catch (NullPointerException ignore) { } }
@Test public void testComposeWithNullFunction() { Future<Integer> fut = Future.future(); try { fut.compose((Function<Integer, Future<Integer>>) null); fail(); } catch (NullPointerException ignore) { } }
@Test public void testComposeFailsAfterCompletion() { Future<String> f1 = Future.future(); Future<Integer> f2 = Future.future(); Checker<Integer> checker = new Checker<>(f2); RuntimeException cause = new RuntimeException(); f1.compose(string -> { f2.complete(46); throw cause; }, f2); try { f1.complete("foo"); fail(); } catch (Exception e) { assertEquals(cause, e); } checker.assertSucceeded(46); }
throw cause; }); fail(); } catch (Exception e) { assertSame(cause, e);
@Test public void testSetResultOnCompletedFuture() { ArrayList<Future<Object>> futures = new ArrayList<>(); futures.add(Future.succeededFuture()); futures.add(Future.succeededFuture()); futures.add(Future.succeededFuture(new Object())); futures.add(Future.succeededFuture(new Object())); futures.add(Future.failedFuture(new Exception())); futures.add(Future.failedFuture(new Exception())); for (Future<Object> future : futures) { try { future.complete(new Object()); fail(); } catch (IllegalStateException ignore) { } assertFalse(future.tryComplete(new Object())); try { future.complete(null); fail(); } catch (IllegalStateException ignore) { } assertFalse(future.tryComplete(null)); try { future.fail(new Exception()); fail(); } catch (IllegalStateException ignore) { } assertFalse(future.tryFail(new Exception())); } }
@Test public void testOtherwiseWithNullFunction() { Future<Integer> fut = Future.future(); try { fut.otherwise((Function<Throwable, Integer>) null); fail(); } catch (NullPointerException ignore) { } try { asyncResult(fut).otherwise((Function<Throwable, Integer>) null); fail(); } catch (NullPointerException ignore) { } }
@Test public void testRecoverWithNullFunction() { Future<Integer> fut = Future.future(); try { fut.recover(null); fail(); } catch (NullPointerException ignore) { } }
@Test public void testComposeWithNullFunction() { Future<Integer> fut = Future.future(); try { fut.compose((Function<Integer, Future<Integer>>) null); fail(); } catch (NullPointerException ignore) { } }
@Test public void testComposeFailsAfterCompletion() { Future<String> f1 = Future.future(); Future<Integer> f2 = Future.future(); Checker<Integer> checker = new Checker<>(f2); RuntimeException cause = new RuntimeException(); f1.compose(string -> { f2.complete(46); throw cause; }, f2); try { f1.complete("foo"); fail(); } catch (Exception e) { assertEquals(cause, e); } checker.assertSucceeded(46); }
throw cause; }); fail(); } catch (Exception e) { assertSame(cause, e);