ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/jsr166/jsr166/src/test/tck/JSR166TestCase.java
(Generate patch)

Comparing jsr166/src/test/tck/JSR166TestCase.java (file contents):
Revision 1.242 by jsr166, Mon Feb 19 16:12:11 2018 UTC vs.
Revision 1.245 by jsr166, Sun Jul 22 21:19:14 2018 UTC

# Line 66 | Line 66 | import java.util.Arrays;
66   import java.util.Collection;
67   import java.util.Collections;
68   import java.util.Date;
69 + import java.util.Deque;
70   import java.util.Enumeration;
71 + import java.util.HashSet;
72   import java.util.Iterator;
73   import java.util.List;
74   import java.util.NoSuchElementException;
75   import java.util.PropertyPermission;
76 + import java.util.Set;
77   import java.util.concurrent.BlockingQueue;
78   import java.util.concurrent.Callable;
79   import java.util.concurrent.CountDownLatch;
# Line 448 | Line 451 | public class JSR166TestCase extends Test
451      public static boolean atLeastJava8()  { return JAVA_CLASS_VERSION >= 52.0; }
452      public static boolean atLeastJava9()  { return JAVA_CLASS_VERSION >= 53.0; }
453      public static boolean atLeastJava10() { return JAVA_CLASS_VERSION >= 54.0; }
454 +    public static boolean atLeastJava11() { return JAVA_CLASS_VERSION >= 55.0; }
455  
456      /**
457       * Collects all JSR166 unit tests as one suite.
# Line 1384 | Line 1388 | public class JSR166TestCase extends Test
1388       */
1389      <T> void checkTimedGet(Future<T> f, T expectedValue, long timeoutMillis) {
1390          long startTime = System.nanoTime();
1391 +        T actual = null;
1392          try {
1393 <            assertEquals(expectedValue, f.get(timeoutMillis, MILLISECONDS));
1393 >            actual = f.get(timeoutMillis, MILLISECONDS);
1394          } catch (Throwable fail) { threadUnexpectedException(fail); }
1395 +        assertEquals(expectedValue, actual);
1396          if (millisElapsedSince(startTime) > timeoutMillis/2)
1397              throw new AssertionError("timed get did not return promptly");
1398      }
# Line 2051 | Line 2057 | public class JSR166TestCase extends Test
2057          assertEquals(savedCompletedTaskCount, p.getCompletedTaskCount());
2058          assertEquals(savedQueueSize, p.getQueue().size());
2059      }
2060 +
2061 +    void assertCollectionsEquals(Collection<?> x, Collection<?> y) {
2062 +        assertEquals(x, y);
2063 +        assertEquals(y, x);
2064 +        assertEquals(x.isEmpty(), y.isEmpty());
2065 +        assertEquals(x.size(), y.size());
2066 +        if (x instanceof List) {
2067 +            assertEquals(x.toString(), y.toString());
2068 +        }
2069 +        if (x instanceof List || x instanceof Set) {
2070 +            assertEquals(x.hashCode(), y.hashCode());
2071 +        }
2072 +        if (x instanceof List || x instanceof Deque) {
2073 +            assertTrue(Arrays.equals(x.toArray(), y.toArray()));
2074 +            assertTrue(Arrays.equals(x.toArray(new Object[0]),
2075 +                                     y.toArray(new Object[0])));
2076 +        }
2077 +    }
2078 +
2079 +    /**
2080 +     * A weaker form of assertCollectionsEquals which does not insist
2081 +     * that the two collections satisfy Object#equals(Object), since
2082 +     * they may use identity semantics as Deques do.
2083 +     */
2084 +    void assertCollectionsEquivalent(Collection<?> x, Collection<?> y) {
2085 +        if (x instanceof List || x instanceof Set)
2086 +            assertCollectionsEquals(x, y);
2087 +        else {
2088 +            assertEquals(x.isEmpty(), y.isEmpty());
2089 +            assertEquals(x.size(), y.size());
2090 +            assertEquals(new HashSet(x), new HashSet(y));
2091 +            if (x instanceof Deque) {
2092 +                assertTrue(Arrays.equals(x.toArray(), y.toArray()));
2093 +                assertTrue(Arrays.equals(x.toArray(new Object[0]),
2094 +                                         y.toArray(new Object[0])));
2095 +            }
2096 +        }
2097 +    }
2098   }

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines