jdk/test/java/util/Collection/MOAT.java
changeset 2428 e63d91602813
parent 494 320ce398f07e
child 3415 79309d6eab38
equal deleted inserted replaced
2427:f35f516befc3 2428:e63d91602813
   553         if (m instanceof NavigableMap) {
   553         if (m instanceof NavigableMap) {
   554             System.out.println("NavigableMap tests...");
   554             System.out.println("NavigableMap tests...");
   555 
   555 
   556             NavigableMap<Integer,Integer> nm =
   556             NavigableMap<Integer,Integer> nm =
   557                 (NavigableMap<Integer,Integer>) m;
   557                 (NavigableMap<Integer,Integer>) m;
       
   558             testNavigableMapRemovers(nm);
   558             testNavigableMap(nm);
   559             testNavigableMap(nm);
   559             testNavigableMap(nm.headMap(6, false));
   560             testNavigableMap(nm.headMap(6, false));
   560             testNavigableMap(nm.headMap(5, true));
   561             testNavigableMap(nm.headMap(5, true));
   561             testNavigableMap(nm.tailMap(0, false));
   562             testNavigableMap(nm.tailMap(0, false));
   562             testNavigableMap(nm.tailMap(1, true));
   563             testNavigableMap(nm.tailMap(1, true));
   740         if (rnd.nextBoolean())
   741         if (rnd.nextBoolean())
   741             check(it.hasNext());
   742             check(it.hasNext());
   742         equal(it.next(), expected);
   743         equal(it.next(), expected);
   743     }
   744     }
   744 
   745 
       
   746     static void equalMaps(Map m1, Map m2) {
       
   747         equal(m1, m2);
       
   748         equal(m2, m1);
       
   749         equal(m1.size(), m2.size());
       
   750         equal(m1.isEmpty(), m2.isEmpty());
       
   751         equal(m1.toString(), m2.toString());
       
   752         check(Arrays.equals(m1.entrySet().toArray(), m2.entrySet().toArray()));
       
   753     }
       
   754 
       
   755     @SuppressWarnings({"unchecked", "rawtypes"})
       
   756     static void testNavigableMapRemovers(NavigableMap m)
       
   757     {
       
   758         final Map emptyMap = new HashMap();
       
   759 
       
   760         final Map singletonMap = new HashMap();
       
   761         singletonMap.put(1, 2);
       
   762 
       
   763         abstract class NavigableMapView {
       
   764             abstract NavigableMap view(NavigableMap m);
       
   765         }
       
   766 
       
   767         NavigableMapView[] views = {
       
   768             new NavigableMapView() { NavigableMap view(NavigableMap m) {
       
   769                 return m; }},
       
   770             new NavigableMapView() { NavigableMap view(NavigableMap m) {
       
   771                 return m.headMap(99, true); }},
       
   772             new NavigableMapView() { NavigableMap view(NavigableMap m) {
       
   773                 return m.tailMap(-99, false); }},
       
   774             new NavigableMapView() { NavigableMap view(NavigableMap m) {
       
   775                 return m.subMap(-99, true, 99, false); }},
       
   776         };
       
   777 
       
   778         abstract class Remover {
       
   779             abstract void remove(NavigableMap m, Object k, Object v);
       
   780         }
       
   781 
       
   782         Remover[] removers = {
       
   783             new Remover() { void remove(NavigableMap m, Object k, Object v) {
       
   784                 equal(m.remove(k), v); }},
       
   785 
       
   786             new Remover() { void remove(NavigableMap m, Object k, Object v) {
       
   787                 equal(m.descendingMap().remove(k), v); }},
       
   788             new Remover() { void remove(NavigableMap m, Object k, Object v) {
       
   789                 equal(m.descendingMap().headMap(-86, false).remove(k), v); }},
       
   790             new Remover() { void remove(NavigableMap m, Object k, Object v) {
       
   791                 equal(m.descendingMap().tailMap(86, true).remove(k), v); }},
       
   792 
       
   793             new Remover() { void remove(NavigableMap m, Object k, Object v) {
       
   794                 equal(m.headMap(86, true).remove(k), v); }},
       
   795             new Remover() { void remove(NavigableMap m, Object k, Object v) {
       
   796                 equal(m.tailMap(-86, true).remove(k), v); }},
       
   797             new Remover() { void remove(NavigableMap m, Object k, Object v) {
       
   798                 equal(m.subMap(-86, false, 86, true).remove(k), v); }},
       
   799 
       
   800             new Remover() { void remove(NavigableMap m, Object k, Object v) {
       
   801                 check(m.keySet().remove(k)); }},
       
   802             new Remover() { void remove(NavigableMap m, Object k, Object v) {
       
   803                 check(m.navigableKeySet().remove(k)); }},
       
   804 
       
   805             new Remover() { void remove(NavigableMap m, Object k, Object v) {
       
   806                 check(m.navigableKeySet().headSet(86, true).remove(k)); }},
       
   807             new Remover() { void remove(NavigableMap m, Object k, Object v) {
       
   808                 check(m.navigableKeySet().tailSet(-86, false).remove(k)); }},
       
   809             new Remover() { void remove(NavigableMap m, Object k, Object v) {
       
   810                 check(m.navigableKeySet().subSet(-86, true, 86, false)
       
   811                       .remove(k)); }},
       
   812 
       
   813             new Remover() { void remove(NavigableMap m, Object k, Object v) {
       
   814                 check(m.descendingKeySet().headSet(-86, false).remove(k)); }},
       
   815             new Remover() { void remove(NavigableMap m, Object k, Object v) {
       
   816                 check(m.descendingKeySet().tailSet(86, true).remove(k)); }},
       
   817             new Remover() { void remove(NavigableMap m, Object k, Object v) {
       
   818                 check(m.descendingKeySet().subSet(86, true, -86, false)
       
   819                       .remove(k)); }},
       
   820         };
       
   821 
       
   822         for (NavigableMapView view : views) {
       
   823             for (Remover remover : removers) {
       
   824                 try {
       
   825                     m.clear();
       
   826                     equalMaps(m, emptyMap);
       
   827                     equal(m.put(1, 2), null);
       
   828                     equalMaps(m, singletonMap);
       
   829                     NavigableMap v = view.view(m);
       
   830                     remover.remove(v, 1, 2);
       
   831                     equalMaps(m, emptyMap);
       
   832                 } catch (Throwable t) { unexpected(t); }
       
   833             }
       
   834         }
       
   835     }
       
   836 
   745     private static void testNavigableMap(NavigableMap<Integer,Integer> m)
   837     private static void testNavigableMap(NavigableMap<Integer,Integer> m)
   746     {
   838     {
   747         clear(m);
   839         clear(m);
   748         checkNavigableMapKeys(m, 1, null, null, null, null);
   840         checkNavigableMapKeys(m, 1, null, null, null, null);
   749 
   841