93 |
|
assertFalse(a.isCompletedAbnormally()); |
94 |
|
assertNull(a.getException()); |
95 |
|
assertSame(expected, a.getRawResult()); |
96 |
< |
assertSame(expected, a.join()); |
96 |
> |
|
97 |
> |
{ |
98 |
> |
Thread.currentThread().interrupt(); |
99 |
> |
long t0 = System.nanoTime(); |
100 |
> |
assertSame(expected, a.join()); |
101 |
> |
assertTrue(millisElapsedSince(t0) < SMALL_DELAY_MS); |
102 |
> |
Thread.interrupted(); |
103 |
> |
} |
104 |
> |
|
105 |
> |
{ |
106 |
> |
Thread.currentThread().interrupt(); |
107 |
> |
long t0 = System.nanoTime(); |
108 |
> |
a.quietlyJoin(); // should be no-op |
109 |
> |
assertTrue(millisElapsedSince(t0) < SMALL_DELAY_MS); |
110 |
> |
Thread.interrupted(); |
111 |
> |
} |
112 |
> |
|
113 |
|
assertFalse(a.cancel(false)); |
114 |
|
assertFalse(a.cancel(true)); |
115 |
|
try { |
131 |
|
assertTrue(a.cancel(true)); |
132 |
|
|
133 |
|
try { |
134 |
+ |
Thread.currentThread().interrupt(); |
135 |
|
a.join(); |
136 |
|
shouldThrow(); |
137 |
|
} catch (CancellationException success) { |
138 |
|
} catch (Throwable fail) { threadUnexpectedException(fail); } |
139 |
+ |
Thread.interrupted(); |
140 |
+ |
|
141 |
+ |
{ |
142 |
+ |
long t0 = System.nanoTime(); |
143 |
+ |
a.quietlyJoin(); // should be no-op |
144 |
+ |
assertTrue(millisElapsedSince(t0) < SMALL_DELAY_MS); |
145 |
+ |
} |
146 |
|
|
147 |
|
try { |
148 |
|
a.get(); |
162 |
|
assertFalse(a.isCancelled()); |
163 |
|
assertFalse(a.isCompletedNormally()); |
164 |
|
assertTrue(a.isCompletedAbnormally()); |
165 |
< |
assertSame(t, a.getException()); |
165 |
> |
assertSame(t.getClass(), a.getException().getClass()); |
166 |
|
assertNull(a.getRawResult()); |
167 |
|
assertFalse(a.cancel(false)); |
168 |
|
assertFalse(a.cancel(true)); |
169 |
|
|
170 |
|
try { |
171 |
+ |
Thread.currentThread().interrupt(); |
172 |
|
a.join(); |
173 |
|
shouldThrow(); |
174 |
|
} catch (Throwable expected) { |
175 |
< |
assertSame(t, expected); |
175 |
> |
assertSame(t.getClass(), expected.getClass()); |
176 |
> |
} |
177 |
> |
Thread.interrupted(); |
178 |
> |
|
179 |
> |
{ |
180 |
> |
long t0 = System.nanoTime(); |
181 |
> |
a.quietlyJoin(); // should be no-op |
182 |
> |
assertTrue(millisElapsedSince(t0) < SMALL_DELAY_MS); |
183 |
|
} |
184 |
|
|
185 |
|
try { |
186 |
|
a.get(); |
187 |
|
shouldThrow(); |
188 |
|
} catch (ExecutionException success) { |
189 |
< |
assertSame(t, success.getCause()); |
189 |
> |
assertSame(t.getClass(), success.getCause().getClass()); |
190 |
|
} catch (Throwable fail) { threadUnexpectedException(fail); } |
191 |
|
|
192 |
|
try { |
193 |
|
a.get(5L, SECONDS); |
194 |
|
shouldThrow(); |
195 |
|
} catch (ExecutionException success) { |
196 |
< |
assertSame(t, success.getCause()); |
196 |
> |
assertSame(t.getClass(), success.getCause().getClass()); |
197 |
|
} catch (Throwable fail) { threadUnexpectedException(fail); } |
198 |
|
} |
199 |
|
|
205 |
|
* differently than supplied Recursive forms. |
206 |
|
*/ |
207 |
|
|
208 |
< |
static final class FJException extends RuntimeException { |
208 |
> |
public static final class FJException extends RuntimeException { |
209 |
|
FJException() { super(); } |
210 |
|
} |
211 |
|
|
381 |
|
/** |
382 |
|
* invoke returns when task completes normally. |
383 |
|
* isCompletedAbnormally and isCancelled return false for normally |
384 |
< |
* completed tasks. getRawResult of a RecursiveAction returns null; |
384 |
> |
* completed tasks; getRawResult returns null. |
385 |
|
*/ |
386 |
|
public void testInvoke() { |
387 |
|
RecursiveAction a = new CheckedRecursiveAction() { |
751 |
|
RecursiveAction a = new CheckedRecursiveAction() { |
752 |
|
public void realCompute() { |
753 |
|
setRawResult(null); |
754 |
+ |
assertNull(getRawResult()); |
755 |
|
}}; |
756 |
|
assertNull(a.invoke()); |
757 |
|
} |
1108 |
|
/** |
1109 |
|
* invoke returns when task completes normally. |
1110 |
|
* isCompletedAbnormally and isCancelled return false for normally |
1111 |
< |
* completed tasks. getRawResult of a RecursiveAction returns null; |
1111 |
> |
* completed tasks; getRawResult returns null. |
1112 |
|
*/ |
1113 |
|
public void testInvokeSingleton() { |
1114 |
|
RecursiveAction a = new CheckedRecursiveAction() { |