--- jsr166/src/test/tck/DelayQueueTest.java 2017/05/13 22:49:01 1.85 +++ jsr166/src/test/tck/DelayQueueTest.java 2019/09/05 20:54:24 1.92 @@ -69,7 +69,7 @@ public class DelayQueueTest extends JSR1 // suppress [overrides] javac warning public int hashCode() { return pseudodelay; } public long getDelay(TimeUnit ignore) { - return Integer.MIN_VALUE + pseudodelay; + return (long) Integer.MIN_VALUE + pseudodelay; } public String toString() { return String.valueOf(pseudodelay); @@ -234,7 +234,7 @@ public class DelayQueueTest extends JSR1 } /** - * addAll(this) throws IAE + * addAll(this) throws IllegalArgumentException */ public void testAddAllSelf() { DelayQueue q = populatedQueue(SIZE); @@ -305,7 +305,7 @@ public class DelayQueueTest extends JSR1 } /** - * timed offer does not time out + * Queue is unbounded, so timed offer never times out */ public void testTimedOffer() throws InterruptedException { final DelayQueue q = new DelayQueue(); @@ -357,7 +357,7 @@ public class DelayQueueTest extends JSR1 }}); await(pleaseInterrupt); - assertThreadBlocks(t, Thread.State.WAITING); + if (randomBoolean()) assertThreadBlocks(t, Thread.State.WAITING); t.interrupt(); awaitTermination(t); } @@ -410,14 +410,13 @@ public class DelayQueueTest extends JSR1 Thread t = newStartedThread(new CheckedRunnable() { public void realRun() throws InterruptedException { long startTime = System.nanoTime(); - for (int i = 0; i < SIZE; ++i) { + for (int i = 0; i < SIZE; i++) assertEquals(new PDelay(i), ((PDelay)q.poll(LONG_DELAY_MS, MILLISECONDS))); - } Thread.currentThread().interrupt(); try { - q.poll(LONG_DELAY_MS, MILLISECONDS); + q.poll(randomTimeout(), randomTimeUnit()); shouldThrow(); } catch (InterruptedException success) {} assertFalse(Thread.interrupted()); @@ -428,11 +427,12 @@ public class DelayQueueTest extends JSR1 shouldThrow(); } catch (InterruptedException success) {} assertFalse(Thread.interrupted()); + assertTrue(millisElapsedSince(startTime) < LONG_DELAY_MS); }}); await(pleaseInterrupt); - assertThreadBlocks(t, Thread.State.TIMED_WAITING); + if (randomBoolean()) assertThreadBlocks(t, Thread.State.TIMED_WAITING); t.interrupt(); awaitTermination(t); checkEmpty(q); @@ -566,10 +566,12 @@ public class DelayQueueTest extends JSR1 */ public void testToArray() throws InterruptedException { DelayQueue q = populatedQueue(SIZE); - Object[] o = q.toArray(); - Arrays.sort(o); - for (int i = 0; i < o.length; i++) - assertSame(o[i], q.take()); + Object[] a = q.toArray(); + assertSame(Object[].class, a.getClass()); + Arrays.sort(a); + for (Object o : a) + assertSame(o, q.take()); + assertTrue(q.isEmpty()); } /** @@ -581,8 +583,9 @@ public class DelayQueueTest extends JSR1 PDelay[] array = q.toArray(ints); assertSame(ints, array); Arrays.sort(ints); - for (int i = 0; i < ints.length; i++) - assertSame(ints[i], q.remove()); + for (PDelay o : ints) + assertSame(o, q.remove()); + assertTrue(q.isEmpty()); } /**