Revision: 7282
Author: [email protected]
Date: Wed Dec  9 10:45:58 2009
Log: Fix TreeMap submaps where there are no keys in range.

Issue: 3360
Patch by: hayward.chan
Review by: jat, fabbott

http://code.google.com/p/google-web-toolkit/source/detail?r=7282

Modified:
  /trunk/user/super/com/google/gwt/emul/java/util/TreeMap.java
   
/trunk/user/test/com/google/gwt/emultest/java/util/TreeMapStringStringTest.java

=======================================
--- /trunk/user/super/com/google/gwt/emul/java/util/TreeMap.java        Mon May 
18  
11:47:32 2009
+++ /trunk/user/super/com/google/gwt/emul/java/util/TreeMap.java        Wed Dec 
 9  
10:45:58 2009
@@ -466,7 +466,8 @@
        } else {
          node = getFirstNode();
        }
-      return node;
+      // The map is empty if the first key after fromKey is out of range.
+      return node != null && inRange(node.getKey()) ? node : null;
      }

      private Node<K, V> getLastSubmapNode() {
@@ -476,7 +477,8 @@
        } else {
          node = getLastNode();
        }
-      return node;
+      // The map is empty if the last key before toKey is out of range.
+      return node != null && inRange(node.getKey()) ? node : null;
      }

      private boolean inRange(K key) {
=======================================
---  
/trunk/user/test/com/google/gwt/emultest/java/util/TreeMapStringStringTest.java 
 
Fri May 15 14:55:56 2009
+++  
/trunk/user/test/com/google/gwt/emultest/java/util/TreeMapStringStringTest.java 
 
Wed Dec  9 10:45:58 2009
@@ -17,17 +17,32 @@

  import java.util.Iterator;
  import java.util.Map;
+import java.util.Map.Entry;
  import java.util.NoSuchElementException;
  import java.util.Set;
  import java.util.SortedMap;
  import java.util.TreeMap;
-import java.util.Map.Entry;

  /**
   * Tests <code>TreeMap</code> with Strings and the natural comparator.
   */
  public class TreeMapStringStringTest extends TreeMapTest<String, String> {

+  public void testHeadMapClear() {
+    TreeMap<String, String> map = new TreeMap<String, String>();
+    map.put("a", "value a");
+    map.put("b", "value b");
+    map.put("c", "value c");
+
+    SortedMap<String, String> headMap = map.headMap("b");
+    assertEquals("headMap.size", 1, headMap.size());
+    assertEquals("headMap.isEmpty", false, headMap.isEmpty());
+
+    headMap.clear();
+    assertEquals("headMap.size", 0, headMap.size());
+    assertEquals("headMap.isEmpty", true, headMap.isEmpty());
+  }
+
    public void testHeadMapEqualsFirst() {
      SortedMap<String, String> sortedMap = createKnownKeysMap();
      SortedMap<String, String> subMap = sortedMap.headMap("aa");
@@ -69,6 +84,21 @@
      assertEquals("firstKey", "aa", subMap.firstKey());
      assertEquals("lastKey", "bb", subMap.lastKey());
    }
+
+  public void testSubMapClear() {
+    TreeMap<String, String> map = new TreeMap<String, String>();
+    map.put("a", "value a");
+    map.put("b", "value b");
+    map.put("c", "value c");
+
+    SortedMap<String, String> subMap = map.subMap("a", "c");
+    assertEquals("subMap.size", 2, subMap.size());
+    assertEquals("subMap.isEmpty", false, subMap.isEmpty());
+
+    subMap.clear();
+    assertEquals("subMap.size", 0, subMap.size());
+    assertEquals("subMap.isEmpty", true, subMap.isEmpty());
+  }

    /**
     * Tests that compositing submap operations function as expected.
@@ -83,6 +113,21 @@
      assertEquals("headMap(tailMap) should equal subMap", subMap1, subMap3);
      assertEquals("headMap(tailMap) size", 2, subMap1.size());
    }
+
+  public void testTailMapClear() {
+    TreeMap<String, String> map = new TreeMap<String, String>();
+    map.put("a", "value a");
+    map.put("b", "value b");
+    map.put("c", "value c");
+
+    SortedMap<String, String> tailMap = map.tailMap("b");
+    assertEquals("tailMap.size", 2, tailMap.size());
+    assertEquals("tailMap.isEmpty", false, tailMap.isEmpty());
+
+    tailMap.clear();
+    assertEquals("tailMap.size", 0, tailMap.size());
+    assertEquals("tailMap.isEmpty", true, tailMap.isEmpty());
+  }

    public void testTailMapPastEnd() {
      SortedMap<String, String> sortedMap = createKnownKeysMap();

-- 
http://groups.google.com/group/Google-Web-Toolkit-Contributors

Reply via email to