[cvs] / jsr166 / src / test / tck / FutureTaskTest.java Repository:
ViewVC logotype

Diff of /jsr166/src/test/tck/FutureTaskTest.java

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.42, Sat Feb 28 18:18:56 2015 UTC revision 1.53, Sun Jul 22 22:13:55 2018 UTC
# Line 8  Line 8 
8    
9  import static java.util.concurrent.TimeUnit.MILLISECONDS;  import static java.util.concurrent.TimeUnit.MILLISECONDS;
10  import static java.util.concurrent.TimeUnit.NANOSECONDS;  import static java.util.concurrent.TimeUnit.NANOSECONDS;
 import static java.util.concurrent.TimeUnit.SECONDS;  
11    
12  import java.util.ArrayList;  import java.util.ArrayList;
13  import java.util.List;  import java.util.List;
# Line 30  Line 29 
29  public class FutureTaskTest extends JSR166TestCase {  public class FutureTaskTest extends JSR166TestCase {
30    
31      public static void main(String[] args) {      public static void main(String[] args) {
32          junit.textui.TestRunner.run(suite());          main(suite(), args);
33      }      }
34      public static Test suite() {      public static Test suite() {
35          return new TestSuite(FutureTaskTest.class);          return new TestSuite(FutureTaskTest.class);
# Line 61  Line 60 
60              pf.run();              pf.run();
61              pf.runAndReset();              pf.runAndReset();
62              assertEquals(savedRunCount, pf.runCount());              assertEquals(savedRunCount, pf.runCount());
63                Object r2 = null;
64              try {              try {
65                  assertSame(r, f.get());                  r2 = f.get();
66              } catch (CancellationException t) {              } catch (CancellationException t) {
67                  assertSame(exInfo, CancellationException.class);                  assertSame(exInfo, CancellationException.class);
68              } catch (ExecutionException t) {              } catch (ExecutionException t) {
# Line 70  Line 70 
70              } catch (Throwable t) {              } catch (Throwable t) {
71                  threadUnexpectedException(t);                  threadUnexpectedException(t);
72              }              }
73                if (exInfo == null)
74                    assertSame(r, r2);
75              assertTrue(f.isDone());              assertTrue(f.isDone());
76          }          }
77      }      }
# Line 102  Line 104 
104          }          }
105      }      }
106    
107      <T> void checkCompletedNormally(Future<T> f, T expected) {      <T> void checkCompletedNormally(Future<T> f, T expectedValue) {
108          checkIsDone(f);          checkIsDone(f);
109          assertFalse(f.isCancelled());          assertFalse(f.isCancelled());
110    
111            T v1 = null, v2 = null;
112          try {          try {
113              assertSame(expected, f.get());              v1 = f.get();
114          } catch (Throwable fail) { threadUnexpectedException(fail); }              v2 = f.get(randomTimeout(), randomTimeUnit());
         try {  
             assertSame(expected, f.get(5L, SECONDS));  
115          } catch (Throwable fail) { threadUnexpectedException(fail); }          } catch (Throwable fail) { threadUnexpectedException(fail); }
116            assertSame(expectedValue, v1);
117            assertSame(expectedValue, v2);
118      }      }
119    
120      void checkCancelled(Future<?> f) {      void checkCancelled(Future<?> f) {
# Line 125  Line 128 
128          } catch (Throwable fail) { threadUnexpectedException(fail); }          } catch (Throwable fail) { threadUnexpectedException(fail); }
129    
130          try {          try {
131              f.get(5L, SECONDS);              f.get(randomTimeout(), randomTimeUnit());
132              shouldThrow();              shouldThrow();
133          } catch (CancellationException success) {          } catch (CancellationException success) {
134          } catch (Throwable fail) { threadUnexpectedException(fail); }          } catch (Throwable fail) { threadUnexpectedException(fail); }
# Line 151  Line 154 
154          } catch (Throwable fail) { threadUnexpectedException(fail); }          } catch (Throwable fail) { threadUnexpectedException(fail); }
155    
156          try {          try {
157              f.get(5L, SECONDS);              f.get(randomTimeout(), randomTimeUnit());
158              shouldThrow();              shouldThrow();
159          } catch (ExecutionException success) {          } catch (ExecutionException success) {
160              assertSame(t, success.getCause());              assertSame(t, success.getCause());
# Line 417  Line 420 
420                          delay(LONG_DELAY_MS);                          delay(LONG_DELAY_MS);
421                          shouldThrow();                          shouldThrow();
422                      } catch (InterruptedException success) {}                      } catch (InterruptedException success) {}
423                        assertFalse(Thread.interrupted());
424                  }});                  }});
425    
426          Thread t = newStartedThread(task);          Thread t = newStartedThread(task);
# Line 460  Line 464 
464          try {          try {
465              task.cancel(true);              task.cancel(true);
466              shouldThrow();              shouldThrow();
467          } catch (SecurityException expected) {}          } catch (SecurityException success) {}
468    
469          // We failed to deliver the interrupt, but the world retains          // We failed to deliver the interrupt, but the world retains
470          // its sanity, as if we had done task.cancel(false)          // its sanity, as if we had done task.cancel(false)
# Line 836  Line 840 
840          }          }
841      }      }
842    
843        /**
844         * toString indicates current completion state
845         */
846        public void testToString_incomplete() {
847            FutureTask<String> f = new FutureTask<>(() -> "");
848            assertTrue(f.toString().matches(".*\\[.*Not completed.*\\]"));
849            if (testImplementationDetails)
850                assertTrue(f.toString().startsWith(
851                                   identityString(f) + "[Not completed, task ="));
852        }
853    
854        public void testToString_normal() {
855            FutureTask<String> f = new FutureTask<>(() -> "");
856            f.run();
857            assertTrue(f.toString().matches(".*\\[.*Completed normally.*\\]"));
858            if (testImplementationDetails)
859                assertEquals(identityString(f) + "[Completed normally]",
860                             f.toString());
861        }
862    
863        public void testToString_exception() {
864            FutureTask<String> f = new FutureTask<>(
865                    () -> { throw new ArithmeticException(); });
866            f.run();
867            assertTrue(f.toString().matches(".*\\[.*Completed exceptionally.*\\]"));
868            if (testImplementationDetails)
869                assertTrue(f.toString().startsWith(
870                                   identityString(f) + "[Completed exceptionally: "));
871        }
872    
873        public void testToString_cancelled() {
874            for (boolean mayInterruptIfRunning : new boolean[] { true, false }) {
875                FutureTask<String> f = new FutureTask<>(() -> "");
876                assertTrue(f.cancel(mayInterruptIfRunning));
877                assertTrue(f.toString().matches(".*\\[.*Cancelled.*\\]"));
878                if (testImplementationDetails)
879                    assertEquals(identityString(f) + "[Cancelled]",
880                                 f.toString());
881            }
882        }
883    
884  }  }

Legend:
Removed from v.1.42  
changed lines
  Added in v.1.53

Doug Lea
ViewVC Help
Powered by ViewVC 1.0.8