8 |
|
|
9 |
|
import static java.util.concurrent.TimeUnit.MILLISECONDS; |
10 |
|
import static java.util.concurrent.TimeUnit.NANOSECONDS; |
11 |
– |
import static java.util.concurrent.TimeUnit.SECONDS; |
11 |
|
|
12 |
|
import java.util.ArrayList; |
13 |
|
import java.util.List; |
107 |
|
|
108 |
|
try { |
109 |
|
assertSame(expected, f.get()); |
110 |
< |
} catch (Throwable fail) { threadUnexpectedException(fail); } |
112 |
< |
try { |
113 |
< |
assertSame(expected, f.get(5L, SECONDS)); |
110 |
> |
assertSame(expected, f.get(randomTimeout(), randomTimeUnit())); |
111 |
|
} catch (Throwable fail) { threadUnexpectedException(fail); } |
112 |
|
} |
113 |
|
|
122 |
|
} catch (Throwable fail) { threadUnexpectedException(fail); } |
123 |
|
|
124 |
|
try { |
125 |
< |
f.get(5L, SECONDS); |
125 |
> |
f.get(randomTimeout(), randomTimeUnit()); |
126 |
|
shouldThrow(); |
127 |
|
} catch (CancellationException success) { |
128 |
|
} catch (Throwable fail) { threadUnexpectedException(fail); } |
148 |
|
} catch (Throwable fail) { threadUnexpectedException(fail); } |
149 |
|
|
150 |
|
try { |
151 |
< |
f.get(5L, SECONDS); |
151 |
> |
f.get(randomTimeout(), randomTimeUnit()); |
152 |
|
shouldThrow(); |
153 |
|
} catch (ExecutionException success) { |
154 |
|
assertSame(t, success.getCause()); |
414 |
|
delay(LONG_DELAY_MS); |
415 |
|
shouldThrow(); |
416 |
|
} catch (InterruptedException success) {} |
417 |
+ |
assertFalse(Thread.interrupted()); |
418 |
|
}}); |
419 |
|
|
420 |
|
Thread t = newStartedThread(task); |
834 |
|
} |
835 |
|
} |
836 |
|
|
837 |
+ |
/** |
838 |
+ |
* toString indicates current completion state |
839 |
+ |
*/ |
840 |
+ |
public void testToString_incomplete() { |
841 |
+ |
FutureTask<String> f = new FutureTask<String>(() -> ""); |
842 |
+ |
assertTrue(f.toString().matches(".*\\[.*Not completed.*\\]")); |
843 |
+ |
if (testImplementationDetails) |
844 |
+ |
assertTrue(f.toString().startsWith( |
845 |
+ |
identityString(f) + "[Not completed, task =")); |
846 |
+ |
} |
847 |
+ |
|
848 |
+ |
public void testToString_normal() { |
849 |
+ |
FutureTask<String> f = new FutureTask<String>(() -> ""); |
850 |
+ |
f.run(); |
851 |
+ |
assertTrue(f.toString().matches(".*\\[.*Completed normally.*\\]")); |
852 |
+ |
if (testImplementationDetails) |
853 |
+ |
assertEquals(identityString(f) + "[Completed normally]", |
854 |
+ |
f.toString()); |
855 |
+ |
} |
856 |
+ |
|
857 |
+ |
public void testToString_exception() { |
858 |
+ |
FutureTask<String> f = new FutureTask<String>( |
859 |
+ |
() -> { throw new ArithmeticException(); }); |
860 |
+ |
f.run(); |
861 |
+ |
assertTrue(f.toString().matches(".*\\[.*Completed exceptionally.*\\]")); |
862 |
+ |
if (testImplementationDetails) |
863 |
+ |
assertTrue(f.toString().startsWith( |
864 |
+ |
identityString(f) + "[Completed exceptionally: ")); |
865 |
+ |
} |
866 |
+ |
|
867 |
+ |
public void testToString_cancelled() { |
868 |
+ |
for (boolean mayInterruptIfRunning : new boolean[] { true, false }) { |
869 |
+ |
FutureTask<String> f = new FutureTask<String>(() -> ""); |
870 |
+ |
assertTrue(f.cancel(mayInterruptIfRunning)); |
871 |
+ |
assertTrue(f.toString().matches(".*\\[.*Cancelled.*\\]")); |
872 |
+ |
if (testImplementationDetails) |
873 |
+ |
assertEquals(identityString(f) + "[Cancelled]", |
874 |
+ |
f.toString()); |
875 |
+ |
} |
876 |
+ |
} |
877 |
+ |
|
878 |
|
} |