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 */ 68f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle 78f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravlepackage jsr166; 88f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle 98f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravleimport java.util.Arrays; 108f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravleimport java.util.Comparator; 118f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravleimport java.util.Iterator; 128f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravleimport java.util.NavigableSet; 138f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravleimport java.util.SortedSet; 148f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravleimport java.util.concurrent.ConcurrentSkipListSet; 158f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle 168e9a0e92906742b17eb08d7fb83cca91965f9b8eNarayan Kamathimport junit.framework.Test; 178e9a0e92906742b17eb08d7fb83cca91965f9b8eNarayan Kamathimport junit.framework.TestSuite; 188e9a0e92906742b17eb08d7fb83cca91965f9b8eNarayan Kamath 198f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravlepublic class ConcurrentSkipListSubSetTest extends JSR166TestCase { 208e9a0e92906742b17eb08d7fb83cca91965f9b8eNarayan Kamath // android-note: Removed because the CTS runner does a bad job of 218e9a0e92906742b17eb08d7fb83cca91965f9b8eNarayan Kamath // retrying tests that have suite() declarations. 228e9a0e92906742b17eb08d7fb83cca91965f9b8eNarayan Kamath // 238e9a0e92906742b17eb08d7fb83cca91965f9b8eNarayan Kamath // public static void main(String[] args) { 248e9a0e92906742b17eb08d7fb83cca91965f9b8eNarayan Kamath // main(suite(), args); 258e9a0e92906742b17eb08d7fb83cca91965f9b8eNarayan Kamath // } 268e9a0e92906742b17eb08d7fb83cca91965f9b8eNarayan Kamath // public static Test suite() { 27e8b323c7cb7d55be9a4df579231e44f04f53d766Przemyslaw Szczepaniak // return new TestSuite(ConcurrentSkipListSubSetTest.class); 288e9a0e92906742b17eb08d7fb83cca91965f9b8eNarayan Kamath // } 298f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle 308f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle static class MyReverseComparator implements Comparator { 318f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle public int compare(Object x, Object y) { 328f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle return ((Comparable)y).compareTo(x); 338f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle } 348f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle } 358f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle 368f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle /** 378f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle * Returns a new set of given size containing consecutive 388f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle * Integers 0 ... n. 398f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle */ 408f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle private NavigableSet<Integer> populatedSet(int n) { 418f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle ConcurrentSkipListSet<Integer> q = 428f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle new ConcurrentSkipListSet<Integer>(); 438f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertTrue(q.isEmpty()); 448f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle 45e8b323c7cb7d55be9a4df579231e44f04f53d766Przemyslaw Szczepaniak for (int i = n - 1; i >= 0; i -= 2) 468f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertTrue(q.add(new Integer(i))); 478e9a0e92906742b17eb08d7fb83cca91965f9b8eNarayan Kamath for (int i = (n & 1); i < n; i += 2) 488f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertTrue(q.add(new Integer(i))); 498f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertTrue(q.add(new Integer(-n))); 508f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertTrue(q.add(new Integer(n))); 518f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle NavigableSet s = q.subSet(new Integer(0), true, new Integer(n), false); 528f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertFalse(s.isEmpty()); 538f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertEquals(n, s.size()); 548f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle return s; 558f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle } 568f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle 578f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle /** 588f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle * Returns a new set of first 5 ints. 598f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle */ 608f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle private NavigableSet set5() { 618f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle ConcurrentSkipListSet q = new ConcurrentSkipListSet(); 628f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertTrue(q.isEmpty()); 638f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle q.add(one); 648f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle q.add(two); 658f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle q.add(three); 668f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle q.add(four); 678f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle q.add(five); 688f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle q.add(zero); 698f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle q.add(seven); 708f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle NavigableSet s = q.subSet(one, true, seven, false); 718f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertEquals(5, s.size()); 728f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle return s; 738f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle } 748f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle 758f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle /** 768f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle * Returns a new set of first 5 negative ints. 778f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle */ 788f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle private NavigableSet dset5() { 798f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle ConcurrentSkipListSet q = new ConcurrentSkipListSet(); 808f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertTrue(q.isEmpty()); 818f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle q.add(m1); 828f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle q.add(m2); 838f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle q.add(m3); 848f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle q.add(m4); 858f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle q.add(m5); 868f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle NavigableSet s = q.descendingSet(); 878f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertEquals(5, s.size()); 888f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle return s; 898f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle } 908f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle 918f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle private static NavigableSet set0() { 928f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle ConcurrentSkipListSet set = new ConcurrentSkipListSet(); 938f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertTrue(set.isEmpty()); 948f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle return set.tailSet(m1, true); 958f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle } 968f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle 978f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle private static NavigableSet dset0() { 988f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle ConcurrentSkipListSet set = new ConcurrentSkipListSet(); 998f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertTrue(set.isEmpty()); 1008f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle return set; 1018f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle } 1028f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle 1038f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle /** 1048f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle * A new set has unbounded capacity 1058f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle */ 1068f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle public void testConstructor1() { 1078f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertEquals(0, set0().size()); 1088f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle } 1098f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle 1108f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle /** 1118f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle * isEmpty is true before add, false after 1128f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle */ 1138f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle public void testEmpty() { 1148f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle NavigableSet q = set0(); 1158f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertTrue(q.isEmpty()); 1168f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle q.add(new Integer(1)); 1178f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertFalse(q.isEmpty()); 1188f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle q.add(new Integer(2)); 1198f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle q.pollFirst(); 1208f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle q.pollFirst(); 1218f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertTrue(q.isEmpty()); 1228f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle } 1238f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle 1248f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle /** 1258f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle * size changes when elements added and removed 1268f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle */ 1278f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle public void testSize() { 1288f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle NavigableSet q = populatedSet(SIZE); 1298f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle for (int i = 0; i < SIZE; ++i) { 130e8b323c7cb7d55be9a4df579231e44f04f53d766Przemyslaw Szczepaniak assertEquals(SIZE - i, q.size()); 1318f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle q.pollFirst(); 1328f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle } 1338f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle for (int i = 0; i < SIZE; ++i) { 1348f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertEquals(i, q.size()); 1358f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle q.add(new Integer(i)); 1368f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle } 1378f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle } 1388f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle 1398f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle /** 1408f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle * add(null) throws NPE 1418f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle */ 1428f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle public void testAddNull() { 1438e9a0e92906742b17eb08d7fb83cca91965f9b8eNarayan Kamath NavigableSet q = set0(); 1448f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle try { 1458f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle q.add(null); 1468f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle shouldThrow(); 1478f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle } catch (NullPointerException success) {} 1488f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle } 1498f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle 1508f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle /** 1518f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle * Add of comparable element succeeds 1528f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle */ 1538f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle public void testAdd() { 1548f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle NavigableSet q = set0(); 1558f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertTrue(q.add(six)); 1568f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle } 1578f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle 1588f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle /** 1598f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle * Add of duplicate element fails 1608f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle */ 1618f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle public void testAddDup() { 1628f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle NavigableSet q = set0(); 1638f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertTrue(q.add(six)); 1648f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertFalse(q.add(six)); 1658f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle } 1668f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle 1678f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle /** 1688f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle * Add of non-Comparable throws CCE 1698f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle */ 1708f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle public void testAddNonComparable() { 1718e9a0e92906742b17eb08d7fb83cca91965f9b8eNarayan Kamath NavigableSet q = set0(); 1728f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle try { 1738f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle q.add(new Object()); 1748f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle q.add(new Object()); 1758f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle shouldThrow(); 1768f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle } catch (ClassCastException success) {} 1778f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle } 1788f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle 1798f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle /** 1808f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle * addAll(null) throws NPE 1818f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle */ 1828f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle public void testAddAll1() { 1838e9a0e92906742b17eb08d7fb83cca91965f9b8eNarayan Kamath NavigableSet q = set0(); 1848f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle try { 1858f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle q.addAll(null); 1868f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle shouldThrow(); 1878f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle } catch (NullPointerException success) {} 1888f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle } 1898f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle 1908f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle /** 1918f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle * addAll of a collection with null elements throws NPE 1928f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle */ 1938f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle public void testAddAll2() { 1948e9a0e92906742b17eb08d7fb83cca91965f9b8eNarayan Kamath NavigableSet q = set0(); 1958e9a0e92906742b17eb08d7fb83cca91965f9b8eNarayan Kamath Integer[] ints = new Integer[SIZE]; 1968f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle try { 1978f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle q.addAll(Arrays.asList(ints)); 1988f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle shouldThrow(); 1998f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle } catch (NullPointerException success) {} 2008f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle } 2018f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle 2028f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle /** 2038f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle * addAll of a collection with any null elements throws NPE after 2048f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle * possibly adding some elements 2058f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle */ 2068f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle public void testAddAll3() { 2078e9a0e92906742b17eb08d7fb83cca91965f9b8eNarayan Kamath NavigableSet q = set0(); 2088e9a0e92906742b17eb08d7fb83cca91965f9b8eNarayan Kamath Integer[] ints = new Integer[SIZE]; 209e8b323c7cb7d55be9a4df579231e44f04f53d766Przemyslaw Szczepaniak for (int i = 0; i < SIZE - 1; ++i) 210e8b323c7cb7d55be9a4df579231e44f04f53d766Przemyslaw Szczepaniak ints[i] = new Integer(i + SIZE); 2118f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle try { 2128f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle q.addAll(Arrays.asList(ints)); 2138f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle shouldThrow(); 2148f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle } catch (NullPointerException success) {} 2158f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle } 2168f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle 2178f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle /** 2188f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle * Set contains all elements of successful addAll 2198f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle */ 2208f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle public void testAddAll5() { 2218f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle Integer[] empty = new Integer[0]; 2228f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle Integer[] ints = new Integer[SIZE]; 2238f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle for (int i = 0; i < SIZE; ++i) 224e8b323c7cb7d55be9a4df579231e44f04f53d766Przemyslaw Szczepaniak ints[i] = new Integer(SIZE - 1 - i); 2258f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle NavigableSet q = set0(); 2268f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertFalse(q.addAll(Arrays.asList(empty))); 2278f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertTrue(q.addAll(Arrays.asList(ints))); 2288f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle for (int i = 0; i < SIZE; ++i) 2298f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertEquals(new Integer(i), q.pollFirst()); 2308f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle } 2318f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle 2328f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle /** 2338f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle * poll succeeds unless empty 2348f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle */ 2358f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle public void testPoll() { 2368f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle NavigableSet q = populatedSet(SIZE); 2378f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle for (int i = 0; i < SIZE; ++i) { 2388f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertEquals(i, q.pollFirst()); 2398f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle } 2408f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertNull(q.pollFirst()); 2418f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle } 2428f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle 2438f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle /** 2448f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle * remove(x) removes x and returns true if present 2458f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle */ 2468f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle public void testRemoveElement() { 2478f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle NavigableSet q = populatedSet(SIZE); 2488e9a0e92906742b17eb08d7fb83cca91965f9b8eNarayan Kamath for (int i = 1; i < SIZE; i += 2) { 2498f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertTrue(q.contains(i)); 2508f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertTrue(q.remove(i)); 2518f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertFalse(q.contains(i)); 252e8b323c7cb7d55be9a4df579231e44f04f53d766Przemyslaw Szczepaniak assertTrue(q.contains(i - 1)); 2538f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle } 2548e9a0e92906742b17eb08d7fb83cca91965f9b8eNarayan Kamath for (int i = 0; i < SIZE; i += 2) { 2558f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertTrue(q.contains(i)); 2568f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertTrue(q.remove(i)); 2578f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertFalse(q.contains(i)); 258e8b323c7cb7d55be9a4df579231e44f04f53d766Przemyslaw Szczepaniak assertFalse(q.remove(i + 1)); 259e8b323c7cb7d55be9a4df579231e44f04f53d766Przemyslaw Szczepaniak assertFalse(q.contains(i + 1)); 2608f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle } 2618f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertTrue(q.isEmpty()); 2628f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle } 2638f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle 2648f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle /** 2658f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle * contains(x) reports true when elements added but not yet removed 2668f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle */ 2678f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle public void testContains() { 2688f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle NavigableSet q = populatedSet(SIZE); 2698f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle for (int i = 0; i < SIZE; ++i) { 2708f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertTrue(q.contains(new Integer(i))); 2718f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle q.pollFirst(); 2728f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertFalse(q.contains(new Integer(i))); 2738f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle } 2748f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle } 2758f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle 2768f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle /** 2778f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle * clear removes all elements 2788f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle */ 2798f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle public void testClear() { 2808f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle NavigableSet q = populatedSet(SIZE); 2818f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle q.clear(); 2828f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertTrue(q.isEmpty()); 2838f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertEquals(0, q.size()); 2848f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle q.add(new Integer(1)); 2858f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertFalse(q.isEmpty()); 2868f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle q.clear(); 2878f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertTrue(q.isEmpty()); 2888f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle } 2898f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle 2908f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle /** 2918f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle * containsAll(c) is true when c contains a subset of elements 2928f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle */ 2938f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle public void testContainsAll() { 2948f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle NavigableSet q = populatedSet(SIZE); 2958f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle NavigableSet p = set0(); 2968f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle for (int i = 0; i < SIZE; ++i) { 2978f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertTrue(q.containsAll(p)); 2988f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertFalse(p.containsAll(q)); 2998f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle p.add(new Integer(i)); 3008f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle } 3018f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertTrue(p.containsAll(q)); 3028f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle } 3038f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle 3048f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle /** 3058f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle * retainAll(c) retains only those elements of c and reports true if changed 3068f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle */ 3078f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle public void testRetainAll() { 3088f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle NavigableSet q = populatedSet(SIZE); 3098f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle NavigableSet p = populatedSet(SIZE); 3108f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle for (int i = 0; i < SIZE; ++i) { 3118f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle boolean changed = q.retainAll(p); 3128f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle if (i == 0) 3138f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertFalse(changed); 3148f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle else 3158f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertTrue(changed); 3168f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle 3178f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertTrue(q.containsAll(p)); 318e8b323c7cb7d55be9a4df579231e44f04f53d766Przemyslaw Szczepaniak assertEquals(SIZE - i, q.size()); 3198f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle p.pollFirst(); 3208f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle } 3218f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle } 3228f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle 3238f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle /** 3248f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle * removeAll(c) removes only those elements of c and reports true if changed 3258f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle */ 3268f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle public void testRemoveAll() { 3278f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle for (int i = 1; i < SIZE; ++i) { 3288f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle NavigableSet q = populatedSet(SIZE); 3298f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle NavigableSet p = populatedSet(i); 3308f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertTrue(q.removeAll(p)); 331e8b323c7cb7d55be9a4df579231e44f04f53d766Przemyslaw Szczepaniak assertEquals(SIZE - i, q.size()); 3328f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle for (int j = 0; j < i; ++j) { 3338e9a0e92906742b17eb08d7fb83cca91965f9b8eNarayan Kamath Integer x = (Integer)(p.pollFirst()); 3348e9a0e92906742b17eb08d7fb83cca91965f9b8eNarayan Kamath assertFalse(q.contains(x)); 3358f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle } 3368f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle } 3378f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle } 3388f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle 3398f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle /** 3408f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle * lower returns preceding element 3418f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle */ 3428f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle public void testLower() { 3438f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle NavigableSet q = set5(); 3448f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle Object e1 = q.lower(three); 3458f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertEquals(two, e1); 3468f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle 3478f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle Object e2 = q.lower(six); 3488f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertEquals(five, e2); 3498f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle 3508f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle Object e3 = q.lower(one); 3518f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertNull(e3); 3528f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle 3538f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle Object e4 = q.lower(zero); 3548f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertNull(e4); 3558f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle } 3568f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle 3578f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle /** 3588f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle * higher returns next element 3598f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle */ 3608f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle public void testHigher() { 3618f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle NavigableSet q = set5(); 3628f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle Object e1 = q.higher(three); 3638f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertEquals(four, e1); 3648f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle 3658f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle Object e2 = q.higher(zero); 3668f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertEquals(one, e2); 3678f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle 3688f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle Object e3 = q.higher(five); 3698f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertNull(e3); 3708f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle 3718f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle Object e4 = q.higher(six); 3728f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertNull(e4); 3738f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle } 3748f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle 3758f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle /** 3768f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle * floor returns preceding element 3778f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle */ 3788f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle public void testFloor() { 3798f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle NavigableSet q = set5(); 3808f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle Object e1 = q.floor(three); 3818f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertEquals(three, e1); 3828f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle 3838f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle Object e2 = q.floor(six); 3848f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertEquals(five, e2); 3858f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle 3868f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle Object e3 = q.floor(one); 3878f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertEquals(one, e3); 3888f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle 3898f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle Object e4 = q.floor(zero); 3908f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertNull(e4); 3918f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle } 3928f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle 3938f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle /** 3948f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle * ceiling returns next element 3958f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle */ 3968f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle public void testCeiling() { 3978f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle NavigableSet q = set5(); 3988f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle Object e1 = q.ceiling(three); 3998f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertEquals(three, e1); 4008f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle 4018f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle Object e2 = q.ceiling(zero); 4028f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertEquals(one, e2); 4038f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle 4048f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle Object e3 = q.ceiling(five); 4058f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertEquals(five, e3); 4068f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle 4078f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle Object e4 = q.ceiling(six); 4088f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertNull(e4); 4098f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle } 4108f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle 4118f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle /** 4128f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle * toArray contains all elements in sorted order 4138f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle */ 4148f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle public void testToArray() { 4158f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle NavigableSet q = populatedSet(SIZE); 4168f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle Object[] o = q.toArray(); 4178f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle for (int i = 0; i < o.length; i++) 4188f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertSame(o[i], q.pollFirst()); 4198f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle } 4208f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle 4218f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle /** 4228f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle * toArray(a) contains all elements in sorted order 4238f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle */ 4248f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle public void testToArray2() { 4258f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle NavigableSet<Integer> q = populatedSet(SIZE); 4268f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle Integer[] ints = new Integer[SIZE]; 4278f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle Integer[] array = q.toArray(ints); 4288f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertSame(ints, array); 4298f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle for (int i = 0; i < ints.length; i++) 4308f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertSame(ints[i], q.pollFirst()); 4318f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle } 4328f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle 4338f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle /** 4348f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle * iterator iterates through all elements 4358f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle */ 4368f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle public void testIterator() { 4378f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle NavigableSet q = populatedSet(SIZE); 4388f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle Iterator it = q.iterator(); 4398e9a0e92906742b17eb08d7fb83cca91965f9b8eNarayan Kamath int i; 4408e9a0e92906742b17eb08d7fb83cca91965f9b8eNarayan Kamath for (i = 0; it.hasNext(); i++) 4418f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertTrue(q.contains(it.next())); 4428f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertEquals(i, SIZE); 4438e9a0e92906742b17eb08d7fb83cca91965f9b8eNarayan Kamath assertIteratorExhausted(it); 4448f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle } 4458f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle 4468f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle /** 4478f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle * iterator of empty set has no elements 4488f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle */ 4498f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle public void testEmptyIterator() { 4508e9a0e92906742b17eb08d7fb83cca91965f9b8eNarayan Kamath assertIteratorExhausted(set0().iterator()); 4518f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle } 4528f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle 4538f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle /** 4548f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle * iterator.remove removes current element 4558f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle */ 4568f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle public void testIteratorRemove() { 4578f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle final NavigableSet q = set0(); 4588f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle q.add(new Integer(2)); 4598f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle q.add(new Integer(1)); 4608f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle q.add(new Integer(3)); 4618f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle 4628f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle Iterator it = q.iterator(); 4638f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle it.next(); 4648f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle it.remove(); 4658f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle 4668f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle it = q.iterator(); 4678f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertEquals(it.next(), new Integer(2)); 4688f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertEquals(it.next(), new Integer(3)); 4698f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertFalse(it.hasNext()); 4708f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle } 4718f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle 4728f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle /** 4738f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle * toString contains toStrings of elements 4748f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle */ 4758f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle public void testToString() { 4768f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle NavigableSet q = populatedSet(SIZE); 4778f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle String s = q.toString(); 4788f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle for (int i = 0; i < SIZE; ++i) { 4798f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertTrue(s.contains(String.valueOf(i))); 4808f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle } 4818f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle } 4828f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle 4838f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle /** 4848f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle * A deserialized serialized set has same elements 4858f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle */ 4868f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle public void testSerialization() throws Exception { 4878f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle NavigableSet x = populatedSet(SIZE); 4888f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle NavigableSet y = serialClone(x); 4898f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle 4908f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertNotSame(y, x); 4918f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertEquals(x.size(), y.size()); 4928f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertEquals(x, y); 4938f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertEquals(y, x); 4948f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle while (!x.isEmpty()) { 4958f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertFalse(y.isEmpty()); 4968f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertEquals(x.pollFirst(), y.pollFirst()); 4978f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle } 4988f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertTrue(y.isEmpty()); 4998f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle } 5008f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle 5018f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle /** 5028f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle * subSet returns set with keys in requested range 5038f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle */ 5048f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle public void testSubSetContents() { 5058f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle NavigableSet set = set5(); 5068f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle SortedSet sm = set.subSet(two, four); 5078f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertEquals(two, sm.first()); 5088f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertEquals(three, sm.last()); 5098f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertEquals(2, sm.size()); 5108f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertFalse(sm.contains(one)); 5118f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertTrue(sm.contains(two)); 5128f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertTrue(sm.contains(three)); 5138f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertFalse(sm.contains(four)); 5148f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertFalse(sm.contains(five)); 5158f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle Iterator i = sm.iterator(); 5168f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle Object k; 5178f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle k = (Integer)(i.next()); 5188f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertEquals(two, k); 5198f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle k = (Integer)(i.next()); 5208f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertEquals(three, k); 5218f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertFalse(i.hasNext()); 5228f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle Iterator j = sm.iterator(); 5238f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle j.next(); 5248f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle j.remove(); 5258f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertFalse(set.contains(two)); 5268f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertEquals(4, set.size()); 5278f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertEquals(1, sm.size()); 5288f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertEquals(three, sm.first()); 5298f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertEquals(three, sm.last()); 5308f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertTrue(sm.remove(three)); 5318f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertTrue(sm.isEmpty()); 5328f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertEquals(3, set.size()); 5338f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle } 5348f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle 5358f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle public void testSubSetContents2() { 5368f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle NavigableSet set = set5(); 5378f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle SortedSet sm = set.subSet(two, three); 5388f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertEquals(1, sm.size()); 5398f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertEquals(two, sm.first()); 5408f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertEquals(two, sm.last()); 5418f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertFalse(sm.contains(one)); 5428f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertTrue(sm.contains(two)); 5438f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertFalse(sm.contains(three)); 5448f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertFalse(sm.contains(four)); 5458f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertFalse(sm.contains(five)); 5468f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle Iterator i = sm.iterator(); 5478f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle Object k; 5488f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle k = (Integer)(i.next()); 5498f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertEquals(two, k); 5508f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertFalse(i.hasNext()); 5518f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle Iterator j = sm.iterator(); 5528f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle j.next(); 5538f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle j.remove(); 5548f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertFalse(set.contains(two)); 5558f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertEquals(4, set.size()); 5568f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertEquals(0, sm.size()); 5578f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertTrue(sm.isEmpty()); 5588f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertFalse(sm.remove(three)); 5598f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertEquals(4, set.size()); 5608f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle } 5618f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle 5628f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle /** 5638f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle * headSet returns set with keys in requested range 5648f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle */ 5658f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle public void testHeadSetContents() { 5668f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle NavigableSet set = set5(); 5678f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle SortedSet sm = set.headSet(four); 5688f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertTrue(sm.contains(one)); 5698f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertTrue(sm.contains(two)); 5708f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertTrue(sm.contains(three)); 5718f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertFalse(sm.contains(four)); 5728f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertFalse(sm.contains(five)); 5738f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle Iterator i = sm.iterator(); 5748f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle Object k; 5758f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle k = (Integer)(i.next()); 5768f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertEquals(one, k); 5778f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle k = (Integer)(i.next()); 5788f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertEquals(two, k); 5798f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle k = (Integer)(i.next()); 5808f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertEquals(three, k); 5818f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertFalse(i.hasNext()); 5828f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle sm.clear(); 5838f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertTrue(sm.isEmpty()); 5848f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertEquals(2, set.size()); 5858f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertEquals(four, set.first()); 5868f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle } 5878f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle 5888f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle /** 5898f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle * tailSet returns set with keys in requested range 5908f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle */ 5918f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle public void testTailSetContents() { 5928f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle NavigableSet set = set5(); 5938f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle SortedSet sm = set.tailSet(two); 5948f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertFalse(sm.contains(one)); 5958f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertTrue(sm.contains(two)); 5968f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertTrue(sm.contains(three)); 5978f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertTrue(sm.contains(four)); 5988f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertTrue(sm.contains(five)); 5998f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle Iterator i = sm.iterator(); 6008f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle Object k; 6018f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle k = (Integer)(i.next()); 6028f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertEquals(two, k); 6038f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle k = (Integer)(i.next()); 6048f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertEquals(three, k); 6058f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle k = (Integer)(i.next()); 6068f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertEquals(four, k); 6078f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle k = (Integer)(i.next()); 6088f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertEquals(five, k); 6098f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertFalse(i.hasNext()); 6108f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle 6118f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle SortedSet ssm = sm.tailSet(four); 6128f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertEquals(four, ssm.first()); 6138f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertEquals(five, ssm.last()); 6148f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertTrue(ssm.remove(four)); 6158f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertEquals(1, ssm.size()); 6168f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertEquals(3, sm.size()); 6178f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertEquals(4, set.size()); 6188f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle } 6198f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle 6208f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle /** 6218f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle * size changes when elements added and removed 6228f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle */ 6238f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle public void testDescendingSize() { 6248f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle NavigableSet q = populatedSet(SIZE); 6258f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle for (int i = 0; i < SIZE; ++i) { 626e8b323c7cb7d55be9a4df579231e44f04f53d766Przemyslaw Szczepaniak assertEquals(SIZE - i, q.size()); 6278f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle q.pollFirst(); 6288f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle } 6298f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle for (int i = 0; i < SIZE; ++i) { 6308f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertEquals(i, q.size()); 6318f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle q.add(new Integer(i)); 6328f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle } 6338f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle } 6348f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle 6358f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle /** 6368f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle * add(null) throws NPE 6378f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle */ 6388f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle public void testDescendingAddNull() { 6398e9a0e92906742b17eb08d7fb83cca91965f9b8eNarayan Kamath NavigableSet q = dset0(); 6408f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle try { 6418f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle q.add(null); 6428f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle shouldThrow(); 6438f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle } catch (NullPointerException success) {} 6448f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle } 6458f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle 6468f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle /** 6478f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle * Add of comparable element succeeds 6488f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle */ 6498f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle public void testDescendingAdd() { 6508f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle NavigableSet q = dset0(); 6518f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertTrue(q.add(m6)); 6528f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle } 6538f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle 6548f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle /** 6558f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle * Add of duplicate element fails 6568f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle */ 6578f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle public void testDescendingAddDup() { 6588f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle NavigableSet q = dset0(); 6598f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertTrue(q.add(m6)); 6608f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertFalse(q.add(m6)); 6618f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle } 6628f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle 6638f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle /** 6648f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle * Add of non-Comparable throws CCE 6658f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle */ 6668f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle public void testDescendingAddNonComparable() { 6678e9a0e92906742b17eb08d7fb83cca91965f9b8eNarayan Kamath NavigableSet q = dset0(); 6688f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle try { 6698f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle q.add(new Object()); 6708f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle q.add(new Object()); 6718f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle shouldThrow(); 6728f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle } catch (ClassCastException success) {} 6738f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle } 6748f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle 6758f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle /** 6768f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle * addAll(null) throws NPE 6778f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle */ 6788f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle public void testDescendingAddAll1() { 6798e9a0e92906742b17eb08d7fb83cca91965f9b8eNarayan Kamath NavigableSet q = dset0(); 6808f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle try { 6818f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle q.addAll(null); 6828f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle shouldThrow(); 6838f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle } catch (NullPointerException success) {} 6848f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle } 6858f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle 6868f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle /** 6878f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle * addAll of a collection with null elements throws NPE 6888f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle */ 6898f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle public void testDescendingAddAll2() { 6908e9a0e92906742b17eb08d7fb83cca91965f9b8eNarayan Kamath NavigableSet q = dset0(); 6918e9a0e92906742b17eb08d7fb83cca91965f9b8eNarayan Kamath Integer[] ints = new Integer[SIZE]; 6928f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle try { 6938f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle q.addAll(Arrays.asList(ints)); 6948f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle shouldThrow(); 6958f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle } catch (NullPointerException success) {} 6968f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle } 6978f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle 6988f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle /** 6998f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle * addAll of a collection with any null elements throws NPE after 7008f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle * possibly adding some elements 7018f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle */ 7028f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle public void testDescendingAddAll3() { 7038e9a0e92906742b17eb08d7fb83cca91965f9b8eNarayan Kamath NavigableSet q = dset0(); 7048e9a0e92906742b17eb08d7fb83cca91965f9b8eNarayan Kamath Integer[] ints = new Integer[SIZE]; 705e8b323c7cb7d55be9a4df579231e44f04f53d766Przemyslaw Szczepaniak for (int i = 0; i < SIZE - 1; ++i) 706e8b323c7cb7d55be9a4df579231e44f04f53d766Przemyslaw Szczepaniak ints[i] = new Integer(i + SIZE); 7078f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle try { 7088f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle q.addAll(Arrays.asList(ints)); 7098f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle shouldThrow(); 7108f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle } catch (NullPointerException success) {} 7118f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle } 7128f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle 7138f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle /** 7148f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle * Set contains all elements of successful addAll 7158f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle */ 7168f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle public void testDescendingAddAll5() { 7178f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle Integer[] empty = new Integer[0]; 7188f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle Integer[] ints = new Integer[SIZE]; 7198f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle for (int i = 0; i < SIZE; ++i) 720e8b323c7cb7d55be9a4df579231e44f04f53d766Przemyslaw Szczepaniak ints[i] = new Integer(SIZE - 1 - i); 7218f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle NavigableSet q = dset0(); 7228f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertFalse(q.addAll(Arrays.asList(empty))); 7238f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertTrue(q.addAll(Arrays.asList(ints))); 7248f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle for (int i = 0; i < SIZE; ++i) 7258f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertEquals(new Integer(i), q.pollFirst()); 7268f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle } 7278f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle 7288f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle /** 7298f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle * poll succeeds unless empty 7308f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle */ 7318f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle public void testDescendingPoll() { 7328f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle NavigableSet q = populatedSet(SIZE); 7338f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle for (int i = 0; i < SIZE; ++i) { 7348f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertEquals(i, q.pollFirst()); 7358f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle } 7368f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertNull(q.pollFirst()); 7378f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle } 7388f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle 7398f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle /** 7408f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle * remove(x) removes x and returns true if present 7418f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle */ 7428f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle public void testDescendingRemoveElement() { 7438f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle NavigableSet q = populatedSet(SIZE); 7448e9a0e92906742b17eb08d7fb83cca91965f9b8eNarayan Kamath for (int i = 1; i < SIZE; i += 2) { 7458f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertTrue(q.remove(new Integer(i))); 7468f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle } 7478e9a0e92906742b17eb08d7fb83cca91965f9b8eNarayan Kamath for (int i = 0; i < SIZE; i += 2 ) { 7488f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertTrue(q.remove(new Integer(i))); 749e8b323c7cb7d55be9a4df579231e44f04f53d766Przemyslaw Szczepaniak assertFalse(q.remove(new Integer(i + 1))); 7508f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle } 7518f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertTrue(q.isEmpty()); 7528f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle } 7538f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle 7548f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle /** 7558f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle * contains(x) reports true when elements added but not yet removed 7568f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle */ 7578f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle public void testDescendingContains() { 7588f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle NavigableSet q = populatedSet(SIZE); 7598f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle for (int i = 0; i < SIZE; ++i) { 7608f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertTrue(q.contains(new Integer(i))); 7618f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle q.pollFirst(); 7628f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertFalse(q.contains(new Integer(i))); 7638f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle } 7648f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle } 7658f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle 7668f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle /** 7678f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle * clear removes all elements 7688f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle */ 7698f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle public void testDescendingClear() { 7708f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle NavigableSet q = populatedSet(SIZE); 7718f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle q.clear(); 7728f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertTrue(q.isEmpty()); 7738f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertEquals(0, q.size()); 7748f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle q.add(new Integer(1)); 7758f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertFalse(q.isEmpty()); 7768f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle q.clear(); 7778f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertTrue(q.isEmpty()); 7788f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle } 7798f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle 7808f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle /** 7818f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle * containsAll(c) is true when c contains a subset of elements 7828f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle */ 7838f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle public void testDescendingContainsAll() { 7848f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle NavigableSet q = populatedSet(SIZE); 7858f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle NavigableSet p = dset0(); 7868f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle for (int i = 0; i < SIZE; ++i) { 7878f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertTrue(q.containsAll(p)); 7888f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertFalse(p.containsAll(q)); 7898f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle p.add(new Integer(i)); 7908f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle } 7918f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertTrue(p.containsAll(q)); 7928f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle } 7938f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle 7948f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle /** 7958f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle * retainAll(c) retains only those elements of c and reports true if changed 7968f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle */ 7978f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle public void testDescendingRetainAll() { 7988f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle NavigableSet q = populatedSet(SIZE); 7998f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle NavigableSet p = populatedSet(SIZE); 8008f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle for (int i = 0; i < SIZE; ++i) { 8018f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle boolean changed = q.retainAll(p); 8028f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle if (i == 0) 8038f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertFalse(changed); 8048f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle else 8058f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertTrue(changed); 8068f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle 8078f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertTrue(q.containsAll(p)); 808e8b323c7cb7d55be9a4df579231e44f04f53d766Przemyslaw Szczepaniak assertEquals(SIZE - i, q.size()); 8098f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle p.pollFirst(); 8108f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle } 8118f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle } 8128f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle 8138f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle /** 8148f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle * removeAll(c) removes only those elements of c and reports true if changed 8158f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle */ 8168f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle public void testDescendingRemoveAll() { 8178f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle for (int i = 1; i < SIZE; ++i) { 8188f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle NavigableSet q = populatedSet(SIZE); 8198f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle NavigableSet p = populatedSet(i); 8208f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertTrue(q.removeAll(p)); 821e8b323c7cb7d55be9a4df579231e44f04f53d766Przemyslaw Szczepaniak assertEquals(SIZE - i, q.size()); 8228f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle for (int j = 0; j < i; ++j) { 8238e9a0e92906742b17eb08d7fb83cca91965f9b8eNarayan Kamath Integer x = (Integer)(p.pollFirst()); 8248e9a0e92906742b17eb08d7fb83cca91965f9b8eNarayan Kamath assertFalse(q.contains(x)); 8258f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle } 8268f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle } 8278f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle } 8288f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle 8298f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle /** 8308f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle * lower returns preceding element 8318f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle */ 8328f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle public void testDescendingLower() { 8338f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle NavigableSet q = dset5(); 8348f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle Object e1 = q.lower(m3); 8358f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertEquals(m2, e1); 8368f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle 8378f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle Object e2 = q.lower(m6); 8388f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertEquals(m5, e2); 8398f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle 8408f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle Object e3 = q.lower(m1); 8418f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertNull(e3); 8428f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle 8438f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle Object e4 = q.lower(zero); 8448f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertNull(e4); 8458f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle } 8468f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle 8478f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle /** 8488f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle * higher returns next element 8498f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle */ 8508f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle public void testDescendingHigher() { 8518f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle NavigableSet q = dset5(); 8528f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle Object e1 = q.higher(m3); 8538f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertEquals(m4, e1); 8548f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle 8558f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle Object e2 = q.higher(zero); 8568f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertEquals(m1, e2); 8578f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle 8588f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle Object e3 = q.higher(m5); 8598f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertNull(e3); 8608f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle 8618f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle Object e4 = q.higher(m6); 8628f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertNull(e4); 8638f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle } 8648f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle 8658f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle /** 8668f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle * floor returns preceding element 8678f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle */ 8688f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle public void testDescendingFloor() { 8698f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle NavigableSet q = dset5(); 8708f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle Object e1 = q.floor(m3); 8718f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertEquals(m3, e1); 8728f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle 8738f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle Object e2 = q.floor(m6); 8748f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertEquals(m5, e2); 8758f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle 8768f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle Object e3 = q.floor(m1); 8778f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertEquals(m1, e3); 8788f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle 8798f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle Object e4 = q.floor(zero); 8808f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertNull(e4); 8818f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle } 8828f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle 8838f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle /** 8848f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle * ceiling returns next element 8858f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle */ 8868f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle public void testDescendingCeiling() { 8878f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle NavigableSet q = dset5(); 8888f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle Object e1 = q.ceiling(m3); 8898f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertEquals(m3, e1); 8908f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle 8918f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle Object e2 = q.ceiling(zero); 8928f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertEquals(m1, e2); 8938f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle 8948f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle Object e3 = q.ceiling(m5); 8958f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertEquals(m5, e3); 8968f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle 8978f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle Object e4 = q.ceiling(m6); 8988f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertNull(e4); 8998f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle } 9008f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle 9018f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle /** 9028f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle * toArray contains all elements 9038f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle */ 9048f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle public void testDescendingToArray() { 9058f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle NavigableSet q = populatedSet(SIZE); 9068f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle Object[] o = q.toArray(); 9078f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle Arrays.sort(o); 9088f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle for (int i = 0; i < o.length; i++) 9098f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertEquals(o[i], q.pollFirst()); 9108f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle } 9118f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle 9128f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle /** 9138f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle * toArray(a) contains all elements 9148f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle */ 9158f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle public void testDescendingToArray2() { 9168f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle NavigableSet q = populatedSet(SIZE); 9178f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle Integer[] ints = new Integer[SIZE]; 9188f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertSame(ints, q.toArray(ints)); 9198f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle Arrays.sort(ints); 9208f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle for (int i = 0; i < ints.length; i++) 9218f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertEquals(ints[i], q.pollFirst()); 9228f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle } 9238f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle 9248f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle /** 9258f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle * iterator iterates through all elements 9268f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle */ 9278f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle public void testDescendingIterator() { 9288f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle NavigableSet q = populatedSet(SIZE); 9298f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle int i = 0; 9308f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle Iterator it = q.iterator(); 9318f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle while (it.hasNext()) { 9328f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertTrue(q.contains(it.next())); 9338f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle ++i; 9348f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle } 9358f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertEquals(i, SIZE); 9368f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle } 9378f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle 9388f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle /** 9398f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle * iterator of empty set has no elements 9408f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle */ 9418f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle public void testDescendingEmptyIterator() { 9428f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle NavigableSet q = dset0(); 9438f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle int i = 0; 9448f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle Iterator it = q.iterator(); 9458f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle while (it.hasNext()) { 9468f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertTrue(q.contains(it.next())); 9478f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle ++i; 9488f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle } 9498f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertEquals(0, i); 9508f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle } 9518f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle 9528f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle /** 9538f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle * iterator.remove removes current element 9548f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle */ 9558f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle public void testDescendingIteratorRemove() { 9568f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle final NavigableSet q = dset0(); 9578f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle q.add(new Integer(2)); 9588f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle q.add(new Integer(1)); 9598f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle q.add(new Integer(3)); 9608f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle 9618f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle Iterator it = q.iterator(); 9628f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle it.next(); 9638f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle it.remove(); 9648f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle 9658f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle it = q.iterator(); 9668f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertEquals(it.next(), new Integer(2)); 9678f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertEquals(it.next(), new Integer(3)); 9688f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertFalse(it.hasNext()); 9698f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle } 9708f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle 9718f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle /** 9728f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle * toString contains toStrings of elements 9738f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle */ 9748f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle public void testDescendingToString() { 9758f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle NavigableSet q = populatedSet(SIZE); 9768f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle String s = q.toString(); 9778f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle for (int i = 0; i < SIZE; ++i) { 9788f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertTrue(s.contains(String.valueOf(i))); 9798f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle } 9808f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle } 9818f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle 9828f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle /** 9838f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle * A deserialized serialized set has same elements 9848f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle */ 9858f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle public void testDescendingSerialization() throws Exception { 9868f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle NavigableSet x = dset5(); 9878f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle NavigableSet y = serialClone(x); 9888f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle 9898f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertNotSame(y, x); 9908f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertEquals(x.size(), y.size()); 9918f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertEquals(x, y); 9928f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertEquals(y, x); 9938f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle while (!x.isEmpty()) { 9948f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertFalse(y.isEmpty()); 9958f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertEquals(x.pollFirst(), y.pollFirst()); 9968f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle } 9978f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertTrue(y.isEmpty()); 9988f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle } 9998f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle 10008f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle /** 10018f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle * subSet returns set with keys in requested range 10028f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle */ 10038f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle public void testDescendingSubSetContents() { 10048f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle NavigableSet set = dset5(); 10058f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle SortedSet sm = set.subSet(m2, m4); 10068f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertEquals(m2, sm.first()); 10078f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertEquals(m3, sm.last()); 10088f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertEquals(2, sm.size()); 10098f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertFalse(sm.contains(m1)); 10108f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertTrue(sm.contains(m2)); 10118f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertTrue(sm.contains(m3)); 10128f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertFalse(sm.contains(m4)); 10138f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertFalse(sm.contains(m5)); 10148f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle Iterator i = sm.iterator(); 10158f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle Object k; 10168f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle k = (Integer)(i.next()); 10178f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertEquals(m2, k); 10188f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle k = (Integer)(i.next()); 10198f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertEquals(m3, k); 10208f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertFalse(i.hasNext()); 10218f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle Iterator j = sm.iterator(); 10228f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle j.next(); 10238f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle j.remove(); 10248f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertFalse(set.contains(m2)); 10258f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertEquals(4, set.size()); 10268f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertEquals(1, sm.size()); 10278f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertEquals(m3, sm.first()); 10288f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertEquals(m3, sm.last()); 10298f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertTrue(sm.remove(m3)); 10308f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertTrue(sm.isEmpty()); 10318f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertEquals(3, set.size()); 10328f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle } 10338f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle 10348f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle public void testDescendingSubSetContents2() { 10358f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle NavigableSet set = dset5(); 10368f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle SortedSet sm = set.subSet(m2, m3); 10378f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertEquals(1, sm.size()); 10388f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertEquals(m2, sm.first()); 10398f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertEquals(m2, sm.last()); 10408f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertFalse(sm.contains(m1)); 10418f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertTrue(sm.contains(m2)); 10428f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertFalse(sm.contains(m3)); 10438f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertFalse(sm.contains(m4)); 10448f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertFalse(sm.contains(m5)); 10458f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle Iterator i = sm.iterator(); 10468f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle Object k; 10478f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle k = (Integer)(i.next()); 10488f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertEquals(m2, k); 10498f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertFalse(i.hasNext()); 10508f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle Iterator j = sm.iterator(); 10518f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle j.next(); 10528f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle j.remove(); 10538f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertFalse(set.contains(m2)); 10548f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertEquals(4, set.size()); 10558f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertEquals(0, sm.size()); 10568f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertTrue(sm.isEmpty()); 10578f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertFalse(sm.remove(m3)); 10588f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertEquals(4, set.size()); 10598f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle } 10608f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle 10618f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle /** 10628f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle * headSet returns set with keys in requested range 10638f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle */ 10648f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle public void testDescendingHeadSetContents() { 10658f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle NavigableSet set = dset5(); 10668f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle SortedSet sm = set.headSet(m4); 10678f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertTrue(sm.contains(m1)); 10688f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertTrue(sm.contains(m2)); 10698f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertTrue(sm.contains(m3)); 10708f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertFalse(sm.contains(m4)); 10718f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertFalse(sm.contains(m5)); 10728f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle Iterator i = sm.iterator(); 10738f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle Object k; 10748f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle k = (Integer)(i.next()); 10758f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertEquals(m1, k); 10768f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle k = (Integer)(i.next()); 10778f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertEquals(m2, k); 10788f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle k = (Integer)(i.next()); 10798f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertEquals(m3, k); 10808f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertFalse(i.hasNext()); 10818f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle sm.clear(); 10828f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertTrue(sm.isEmpty()); 10838f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertEquals(2, set.size()); 10848f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertEquals(m4, set.first()); 10858f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle } 10868f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle 10878f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle /** 10888f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle * tailSet returns set with keys in requested range 10898f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle */ 10908f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle public void testDescendingTailSetContents() { 10918f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle NavigableSet set = dset5(); 10928f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle SortedSet sm = set.tailSet(m2); 10938f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertFalse(sm.contains(m1)); 10948f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertTrue(sm.contains(m2)); 10958f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertTrue(sm.contains(m3)); 10968f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertTrue(sm.contains(m4)); 10978f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertTrue(sm.contains(m5)); 10988f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle Iterator i = sm.iterator(); 10998f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle Object k; 11008f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle k = (Integer)(i.next()); 11018f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertEquals(m2, k); 11028f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle k = (Integer)(i.next()); 11038f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertEquals(m3, k); 11048f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle k = (Integer)(i.next()); 11058f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertEquals(m4, k); 11068f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle k = (Integer)(i.next()); 11078f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertEquals(m5, k); 11088f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertFalse(i.hasNext()); 11098f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle 11108f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle SortedSet ssm = sm.tailSet(m4); 11118f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertEquals(m4, ssm.first()); 11128f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertEquals(m5, ssm.last()); 11138f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertTrue(ssm.remove(m4)); 11148f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertEquals(1, ssm.size()); 11158f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertEquals(3, sm.size()); 11168f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertEquals(4, set.size()); 11178f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle } 11188f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle 11198f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle} 1120