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; |
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. |
2055 |
|
assertEquals(savedCompletedTaskCount, p.getCompletedTaskCount()); |
2056 |
|
assertEquals(savedQueueSize, p.getQueue().size()); |
2057 |
|
} |
2058 |
+ |
|
2059 |
+ |
void assertCollectionsEquals(Collection<?> x, Collection<?> y) { |
2060 |
+ |
assertEquals(x, y); |
2061 |
+ |
assertEquals(y, x); |
2062 |
+ |
assertEquals(x.isEmpty(), y.isEmpty()); |
2063 |
+ |
assertEquals(x.size(), y.size()); |
2064 |
+ |
if (x instanceof List) { |
2065 |
+ |
assertEquals(x.toString(), y.toString()); |
2066 |
+ |
} |
2067 |
+ |
if (x instanceof List || x instanceof Set) { |
2068 |
+ |
assertEquals(x.hashCode(), y.hashCode()); |
2069 |
+ |
} |
2070 |
+ |
if (x instanceof List || x instanceof Deque) { |
2071 |
+ |
assertTrue(Arrays.equals(x.toArray(), y.toArray())); |
2072 |
+ |
assertTrue(Arrays.equals(x.toArray(new Object[0]), |
2073 |
+ |
y.toArray(new Object[0]))); |
2074 |
+ |
} |
2075 |
+ |
} |
2076 |
+ |
|
2077 |
+ |
/** |
2078 |
+ |
* A weaker form of assertCollectionsEquals which does not insist |
2079 |
+ |
* that the two collections satisfy Object#equals(Object), since |
2080 |
+ |
* they may use identity semantics as Deques do. |
2081 |
+ |
*/ |
2082 |
+ |
void assertCollectionsEquivalent(Collection<?> x, Collection<?> y) { |
2083 |
+ |
if (x instanceof List || x instanceof Set) |
2084 |
+ |
assertCollectionsEquals(x, y); |
2085 |
+ |
else { |
2086 |
+ |
assertEquals(x.isEmpty(), y.isEmpty()); |
2087 |
+ |
assertEquals(x.size(), y.size()); |
2088 |
+ |
assertEquals(new HashSet(x), new HashSet(y)); |
2089 |
+ |
if (x instanceof Deque) { |
2090 |
+ |
assertTrue(Arrays.equals(x.toArray(), y.toArray())); |
2091 |
+ |
assertTrue(Arrays.equals(x.toArray(new Object[0]), |
2092 |
+ |
y.toArray(new Object[0]))); |
2093 |
+ |
} |
2094 |
+ |
} |
2095 |
+ |
} |
2096 |
|
} |