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