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

Comparing jsr166/src/test/tck/ConcurrentSkipListSubSetTest.java (file contents):
Revision 1.4 by dl, Thu Apr 20 20:35:00 2006 UTC vs.
Revision 1.38 by jsr166, Sun Jan 7 22:59:18 2018 UTC

# Line 1 | Line 1
1   /*
2   * Written by Doug Lea with assistance from members of JCP JSR-166
3   * Expert Group and released to the public domain, as explained at
4 < * http://creativecommons.org/licenses/publicdomain
4 > * http://creativecommons.org/publicdomain/zero/1.0/
5   */
6  
7 < import junit.framework.*;
8 < import java.util.*;
9 < import java.util.concurrent.*;
10 < import java.io.*;
7 > import java.util.Arrays;
8 > import java.util.Comparator;
9 > import java.util.Iterator;
10 > import java.util.NavigableSet;
11 > import java.util.SortedSet;
12 > import java.util.concurrent.ConcurrentSkipListSet;
13 >
14 > import junit.framework.Test;
15 > import junit.framework.TestSuite;
16  
17   public class ConcurrentSkipListSubSetTest extends JSR166TestCase {
18      public static void main(String[] args) {
19 <        junit.textui.TestRunner.run (suite());  
19 >        main(suite(), args);
20      }
21      public static Test suite() {
22 <        return new TestSuite(ConcurrentSkipListSubSetTest.class);
22 >        return new TestSuite(ConcurrentSkipListSubSetTest.class);
23      }
24  
25 <    static class MyReverseComparator implements Comparator {
25 >    static class MyReverseComparator implements Comparator {
26          public int compare(Object x, Object y) {
27 <            int i = ((Integer)x).intValue();
23 <            int j = ((Integer)y).intValue();
24 <            if (i < j) return 1;
25 <            if (i > j) return -1;
26 <            return 0;
27 >            return ((Comparable)y).compareTo(x);
28          }
29      }
30  
31      /**
32 <     * Create a set of given size containing consecutive
33 <     * Integers 0 ... n.
32 >     * Returns a new set of given size containing consecutive
33 >     * Integers 0 ... n - 1.
34       */
35 <    private NavigableSet populatedSet(int n) {
36 <        ConcurrentSkipListSet q = new ConcurrentSkipListSet();
35 >    private static NavigableSet<Integer> populatedSet(int n) {
36 >        ConcurrentSkipListSet<Integer> q = new ConcurrentSkipListSet<>();
37          assertTrue(q.isEmpty());
38  
39 <        for(int i = n-1; i >= 0; i-=2)
40 <            assertTrue(q.add(new Integer(i)));
41 <        for(int i = (n & 1); i < n; i+=2)
42 <            assertTrue(q.add(new Integer(i)));
39 >        for (int i = n - 1; i >= 0; i -= 2)
40 >            assertTrue(q.add(new Integer(i)));
41 >        for (int i = (n & 1); i < n; i += 2)
42 >            assertTrue(q.add(new Integer(i)));
43          assertTrue(q.add(new Integer(-n)));
44          assertTrue(q.add(new Integer(n)));
45          NavigableSet s = q.subSet(new Integer(0), true, new Integer(n), false);
46          assertFalse(s.isEmpty());
47 <        assertEquals(n, s.size());
47 >        assertEquals(n, s.size());
48          return s;
49      }
50  
51      /**
52 <     * Create set of first 5 ints
52 >     * Returns a new set of first 5 ints.
53       */
54 <    private NavigableSet set5() {
54 >    private static NavigableSet set5() {
55          ConcurrentSkipListSet q = new ConcurrentSkipListSet();
56          assertTrue(q.isEmpty());
57          q.add(one);
# Line 61 | Line 62 | public class ConcurrentSkipListSubSetTes
62          q.add(zero);
63          q.add(seven);
64          NavigableSet s = q.subSet(one, true, seven, false);
65 <        assertEquals(5, s.size());
65 >        assertEquals(5, s.size());
66          return s;
67      }
68  
69      /**
70 <     * Create set of first 5 negative ints
70 >     * Returns a new set of first 5 negative ints.
71       */
72 <    private NavigableSet dset5() {
72 >    private static NavigableSet dset5() {
73          ConcurrentSkipListSet q = new ConcurrentSkipListSet();
74          assertTrue(q.isEmpty());
75          q.add(m1);
# Line 77 | Line 78 | public class ConcurrentSkipListSubSetTes
78          q.add(m4);
79          q.add(m5);
80          NavigableSet s = q.descendingSet();
81 <        assertEquals(5, s.size());
81 >        assertEquals(5, s.size());
82          return s;
83      }
84  
85 <    private static NavigableSet set0() {  
86 <        ConcurrentSkipListSet set = new ConcurrentSkipListSet();
85 >    private static NavigableSet set0() {
86 >        ConcurrentSkipListSet set = new ConcurrentSkipListSet();
87          assertTrue(set.isEmpty());
88          return set.tailSet(m1, true);
89      }
90  
91 <    private static NavigableSet dset0() {  
92 <        ConcurrentSkipListSet set = new ConcurrentSkipListSet();
91 >    private static NavigableSet dset0() {
92 >        ConcurrentSkipListSet set = new ConcurrentSkipListSet();
93          assertTrue(set.isEmpty());
94          return set;
95      }
96 <
96 >
97      /**
98       * A new set has unbounded capacity
99       */
# Line 100 | Line 101 | public class ConcurrentSkipListSubSetTes
101          assertEquals(0, set0().size());
102      }
103  
103
104      /**
105       * isEmpty is true before add, false after
106       */
# Line 121 | Line 121 | public class ConcurrentSkipListSubSetTes
121      public void testSize() {
122          NavigableSet q = populatedSet(SIZE);
123          for (int i = 0; i < SIZE; ++i) {
124 <            assertEquals(SIZE-i, q.size());
124 >            assertEquals(SIZE - i, q.size());
125              q.pollFirst();
126          }
127          for (int i = 0; i < SIZE; ++i) {
# Line 134 | Line 134 | public class ConcurrentSkipListSubSetTes
134       * add(null) throws NPE
135       */
136      public void testAddNull() {
137 <        try {
138 <            NavigableSet q = set0();
137 >        NavigableSet q = set0();
138 >        try {
139              q.add(null);
140              shouldThrow();
141 <        } catch (NullPointerException success) { }  
141 >        } catch (NullPointerException success) {}
142      }
143  
144      /**
# Line 162 | Line 162 | public class ConcurrentSkipListSubSetTes
162       * Add of non-Comparable throws CCE
163       */
164      public void testAddNonComparable() {
165 +        NavigableSet q = set0();
166          try {
166            NavigableSet q = set0();
167            q.add(new Object());
167              q.add(new Object());
168              q.add(new Object());
169              shouldThrow();
170 <        }
172 <        catch(ClassCastException success) {}
170 >        } catch (ClassCastException success) {}
171      }
172  
175
173      /**
174       * addAll(null) throws NPE
175       */
176      public void testAddAll1() {
177 +        NavigableSet q = set0();
178          try {
181            NavigableSet q = set0();
179              q.addAll(null);
180              shouldThrow();
181 <        }
185 <        catch (NullPointerException success) {}
181 >        } catch (NullPointerException success) {}
182      }
183 +
184      /**
185       * addAll of a collection with null elements throws NPE
186       */
187      public void testAddAll2() {
188 +        NavigableSet q = set0();
189 +        Integer[] ints = new Integer[SIZE];
190          try {
192            NavigableSet q = set0();
193            Integer[] ints = new Integer[SIZE];
191              q.addAll(Arrays.asList(ints));
192              shouldThrow();
193 <        }
197 <        catch (NullPointerException success) {}
193 >        } catch (NullPointerException success) {}
194      }
195 +
196      /**
197       * addAll of a collection with any null elements throws NPE after
198       * possibly adding some elements
199       */
200      public void testAddAll3() {
201 +        NavigableSet q = set0();
202 +        Integer[] ints = new Integer[SIZE];
203 +        for (int i = 0; i < SIZE - 1; ++i)
204 +            ints[i] = new Integer(i + SIZE);
205          try {
205            NavigableSet q = set0();
206            Integer[] ints = new Integer[SIZE];
207            for (int i = 0; i < SIZE-1; ++i)
208                ints[i] = new Integer(i+SIZE);
206              q.addAll(Arrays.asList(ints));
207              shouldThrow();
208 <        }
212 <        catch (NullPointerException success) {}
208 >        } catch (NullPointerException success) {}
209      }
210  
211      /**
212       * Set contains all elements of successful addAll
213       */
214      public void testAddAll5() {
215 <        try {
216 <            Integer[] empty = new Integer[0];
217 <            Integer[] ints = new Integer[SIZE];
218 <            for (int i = 0; i < SIZE; ++i)
219 <                ints[i] = new Integer(SIZE-1- i);
220 <            NavigableSet q = set0();
221 <            assertFalse(q.addAll(Arrays.asList(empty)));
222 <            assertTrue(q.addAll(Arrays.asList(ints)));
223 <            for (int i = 0; i < SIZE; ++i)
228 <                assertEquals(new Integer(i), q.pollFirst());
229 <        }
230 <        finally {}
215 >        Integer[] empty = new Integer[0];
216 >        Integer[] ints = new Integer[SIZE];
217 >        for (int i = 0; i < SIZE; ++i)
218 >            ints[i] = new Integer(SIZE - 1 - i);
219 >        NavigableSet q = set0();
220 >        assertFalse(q.addAll(Arrays.asList(empty)));
221 >        assertTrue(q.addAll(Arrays.asList(ints)));
222 >        for (int i = 0; i < SIZE; ++i)
223 >            assertEquals(new Integer(i), q.pollFirst());
224      }
225  
226      /**
# Line 236 | Line 229 | public class ConcurrentSkipListSubSetTes
229      public void testPoll() {
230          NavigableSet q = populatedSet(SIZE);
231          for (int i = 0; i < SIZE; ++i) {
232 <            assertEquals(i, ((Integer)q.pollFirst()).intValue());
232 >            assertEquals(i, q.pollFirst());
233          }
234 <        assertNull(q.pollFirst());
234 >        assertNull(q.pollFirst());
235      }
236  
237      /**
# Line 246 | Line 239 | public class ConcurrentSkipListSubSetTes
239       */
240      public void testRemoveElement() {
241          NavigableSet q = populatedSet(SIZE);
242 <        for (int i = 1; i < SIZE; i+=2) {
243 <            assertTrue(q.remove(new Integer(i)));
244 <        }
245 <        for (int i = 0; i < SIZE; i+=2) {
246 <            assertTrue(q.remove(new Integer(i)));
247 <            assertFalse(q.remove(new Integer(i+1)));
242 >        for (int i = 1; i < SIZE; i += 2) {
243 >            assertTrue(q.contains(i));
244 >            assertTrue(q.remove(i));
245 >            assertFalse(q.contains(i));
246 >            assertTrue(q.contains(i - 1));
247 >        }
248 >        for (int i = 0; i < SIZE; i += 2) {
249 >            assertTrue(q.contains(i));
250 >            assertTrue(q.remove(i));
251 >            assertFalse(q.contains(i));
252 >            assertFalse(q.remove(i + 1));
253 >            assertFalse(q.contains(i + 1));
254          }
255          assertTrue(q.isEmpty());
256      }
257 <        
257 >
258      /**
259       * contains(x) reports true when elements added but not yet removed
260       */
# Line 310 | Line 309 | public class ConcurrentSkipListSubSetTes
309                  assertTrue(changed);
310  
311              assertTrue(q.containsAll(p));
312 <            assertEquals(SIZE-i, q.size());
312 >            assertEquals(SIZE - i, q.size());
313              p.pollFirst();
314          }
315      }
# Line 323 | Line 322 | public class ConcurrentSkipListSubSetTes
322              NavigableSet q = populatedSet(SIZE);
323              NavigableSet p = populatedSet(i);
324              assertTrue(q.removeAll(p));
325 <            assertEquals(SIZE-i, q.size());
325 >            assertEquals(SIZE - i, q.size());
326              for (int j = 0; j < i; ++j) {
327 <                Integer I = (Integer)(p.pollFirst());
328 <                assertFalse(q.contains(I));
327 >                Integer x = (Integer)(p.pollFirst());
328 >                assertFalse(q.contains(x));
329              }
330          }
331      }
332  
334    
335
333      /**
334       * lower returns preceding element
335       */
# Line 349 | Line 346 | public class ConcurrentSkipListSubSetTes
346  
347          Object e4 = q.lower(zero);
348          assertNull(e4);
352
349      }
350  
351      /**
# Line 368 | Line 364 | public class ConcurrentSkipListSubSetTes
364  
365          Object e4 = q.higher(six);
366          assertNull(e4);
371
367      }
368  
369      /**
# Line 387 | Line 382 | public class ConcurrentSkipListSubSetTes
382  
383          Object e4 = q.floor(zero);
384          assertNull(e4);
390
385      }
386  
387      /**
# Line 406 | Line 400 | public class ConcurrentSkipListSubSetTes
400  
401          Object e4 = q.ceiling(six);
402          assertNull(e4);
409
403      }
404  
405      /**
406 <     * toArray contains all elements
406 >     * toArray contains all elements in sorted order
407       */
408      public void testToArray() {
409          NavigableSet q = populatedSet(SIZE);
410 <        Object[] o = q.toArray();
411 <        Arrays.sort(o);
412 <        for(int i = 0; i < o.length; i++)
420 <            assertEquals(o[i], q.pollFirst());
410 >        Object[] o = q.toArray();
411 >        for (int i = 0; i < o.length; i++)
412 >            assertSame(o[i], q.pollFirst());
413      }
414  
415      /**
416 <     * toArray(a) contains all elements
416 >     * toArray(a) contains all elements in sorted order
417       */
418      public void testToArray2() {
419 <        NavigableSet q = populatedSet(SIZE);
420 <        Integer[] ints = new Integer[SIZE];
421 <        ints = (Integer[])q.toArray(ints);
422 <        Arrays.sort(ints);
423 <        for(int i = 0; i < ints.length; i++)
424 <            assertEquals(ints[i], q.pollFirst());
419 >        NavigableSet<Integer> q = populatedSet(SIZE);
420 >        Integer[] ints = new Integer[SIZE];
421 >        Integer[] array = q.toArray(ints);
422 >        assertSame(ints, array);
423 >        for (int i = 0; i < ints.length; i++)
424 >            assertSame(ints[i], q.pollFirst());
425      }
426 <    
426 >
427      /**
428       * iterator iterates through all elements
429       */
430      public void testIterator() {
431          NavigableSet q = populatedSet(SIZE);
432 <        int i = 0;
433 <        Iterator it = q.iterator();
434 <        while(it.hasNext()) {
432 >        Iterator it = q.iterator();
433 >        int i;
434 >        for (i = 0; it.hasNext(); i++)
435              assertTrue(q.contains(it.next()));
444            ++i;
445        }
436          assertEquals(i, SIZE);
437 +        assertIteratorExhausted(it);
438      }
439  
440      /**
441       * iterator of empty set has no elements
442       */
443      public void testEmptyIterator() {
444 <        NavigableSet q = set0();
454 <        int i = 0;
455 <        Iterator it = q.iterator();
456 <        while(it.hasNext()) {
457 <            assertTrue(q.contains(it.next()));
458 <            ++i;
459 <        }
460 <        assertEquals(i, 0);
444 >        assertIteratorExhausted(set0().iterator());
445      }
446  
447      /**
448       * iterator.remove removes current element
449       */
450 <    public void testIteratorRemove () {
450 >    public void testIteratorRemove() {
451          final NavigableSet q = set0();
452          q.add(new Integer(2));
453          q.add(new Integer(1));
# Line 479 | Line 463 | public class ConcurrentSkipListSubSetTes
463          assertFalse(it.hasNext());
464      }
465  
482
466      /**
467       * toString contains toStrings of elements
468       */
# Line 487 | Line 470 | public class ConcurrentSkipListSubSetTes
470          NavigableSet q = populatedSet(SIZE);
471          String s = q.toString();
472          for (int i = 0; i < SIZE; ++i) {
473 <            assertTrue(s.indexOf(String.valueOf(i)) >= 0);
473 >            assertTrue(s.contains(String.valueOf(i)));
474          }
475 <    }        
475 >    }
476  
477      /**
478 <     * A deserialized serialized set has same elements
478 >     * A deserialized/reserialized set equals original
479       */
480 <    public void testSerialization() {
481 <        NavigableSet q = populatedSet(SIZE);
482 <        try {
483 <            ByteArrayOutputStream bout = new ByteArrayOutputStream(10000);
484 <            ObjectOutputStream out = new ObjectOutputStream(new BufferedOutputStream(bout));
485 <            out.writeObject(q);
486 <            out.close();
487 <
488 <            ByteArrayInputStream bin = new ByteArrayInputStream(bout.toByteArray());
489 <            ObjectInputStream in = new ObjectInputStream(new BufferedInputStream(bin));
490 <            NavigableSet r = (NavigableSet)in.readObject();
508 <            assertEquals(q.size(), r.size());
509 <            while (!q.isEmpty())
510 <                assertEquals(q.pollFirst(), r.pollFirst());
511 <        } catch(Exception e){
512 <            e.printStackTrace();
513 <            unexpectedException();
480 >    public void testSerialization() throws Exception {
481 >        NavigableSet x = populatedSet(SIZE);
482 >        NavigableSet y = serialClone(x);
483 >
484 >        assertNotSame(y, x);
485 >        assertEquals(x.size(), y.size());
486 >        assertEquals(x, y);
487 >        assertEquals(y, x);
488 >        while (!x.isEmpty()) {
489 >            assertFalse(y.isEmpty());
490 >            assertEquals(x.pollFirst(), y.pollFirst());
491          }
492 +        assertTrue(y.isEmpty());
493      }
494  
495      /**
# Line 639 | Line 617 | public class ConcurrentSkipListSubSetTes
617      public void testDescendingSize() {
618          NavigableSet q = populatedSet(SIZE);
619          for (int i = 0; i < SIZE; ++i) {
620 <            assertEquals(SIZE-i, q.size());
620 >            assertEquals(SIZE - i, q.size());
621              q.pollFirst();
622          }
623          for (int i = 0; i < SIZE; ++i) {
# Line 652 | Line 630 | public class ConcurrentSkipListSubSetTes
630       * add(null) throws NPE
631       */
632      public void testDescendingAddNull() {
633 <        try {
634 <            NavigableSet q = dset0();
633 >        NavigableSet q = dset0();
634 >        try {
635              q.add(null);
636              shouldThrow();
637 <        } catch (NullPointerException success) { }  
637 >        } catch (NullPointerException success) {}
638      }
639  
640      /**
# Line 680 | Line 658 | public class ConcurrentSkipListSubSetTes
658       * Add of non-Comparable throws CCE
659       */
660      public void testDescendingAddNonComparable() {
661 +        NavigableSet q = dset0();
662          try {
684            NavigableSet q = dset0();
685            q.add(new Object());
663              q.add(new Object());
664              q.add(new Object());
665              shouldThrow();
666 <        }
690 <        catch(ClassCastException success) {}
666 >        } catch (ClassCastException success) {}
667      }
668  
693
669      /**
670       * addAll(null) throws NPE
671       */
672      public void testDescendingAddAll1() {
673 +        NavigableSet q = dset0();
674          try {
699            NavigableSet q = dset0();
675              q.addAll(null);
676              shouldThrow();
677 <        }
703 <        catch (NullPointerException success) {}
677 >        } catch (NullPointerException success) {}
678      }
679 +
680      /**
681       * addAll of a collection with null elements throws NPE
682       */
683      public void testDescendingAddAll2() {
684 +        NavigableSet q = dset0();
685 +        Integer[] ints = new Integer[SIZE];
686          try {
710            NavigableSet q = dset0();
711            Integer[] ints = new Integer[SIZE];
687              q.addAll(Arrays.asList(ints));
688              shouldThrow();
689 <        }
715 <        catch (NullPointerException success) {}
689 >        } catch (NullPointerException success) {}
690      }
691 +
692      /**
693       * addAll of a collection with any null elements throws NPE after
694       * possibly adding some elements
695       */
696      public void testDescendingAddAll3() {
697 +        NavigableSet q = dset0();
698 +        Integer[] ints = new Integer[SIZE];
699 +        for (int i = 0; i < SIZE - 1; ++i)
700 +            ints[i] = new Integer(i + SIZE);
701          try {
723            NavigableSet q = dset0();
724            Integer[] ints = new Integer[SIZE];
725            for (int i = 0; i < SIZE-1; ++i)
726                ints[i] = new Integer(i+SIZE);
702              q.addAll(Arrays.asList(ints));
703              shouldThrow();
704 <        }
730 <        catch (NullPointerException success) {}
704 >        } catch (NullPointerException success) {}
705      }
706  
707      /**
708       * Set contains all elements of successful addAll
709       */
710      public void testDescendingAddAll5() {
711 <        try {
712 <            Integer[] empty = new Integer[0];
713 <            Integer[] ints = new Integer[SIZE];
714 <            for (int i = 0; i < SIZE; ++i)
715 <                ints[i] = new Integer(SIZE-1- i);
716 <            NavigableSet q = dset0();
717 <            assertFalse(q.addAll(Arrays.asList(empty)));
718 <            assertTrue(q.addAll(Arrays.asList(ints)));
719 <            for (int i = 0; i < SIZE; ++i)
746 <                assertEquals(new Integer(i), q.pollFirst());
747 <        }
748 <        finally {}
711 >        Integer[] empty = new Integer[0];
712 >        Integer[] ints = new Integer[SIZE];
713 >        for (int i = 0; i < SIZE; ++i)
714 >            ints[i] = new Integer(SIZE - 1 - i);
715 >        NavigableSet q = dset0();
716 >        assertFalse(q.addAll(Arrays.asList(empty)));
717 >        assertTrue(q.addAll(Arrays.asList(ints)));
718 >        for (int i = 0; i < SIZE; ++i)
719 >            assertEquals(new Integer(i), q.pollFirst());
720      }
721  
722      /**
# Line 754 | Line 725 | public class ConcurrentSkipListSubSetTes
725      public void testDescendingPoll() {
726          NavigableSet q = populatedSet(SIZE);
727          for (int i = 0; i < SIZE; ++i) {
728 <            assertEquals(i, ((Integer)q.pollFirst()).intValue());
728 >            assertEquals(i, q.pollFirst());
729          }
730 <        assertNull(q.pollFirst());
730 >        assertNull(q.pollFirst());
731      }
732  
733      /**
# Line 764 | Line 735 | public class ConcurrentSkipListSubSetTes
735       */
736      public void testDescendingRemoveElement() {
737          NavigableSet q = populatedSet(SIZE);
738 <        for (int i = 1; i < SIZE; i+=2) {
738 >        for (int i = 1; i < SIZE; i += 2) {
739              assertTrue(q.remove(new Integer(i)));
740          }
741 <        for (int i = 0; i < SIZE; i+=2) {
741 >        for (int i = 0; i < SIZE; i += 2 ) {
742              assertTrue(q.remove(new Integer(i)));
743 <            assertFalse(q.remove(new Integer(i+1)));
743 >            assertFalse(q.remove(new Integer(i + 1)));
744          }
745          assertTrue(q.isEmpty());
746      }
747 <        
747 >
748      /**
749       * contains(x) reports true when elements added but not yet removed
750       */
# Line 828 | Line 799 | public class ConcurrentSkipListSubSetTes
799                  assertTrue(changed);
800  
801              assertTrue(q.containsAll(p));
802 <            assertEquals(SIZE-i, q.size());
802 >            assertEquals(SIZE - i, q.size());
803              p.pollFirst();
804          }
805      }
# Line 841 | Line 812 | public class ConcurrentSkipListSubSetTes
812              NavigableSet q = populatedSet(SIZE);
813              NavigableSet p = populatedSet(i);
814              assertTrue(q.removeAll(p));
815 <            assertEquals(SIZE-i, q.size());
815 >            assertEquals(SIZE - i, q.size());
816              for (int j = 0; j < i; ++j) {
817 <                Integer I = (Integer)(p.pollFirst());
818 <                assertFalse(q.contains(I));
817 >                Integer x = (Integer)(p.pollFirst());
818 >                assertFalse(q.contains(x));
819              }
820          }
821      }
822  
852    
853
823      /**
824       * lower returns preceding element
825       */
# Line 867 | Line 836 | public class ConcurrentSkipListSubSetTes
836  
837          Object e4 = q.lower(zero);
838          assertNull(e4);
870
839      }
840  
841      /**
# Line 886 | Line 854 | public class ConcurrentSkipListSubSetTes
854  
855          Object e4 = q.higher(m6);
856          assertNull(e4);
889
857      }
858  
859      /**
# Line 905 | Line 872 | public class ConcurrentSkipListSubSetTes
872  
873          Object e4 = q.floor(zero);
874          assertNull(e4);
908
875      }
876  
877      /**
# Line 924 | Line 890 | public class ConcurrentSkipListSubSetTes
890  
891          Object e4 = q.ceiling(m6);
892          assertNull(e4);
927
893      }
894  
895      /**
# Line 932 | Line 897 | public class ConcurrentSkipListSubSetTes
897       */
898      public void testDescendingToArray() {
899          NavigableSet q = populatedSet(SIZE);
900 <        Object[] o = q.toArray();
900 >        Object[] o = q.toArray();
901          Arrays.sort(o);
902 <        for(int i = 0; i < o.length; i++)
903 <            assertEquals(o[i], q.pollFirst());
902 >        for (int i = 0; i < o.length; i++)
903 >            assertEquals(o[i], q.pollFirst());
904      }
905  
906      /**
# Line 943 | Line 908 | public class ConcurrentSkipListSubSetTes
908       */
909      public void testDescendingToArray2() {
910          NavigableSet q = populatedSet(SIZE);
911 <        Integer[] ints = new Integer[SIZE];
912 <        ints = (Integer[])q.toArray(ints);
911 >        Integer[] ints = new Integer[SIZE];
912 >        assertSame(ints, q.toArray(ints));
913          Arrays.sort(ints);
914 <        for(int i = 0; i < ints.length; i++)
914 >        for (int i = 0; i < ints.length; i++)
915              assertEquals(ints[i], q.pollFirst());
916      }
917 <    
917 >
918      /**
919       * iterator iterates through all elements
920       */
921      public void testDescendingIterator() {
922          NavigableSet q = populatedSet(SIZE);
923          int i = 0;
924 <        Iterator it = q.iterator();
925 <        while(it.hasNext()) {
924 >        Iterator it = q.iterator();
925 >        while (it.hasNext()) {
926              assertTrue(q.contains(it.next()));
927              ++i;
928          }
# Line 970 | Line 935 | public class ConcurrentSkipListSubSetTes
935      public void testDescendingEmptyIterator() {
936          NavigableSet q = dset0();
937          int i = 0;
938 <        Iterator it = q.iterator();
939 <        while(it.hasNext()) {
938 >        Iterator it = q.iterator();
939 >        while (it.hasNext()) {
940              assertTrue(q.contains(it.next()));
941              ++i;
942          }
943 <        assertEquals(i, 0);
943 >        assertEquals(0, i);
944      }
945  
946      /**
947       * iterator.remove removes current element
948       */
949 <    public void testDescendingIteratorRemove () {
949 >    public void testDescendingIteratorRemove() {
950          final NavigableSet q = dset0();
951          q.add(new Integer(2));
952          q.add(new Integer(1));
# Line 997 | Line 962 | public class ConcurrentSkipListSubSetTes
962          assertFalse(it.hasNext());
963      }
964  
1000
965      /**
966       * toString contains toStrings of elements
967       */
# Line 1005 | Line 969 | public class ConcurrentSkipListSubSetTes
969          NavigableSet q = populatedSet(SIZE);
970          String s = q.toString();
971          for (int i = 0; i < SIZE; ++i) {
972 <            assertTrue(s.indexOf(String.valueOf(i)) >= 0);
972 >            assertTrue(s.contains(String.valueOf(i)));
973          }
974 <    }        
974 >    }
975  
976      /**
977 <     * A deserialized serialized set has same elements
977 >     * A deserialized/reserialized set equals original
978       */
979 <    public void testDescendingSerialization() {
980 <        NavigableSet q = populatedSet(SIZE);
981 <        try {
982 <            ByteArrayOutputStream bout = new ByteArrayOutputStream(10000);
983 <            ObjectOutputStream out = new ObjectOutputStream(new BufferedOutputStream(bout));
984 <            out.writeObject(q);
985 <            out.close();
986 <
987 <            ByteArrayInputStream bin = new ByteArrayInputStream(bout.toByteArray());
988 <            ObjectInputStream in = new ObjectInputStream(new BufferedInputStream(bin));
989 <            NavigableSet r = (NavigableSet)in.readObject();
1026 <            assertEquals(q.size(), r.size());
1027 <            while (!q.isEmpty())
1028 <                assertEquals(q.pollFirst(), r.pollFirst());
1029 <        } catch(Exception e){
1030 <            e.printStackTrace();
1031 <            unexpectedException();
979 >    public void testDescendingSerialization() throws Exception {
980 >        NavigableSet x = dset5();
981 >        NavigableSet y = serialClone(x);
982 >
983 >        assertNotSame(y, x);
984 >        assertEquals(x.size(), y.size());
985 >        assertEquals(x, y);
986 >        assertEquals(y, x);
987 >        while (!x.isEmpty()) {
988 >            assertFalse(y.isEmpty());
989 >            assertEquals(x.pollFirst(), y.pollFirst());
990          }
991 +        assertTrue(y.isEmpty());
992      }
993  
994      /**

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines