--- jsr166/src/test/tck/CompletableFutureTest.java 2014/06/03 06:16:41 1.60 +++ jsr166/src/test/tck/CompletableFutureTest.java 2014/06/04 04:34:49 1.61 @@ -1275,46 +1275,46 @@ public class CompletableFutureTest exten }} /** - * thenAccept result completes exceptionally if action does + * thenAccept result completes exceptionally if source cancelled */ - public void testThenAccept_actionFailed() { + public void testThenAccept_sourceCancelled() { for (ExecutionMode m : ExecutionMode.values()) for (boolean createIncomplete : new boolean[] { true, false }) - for (Integer v1 : new Integer[] { 1, null }) + for (boolean mayInterruptIfRunning : new boolean[] { true, false }) { final CompletableFuture f = new CompletableFuture<>(); - final FailingConsumer r = new FailingConsumer(m); - if (!createIncomplete) f.complete(v1); + final IncAction r = new IncAction(); + if (!createIncomplete) assertTrue(f.cancel(mayInterruptIfRunning)); final CompletableFuture g = m.thenAccept(f, r); if (createIncomplete) { checkIncomplete(g); - f.complete(v1); + assertTrue(f.cancel(mayInterruptIfRunning)); } - checkCompletedWithWrappedCFException(g); - checkCompletedNormally(f, v1); + checkCompletedWithWrappedCancellationException(g); + checkCancelled(f); + assertEquals(0, r.invocationCount); }} /** - * thenAccept result completes exceptionally if source cancelled + * thenAccept result completes exceptionally if action does */ - public void testThenAccept_sourceCancelled() { + public void testThenAccept_actionFailed() { for (ExecutionMode m : ExecutionMode.values()) for (boolean createIncomplete : new boolean[] { true, false }) - for (boolean mayInterruptIfRunning : new boolean[] { true, false }) + for (Integer v1 : new Integer[] { 1, null }) { final CompletableFuture f = new CompletableFuture<>(); - final IncAction r = new IncAction(); - if (!createIncomplete) assertTrue(f.cancel(mayInterruptIfRunning)); + final FailingConsumer r = new FailingConsumer(m); + if (!createIncomplete) f.complete(v1); final CompletableFuture g = m.thenAccept(f, r); if (createIncomplete) { checkIncomplete(g); - assertTrue(f.cancel(mayInterruptIfRunning)); + f.complete(v1); } - checkCompletedWithWrappedCancellationException(g); - checkCancelled(f); - assertEquals(0, r.invocationCount); + checkCompletedWithWrappedCFException(g); + checkCompletedNormally(f, v1); }} /** @@ -1379,33 +1379,6 @@ public class CompletableFutureTest exten }} /** - * thenCombine result completes exceptionally if action does - */ - public void testThenCombine_actionFailed() { - for (ExecutionMode m : ExecutionMode.values()) - for (boolean fFirst : new boolean[] { true, false }) - for (Integer v1 : new Integer[] { 1, null }) - for (Integer v2 : new Integer[] { 2, null }) - { - final CompletableFuture f = new CompletableFuture<>(); - final CompletableFuture g = new CompletableFuture<>(); - final FailingBiFunction r = new FailingBiFunction(m); - final CompletableFuture h = m.thenCombine(f, g, r); - - if (fFirst) { - f.complete(v1); - g.complete(v2); - } else { - g.complete(v2); - f.complete(v1); - } - - checkCompletedWithWrappedCFException(h); - checkCompletedNormally(f, v1); - checkCompletedNormally(g, v2); - }} - - /** * thenCombine result completes exceptionally if either source cancelled */ public void testThenCombine_sourceCancelled() { @@ -1435,6 +1408,33 @@ public class CompletableFutureTest exten }} /** + * thenCombine result completes exceptionally if action does + */ + public void testThenCombine_actionFailed() { + for (ExecutionMode m : ExecutionMode.values()) + for (boolean fFirst : new boolean[] { true, false }) + for (Integer v1 : new Integer[] { 1, null }) + for (Integer v2 : new Integer[] { 2, null }) + { + final CompletableFuture f = new CompletableFuture<>(); + final CompletableFuture g = new CompletableFuture<>(); + final FailingBiFunction r = new FailingBiFunction(m); + final CompletableFuture h = m.thenCombine(f, g, r); + + if (fFirst) { + f.complete(v1); + g.complete(v2); + } else { + g.complete(v2); + f.complete(v1); + } + + checkCompletedWithWrappedCFException(h); + checkCompletedNormally(f, v1); + checkCompletedNormally(g, v2); + }} + + /** * thenAcceptBoth result completes normally after normal * completion of sources */ @@ -1496,33 +1496,6 @@ public class CompletableFutureTest exten }} /** - * thenAcceptBoth result completes exceptionally if action does - */ - public void testThenAcceptBoth_actionFailed() { - for (ExecutionMode m : ExecutionMode.values()) - for (boolean fFirst : new boolean[] { true, false }) - for (Integer v1 : new Integer[] { 1, null }) - for (Integer v2 : new Integer[] { 2, null }) - { - final CompletableFuture f = new CompletableFuture<>(); - final CompletableFuture g = new CompletableFuture<>(); - final FailingBiConsumer r = new FailingBiConsumer(m); - final CompletableFuture h = m.thenAcceptBoth(f, g, r); - - if (fFirst) { - f.complete(v1); - g.complete(v2); - } else { - g.complete(v2); - f.complete(v1); - } - - checkCompletedWithWrappedCFException(h); - checkCompletedNormally(f, v1); - checkCompletedNormally(g, v2); - }} - - /** * thenAcceptBoth result completes exceptionally if either source cancelled */ public void testThenAcceptBoth_sourceCancelled() { @@ -1552,6 +1525,33 @@ public class CompletableFutureTest exten }} /** + * thenAcceptBoth result completes exceptionally if action does + */ + public void testThenAcceptBoth_actionFailed() { + for (ExecutionMode m : ExecutionMode.values()) + for (boolean fFirst : new boolean[] { true, false }) + for (Integer v1 : new Integer[] { 1, null }) + for (Integer v2 : new Integer[] { 2, null }) + { + final CompletableFuture f = new CompletableFuture<>(); + final CompletableFuture g = new CompletableFuture<>(); + final FailingBiConsumer r = new FailingBiConsumer(m); + final CompletableFuture h = m.thenAcceptBoth(f, g, r); + + if (fFirst) { + f.complete(v1); + g.complete(v2); + } else { + g.complete(v2); + f.complete(v1); + } + + checkCompletedWithWrappedCFException(h); + checkCompletedNormally(f, v1); + checkCompletedNormally(g, v2); + }} + + /** * runAfterBoth result completes normally after normal * completion of sources */ @@ -1613,35 +1613,6 @@ public class CompletableFutureTest exten }} /** - * runAfterBoth result completes exceptionally if action does - */ - public void testRunAfterBoth_actionFailed() { - for (ExecutionMode m : ExecutionMode.values()) - for (boolean fFirst : new boolean[] { true, false }) - for (Integer v1 : new Integer[] { 1, null }) - for (Integer v2 : new Integer[] { 2, null }) - { - final CompletableFuture f = new CompletableFuture<>(); - final CompletableFuture g = new CompletableFuture<>(); - final FailingRunnable r = new FailingRunnable(m); - - CompletableFuture h1 = m.runAfterBoth(f, g, r); - if (fFirst) { - f.complete(v1); - g.complete(v2); - } else { - g.complete(v2); - f.complete(v1); - } - CompletableFuture h2 = m.runAfterBoth(f, g, r); - - checkCompletedWithWrappedCFException(h1); - checkCompletedWithWrappedCFException(h2); - checkCompletedNormally(f, v1); - checkCompletedNormally(g, v2); - }} - - /** * runAfterBoth result completes exceptionally if either source cancelled */ public void testRunAfterBoth_sourceCancelled() { @@ -1672,6 +1643,35 @@ public class CompletableFutureTest exten }} /** + * runAfterBoth result completes exceptionally if action does + */ + public void testRunAfterBoth_actionFailed() { + for (ExecutionMode m : ExecutionMode.values()) + for (boolean fFirst : new boolean[] { true, false }) + for (Integer v1 : new Integer[] { 1, null }) + for (Integer v2 : new Integer[] { 2, null }) + { + final CompletableFuture f = new CompletableFuture<>(); + final CompletableFuture g = new CompletableFuture<>(); + final FailingRunnable r = new FailingRunnable(m); + + CompletableFuture h1 = m.runAfterBoth(f, g, r); + if (fFirst) { + f.complete(v1); + g.complete(v2); + } else { + g.complete(v2); + f.complete(v1); + } + CompletableFuture h2 = m.runAfterBoth(f, g, r); + + checkCompletedWithWrappedCFException(h1); + checkCompletedWithWrappedCFException(h2); + checkCompletedNormally(f, v1); + checkCompletedNormally(g, v2); + }} + + /** * applyToEither result completes normally after normal completion * of either source */