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

Comparing jsr166/src/test/tck/TreeMapTest.java (file contents):
Revision 1.7 by jsr166, Mon Nov 16 04:57:10 2009 UTC vs.
Revision 1.35 by jsr166, Sun Sep 29 20:40:48 2019 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.BitSet;
9 > import java.util.Collection;
10 > import java.util.Iterator;
11 > import java.util.Map;
12 > import java.util.NavigableMap;
13 > import java.util.NavigableSet;
14 > import java.util.NoSuchElementException;
15 > import java.util.Random;
16 > import java.util.Set;
17 > import java.util.TreeMap;
18 >
19 > import junit.framework.Test;
20  
21   public class TreeMapTest extends JSR166TestCase {
22      public static void main(String[] args) {
23 <        junit.textui.TestRunner.run (suite());
23 >        main(suite(), args);
24      }
25      public static Test suite() {
26 <        return new TestSuite(TreeMapTest.class);
26 >        class Implementation implements MapImplementation {
27 >            public Class<?> klazz() { return TreeMap.class; }
28 >            public Map emptyMap() { return new TreeMap(); }
29 >            public boolean isConcurrent() { return false; }
30 >            public boolean permitsNullKeys() { return false; }
31 >            public boolean permitsNullValues() { return true; }
32 >            public boolean supportsSetValue() { return true; }
33 >        }
34 >        return newTestSuite(
35 >            TreeMapTest.class,
36 >            MapTest.testSuite(new Implementation()));
37      }
38  
39      /**
40 <     * Create a map from Integers 1-5 to Strings "A"-"E".
40 >     * Returns a new map from Integers 1-5 to Strings "A"-"E".
41       */
42      private static TreeMap map5() {
43 <        TreeMap map = new TreeMap();
43 >        TreeMap map = new TreeMap();
44          assertTrue(map.isEmpty());
45 <        map.put(one, "A");
46 <        map.put(five, "E");
47 <        map.put(three, "C");
48 <        map.put(two, "B");
49 <        map.put(four, "D");
45 >        map.put(one, "A");
46 >        map.put(five, "E");
47 >        map.put(three, "C");
48 >        map.put(two, "B");
49 >        map.put(four, "D");
50          assertFalse(map.isEmpty());
51          assertEquals(5, map.size());
52 <        return map;
52 >        return map;
53      }
54  
55      /**
56 <     *  clear removes all pairs
56 >     * clear removes all pairs
57       */
58      public void testClear() {
59          TreeMap map = map5();
60 <        map.clear();
61 <        assertEquals(map.size(), 0);
60 >        map.clear();
61 >        assertEquals(0, map.size());
62      }
63  
64      /**
65 <     *
65 >     * copy constructor creates map equal to source map
66       */
67      public void testConstructFromSorted() {
68          TreeMap map = map5();
# Line 52 | Line 71 | public class TreeMapTest extends JSR166T
71      }
72  
73      /**
74 <     *  Maps with same contents are equal
74 >     * Maps with same contents are equal
75       */
76      public void testEquals() {
77          TreeMap map1 = map5();
78          TreeMap map2 = map5();
79          assertEquals(map1, map2);
80          assertEquals(map2, map1);
81 <        map1.clear();
81 >        map1.clear();
82          assertFalse(map1.equals(map2));
83          assertFalse(map2.equals(map1));
84      }
85  
86      /**
87 <     *  containsKey returns true for contained key
87 >     * containsKey returns true for contained key
88       */
89      public void testContainsKey() {
90          TreeMap map = map5();
91 <        assertTrue(map.containsKey(one));
91 >        assertTrue(map.containsKey(one));
92          assertFalse(map.containsKey(zero));
93      }
94  
95      /**
96 <     *  containsValue returns true for held values
96 >     * containsValue returns true for held values
97       */
98      public void testContainsValue() {
99          TreeMap map = map5();
100 <        assertTrue(map.containsValue("A"));
100 >        assertTrue(map.containsValue("A"));
101          assertFalse(map.containsValue("Z"));
102      }
103  
104      /**
105 <     *  get returns the correct element at the given key,
106 <     *  or null if not present
105 >     * get returns the correct element at the given key,
106 >     * or null if not present
107       */
108      public void testGet() {
109          TreeMap map = map5();
110 <        assertEquals("A", (String)map.get(one));
110 >        assertEquals("A", (String)map.get(one));
111          TreeMap empty = new TreeMap();
112          assertNull(empty.get(one));
113      }
114  
115      /**
116 <     *  isEmpty is true of empty map and false for non-empty
116 >     * isEmpty is true of empty map and false for non-empty
117       */
118      public void testIsEmpty() {
119          TreeMap empty = new TreeMap();
120          TreeMap map = map5();
121 <        assertTrue(empty.isEmpty());
121 >        assertTrue(empty.isEmpty());
122          assertFalse(map.isEmpty());
123      }
124  
125      /**
126 <     *   firstKey returns first key
126 >     * firstKey returns first key
127       */
128      public void testFirstKey() {
129          TreeMap map = map5();
130 <        assertEquals(one, map.firstKey());
130 >        assertEquals(one, map.firstKey());
131      }
132  
133      /**
134 <     *   lastKey returns last key
134 >     * lastKey returns last key
135       */
136      public void testLastKey() {
137          TreeMap map = map5();
138 <        assertEquals(five, map.lastKey());
138 >        assertEquals(five, map.lastKey());
139      }
140  
122
141      /**
142 <     *  keySet.toArray returns contains all keys
142 >     * keySet.toArray returns contains all keys
143       */
144      public void testKeySetToArray() {
145          TreeMap map = map5();
146 <        Set s = map.keySet();
146 >        Set s = map.keySet();
147          Object[] ar = s.toArray();
148          assertTrue(s.containsAll(Arrays.asList(ar)));
149 <        assertEquals(5, ar.length);
149 >        assertEquals(5, ar.length);
150          ar[0] = m10;
151          assertFalse(s.containsAll(Arrays.asList(ar)));
152      }
153  
154      /**
155 <     *  descendingkeySet.toArray returns contains all keys
155 >     * descendingkeySet.toArray returns contains all keys
156       */
157      public void testDescendingKeySetToArray() {
158          TreeMap map = map5();
159 <        Set s = map.descendingKeySet();
159 >        Set s = map.descendingKeySet();
160          Object[] ar = s.toArray();
161 <        assertEquals(5, ar.length);
161 >        assertEquals(5, ar.length);
162          assertTrue(s.containsAll(Arrays.asList(ar)));
163          ar[0] = m10;
164          assertFalse(s.containsAll(Arrays.asList(ar)));
165      }
166  
167      /**
168 <     *   keySet returns a Set containing all the keys
168 >     * keySet returns a Set containing all the keys
169       */
170      public void testKeySet() {
171          TreeMap map = map5();
172 <        Set s = map.keySet();
173 <        assertEquals(5, s.size());
174 <        assertTrue(s.contains(one));
175 <        assertTrue(s.contains(two));
176 <        assertTrue(s.contains(three));
177 <        assertTrue(s.contains(four));
178 <        assertTrue(s.contains(five));
172 >        Set s = map.keySet();
173 >        assertEquals(5, s.size());
174 >        assertTrue(s.contains(one));
175 >        assertTrue(s.contains(two));
176 >        assertTrue(s.contains(three));
177 >        assertTrue(s.contains(four));
178 >        assertTrue(s.contains(five));
179      }
180  
181      /**
182 <     *   keySet is ordered
182 >     * keySet is ordered
183       */
184      public void testKeySetOrder() {
185          TreeMap map = map5();
186 <        Set s = map.keySet();
186 >        Set s = map.keySet();
187          Iterator i = s.iterator();
188          Integer last = (Integer)i.next();
189          assertEquals(last, one);
# Line 176 | Line 194 | public class TreeMapTest extends JSR166T
194              last = k;
195              ++count;
196          }
197 <        assertEquals(count ,5);
197 >        assertEquals(5, count);
198      }
199  
200      /**
# Line 184 | Line 202 | public class TreeMapTest extends JSR166T
202       */
203      public void testKeySetDescendingIteratorOrder() {
204          TreeMap map = map5();
205 <        NavigableSet s = map.navigableKeySet();
205 >        NavigableSet s = map.navigableKeySet();
206          Iterator i = s.descendingIterator();
207          Integer last = (Integer)i.next();
208          assertEquals(last, five);
# Line 195 | Line 213 | public class TreeMapTest extends JSR166T
213              last = k;
214              ++count;
215          }
216 <        assertEquals(count ,5);
216 >        assertEquals(5, count);
217      }
218  
219      /**
220 <     *   descendingKeySet is ordered
220 >     * descendingKeySet is ordered
221       */
222      public void testDescendingKeySetOrder() {
223          TreeMap map = map5();
224 <        Set s = map.descendingKeySet();
224 >        Set s = map.descendingKeySet();
225          Iterator i = s.iterator();
226          Integer last = (Integer)i.next();
227          assertEquals(last, five);
# Line 214 | Line 232 | public class TreeMapTest extends JSR166T
232              last = k;
233              ++count;
234          }
235 <        assertEquals(count, 5);
235 >        assertEquals(5, count);
236      }
237  
238      /**
239 <     *  descending iterator of descendingKeySet is ordered
239 >     * descending iterator of descendingKeySet is ordered
240       */
241      public void testDescendingKeySetDescendingIteratorOrder() {
242          TreeMap map = map5();
243 <        NavigableSet s = map.descendingKeySet();
243 >        NavigableSet s = map.descendingKeySet();
244          Iterator i = s.descendingIterator();
245          Integer last = (Integer)i.next();
246          assertEquals(last, one);
# Line 233 | Line 251 | public class TreeMapTest extends JSR166T
251              last = k;
252              ++count;
253          }
254 <        assertEquals(count, 5);
254 >        assertEquals(5, count);
255      }
256  
257      /**
# Line 241 | Line 259 | public class TreeMapTest extends JSR166T
259       */
260      public void testValues() {
261          TreeMap map = map5();
262 <        Collection s = map.values();
263 <        assertEquals(5, s.size());
264 <        assertTrue(s.contains("A"));
265 <        assertTrue(s.contains("B"));
266 <        assertTrue(s.contains("C"));
267 <        assertTrue(s.contains("D"));
268 <        assertTrue(s.contains("E"));
262 >        Collection s = map.values();
263 >        assertEquals(5, s.size());
264 >        assertTrue(s.contains("A"));
265 >        assertTrue(s.contains("B"));
266 >        assertTrue(s.contains("C"));
267 >        assertTrue(s.contains("D"));
268 >        assertTrue(s.contains("E"));
269      }
270  
271      /**
# Line 255 | Line 273 | public class TreeMapTest extends JSR166T
273       */
274      public void testEntrySet() {
275          TreeMap map = map5();
276 <        Set s = map.entrySet();
277 <        assertEquals(5, s.size());
276 >        Set s = map.entrySet();
277 >        assertEquals(5, s.size());
278          Iterator it = s.iterator();
279          while (it.hasNext()) {
280              Map.Entry e = (Map.Entry) it.next();
# Line 274 | Line 292 | public class TreeMapTest extends JSR166T
292       */
293      public void testDescendingEntrySet() {
294          TreeMap map = map5();
295 <        Set s = map.descendingMap().entrySet();
296 <        assertEquals(5, s.size());
295 >        Set s = map.descendingMap().entrySet();
296 >        assertEquals(5, s.size());
297          Iterator it = s.iterator();
298          while (it.hasNext()) {
299              Map.Entry e = (Map.Entry) it.next();
# Line 289 | Line 307 | public class TreeMapTest extends JSR166T
307      }
308  
309      /**
310 <     *  entrySet.toArray contains all entries
310 >     * entrySet.toArray contains all entries
311       */
312      public void testEntrySetToArray() {
313          TreeMap map = map5();
314 <        Set s = map.entrySet();
314 >        Set s = map.entrySet();
315          Object[] ar = s.toArray();
316          assertEquals(5, ar.length);
317          for (int i = 0; i < 5; ++i) {
# Line 303 | Line 321 | public class TreeMapTest extends JSR166T
321      }
322  
323      /**
324 <     *  descendingEntrySet.toArray contains all entries
324 >     * descendingEntrySet.toArray contains all entries
325       */
326      public void testDescendingEntrySetToArray() {
327          TreeMap map = map5();
328 <        Set s = map.descendingMap().entrySet();
328 >        Set s = map.descendingMap().entrySet();
329          Object[] ar = s.toArray();
330          assertEquals(5, ar.length);
331          for (int i = 0; i < 5; ++i) {
# Line 317 | Line 335 | public class TreeMapTest extends JSR166T
335      }
336  
337      /**
338 <     *   putAll  adds all key-value pairs from the given map
338 >     * putAll adds all key-value pairs from the given map
339       */
340      public void testPutAll() {
341          TreeMap empty = new TreeMap();
342          TreeMap map = map5();
343 <        empty.putAll(map);
344 <        assertEquals(5, empty.size());
345 <        assertTrue(empty.containsKey(one));
346 <        assertTrue(empty.containsKey(two));
347 <        assertTrue(empty.containsKey(three));
348 <        assertTrue(empty.containsKey(four));
349 <        assertTrue(empty.containsKey(five));
343 >        empty.putAll(map);
344 >        assertEquals(5, empty.size());
345 >        assertTrue(empty.containsKey(one));
346 >        assertTrue(empty.containsKey(two));
347 >        assertTrue(empty.containsKey(three));
348 >        assertTrue(empty.containsKey(four));
349 >        assertTrue(empty.containsKey(five));
350      }
351  
352      /**
353 <     *   remove removes the correct key-value pair from the map
353 >     * remove removes the correct key-value pair from the map
354       */
355      public void testRemove() {
356          TreeMap map = map5();
357 <        map.remove(five);
358 <        assertEquals(4, map.size());
359 <        assertFalse(map.containsKey(five));
357 >        map.remove(five);
358 >        assertEquals(4, map.size());
359 >        assertFalse(map.containsKey(five));
360      }
361  
362      /**
# Line 357 | Line 375 | public class TreeMapTest extends JSR166T
375  
376          Map.Entry e4 = map.lowerEntry(zero);
377          assertNull(e4);
360
378      }
379  
380      /**
# Line 376 | Line 393 | public class TreeMapTest extends JSR166T
393  
394          Map.Entry e4 = map.higherEntry(six);
395          assertNull(e4);
379
396      }
397  
398      /**
# Line 395 | Line 411 | public class TreeMapTest extends JSR166T
411  
412          Map.Entry e4 = map.floorEntry(zero);
413          assertNull(e4);
398
414      }
415  
416      /**
# Line 414 | Line 429 | public class TreeMapTest extends JSR166T
429  
430          Map.Entry e4 = map.ceilingEntry(six);
431          assertNull(e4);
417
432      }
433  
420
434      /**
435       * lowerKey returns preceding element
436       */
# Line 434 | Line 447 | public class TreeMapTest extends JSR166T
447  
448          Object e4 = q.lowerKey(zero);
449          assertNull(e4);
437
450      }
451  
452      /**
# Line 453 | Line 465 | public class TreeMapTest extends JSR166T
465  
466          Object e4 = q.higherKey(six);
467          assertNull(e4);
456
468      }
469  
470      /**
# Line 472 | Line 483 | public class TreeMapTest extends JSR166T
483  
484          Object e4 = q.floorKey(zero);
485          assertNull(e4);
475
486      }
487  
488      /**
# Line 491 | Line 501 | public class TreeMapTest extends JSR166T
501  
502          Object e4 = q.ceilingKey(six);
503          assertNull(e4);
494
504      }
505  
506      /**
# Line 516 | Line 525 | public class TreeMapTest extends JSR166T
525          try {
526              e.setValue("A");
527              shouldThrow();
528 <        } catch (Exception ok) {
520 <        }
528 >        } catch (UnsupportedOperationException success) {}
529          e = map.pollFirstEntry();
530          assertNull(e);
531      }
# Line 544 | Line 552 | public class TreeMapTest extends JSR166T
552          try {
553              e.setValue("E");
554              shouldThrow();
555 <        } catch (Exception ok) {
548 <        }
555 >        } catch (UnsupportedOperationException success) {}
556          e = map.pollLastEntry();
557          assertNull(e);
558      }
559  
560      /**
561 <     *   size returns the correct values
561 >     * size returns the correct values
562       */
563      public void testSize() {
564          TreeMap map = map5();
565          TreeMap empty = new TreeMap();
566 <        assertEquals(0, empty.size());
567 <        assertEquals(5, map.size());
566 >        assertEquals(0, empty.size());
567 >        assertEquals(5, map.size());
568      }
569  
570      /**
# Line 567 | Line 574 | public class TreeMapTest extends JSR166T
574          TreeMap map = map5();
575          String s = map.toString();
576          for (int i = 1; i <= 5; ++i) {
577 <            assertTrue(s.indexOf(String.valueOf(i)) >= 0);
577 >            assertTrue(s.contains(String.valueOf(i)));
578          }
579      }
580  
# Line 577 | Line 584 | public class TreeMapTest extends JSR166T
584       * get(null) of nonempty map throws NPE
585       */
586      public void testGet_NullPointerException() {
587 +        TreeMap c = map5();
588          try {
581            TreeMap c = map5();
589              c.get(null);
590              shouldThrow();
591 <        } catch (NullPointerException e){}
591 >        } catch (NullPointerException success) {}
592      }
593  
594      /**
595       * containsKey(null) of nonempty map throws NPE
596       */
597      public void testContainsKey_NullPointerException() {
598 +        TreeMap c = map5();
599          try {
592            TreeMap c = map5();
600              c.containsKey(null);
601              shouldThrow();
602 <        } catch (NullPointerException e){}
602 >        } catch (NullPointerException success) {}
603      }
604  
605      /**
606       * remove(null) throws NPE for nonempty map
607       */
608      public void testRemove1_NullPointerException() {
609 +        TreeMap c = new TreeMap();
610 +        c.put("sadsdf", "asdads");
611          try {
603            TreeMap c = new TreeMap();
604            c.put("sadsdf", "asdads");
612              c.remove(null);
613              shouldThrow();
614 <        } catch (NullPointerException e){}
614 >        } catch (NullPointerException success) {}
615      }
616  
617      /**
618 <     * A deserialized map equals original
618 >     * A deserialized/reserialized map equals original
619       */
620 <    public void testSerialization() {
621 <        TreeMap q = map5();
620 >    public void testSerialization() throws Exception {
621 >        NavigableMap x = map5();
622 >        NavigableMap y = serialClone(x);
623  
624 <        try {
625 <            ByteArrayOutputStream bout = new ByteArrayOutputStream(10000);
626 <            ObjectOutputStream out = new ObjectOutputStream(new BufferedOutputStream(bout));
627 <            out.writeObject(q);
628 <            out.close();
621 <
622 <            ByteArrayInputStream bin = new ByteArrayInputStream(bout.toByteArray());
623 <            ObjectInputStream in = new ObjectInputStream(new BufferedInputStream(bin));
624 <            TreeMap r = (TreeMap)in.readObject();
625 <            assertEquals(q.size(), r.size());
626 <            assertTrue(q.equals(r));
627 <            assertTrue(r.equals(q));
628 <        } catch (Exception e){
629 <            e.printStackTrace();
630 <            unexpectedException();
631 <        }
624 >        assertNotSame(x, y);
625 >        assertEquals(x.size(), y.size());
626 >        assertEquals(x.toString(), y.toString());
627 >        assertEquals(x, y);
628 >        assertEquals(y, x);
629      }
630  
631      /**
# Line 667 | Line 664 | public class TreeMapTest extends JSR166T
664          assertEquals(1, sm.size());
665          assertEquals(three, sm.firstKey());
666          assertEquals(three, sm.lastKey());
667 <        assertTrue(sm.remove(three) != null);
667 >        assertEquals("C", sm.remove(three));
668          assertTrue(sm.isEmpty());
669          assertEquals(3, map.size());
670      }
# Line 700 | Line 697 | public class TreeMapTest extends JSR166T
697          assertEquals(4, map.size());
698          assertEquals(0, sm.size());
699          assertTrue(sm.isEmpty());
700 <        assertTrue(sm.remove(three) == null);
700 >        assertSame(sm.remove(three), null);
701          assertEquals(4, map.size());
702      }
703  
# Line 782 | Line 779 | public class TreeMapTest extends JSR166T
779          NavigableMap ssm = sm.tailMap(four, true);
780          assertEquals(four, ssm.firstKey());
781          assertEquals(five, ssm.lastKey());
782 <        assertTrue(ssm.remove(four) != null);
782 >        assertEquals("D", ssm.remove(four));
783          assertEquals(1, ssm.size());
784          assertEquals(3, sm.size());
785          assertEquals(4, map.size());
# Line 794 | Line 791 | public class TreeMapTest extends JSR166T
791      /**
792       * Submaps of submaps subdivide correctly
793       */
794 <    public void testRecursiveSubMaps() {
795 <        int mapSize = 1000;
796 <        Class cl = TreeMap.class;
794 >    public void testRecursiveSubMaps() throws Exception {
795 >        int mapSize = expensiveTests ? 1000 : 100;
796 >        Class cl = TreeMap.class;
797          NavigableMap<Integer, Integer> map = newMap(cl);
798          bs = new BitSet(mapSize);
799  
# Line 812 | Line 809 | public class TreeMapTest extends JSR166T
809                     0, mapSize - 1, true);
810      }
811  
812 <    static NavigableMap<Integer, Integer> newMap(Class cl) {
813 <        NavigableMap<Integer, Integer> result = null;
814 <        try {
815 <            result = (NavigableMap<Integer, Integer>) cl.newInstance();
819 <        } catch (Exception e) {
820 <            fail();
821 <        }
822 <        assertEquals(result.size(), 0);
812 >    static NavigableMap<Integer, Integer> newMap(Class cl) throws Exception {
813 >        NavigableMap<Integer, Integer> result
814 >            = (NavigableMap<Integer, Integer>) cl.getConstructor().newInstance();
815 >        assertEquals(0, result.size());
816          assertFalse(result.keySet().iterator().hasNext());
817          return result;
818      }
# Line 851 | Line 844 | public class TreeMapTest extends JSR166T
844          // Add entries till we're back to original size
845          while (map.size() < size) {
846              int key = min + rnd.nextInt(rangeSize);
847 <            assertTrue(key >= min && key<= max);
847 >            assertTrue(key >= min && key <= max);
848              put(map, key);
849          }
850      }
# Line 876 | Line 869 | public class TreeMapTest extends JSR166T
869          // Add entries till we're back to original size
870          while (map.size() < size) {
871              int key = min - 5 + rnd.nextInt(rangeSize + 10);
872 <            if (key >= min && key<= max) {
872 >            if (key >= min && key <= max) {
873                  put(map, key);
874              } else {
875                  try {
876                      map.put(key, 2 * key);
877 <                    fail();
878 <                } catch (IllegalArgumentException e) {
886 <                    // expected
887 <                }
877 >                    shouldThrow();
878 >                } catch (IllegalArgumentException success) {}
879              }
880          }
881      }
# Line 982 | Line 973 | public class TreeMapTest extends JSR166T
973       */
974      void check(NavigableMap<Integer, Integer> map,
975                        final int min, final int max, final boolean ascending) {
976 <       class ReferenceSet {
976 >        class ReferenceSet {
977              int lower(int key) {
978                  return ascending ? lowerAscending(key) : higherAscending(key);
979              }
# Line 1013 | Line 1004 | public class TreeMapTest extends JSR166T
1004                  // BitSet should support this! Test would run much faster
1005                  while (key >= min) {
1006                      if (bs.get(key))
1007 <                        return(key);
1007 >                        return key;
1008                      key--;
1009                  }
1010                  return -1;
# Line 1048 | Line 1039 | public class TreeMapTest extends JSR166T
1039              if (bsContainsI)
1040                  size++;
1041          }
1042 <        assertEquals(map.size(), size);
1042 >        assertEquals(size, map.size());
1043  
1044          // Test contents using contains keySet iterator
1045          int size2 = 0;
# Line 1079 | Line 1070 | public class TreeMapTest extends JSR166T
1070              assertEq(rs.last(),  -1);
1071              try {
1072                  map.firstKey();
1073 <                fail();
1074 <            } catch (NoSuchElementException e) {
1084 <                // expected
1085 <            }
1073 >                shouldThrow();
1074 >            } catch (NoSuchElementException success) {}
1075              try {
1076                  map.lastKey();
1077 <                fail();
1078 <            } catch (NoSuchElementException e) {
1090 <                // expected
1091 <            }
1077 >                shouldThrow();
1078 >            } catch (NoSuchElementException success) {}
1079          }
1080      }
1081  

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines