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

Comparing jsr166/src/test/tck/ConcurrentSkipListMapTest.java (file contents):
Revision 1.14 by jsr166, Sat Nov 21 17:38:05 2009 UTC vs.
Revision 1.34 by jsr166, Wed Dec 31 21:45:16 2014 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.ArrayList;
8 > import java.util.Arrays;
9 > import java.util.BitSet;
10 > import java.util.Collection;
11 > import java.util.Iterator;
12 > import java.util.Map;
13 > import java.util.NavigableMap;
14 > import java.util.NavigableSet;
15 > import java.util.NoSuchElementException;
16 > import java.util.Random;
17 > import java.util.Set;
18 > import java.util.concurrent.ConcurrentSkipListMap;
19 >
20 > import junit.framework.Test;
21 > import junit.framework.TestSuite;
22  
23   public class ConcurrentSkipListMapTest extends JSR166TestCase {
24      public static void main(String[] args) {
25 <        junit.textui.TestRunner.run (suite());
25 >        junit.textui.TestRunner.run(suite());
26      }
27      public static Test suite() {
28          return new TestSuite(ConcurrentSkipListMapTest.class);
29      }
30  
31      /**
32 <     * Create a map from Integers 1-5 to Strings "A"-"E".
32 >     * Returns a new map from Integers 1-5 to Strings "A"-"E".
33       */
34      private static ConcurrentSkipListMap map5() {
35          ConcurrentSkipListMap map = new ConcurrentSkipListMap();
# Line 34 | Line 45 | public class ConcurrentSkipListMapTest e
45      }
46  
47      /**
48 <     *  clear removes all pairs
48 >     * clear removes all pairs
49       */
50      public void testClear() {
51          ConcurrentSkipListMap map = map5();
52          map.clear();
53 <        assertEquals(map.size(), 0);
53 >        assertEquals(0, map.size());
54      }
55  
56      /**
57 <     *
57 >     * copy constructor creates map equal to source map
58       */
59      public void testConstructFromSorted() {
60          ConcurrentSkipListMap map = map5();
# Line 52 | Line 63 | public class ConcurrentSkipListMapTest e
63      }
64  
65      /**
66 <     *  Maps with same contents are equal
66 >     * Maps with same contents are equal
67       */
68      public void testEquals() {
69          ConcurrentSkipListMap map1 = map5();
# Line 65 | Line 76 | public class ConcurrentSkipListMapTest e
76      }
77  
78      /**
79 <     *  containsKey returns true for contained key
79 >     * containsKey returns true for contained key
80       */
81      public void testContainsKey() {
82          ConcurrentSkipListMap map = map5();
# Line 74 | Line 85 | public class ConcurrentSkipListMapTest e
85      }
86  
87      /**
88 <     *  containsValue returns true for held values
88 >     * containsValue returns true for held values
89       */
90      public void testContainsValue() {
91          ConcurrentSkipListMap map = map5();
# Line 83 | Line 94 | public class ConcurrentSkipListMapTest e
94      }
95  
96      /**
97 <     *  get returns the correct element at the given key,
98 <     *  or null if not present
97 >     * get returns the correct element at the given key,
98 >     * or null if not present
99       */
100      public void testGet() {
101          ConcurrentSkipListMap map = map5();
# Line 94 | Line 105 | public class ConcurrentSkipListMapTest e
105      }
106  
107      /**
108 <     *  isEmpty is true of empty map and false for non-empty
108 >     * isEmpty is true of empty map and false for non-empty
109       */
110      public void testIsEmpty() {
111          ConcurrentSkipListMap empty = new ConcurrentSkipListMap();
# Line 104 | Line 115 | public class ConcurrentSkipListMapTest e
115      }
116  
117      /**
118 <     *   firstKey returns first key
118 >     * firstKey returns first key
119       */
120      public void testFirstKey() {
121          ConcurrentSkipListMap map = map5();
# Line 112 | Line 123 | public class ConcurrentSkipListMapTest e
123      }
124  
125      /**
126 <     *   lastKey returns last key
126 >     * lastKey returns last key
127       */
128      public void testLastKey() {
129          ConcurrentSkipListMap map = map5();
130          assertEquals(five, map.lastKey());
131      }
132  
122
133      /**
134 <     *  keySet.toArray returns contains all keys
134 >     * keySet.toArray returns contains all keys
135       */
136      public void testKeySetToArray() {
137          ConcurrentSkipListMap map = map5();
# Line 134 | Line 144 | public class ConcurrentSkipListMapTest e
144      }
145  
146      /**
147 <     *  descendingkeySet.toArray returns contains all keys
147 >     * descendingkeySet.toArray returns contains all keys
148       */
149      public void testDescendingKeySetToArray() {
150          ConcurrentSkipListMap map = map5();
# Line 147 | Line 157 | public class ConcurrentSkipListMapTest e
157      }
158  
159      /**
160 <     *   keySet returns a Set containing all the keys
160 >     * keySet returns a Set containing all the keys
161       */
162      public void testKeySet() {
163          ConcurrentSkipListMap map = map5();
# Line 161 | Line 171 | public class ConcurrentSkipListMapTest e
171      }
172  
173      /**
174 <     *   keySet is ordered
174 >     * keySet is ordered
175       */
176      public void testKeySetOrder() {
177          ConcurrentSkipListMap map = map5();
# Line 176 | Line 186 | public class ConcurrentSkipListMapTest e
186              last = k;
187              ++count;
188          }
189 <        assertEquals(count ,5);
189 >        assertEquals(5, count);
190      }
191  
192      /**
# Line 195 | Line 205 | public class ConcurrentSkipListMapTest e
205              last = k;
206              ++count;
207          }
208 <        assertEquals(count ,5);
208 >        assertEquals(5, count);
209      }
210  
211      /**
212 <     *   descendingKeySet is ordered
212 >     * descendingKeySet is ordered
213       */
214      public void testDescendingKeySetOrder() {
215          ConcurrentSkipListMap map = map5();
# Line 214 | Line 224 | public class ConcurrentSkipListMapTest e
224              last = k;
225              ++count;
226          }
227 <        assertEquals(count, 5);
227 >        assertEquals(5, count);
228      }
229  
230      /**
231 <     *  descending iterator of descendingKeySet is ordered
231 >     * descending iterator of descendingKeySet is ordered
232       */
233      public void testDescendingKeySetDescendingIteratorOrder() {
234          ConcurrentSkipListMap map = map5();
# Line 233 | Line 243 | public class ConcurrentSkipListMapTest e
243              last = k;
244              ++count;
245          }
246 <        assertEquals(count, 5);
246 >        assertEquals(5, count);
247      }
248  
249      /**
250 <     *  Values.toArray contains all values
250 >     * Values.toArray contains all values
251       */
252      public void testValuesToArray() {
253          ConcurrentSkipListMap map = map5();
# Line 305 | Line 315 | public class ConcurrentSkipListMapTest e
315      }
316  
317      /**
318 <     *  entrySet.toArray contains all entries
318 >     * entrySet.toArray contains all entries
319       */
320      public void testEntrySetToArray() {
321          ConcurrentSkipListMap map = map5();
# Line 319 | Line 329 | public class ConcurrentSkipListMapTest e
329      }
330  
331      /**
332 <     *  descendingEntrySet.toArray contains all entries
332 >     * descendingEntrySet.toArray contains all entries
333       */
334      public void testDescendingEntrySetToArray() {
335          ConcurrentSkipListMap map = map5();
# Line 333 | Line 343 | public class ConcurrentSkipListMapTest e
343      }
344  
345      /**
346 <     *   putAll  adds all key-value pairs from the given map
346 >     * putAll adds all key-value pairs from the given map
347       */
348      public void testPutAll() {
349          ConcurrentSkipListMap empty = new ConcurrentSkipListMap();
# Line 348 | Line 358 | public class ConcurrentSkipListMapTest e
358      }
359  
360      /**
361 <     *   putIfAbsent works when the given key is not present
361 >     * putIfAbsent works when the given key is not present
362       */
363      public void testPutIfAbsent() {
364          ConcurrentSkipListMap map = map5();
# Line 357 | Line 367 | public class ConcurrentSkipListMapTest e
367      }
368  
369      /**
370 <     *   putIfAbsent does not add the pair if the key is already present
370 >     * putIfAbsent does not add the pair if the key is already present
371       */
372      public void testPutIfAbsent2() {
373          ConcurrentSkipListMap map = map5();
# Line 365 | Line 375 | public class ConcurrentSkipListMapTest e
375      }
376  
377      /**
378 <     *   replace fails when the given key is not present
378 >     * replace fails when the given key is not present
379       */
380      public void testReplace() {
381          ConcurrentSkipListMap map = map5();
# Line 374 | Line 384 | public class ConcurrentSkipListMapTest e
384      }
385  
386      /**
387 <     *   replace succeeds if the key is already present
387 >     * replace succeeds if the key is already present
388       */
389      public void testReplace2() {
390          ConcurrentSkipListMap map = map5();
# Line 382 | Line 392 | public class ConcurrentSkipListMapTest e
392          assertEquals("Z", map.get(one));
393      }
394  
385
395      /**
396       * replace value fails when the given key not mapped to expected value
397       */
# Line 403 | Line 412 | public class ConcurrentSkipListMapTest e
412          assertEquals("Z", map.get(one));
413      }
414  
406
415      /**
416 <     *   remove removes the correct key-value pair from the map
416 >     * remove removes the correct key-value pair from the map
417       */
418      public void testRemove() {
419          ConcurrentSkipListMap map = map5();
# Line 427 | Line 435 | public class ConcurrentSkipListMapTest e
435          map.remove(four, "A");
436          assertEquals(4, map.size());
437          assertTrue(map.containsKey(four));
430
438      }
439  
440      /**
# Line 446 | Line 453 | public class ConcurrentSkipListMapTest e
453  
454          Map.Entry e4 = map.lowerEntry(zero);
455          assertNull(e4);
449
456      }
457  
458      /**
# Line 465 | Line 471 | public class ConcurrentSkipListMapTest e
471  
472          Map.Entry e4 = map.higherEntry(six);
473          assertNull(e4);
468
474      }
475  
476      /**
# Line 484 | Line 489 | public class ConcurrentSkipListMapTest e
489  
490          Map.Entry e4 = map.floorEntry(zero);
491          assertNull(e4);
487
492      }
493  
494      /**
# Line 503 | Line 507 | public class ConcurrentSkipListMapTest e
507  
508          Map.Entry e4 = map.ceilingEntry(six);
509          assertNull(e4);
506
510      }
511  
512      /**
513       * lowerEntry, higherEntry, ceilingEntry, and floorEntry return
514 <     * imutable entries
514 >     * immutable entries
515       */
516 <    public void testEntryImmutablity() {
516 >    public void testEntryImmutability() {
517          ConcurrentSkipListMap map = map5();
518          Map.Entry e = map.lowerEntry(three);
519          assertEquals(two, e.getKey());
# Line 538 | Line 541 | public class ConcurrentSkipListMapTest e
541          } catch (UnsupportedOperationException success) {}
542      }
543  
541
542
544      /**
545       * lowerKey returns preceding element
546       */
# Line 556 | Line 557 | public class ConcurrentSkipListMapTest e
557  
558          Object e4 = q.lowerKey(zero);
559          assertNull(e4);
559
560      }
561  
562      /**
# Line 575 | Line 575 | public class ConcurrentSkipListMapTest e
575  
576          Object e4 = q.higherKey(six);
577          assertNull(e4);
578
578      }
579  
580      /**
# Line 594 | Line 593 | public class ConcurrentSkipListMapTest e
593  
594          Object e4 = q.floorKey(zero);
595          assertNull(e4);
597
596      }
597  
598      /**
# Line 613 | Line 611 | public class ConcurrentSkipListMapTest e
611  
612          Object e4 = q.ceilingKey(six);
613          assertNull(e4);
616
614      }
615  
616      /**
# Line 671 | Line 668 | public class ConcurrentSkipListMapTest e
668      }
669  
670      /**
671 <     *   size returns the correct values
671 >     * size returns the correct values
672       */
673      public void testSize() {
674          ConcurrentSkipListMap map = map5();
# Line 687 | Line 684 | public class ConcurrentSkipListMapTest e
684          ConcurrentSkipListMap map = map5();
685          String s = map.toString();
686          for (int i = 1; i <= 5; ++i) {
687 <            assertTrue(s.indexOf(String.valueOf(i)) >= 0);
687 >            assertTrue(s.contains(String.valueOf(i)));
688          }
689      }
690  
# Line 726 | Line 723 | public class ConcurrentSkipListMapTest e
723          } catch (NullPointerException success) {}
724      }
725  
729
726      /**
727       * put(null,x) throws NPE
728       */
# Line 808 | Line 804 | public class ConcurrentSkipListMapTest e
804       * A deserialized map equals original
805       */
806      public void testSerialization() throws Exception {
807 <        ConcurrentSkipListMap q = map5();
807 >        NavigableMap x = map5();
808 >        NavigableMap y = serialClone(x);
809  
810 <        ByteArrayOutputStream bout = new ByteArrayOutputStream(10000);
811 <        ObjectOutputStream out = new ObjectOutputStream(new BufferedOutputStream(bout));
812 <        out.writeObject(q);
813 <        out.close();
814 <
818 <        ByteArrayInputStream bin = new ByteArrayInputStream(bout.toByteArray());
819 <        ObjectInputStream in = new ObjectInputStream(new BufferedInputStream(bin));
820 <        ConcurrentSkipListMap r = (ConcurrentSkipListMap)in.readObject();
821 <        assertEquals(q.size(), r.size());
822 <        assertTrue(q.equals(r));
823 <        assertTrue(r.equals(q));
810 >        assertNotSame(x, y);
811 >        assertEquals(x.size(), y.size());
812 >        assertEquals(x.toString(), y.toString());
813 >        assertEquals(x, y);
814 >        assertEquals(y, x);
815      }
816  
826
827
817      /**
818       * subMap returns map with keys in requested range
819       */
# Line 861 | Line 850 | public class ConcurrentSkipListMapTest e
850          assertEquals(1, sm.size());
851          assertEquals(three, sm.firstKey());
852          assertEquals(three, sm.lastKey());
853 <        assertTrue(sm.remove(three) != null);
853 >        assertEquals("C", sm.remove(three));
854          assertTrue(sm.isEmpty());
855          assertEquals(3, map.size());
856      }
# Line 894 | Line 883 | public class ConcurrentSkipListMapTest e
883          assertEquals(4, map.size());
884          assertEquals(0, sm.size());
885          assertTrue(sm.isEmpty());
886 <        assertTrue(sm.remove(three) == null);
886 >        assertSame(sm.remove(three), null);
887          assertEquals(4, map.size());
888      }
889  
# Line 976 | Line 965 | public class ConcurrentSkipListMapTest e
965          NavigableMap ssm = sm.tailMap(four, true);
966          assertEquals(four, ssm.firstKey());
967          assertEquals(five, ssm.lastKey());
968 <        assertTrue(ssm.remove(four) != null);
968 >        assertEquals("D", ssm.remove(four));
969          assertEquals(1, ssm.size());
970          assertEquals(3, sm.size());
971          assertEquals(4, map.size());
# Line 989 | Line 978 | public class ConcurrentSkipListMapTest e
978       * Submaps of submaps subdivide correctly
979       */
980      public void testRecursiveSubMaps() throws Exception {
981 <        int mapSize = 1000;
981 >        int mapSize = expensiveTests ? 1000 : 100;
982          Class cl = ConcurrentSkipListMap.class;
983          NavigableMap<Integer, Integer> map = newMap(cl);
984          bs = new BitSet(mapSize);
# Line 1009 | Line 998 | public class ConcurrentSkipListMapTest e
998      static NavigableMap<Integer, Integer> newMap(Class cl) throws Exception {
999          NavigableMap<Integer, Integer> result =
1000              (NavigableMap<Integer, Integer>) cl.newInstance();
1001 <        assertEquals(result.size(), 0);
1001 >        assertEquals(0, result.size());
1002          assertFalse(result.keySet().iterator().hasNext());
1003          return result;
1004      }
# Line 1041 | Line 1030 | public class ConcurrentSkipListMapTest e
1030          // Add entries till we're back to original size
1031          while (map.size() < size) {
1032              int key = min + rnd.nextInt(rangeSize);
1033 <            assertTrue(key >= min && key<= max);
1033 >            assertTrue(key >= min && key <= max);
1034              put(map, key);
1035          }
1036      }
# Line 1066 | Line 1055 | public class ConcurrentSkipListMapTest e
1055          // Add entries till we're back to original size
1056          while (map.size() < size) {
1057              int key = min - 5 + rnd.nextInt(rangeSize + 10);
1058 <            if (key >= min && key<= max) {
1058 >            if (key >= min && key <= max) {
1059                  put(map, key);
1060              } else {
1061                  try {
# Line 1170 | Line 1159 | public class ConcurrentSkipListMapTest e
1159       */
1160      void check(NavigableMap<Integer, Integer> map,
1161                        final int min, final int max, final boolean ascending) {
1162 <       class ReferenceSet {
1162 >        class ReferenceSet {
1163              int lower(int key) {
1164                  return ascending ? lowerAscending(key) : higherAscending(key);
1165              }
# Line 1201 | Line 1190 | public class ConcurrentSkipListMapTest e
1190                  // BitSet should support this! Test would run much faster
1191                  while (key >= min) {
1192                      if (bs.get(key))
1193 <                        return(key);
1193 >                        return key;
1194                      key--;
1195                  }
1196                  return -1;
# Line 1236 | Line 1225 | public class ConcurrentSkipListMapTest e
1225              if (bsContainsI)
1226                  size++;
1227          }
1228 <        assertEquals(map.size(), size);
1228 >        assertEquals(size, map.size());
1229  
1230          // Test contents using contains keySet iterator
1231          int size2 = 0;

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines