18f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle/*
28f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle * Written by Doug Lea with assistance from members of JCP JSR-166
38f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle * Expert Group and released to the public domain, as explained at
48f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle * http://creativecommons.org/publicdomain/zero/1.0/
58f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle * Other contributors include Andrew Wright, Jeffrey Hayes,
68f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle * Pat Fisher, Mike Judd.
78f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle */
88f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle
98f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravlepackage jsr166;
108f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle
118f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravleimport junit.framework.*;
128f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravleimport java.util.Arrays;
138f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravleimport java.util.Collection;
148f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravleimport java.util.Comparator;
158f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravleimport java.util.Iterator;
168f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravleimport java.util.NoSuchElementException;
178f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravleimport java.util.PriorityQueue;
188f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravleimport java.util.Queue;
198f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle
208f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravlepublic class PriorityQueueTest extends JSR166TestCase {
218f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle
228f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle    static class MyReverseComparator implements Comparator {
238f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle        public int compare(Object x, Object y) {
248f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle            return ((Comparable)y).compareTo(x);
258f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle        }
268f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle    }
278f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle
288f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle    /**
298f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle     * Returns a new queue of given size containing consecutive
308f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle     * Integers 0 ... n.
318f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle     */
328f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle    private PriorityQueue<Integer> populatedQueue(int n) {
338f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle        PriorityQueue<Integer> q = new PriorityQueue<Integer>(n);
348f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle        assertTrue(q.isEmpty());
358f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle        for (int i = n-1; i >= 0; i-=2)
368f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle            assertTrue(q.offer(new Integer(i)));
378f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle        for (int i = (n & 1); i < n; i+=2)
388f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle            assertTrue(q.offer(new Integer(i)));
398f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle        assertFalse(q.isEmpty());
408f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle        assertEquals(n, q.size());
418f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle        return q;
428f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle    }
438f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle
448f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle    /**
458f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle     * A new queue has unbounded capacity
468f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle     */
478f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle    public void testConstructor1() {
488f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle        assertEquals(0, new PriorityQueue(SIZE).size());
498f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle    }
508f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle
518f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle    /**
528f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle     * Constructor throws IAE if capacity argument nonpositive
538f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle     */
548f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle    public void testConstructor2() {
558f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle        try {
568f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle            PriorityQueue q = new PriorityQueue(0);
578f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle            shouldThrow();
588f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle        } catch (IllegalArgumentException success) {}
598f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle    }
608f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle
618f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle    /**
628f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle     * Initializing from null Collection throws NPE
638f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle     */
648f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle    public void testConstructor3() {
658f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle        try {
668f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle            PriorityQueue q = new PriorityQueue((Collection)null);
678f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle            shouldThrow();
688f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle        } catch (NullPointerException success) {}
698f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle    }
708f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle
718f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle    /**
728f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle     * Initializing from Collection of null elements throws NPE
738f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle     */
748f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle    public void testConstructor4() {
758f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle        try {
768f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle            Integer[] ints = new Integer[SIZE];
778f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle            PriorityQueue q = new PriorityQueue(Arrays.asList(ints));
788f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle            shouldThrow();
798f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle        } catch (NullPointerException success) {}
808f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle    }
818f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle
828f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle    /**
838f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle     * Initializing from Collection with some null elements throws NPE
848f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle     */
858f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle    public void testConstructor5() {
868f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle        try {
878f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle            Integer[] ints = new Integer[SIZE];
888f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle            for (int i = 0; i < SIZE-1; ++i)
898f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle                ints[i] = new Integer(i);
908f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle            PriorityQueue q = new PriorityQueue(Arrays.asList(ints));
918f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle            shouldThrow();
928f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle        } catch (NullPointerException success) {}
938f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle    }
948f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle
958f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle    /**
968f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle     * Queue contains all elements of collection used to initialize
978f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle     */
988f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle    public void testConstructor6() {
998f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle        Integer[] ints = new Integer[SIZE];
1008f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle        for (int i = 0; i < SIZE; ++i)
1018f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle            ints[i] = new Integer(i);
1028f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle        PriorityQueue q = new PriorityQueue(Arrays.asList(ints));
1038f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle        for (int i = 0; i < SIZE; ++i)
1048f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle            assertEquals(ints[i], q.poll());
1058f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle    }
1068f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle
1078f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle    /**
1088f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle     * The comparator used in constructor is used
1098f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle     */
1108f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle    public void testConstructor7() {
1118f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle        MyReverseComparator cmp = new MyReverseComparator();
1128f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle        PriorityQueue q = new PriorityQueue(SIZE, cmp);
1138f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle        assertEquals(cmp, q.comparator());
1148f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle        Integer[] ints = new Integer[SIZE];
1158f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle        for (int i = 0; i < SIZE; ++i)
1168f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle            ints[i] = new Integer(i);
1178f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle        q.addAll(Arrays.asList(ints));
1188f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle        for (int i = SIZE-1; i >= 0; --i)
1198f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle            assertEquals(ints[i], q.poll());
1208f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle    }
1218f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle
1228f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle    /**
1238f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle     * isEmpty is true before add, false after
1248f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle     */
1258f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle    public void testEmpty() {
1268f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle        PriorityQueue q = new PriorityQueue(2);
1278f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle        assertTrue(q.isEmpty());
1288f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle        q.add(new Integer(1));
1298f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle        assertFalse(q.isEmpty());
1308f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle        q.add(new Integer(2));
1318f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle        q.remove();
1328f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle        q.remove();
1338f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle        assertTrue(q.isEmpty());
1348f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle    }
1358f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle
1368f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle    /**
1378f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle     * size changes when elements added and removed
1388f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle     */
1398f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle    public void testSize() {
1408f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle        PriorityQueue q = populatedQueue(SIZE);
1418f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle        for (int i = 0; i < SIZE; ++i) {
1428f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle            assertEquals(SIZE-i, q.size());
1438f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle            q.remove();
1448f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle        }
1458f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle        for (int i = 0; i < SIZE; ++i) {
1468f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle            assertEquals(i, q.size());
1478f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle            q.add(new Integer(i));
1488f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle        }
1498f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle    }
1508f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle
1518f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle    /**
1528f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle     * offer(null) throws NPE
1538f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle     */
1548f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle    public void testOfferNull() {
1558f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle        try {
1568f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle            PriorityQueue q = new PriorityQueue(1);
1578f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle            q.offer(null);
1588f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle            shouldThrow();
1598f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle        } catch (NullPointerException success) {}
1608f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle    }
1618f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle
1628f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle    /**
1638f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle     * add(null) throws NPE
1648f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle     */
1658f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle    public void testAddNull() {
1668f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle        try {
1678f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle            PriorityQueue q = new PriorityQueue(1);
1688f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle            q.add(null);
1698f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle            shouldThrow();
1708f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle        } catch (NullPointerException success) {}
1718f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle    }
1728f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle
1738f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle    /**
1748f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle     * Offer of comparable element succeeds
1758f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle     */
1768f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle    public void testOffer() {
1778f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle        PriorityQueue q = new PriorityQueue(1);
1788f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle        assertTrue(q.offer(zero));
1798f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle        assertTrue(q.offer(one));
1808f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle    }
1818f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle
1828f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle    /**
1838f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle     * Offer of non-Comparable throws CCE
1848f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle     */
1858f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle    public void testOfferNonComparable() {
1868f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle        try {
1878f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle            PriorityQueue q = new PriorityQueue(1);
1888f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle            q.offer(new Object());
1898f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle            q.offer(new Object());
1908f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle            q.offer(new Object());
1918f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle            shouldThrow();
1928f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle        } catch (ClassCastException success) {}
1938f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle    }
1948f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle
1958f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle    /**
1968f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle     * add of comparable succeeds
1978f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle     */
1988f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle    public void testAdd() {
1998f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle        PriorityQueue q = new PriorityQueue(SIZE);
2008f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle        for (int i = 0; i < SIZE; ++i) {
2018f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle            assertEquals(i, q.size());
2028f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle            assertTrue(q.add(new Integer(i)));
2038f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle        }
2048f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle    }
2058f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle
2068f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle    /**
2078f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle     * addAll(null) throws NPE
2088f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle     */
2098f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle    public void testAddAll1() {
2108f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle        try {
2118f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle            PriorityQueue q = new PriorityQueue(1);
2128f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle            q.addAll(null);
2138f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle            shouldThrow();
2148f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle        } catch (NullPointerException success) {}
2158f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle    }
2168f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle
2178f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle    /**
2188f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle     * addAll of a collection with null elements throws NPE
2198f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle     */
2208f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle    public void testAddAll2() {
2218f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle        try {
2228f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle            PriorityQueue q = new PriorityQueue(SIZE);
2238f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle            Integer[] ints = new Integer[SIZE];
2248f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle            q.addAll(Arrays.asList(ints));
2258f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle            shouldThrow();
2268f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle        } catch (NullPointerException success) {}
2278f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle    }
2288f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle
2298f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle    /**
2308f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle     * addAll of a collection with any null elements throws NPE after
2318f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle     * possibly adding some elements
2328f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle     */
2338f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle    public void testAddAll3() {
2348f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle        try {
2358f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle            PriorityQueue q = new PriorityQueue(SIZE);
2368f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle            Integer[] ints = new Integer[SIZE];
2378f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle            for (int i = 0; i < SIZE-1; ++i)
2388f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle                ints[i] = new Integer(i);
2398f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle            q.addAll(Arrays.asList(ints));
2408f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle            shouldThrow();
2418f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle        } catch (NullPointerException success) {}
2428f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle    }
2438f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle
2448f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle    /**
2458f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle     * Queue contains all elements of successful addAll
2468f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle     */
2478f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle    public void testAddAll5() {
2488f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle        Integer[] empty = new Integer[0];
2498f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle        Integer[] ints = new Integer[SIZE];
2508f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle        for (int i = 0; i < SIZE; ++i)
2518f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle            ints[i] = new Integer(SIZE-1-i);
2528f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle        PriorityQueue q = new PriorityQueue(SIZE);
2538f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle        assertFalse(q.addAll(Arrays.asList(empty)));
2548f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle        assertTrue(q.addAll(Arrays.asList(ints)));
2558f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle        for (int i = 0; i < SIZE; ++i)
2568f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle            assertEquals(new Integer(i), q.poll());
2578f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle    }
2588f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle
2598f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle    /**
2608f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle     * poll succeeds unless empty
2618f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle     */
2628f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle    public void testPoll() {
2638f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle        PriorityQueue q = populatedQueue(SIZE);
2648f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle        for (int i = 0; i < SIZE; ++i) {
2658f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle            assertEquals(i, q.poll());
2668f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle        }
2678f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle        assertNull(q.poll());
2688f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle    }
2698f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle
2708f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle    /**
2718f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle     * peek returns next element, or null if empty
2728f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle     */
2738f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle    public void testPeek() {
2748f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle        PriorityQueue q = populatedQueue(SIZE);
2758f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle        for (int i = 0; i < SIZE; ++i) {
2768f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle            assertEquals(i, q.peek());
2778f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle            assertEquals(i, q.poll());
2788f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle            assertTrue(q.peek() == null ||
2798f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle                       !q.peek().equals(i));
2808f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle        }
2818f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle        assertNull(q.peek());
2828f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle    }
2838f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle
2848f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle    /**
2858f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle     * element returns next element, or throws NSEE if empty
2868f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle     */
2878f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle    public void testElement() {
2888f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle        PriorityQueue q = populatedQueue(SIZE);
2898f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle        for (int i = 0; i < SIZE; ++i) {
2908f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle            assertEquals(i, q.element());
2918f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle            assertEquals(i, q.poll());
2928f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle        }
2938f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle        try {
2948f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle            q.element();
2958f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle            shouldThrow();
2968f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle        } catch (NoSuchElementException success) {}
2978f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle    }
2988f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle
2998f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle    /**
3008f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle     * remove removes next element, or throws NSEE if empty
3018f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle     */
3028f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle    public void testRemove() {
3038f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle        PriorityQueue q = populatedQueue(SIZE);
3048f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle        for (int i = 0; i < SIZE; ++i) {
3058f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle            assertEquals(i, q.remove());
3068f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle        }
3078f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle        try {
3088f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle            q.remove();
3098f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle            shouldThrow();
3108f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle        } catch (NoSuchElementException success) {}
3118f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle    }
3128f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle
3138f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle    /**
3148f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle     * remove(x) removes x and returns true if present
3158f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle     */
3168f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle    public void testRemoveElement() {
3178f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle        PriorityQueue q = populatedQueue(SIZE);
3188f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle        for (int i = 1; i < SIZE; i+=2) {
3198f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle            assertTrue(q.contains(i));
3208f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle            assertTrue(q.remove(i));
3218f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle            assertFalse(q.contains(i));
3228f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle            assertTrue(q.contains(i-1));
3238f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle        }
3248f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle        for (int i = 0; i < SIZE; i+=2) {
3258f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle            assertTrue(q.contains(i));
3268f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle            assertTrue(q.remove(i));
3278f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle            assertFalse(q.contains(i));
3288f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle            assertFalse(q.remove(i+1));
3298f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle            assertFalse(q.contains(i+1));
3308f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle        }
3318f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle        assertTrue(q.isEmpty());
3328f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle    }
3338f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle
3348f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle    /**
3358f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle     * contains(x) reports true when elements added but not yet removed
3368f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle     */
3378f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle    public void testContains() {
3388f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle        PriorityQueue q = populatedQueue(SIZE);
3398f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle        for (int i = 0; i < SIZE; ++i) {
3408f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle            assertTrue(q.contains(new Integer(i)));
3418f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle            q.poll();
3428f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle            assertFalse(q.contains(new Integer(i)));
3438f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle        }
3448f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle    }
3458f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle
3468f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle    /**
3478f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle     * clear removes all elements
3488f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle     */
3498f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle    public void testClear() {
3508f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle        PriorityQueue q = populatedQueue(SIZE);
3518f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle        q.clear();
3528f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle        assertTrue(q.isEmpty());
3538f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle        assertEquals(0, q.size());
3548f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle        q.add(new Integer(1));
3558f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle        assertFalse(q.isEmpty());
3568f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle        q.clear();
3578f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle        assertTrue(q.isEmpty());
3588f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle    }
3598f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle
3608f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle    /**
3618f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle     * containsAll(c) is true when c contains a subset of elements
3628f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle     */
3638f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle    public void testContainsAll() {
3648f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle        PriorityQueue q = populatedQueue(SIZE);
3658f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle        PriorityQueue p = new PriorityQueue(SIZE);
3668f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle        for (int i = 0; i < SIZE; ++i) {
3678f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle            assertTrue(q.containsAll(p));
3688f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle            assertFalse(p.containsAll(q));
3698f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle            p.add(new Integer(i));
3708f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle        }
3718f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle        assertTrue(p.containsAll(q));
3728f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle    }
3738f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle
3748f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle    /**
3758f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle     * retainAll(c) retains only those elements of c and reports true if changed
3768f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle     */
3778f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle    public void testRetainAll() {
3788f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle        PriorityQueue q = populatedQueue(SIZE);
3798f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle        PriorityQueue p = populatedQueue(SIZE);
3808f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle        for (int i = 0; i < SIZE; ++i) {
3818f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle            boolean changed = q.retainAll(p);
3828f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle            if (i == 0)
3838f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle                assertFalse(changed);
3848f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle            else
3858f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle                assertTrue(changed);
3868f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle
3878f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle            assertTrue(q.containsAll(p));
3888f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle            assertEquals(SIZE-i, q.size());
3898f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle            p.remove();
3908f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle        }
3918f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle    }
3928f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle
3938f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle    /**
3948f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle     * removeAll(c) removes only those elements of c and reports true if changed
3958f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle     */
3968f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle    public void testRemoveAll() {
3978f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle        for (int i = 1; i < SIZE; ++i) {
3988f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle            PriorityQueue q = populatedQueue(SIZE);
3998f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle            PriorityQueue p = populatedQueue(i);
4008f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle            assertTrue(q.removeAll(p));
4018f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle            assertEquals(SIZE-i, q.size());
4028f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle            for (int j = 0; j < i; ++j) {
4038f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle                Integer I = (Integer)(p.remove());
4048f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle                assertFalse(q.contains(I));
4058f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle            }
4068f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle        }
4078f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle    }
4088f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle
4098f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle    /**
4108f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle     * toArray contains all elements
4118f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle     */
4128f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle    public void testToArray() {
4138f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle        PriorityQueue q = populatedQueue(SIZE);
4148f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle        Object[] o = q.toArray();
4158f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle        Arrays.sort(o);
4168f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle        for (int i = 0; i < o.length; i++)
4178f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle            assertSame(o[i], q.poll());
4188f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle    }
4198f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle
4208f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle    /**
4218f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle     * toArray(a) contains all elements
4228f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle     */
4238f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle    public void testToArray2() {
4248f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle        PriorityQueue<Integer> q = populatedQueue(SIZE);
4258f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle        Integer[] ints = new Integer[SIZE];
4268f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle        Integer[] array = q.toArray(ints);
4278f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle        assertSame(ints, array);
4288f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle        Arrays.sort(ints);
4298f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle        for (int i = 0; i < ints.length; i++)
4308f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle            assertSame(ints[i], q.poll());
4318f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle    }
4328f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle
4338f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle    /**
4348f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle     * iterator iterates through all elements
4358f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle     */
4368f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle    public void testIterator() {
4378f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle        PriorityQueue q = populatedQueue(SIZE);
4388f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle        int i = 0;
4398f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle        Iterator it = q.iterator();
4408f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle        while (it.hasNext()) {
4418f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle            assertTrue(q.contains(it.next()));
4428f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle            ++i;
4438f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle        }
4448f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle        assertEquals(i, SIZE);
4458f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle    }
4468f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle
4478f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle    /**
4488f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle     * iterator.remove removes current element
4498f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle     */
4508f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle    public void testIteratorRemove() {
4518f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle        final PriorityQueue q = new PriorityQueue(3);
4528f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle        q.add(new Integer(2));
4538f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle        q.add(new Integer(1));
4548f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle        q.add(new Integer(3));
4558f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle
4568f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle        Iterator it = q.iterator();
4578f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle        it.next();
4588f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle        it.remove();
4598f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle
4608f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle        it = q.iterator();
4618f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle        assertEquals(it.next(), new Integer(2));
4628f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle        assertEquals(it.next(), new Integer(3));
4638f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle        assertFalse(it.hasNext());
4648f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle    }
4658f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle
4668f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle    /**
4678f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle     * toString contains toStrings of elements
4688f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle     */
4698f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle    public void testToString() {
4708f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle        PriorityQueue q = populatedQueue(SIZE);
4718f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle        String s = q.toString();
4728f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle        for (int i = 0; i < SIZE; ++i) {
4738f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle            assertTrue(s.contains(String.valueOf(i)));
4748f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle        }
4758f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle    }
4768f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle
4778f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle    /**
4788f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle     * A deserialized serialized queue has same elements
4798f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle     */
4808f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle    public void testSerialization() throws Exception {
4818f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle        Queue x = populatedQueue(SIZE);
4828f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle        Queue y = serialClone(x);
4838f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle
4848f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle        assertNotSame(x, y);
4858f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle        assertEquals(x.size(), y.size());
4868f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle        while (!x.isEmpty()) {
4878f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle            assertFalse(y.isEmpty());
4888f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle            assertEquals(x.remove(), y.remove());
4898f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle        }
4908f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle        assertTrue(y.isEmpty());
4918f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle    }
4928f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle}
493