8 |
|
import java.util.ArrayDeque; |
9 |
|
import java.util.Arrays; |
10 |
|
import java.util.Collection; |
11 |
– |
import java.util.Collections; |
11 |
|
import java.util.Deque; |
12 |
|
import java.util.Iterator; |
13 |
|
import java.util.NoSuchElementException; |
16 |
|
import java.util.concurrent.ThreadLocalRandom; |
17 |
|
|
18 |
|
import junit.framework.Test; |
20 |
– |
import junit.framework.TestSuite; |
19 |
|
|
20 |
|
public class ArrayDequeTest extends JSR166TestCase { |
21 |
|
public static void main(String[] args) { |
40 |
|
*/ |
41 |
|
private static ArrayDeque<Integer> populatedDeque(int n) { |
42 |
|
// Randomize various aspects of memory layout, including |
43 |
< |
// filled-to-capacity and wraparound. |
43 |
> |
// capacity slop and wraparound. |
44 |
|
final ArrayDeque<Integer> q; |
45 |
|
ThreadLocalRandom rnd = ThreadLocalRandom.current(); |
46 |
|
switch (rnd.nextInt(6)) { |
570 |
|
* removeFirstOccurrence(x) removes x and returns true if present |
571 |
|
*/ |
572 |
|
public void testRemoveFirstOccurrence() { |
573 |
< |
ArrayDeque q = populatedDeque(SIZE); |
573 |
> |
Deque<Integer> q = populatedDeque(SIZE); |
574 |
|
assertFalse(q.removeFirstOccurrence(null)); |
575 |
|
for (int i = 1; i < SIZE; i += 2) { |
576 |
< |
assertTrue(q.removeFirstOccurrence(new Integer(i))); |
576 |
> |
assertTrue(q.removeFirstOccurrence(i)); |
577 |
> |
assertFalse(q.contains(i)); |
578 |
|
} |
579 |
|
for (int i = 0; i < SIZE; i += 2) { |
580 |
< |
assertTrue(q.removeFirstOccurrence(new Integer(i))); |
581 |
< |
assertFalse(q.removeFirstOccurrence(new Integer(i + 1))); |
580 |
> |
assertTrue(q.removeFirstOccurrence(i)); |
581 |
> |
assertFalse(q.removeFirstOccurrence(i + 1)); |
582 |
> |
assertFalse(q.contains(i)); |
583 |
> |
assertFalse(q.contains(i + 1)); |
584 |
|
} |
585 |
|
assertTrue(q.isEmpty()); |
586 |
|
assertFalse(q.removeFirstOccurrence(null)); |
594 |
|
* removeLastOccurrence(x) removes x and returns true if present |
595 |
|
*/ |
596 |
|
public void testRemoveLastOccurrence() { |
597 |
< |
ArrayDeque q = populatedDeque(SIZE); |
597 |
> |
Deque<Integer> q = populatedDeque(SIZE); |
598 |
|
assertFalse(q.removeLastOccurrence(null)); |
599 |
|
for (int i = 1; i < SIZE; i += 2) { |
600 |
< |
assertTrue(q.removeLastOccurrence(new Integer(i))); |
600 |
> |
assertTrue(q.removeLastOccurrence(i)); |
601 |
> |
assertFalse(q.contains(i)); |
602 |
|
} |
603 |
|
for (int i = 0; i < SIZE; i += 2) { |
604 |
< |
assertTrue(q.removeLastOccurrence(new Integer(i))); |
605 |
< |
assertFalse(q.removeLastOccurrence(new Integer(i + 1))); |
604 |
> |
assertTrue(q.removeLastOccurrence(i)); |
605 |
> |
assertFalse(q.removeLastOccurrence(i + 1)); |
606 |
> |
assertFalse(q.contains(i)); |
607 |
> |
assertFalse(q.contains(i + 1)); |
608 |
|
} |
609 |
|
assertTrue(q.isEmpty()); |
610 |
|
assertFalse(q.removeLastOccurrence(null)); |
745 |
|
ArrayDeque l = new ArrayDeque(); |
746 |
|
l.add(new Object()); |
747 |
|
try { |
748 |
< |
l.toArray(null); |
748 |
> |
l.toArray((Object[])null); |
749 |
|
shouldThrow(); |
750 |
|
} catch (NullPointerException success) {} |
751 |
|
} |
912 |
|
} |
913 |
|
|
914 |
|
/** |
915 |
< |
* A deserialized serialized deque has same elements in same order |
915 |
> |
* A deserialized/reserialized deque has same elements in same order |
916 |
|
*/ |
917 |
|
public void testSerialization() throws Exception { |
918 |
|
Queue x = populatedDeque(SIZE); |
921 |
|
assertNotSame(y, x); |
922 |
|
assertEquals(x.size(), y.size()); |
923 |
|
assertEquals(x.toString(), y.toString()); |
924 |
+ |
assertEquals(Arrays.toString(x.toArray()), Arrays.toString(y.toArray())); |
925 |
|
assertTrue(Arrays.equals(x.toArray(), y.toArray())); |
926 |
|
while (!x.isEmpty()) { |
927 |
|
assertFalse(y.isEmpty()); |