775 |
|
* Delayed actions do not occur until their delay elapses |
776 |
|
*/ |
777 |
|
public void testDelay() throws InterruptedException { |
778 |
< |
DelayQueue q = new DelayQueue(); |
779 |
< |
NanoDelay[] elements = new NanoDelay[SIZE]; |
780 |
< |
for (int i = 0; i < SIZE; ++i) { |
781 |
< |
elements[i] = new NanoDelay(1000000000L + 1000000L * (SIZE - i)); |
782 |
< |
} |
783 |
< |
for (int i = 0; i < SIZE; ++i) { |
784 |
< |
q.add(elements[i]); |
785 |
< |
} |
778 |
> |
DelayQueue<NanoDelay> q = new DelayQueue<NanoDelay>(); |
779 |
> |
for (int i = 0; i < SIZE; ++i) |
780 |
> |
q.add(new NanoDelay(1000000L * (SIZE - i))); |
781 |
|
|
782 |
|
long last = 0; |
783 |
|
for (int i = 0; i < SIZE; ++i) { |
784 |
< |
NanoDelay e = (NanoDelay)(q.take()); |
784 |
> |
NanoDelay e = q.take(); |
785 |
|
long tt = e.getTriggerTime(); |
786 |
< |
assertTrue(tt - System.nanoTime() <= 0); |
786 |
> |
assertTrue(System.nanoTime() - tt >= 0); |
787 |
|
if (i != 0) |
788 |
|
assertTrue(tt >= last); |
789 |
|
last = tt; |
790 |
|
} |
791 |
+ |
assertTrue(q.isEmpty()); |
792 |
|
} |
793 |
|
|
794 |
|
/** |
910 |
|
} |
911 |
|
|
912 |
|
/** |
913 |
< |
* drainTo(c, n) empties first max {n, size} elements of queue into c |
913 |
> |
* drainTo(c, n) empties first min(n, size) elements of queue into c |
914 |
|
*/ |
915 |
|
public void testDrainToN() { |
916 |
|
for (int i = 0; i < SIZE + 2; ++i) { |