--- jsr166/src/test/tck/CompletableFutureTest.java 2015/09/04 13:43:25 1.111 +++ jsr166/src/test/tck/CompletableFutureTest.java 2015/09/05 15:35:47 1.117 @@ -3345,6 +3345,13 @@ public class CompletableFutureTest exten () -> CompletableFuture.anyOf(null, f), () -> f.obtrudeException(null), + + () -> CompletableFuture.delayedExecutor(1L, SECONDS, null), + () -> CompletableFuture.delayedExecutor(1L, null, new ThreadExecutor()), + () -> CompletableFuture.delayedExecutor(1L, null), + + () -> f.orTimeout(1L, null), + () -> f.completeOnTimeout(42, 1L, null), }; assertThrows(NullPointerException.class, throwingActions); @@ -3365,11 +3372,19 @@ public class CompletableFutureTest exten * newIncompleteFuture returns an incomplete CompletableFuture */ public void testNewIncompleteFuture() { + for (Integer v1 : new Integer[] { 1, null }) + { CompletableFuture f = new CompletableFuture<>(); CompletableFuture g = f.newIncompleteFuture(); checkIncomplete(f); checkIncomplete(g); - } + f.complete(v1); + checkCompletedNormally(f, v1); + checkIncomplete(g); + g.complete(v1); + checkCompletedNormally(g, v1); + assertSame(g.getClass(), CompletableFuture.class); + }} /** * completedStage returns a completed CompletionStage @@ -3549,7 +3564,7 @@ public class CompletableFutureTest exten */ public void testOrTimeout() { CompletableFuture f = new CompletableFuture<>(); - f.orTimeout(SHORT_DELAY_MS, TimeUnit.MILLISECONDS); + f.orTimeout(SHORT_DELAY_MS, MILLISECONDS); checkCompletedExceptionallyWithTimeout(f); } @@ -3559,7 +3574,7 @@ public class CompletableFutureTest exten public void testOrTimeout2() { CompletableFuture f = new CompletableFuture<>(); f.complete(1); - f.orTimeout(SHORT_DELAY_MS, TimeUnit.MILLISECONDS); + f.orTimeout(SHORT_DELAY_MS, MILLISECONDS); checkCompletedNormally(f, 1); } @@ -3568,7 +3583,7 @@ public class CompletableFutureTest exten */ public void testCompleteOnTimeout() { CompletableFuture f = new CompletableFuture<>(); - f.completeOnTimeout(-1, SHORT_DELAY_MS, TimeUnit.MILLISECONDS); + f.completeOnTimeout(-1, SHORT_DELAY_MS, MILLISECONDS); f.join(); checkCompletedNormally(f, -1); } @@ -3579,23 +3594,21 @@ public class CompletableFutureTest exten public void testCompleteOnTimeout2() { CompletableFuture f = new CompletableFuture<>(); f.complete(1); - f.completeOnTimeout(-1, SHORT_DELAY_MS, TimeUnit.MILLISECONDS); + f.completeOnTimeout(-1, SHORT_DELAY_MS, MILLISECONDS); checkCompletedNormally(f, 1); } /** * delayedExecutor returns an executor that delays submission */ - public void testDelayedExecutor() { + public void testDelayedExecutor() throws Exception { long timeoutMillis = SMALL_DELAY_MS; Executor d = CompletableFuture.delayedExecutor(timeoutMillis, MILLISECONDS); long startTime = System.nanoTime(); CompletableFuture f = CompletableFuture.supplyAsync(() -> 1, d); assertNull(f.getNow(null)); - try { - f.get(LONG_DELAY_MS, MILLISECONDS); - } catch (Throwable fail) { threadUnexpectedException(fail); } + assertEquals(1, (int) f.get(LONG_DELAY_MS, MILLISECONDS)); assertTrue(millisElapsedSince(startTime) > timeoutMillis/2); checkCompletedNormally(f, 1); } @@ -3604,7 +3617,7 @@ public class CompletableFutureTest exten * delayedExecutor for a given executor returns an executor that * delays submission */ - public void testDelayedExecutor2() { + public void testDelayedExecutor2() throws Exception { long timeoutMillis = SMALL_DELAY_MS; Executor d = CompletableFuture.delayedExecutor(timeoutMillis, MILLISECONDS, @@ -3612,9 +3625,7 @@ public class CompletableFutureTest exten long startTime = System.nanoTime(); CompletableFuture f = CompletableFuture.supplyAsync(() -> 1, d); assertNull(f.getNow(null)); - try { - f.get(LONG_DELAY_MS, MILLISECONDS); - } catch (Throwable fail) { threadUnexpectedException(fail); } + assertEquals(1, (int) f.get(LONG_DELAY_MS, MILLISECONDS)); assertTrue(millisElapsedSince(startTime) > timeoutMillis/2); checkCompletedNormally(f, 1); }