--- jsr166/src/test/tck/ForkJoinTaskTest.java 2010/11/21 19:06:53 1.24 +++ jsr166/src/test/tck/ForkJoinTaskTest.java 2010/11/22 22:45:49 1.28 @@ -93,7 +93,25 @@ public class ForkJoinTaskTest extends JS assertFalse(a.isCompletedAbnormally()); assertNull(a.getException()); assertSame(expected, a.getRawResult()); - assertSame(expected, a.join()); + + { + Thread.currentThread().interrupt(); + long t0 = System.nanoTime(); + assertSame(expected, a.join()); + assertTrue(millisElapsedSince(t0) < SMALL_DELAY_MS); + assertTrue(Thread.interrupted()); + } + + { + Thread.currentThread().interrupt(); + long t0 = System.nanoTime(); + a.quietlyJoin(); // should be no-op + assertTrue(millisElapsedSince(t0) < SMALL_DELAY_MS); + assertTrue(Thread.interrupted()); + } + + assertFalse(a.cancel(false)); + assertFalse(a.cancel(true)); try { assertSame(expected, a.get()); } catch (Throwable fail) { threadUnexpectedException(fail); } @@ -109,13 +127,23 @@ public class ForkJoinTaskTest extends JS assertTrue(a.isCompletedAbnormally()); assertTrue(a.getException() instanceof CancellationException); assertNull(a.getRawResult()); + assertTrue(a.cancel(false)); + assertTrue(a.cancel(true)); try { + Thread.currentThread().interrupt(); a.join(); shouldThrow(); } catch (CancellationException success) { + assertTrue(Thread.interrupted()); } catch (Throwable fail) { threadUnexpectedException(fail); } + { + long t0 = System.nanoTime(); + a.quietlyJoin(); // should be no-op + assertTrue(millisElapsedSince(t0) < SMALL_DELAY_MS); + } + try { a.get(); shouldThrow(); @@ -136,14 +164,24 @@ public class ForkJoinTaskTest extends JS assertTrue(a.isCompletedAbnormally()); assertSame(t, a.getException()); assertNull(a.getRawResult()); + assertFalse(a.cancel(false)); + assertFalse(a.cancel(true)); try { + Thread.currentThread().interrupt(); a.join(); shouldThrow(); } catch (Throwable expected) { + assertTrue(Thread.interrupted()); assertSame(t, expected); } + { + long t0 = System.nanoTime(); + a.quietlyJoin(); // should be no-op + assertTrue(millisElapsedSince(t0) < SMALL_DELAY_MS); + } + try { a.get(); shouldThrow(); @@ -343,7 +381,7 @@ public class ForkJoinTaskTest extends JS /** * invoke returns when task completes normally. * isCompletedAbnormally and isCancelled return false for normally - * completed tasks. getRawResult of a RecursiveAction returns null; + * completed tasks; getRawResult returns null. */ public void testInvoke() { RecursiveAction a = new CheckedRecursiveAction() { @@ -713,6 +751,7 @@ public class ForkJoinTaskTest extends JS RecursiveAction a = new CheckedRecursiveAction() { public void realCompute() { setRawResult(null); + assertNull(getRawResult()); }}; assertNull(a.invoke()); } @@ -1069,7 +1108,7 @@ public class ForkJoinTaskTest extends JS /** * invoke returns when task completes normally. * isCompletedAbnormally and isCancelled return false for normally - * completed tasks. getRawResult of a RecursiveAction returns null; + * completed tasks; getRawResult returns null. */ public void testInvokeSingleton() { RecursiveAction a = new CheckedRecursiveAction() {