ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/jsr166/jsr166/src/test/tck/TreeSetTest.java
(Generate patch)

Comparing jsr166/src/test/tck/TreeSetTest.java (file contents):
Revision 1.2 by dl, Wed Apr 19 15:10:54 2006 UTC vs.
Revision 1.10 by jsr166, Sat Nov 21 17:38:06 2009 UTC

# Line 11 | Line 11 | import java.io.*;
11  
12   public class TreeSetTest extends JSR166TestCase {
13      public static void main(String[] args) {
14 <        junit.textui.TestRunner.run (suite());  
14 >        junit.textui.TestRunner.run (suite());
15      }
16      public static Test suite() {
17 <        return new TestSuite(TreeSetTest.class);
17 >        return new TestSuite(TreeSetTest.class);
18      }
19  
20 <    static class MyReverseComparator implements Comparator {
20 >    static class MyReverseComparator implements Comparator {
21          public int compare(Object x, Object y) {
22              int i = ((Integer)x).intValue();
23              int j = ((Integer)y).intValue();
# Line 39 | Line 39 | public class TreeSetTest extends JSR166T
39      private TreeSet populatedSet(int n) {
40          TreeSet q = new TreeSet();
41          assertTrue(q.isEmpty());
42 <        for(int i = n-1; i >= 0; i-=2)
43 <            assertTrue(q.add(new Integer(i)));
44 <        for(int i = (n & 1); i < n; i+=2)
45 <            assertTrue(q.add(new Integer(i)));
42 >        for (int i = n-1; i >= 0; i-=2)
43 >            assertTrue(q.add(new Integer(i)));
44 >        for (int i = (n & 1); i < n; i+=2)
45 >            assertTrue(q.add(new Integer(i)));
46          assertFalse(q.isEmpty());
47 <        assertEquals(n, q.size());
47 >        assertEquals(n, q.size());
48          return q;
49      }
50  
# Line 59 | Line 59 | public class TreeSetTest extends JSR166T
59          q.add(three);
60          q.add(four);
61          q.add(five);
62 <        assertEquals(5, q.size());
62 >        assertEquals(5, q.size());
63          return q;
64      }
65 <
65 >
66      /**
67       * A new set has unbounded capacity
68       */
# Line 77 | Line 77 | public class TreeSetTest extends JSR166T
77          try {
78              TreeSet q = new TreeSet((Collection)null);
79              shouldThrow();
80 <        }
81 <        catch (NullPointerException success) {}
80 >        } catch (NullPointerException success) {}
81      }
82  
83      /**
# Line 89 | Line 88 | public class TreeSetTest extends JSR166T
88              Integer[] ints = new Integer[SIZE];
89              TreeSet q = new TreeSet(Arrays.asList(ints));
90              shouldThrow();
91 <        }
93 <        catch (NullPointerException success) {}
91 >        } catch (NullPointerException success) {}
92      }
93  
94      /**
# Line 103 | Line 101 | public class TreeSetTest extends JSR166T
101                  ints[i] = new Integer(i);
102              TreeSet q = new TreeSet(Arrays.asList(ints));
103              shouldThrow();
104 <        }
107 <        catch (NullPointerException success) {}
104 >        } catch (NullPointerException success) {}
105      }
106  
107      /**
108       * Set contains all elements of collection used to initialize
109       */
110      public void testConstructor6() {
111 <        try {
112 <            Integer[] ints = new Integer[SIZE];
113 <            for (int i = 0; i < SIZE; ++i)
114 <                ints[i] = new Integer(i);
115 <            TreeSet q = new TreeSet(Arrays.asList(ints));
116 <            for (int i = 0; i < SIZE; ++i)
120 <                assertEquals(ints[i], q.pollFirst());
121 <        }
122 <        finally {}
111 >        Integer[] ints = new Integer[SIZE];
112 >        for (int i = 0; i < SIZE; ++i)
113 >            ints[i] = new Integer(i);
114 >        TreeSet q = new TreeSet(Arrays.asList(ints));
115 >        for (int i = 0; i < SIZE; ++i)
116 >            assertEquals(ints[i], q.pollFirst());
117      }
118  
119      /**
120       * The comparator used in constructor is used
121       */
122      public void testConstructor7() {
123 <        try {
124 <            MyReverseComparator cmp = new MyReverseComparator();
125 <            TreeSet q = new TreeSet(cmp);
126 <            assertEquals(cmp, q.comparator());
127 <            Integer[] ints = new Integer[SIZE];
128 <            for (int i = 0; i < SIZE; ++i)
129 <                ints[i] = new Integer(i);
130 <            q.addAll(Arrays.asList(ints));
131 <            for (int i = SIZE-1; i >= 0; --i)
138 <                assertEquals(ints[i], q.pollFirst());
139 <        }
140 <        finally {}
123 >        MyReverseComparator cmp = new MyReverseComparator();
124 >        TreeSet q = new TreeSet(cmp);
125 >        assertEquals(cmp, q.comparator());
126 >        Integer[] ints = new Integer[SIZE];
127 >        for (int i = 0; i < SIZE; ++i)
128 >            ints[i] = new Integer(i);
129 >        q.addAll(Arrays.asList(ints));
130 >        for (int i = SIZE-1; i >= 0; --i)
131 >            assertEquals(ints[i], q.pollFirst());
132      }
133  
134      /**
# Line 173 | Line 164 | public class TreeSetTest extends JSR166T
164       * add(null) throws NPE if nonempty
165       */
166      public void testAddNull() {
167 <        try {
167 >        try {
168              TreeSet q = populatedSet(SIZE);
169              q.add(null);
170              shouldThrow();
171 <        } catch (NullPointerException success) { }  
171 >        } catch (NullPointerException success) {}
172      }
173  
174      /**
# Line 208 | Line 199 | public class TreeSetTest extends JSR166T
199              q.add(new Object());
200              q.add(new Object());
201              shouldThrow();
202 <        }
212 <        catch(ClassCastException success) {}
202 >        } catch (ClassCastException success) {}
203      }
204  
205      /**
# Line 220 | Line 210 | public class TreeSetTest extends JSR166T
210              TreeSet q = new TreeSet();
211              q.addAll(null);
212              shouldThrow();
213 <        }
224 <        catch (NullPointerException success) {}
213 >        } catch (NullPointerException success) {}
214      }
215      /**
216       * addAll of a collection with null elements throws NPE
# Line 232 | Line 221 | public class TreeSetTest extends JSR166T
221              Integer[] ints = new Integer[SIZE];
222              q.addAll(Arrays.asList(ints));
223              shouldThrow();
224 <        }
236 <        catch (NullPointerException success) {}
224 >        } catch (NullPointerException success) {}
225      }
226      /**
227       * addAll of a collection with any null elements throws NPE after
# Line 247 | Line 235 | public class TreeSetTest extends JSR166T
235                  ints[i] = new Integer(i);
236              q.addAll(Arrays.asList(ints));
237              shouldThrow();
238 <        }
251 <        catch (NullPointerException success) {}
238 >        } catch (NullPointerException success) {}
239      }
240  
241      /**
242       * Set contains all elements of successful addAll
243       */
244      public void testAddAll5() {
245 <        try {
246 <            Integer[] empty = new Integer[0];
247 <            Integer[] ints = new Integer[SIZE];
248 <            for (int i = 0; i < SIZE; ++i)
249 <                ints[i] = new Integer(SIZE-1-i);
250 <            TreeSet q = new TreeSet();
251 <            assertFalse(q.addAll(Arrays.asList(empty)));
252 <            assertTrue(q.addAll(Arrays.asList(ints)));
253 <            for (int i = 0; i < SIZE; ++i)
267 <                assertEquals(new Integer(i), q.pollFirst());
268 <        }
269 <        finally {}
245 >        Integer[] empty = new Integer[0];
246 >        Integer[] ints = new Integer[SIZE];
247 >        for (int i = 0; i < SIZE; ++i)
248 >            ints[i] = new Integer(SIZE-1-i);
249 >        TreeSet q = new TreeSet();
250 >        assertFalse(q.addAll(Arrays.asList(empty)));
251 >        assertTrue(q.addAll(Arrays.asList(ints)));
252 >        for (int i = 0; i < SIZE; ++i)
253 >            assertEquals(new Integer(i), q.pollFirst());
254      }
255  
256      /**
# Line 277 | Line 261 | public class TreeSetTest extends JSR166T
261          for (int i = 0; i < SIZE; ++i) {
262              assertEquals(i, ((Integer)q.pollFirst()).intValue());
263          }
264 <        assertNull(q.pollFirst());
264 >        assertNull(q.pollFirst());
265      }
266  
267      /**
# Line 288 | Line 272 | public class TreeSetTest extends JSR166T
272          for (int i = SIZE-1; i >= 0; --i) {
273              assertEquals(i, ((Integer)q.pollLast()).intValue());
274          }
275 <        assertNull(q.pollFirst());
275 >        assertNull(q.pollFirst());
276      }
277  
278  
# Line 306 | Line 290 | public class TreeSetTest extends JSR166T
290          }
291          assertTrue(q.isEmpty());
292      }
293 <        
293 >
294      /**
295       * contains(x) reports true when elements added but not yet removed
296       */
# Line 382 | Line 366 | public class TreeSetTest extends JSR166T
366          }
367      }
368  
369 <    
369 >
370  
371      /**
372       * lower returns preceding element
# Line 465 | Line 449 | public class TreeSetTest extends JSR166T
449       */
450      public void testToArray() {
451          TreeSet q = populatedSet(SIZE);
452 <        Object[] o = q.toArray();
452 >        Object[] o = q.toArray();
453          Arrays.sort(o);
454 <        for(int i = 0; i < o.length; i++)
455 <            assertEquals(o[i], q.pollFirst());
454 >        for (int i = 0; i < o.length; i++)
455 >            assertEquals(o[i], q.pollFirst());
456      }
457  
458      /**
# Line 476 | Line 460 | public class TreeSetTest extends JSR166T
460       */
461      public void testToArray2() {
462          TreeSet q = populatedSet(SIZE);
463 <        Integer[] ints = new Integer[SIZE];
464 <        ints = (Integer[])q.toArray(ints);
463 >        Integer[] ints = new Integer[SIZE];
464 >        ints = (Integer[])q.toArray(ints);
465          Arrays.sort(ints);
466 <        for(int i = 0; i < ints.length; i++)
466 >        for (int i = 0; i < ints.length; i++)
467              assertEquals(ints[i], q.pollFirst());
468      }
469 <    
469 >
470      /**
471       * iterator iterates through all elements
472       */
473      public void testIterator() {
474          TreeSet q = populatedSet(SIZE);
475          int i = 0;
476 <        Iterator it = q.iterator();
477 <        while(it.hasNext()) {
476 >        Iterator it = q.iterator();
477 >        while (it.hasNext()) {
478              assertTrue(q.contains(it.next()));
479              ++i;
480          }
# Line 503 | Line 487 | public class TreeSetTest extends JSR166T
487      public void testEmptyIterator() {
488          TreeSet q = new TreeSet();
489          int i = 0;
490 <        Iterator it = q.iterator();
491 <        while(it.hasNext()) {
490 >        Iterator it = q.iterator();
491 >        while (it.hasNext()) {
492              assertTrue(q.contains(it.next()));
493              ++i;
494          }
# Line 540 | Line 524 | public class TreeSetTest extends JSR166T
524          for (int i = 0; i < SIZE; ++i) {
525              assertTrue(s.indexOf(String.valueOf(i)) >= 0);
526          }
527 <    }        
527 >    }
528  
529      /**
530 <     * A deserialized serialized set has same elements
530 >     * A deserialized serialized set has same elements
531       */
532 <    public void testSerialization() {
532 >    public void testSerialization() throws Exception {
533          TreeSet q = populatedSet(SIZE);
534 <        try {
535 <            ByteArrayOutputStream bout = new ByteArrayOutputStream(10000);
536 <            ObjectOutputStream out = new ObjectOutputStream(new BufferedOutputStream(bout));
537 <            out.writeObject(q);
538 <            out.close();
539 <
540 <            ByteArrayInputStream bin = new ByteArrayInputStream(bout.toByteArray());
541 <            ObjectInputStream in = new ObjectInputStream(new BufferedInputStream(bin));
542 <            TreeSet r = (TreeSet)in.readObject();
543 <            assertEquals(q.size(), r.size());
544 <            while (!q.isEmpty())
561 <                assertEquals(q.pollFirst(), r.pollFirst());
562 <        } catch(Exception e){
563 <            e.printStackTrace();
564 <            unexpectedException();
565 <        }
534 >        ByteArrayOutputStream bout = new ByteArrayOutputStream(10000);
535 >        ObjectOutputStream out = new ObjectOutputStream(new BufferedOutputStream(bout));
536 >        out.writeObject(q);
537 >        out.close();
538 >
539 >        ByteArrayInputStream bin = new ByteArrayInputStream(bout.toByteArray());
540 >        ObjectInputStream in = new ObjectInputStream(new BufferedInputStream(bin));
541 >        TreeSet r = (TreeSet)in.readObject();
542 >        assertEquals(q.size(), r.size());
543 >        while (!q.isEmpty())
544 >            assertEquals(q.pollFirst(), r.pollFirst());
545      }
546  
547      /**
# Line 690 | Line 669 | public class TreeSetTest extends JSR166T
669      /**
670       * Subsets of subsets subdivide correctly
671       */
672 <    public void testRecursiveSubSets() {
673 <        int setSize = 1000;
674 <        Class cl = TreeSet.class;
672 >    public void testRecursiveSubSets() throws Exception {
673 >        int setSize = 1000;
674 >        Class cl = TreeSet.class;
675  
676          NavigableSet<Integer> set = newSet(cl);
677          bs = new BitSet(setSize);
# Line 705 | Line 684 | public class TreeSetTest extends JSR166T
684          check(set,                 0, setSize - 1, true);
685          check(set.descendingSet(), 0, setSize - 1, false);
686  
687 <        bashSubSet(set.navigableSubSet(0, true, setSize, false),
687 >        bashSubSet(set.subSet(0, true, setSize, false),
688                     0, setSize - 1, true);
689      }
690  
691 <    static NavigableSet<Integer> newSet(Class cl) {
692 <        NavigableSet<Integer> result = null;
714 <        try {
715 <            result = (NavigableSet<Integer>) cl.newInstance();
716 <        } catch(Exception e) {
717 <            fail();
718 <        }
691 >    static NavigableSet<Integer> newSet(Class cl) throws Exception {
692 >        NavigableSet<Integer> result = (NavigableSet<Integer>) cl.newInstance();
693          assertEquals(result.size(), 0);
694          assertFalse(result.iterator().hasNext());
695          return result;
# Line 738 | Line 712 | public class TreeSetTest extends JSR166T
712          }
713  
714          // Remove a bunch of entries with iterator
715 <        for(Iterator<Integer> it = set.iterator(); it.hasNext(); ) {
715 >        for (Iterator<Integer> it = set.iterator(); it.hasNext(); ) {
716              if (rnd.nextBoolean()) {
717                  bs.clear(it.next());
718                  it.remove();
# Line 763 | Line 737 | public class TreeSetTest extends JSR166T
737          }
738  
739          // Remove a bunch of entries with iterator
740 <        for(Iterator<Integer> it = set.iterator(); it.hasNext(); ) {
740 >        for (Iterator<Integer> it = set.iterator(); it.hasNext(); ) {
741              if (rnd.nextBoolean()) {
742                  bs.clear(it.next());
743                  it.remove();
# Line 778 | Line 752 | public class TreeSetTest extends JSR166T
752              } else {
753                  try {
754                      set.add(element);
755 <                    fail();
756 <                } catch(IllegalArgumentException e) {
783 <                    // expected
784 <                }
755 >                    shouldThrow();
756 >                } catch (IllegalArgumentException success) {}
757              }
758          }
759      }
# Line 812 | Line 784 | public class TreeSetTest extends JSR166T
784  
785          // headSet - pick direction and endpoint inclusion randomly
786          boolean incl = rnd.nextBoolean();
787 <        NavigableSet<Integer> hm = set.navigableHeadSet(midPoint, incl);
787 >        NavigableSet<Integer> hm = set.headSet(midPoint, incl);
788          if (ascending) {
789              if (rnd.nextBoolean())
790                  bashSubSet(hm, min, midPoint - (incl ? 0 : 1), true);
# Line 829 | Line 801 | public class TreeSetTest extends JSR166T
801  
802          // tailSet - pick direction and endpoint inclusion randomly
803          incl = rnd.nextBoolean();
804 <        NavigableSet<Integer> tm = set.navigableTailSet(midPoint,incl);
804 >        NavigableSet<Integer> tm = set.tailSet(midPoint,incl);
805          if (ascending) {
806              if (rnd.nextBoolean())
807                  bashSubSet(tm, midPoint + (incl ? 0 : 1), max, true);
# Line 854 | Line 826 | public class TreeSetTest extends JSR166T
826          boolean lowIncl = rnd.nextBoolean();
827          boolean highIncl = rnd.nextBoolean();
828          if (ascending) {
829 <            NavigableSet<Integer> sm = set.navigableSubSet(
829 >            NavigableSet<Integer> sm = set.subSet(
830                  endpoints[0], lowIncl, endpoints[1], highIncl);
831              if (rnd.nextBoolean())
832                  bashSubSet(sm, endpoints[0] + (lowIncl ? 0 : 1),
# Line 863 | Line 835 | public class TreeSetTest extends JSR166T
835                  bashSubSet(sm.descendingSet(), endpoints[0] + (lowIncl ? 0 : 1),
836                             endpoints[1] - (highIncl ? 0 : 1), false);
837          } else {
838 <            NavigableSet<Integer> sm = set.navigableSubSet(
838 >            NavigableSet<Integer> sm = set.subSet(
839                  endpoints[1], highIncl, endpoints[0], lowIncl);
840              if (rnd.nextBoolean())
841                  bashSubSet(sm, endpoints[0] + (lowIncl ? 0 : 1),
# Line 980 | Line 952 | public class TreeSetTest extends JSR166T
952              assertEq(rs.last(),  -1);
953              try {
954                  set.first();
955 <                fail();
956 <            } catch(NoSuchElementException e) {
985 <                // expected
986 <            }
955 >                shouldThrow();
956 >            } catch (NoSuchElementException success) {}
957              try {
958                  set.last();
959 <                fail();
960 <            } catch(NoSuchElementException e) {
991 <                // expected
992 <            }
959 >                shouldThrow();
960 >            } catch (NoSuchElementException success) {}
961          }
962      }
963  

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines