1ab762bb740405d0fefcccf4a0899a234f995be13Narayan Kamathpackage org.apache.harmony.tests.java.util;
2cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
3cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath/*
4cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath *  Licensed to the Apache Software Foundation (ASF) under one or more
5cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath *  contributor license agreements.  See the NOTICE file distributed with
6cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath *  this work for additional information regarding copyright ownership.
7cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath *  The ASF licenses this file to You under the Apache License, Version 2.0
8cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath *  (the "License"); you may not use this file except in compliance with
9cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath *  the License.  You may obtain a copy of the License at
10cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath *
11cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath *     http://www.apache.org/licenses/LICENSE-2.0
12cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath *
13cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath *  Unless required by applicable law or agreed to in writing, software
14cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath *  distributed under the License is distributed on an "AS IS" BASIS,
15cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath *  See the License for the specific language governing permissions and
17cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath *  limitations under the License.
18cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath */
19cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
20cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport junit.framework.TestCase;
21ab762bb740405d0fefcccf4a0899a234f995be13Narayan Kamathimport org.apache.harmony.tests.java.util.TreeMapTest.MockComparator;
22cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport java.util.Collection;
23cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport java.util.Collections;
24cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport java.util.Comparator;
25cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport java.util.Iterator;
26cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport java.util.Map;
27cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport java.util.Map.Entry;
28cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport java.util.NavigableMap;
29cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport java.util.NavigableSet;
30cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport java.util.NoSuchElementException;
31cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport java.util.Set;
32cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport java.util.SortedMap;
33cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport java.util.SortedSet;
34cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport java.util.TreeMap;
35cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
36cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath//
37cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathpublic class TreeMapExtendTest extends TestCase {
38cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
39cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    TreeMap tm;
40cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
41cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    TreeMap tm_comparator;
42cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
43cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    SortedMap subMap_default;
44cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
45cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    SortedMap subMap_startExcluded_endExcluded;
46cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
47cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    SortedMap subMap_startExcluded_endIncluded;
48cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
49cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    SortedMap subMap_startIncluded_endExcluded;
50cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
51cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    SortedMap subMap_startIncluded_endIncluded;
52cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
53cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    SortedMap subMap_default_beforeStart_100;
54cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
55cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    SortedMap subMap_default_afterEnd_109;
56cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
57cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    NavigableMap navigableMap_startExcluded_endExcluded;
58cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
59cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    NavigableMap navigableMap_startExcluded_endIncluded;
60cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
61cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    NavigableMap navigableMap_startIncluded_endExcluded;
62cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
63cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    NavigableMap navigableMap_startIncluded_endIncluded;
64cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
65cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    SortedMap subMap_default_comparator;
66cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
67cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    SortedMap subMap_startExcluded_endExcluded_comparator;
68cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
69cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    SortedMap subMap_startExcluded_endIncluded_comparator;
70cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
71cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    SortedMap subMap_startIncluded_endExcluded_comparator;
72cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
73cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    SortedMap subMap_startIncluded_endIncluded_comparator;
74cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
75cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    Object objArray[] = new Object[1000];
76cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
77cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_TreeMap_Constructor_Default() {
78cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        TreeMap treeMap = new TreeMap();
79cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(treeMap.isEmpty());
80cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNull(treeMap.comparator());
81cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(0, treeMap.size());
82cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
83cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
84cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            treeMap.firstKey();
85cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw NoSuchElementException");
86cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (NoSuchElementException e) {
87cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
88cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
89cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNull(treeMap.firstEntry());
90cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
91cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
92cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            treeMap.lastKey();
93cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw NoSuchElementException");
94cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (NoSuchElementException e) {
95cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
96cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
97cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNull(treeMap.lastEntry());
98cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
99cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
100cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            treeMap.ceilingKey(1);
101cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (NoSuchElementException e) {
102cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
103cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
104cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNull(treeMap.ceilingEntry(1));
105cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
106cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
107cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            treeMap.floorKey(1);
108cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (NoSuchElementException e) {
109cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
110cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
111cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNull(treeMap.floorEntry(1));
112cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNull(treeMap.lowerKey(1));
113cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNull(treeMap.lowerEntry(1));
114cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNull(treeMap.higherKey(1));
115cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNull(treeMap.higherEntry(1));
116cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(treeMap.containsKey(1));
117cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(treeMap.containsValue(1));
118cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNull(treeMap.get(1));
119cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
120cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNull(treeMap.pollFirstEntry());
121cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNull(treeMap.pollLastEntry());
122cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(0, treeMap.values().size());
123cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
124cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
125cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_TreeMap_Constructor_Comparator() {
126cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        MockComparator mockComparator = new MockComparator();
127cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        TreeMap treeMap = new TreeMap(mockComparator);
128cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
129cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(mockComparator, treeMap.comparator());
130cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
131cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
132cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_TreeMap_Constructor_Map() {
133cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        TreeMap treeMap = new TreeMap(tm);
134cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(tm.size(), treeMap.size());
135cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(tm.firstKey(), treeMap.firstKey());
136cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(tm.firstEntry(), treeMap.firstEntry());
137cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(tm.lastKey(), treeMap.lastKey());
138cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(tm.lastEntry(), treeMap.lastEntry());
139cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(tm.keySet(), treeMap.keySet());
140cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
141cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        String key = new Integer(100).toString();
142cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(tm.ceilingKey(key), treeMap.ceilingKey(key));
143cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(tm.ceilingEntry(key), treeMap.ceilingEntry(key));
144cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(tm.floorKey(key), treeMap.floorKey(key));
145cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(tm.floorEntry(key), treeMap.floorEntry(key));
146cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(tm.lowerKey(key), treeMap.lowerKey(key));
147cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(tm.lowerEntry(key), treeMap.lowerEntry(key));
148cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(tm.higherKey(key), treeMap.higherKey(key));
149cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(tm.higherEntry(key), treeMap.higherEntry(key));
150cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(tm.entrySet(), treeMap.entrySet());
151cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
152cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
153cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_TreeMap_Constructor_SortedMap() {
154cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        TreeMap treeMap = new TreeMap(subMap_default);
155cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(subMap_default.size(), treeMap.size());
156cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(subMap_default.firstKey(), treeMap.firstKey());
157cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(subMap_default.lastKey(), treeMap.lastKey());
158cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(subMap_default.keySet(), treeMap.keySet());
159cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(subMap_default.entrySet(), treeMap.entrySet());
160cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
161cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
162cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_TreeMap_clear() {
163cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        tm.clear();
164cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(0, tm.size());
165cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
166cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
167cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_TreeMap_clone() {
168cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        TreeMap cloneTreeMap = (TreeMap) tm.clone();
169cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(tm, cloneTreeMap);
170cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
171cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
172cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_SubMap_Constructor() {
173cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
174cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
175cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_SubMap_clear() {
176cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        subMap_default.clear();
177cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(0, subMap_default.size());
178cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
179cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
180cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_SubMap_comparator() {
181cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(tm.comparator(), subMap_default.comparator());
182cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
183cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
184cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_SubMap_containsKey() {
185cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        String key = null;
186cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int counter = 101; counter < 109; counter++) {
187cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            key = objArray[counter].toString();
188cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertTrue("SubMap contains incorrect elements", subMap_default
189cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    .containsKey(key));
190cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertTrue("SubMap contains incorrect elements",
191cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    subMap_startExcluded_endExcluded.containsKey(key));
192cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertTrue("SubMap contains incorrect elements",
193cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    subMap_startExcluded_endIncluded.containsKey(key));
194cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertTrue("SubMap contains incorrect elements",
195cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    subMap_startIncluded_endExcluded.containsKey(key));
196cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertTrue("SubMap contains incorrect elements",
197cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    subMap_startIncluded_endIncluded.containsKey(key));
198cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
199cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
200cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // Check boundary
201cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = objArray[100].toString();
202cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue("SubMap contains incorrect elements", subMap_default
203cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .containsKey(key));
204cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse("SubMap contains incorrect elements",
205cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                subMap_startExcluded_endExcluded.containsKey(key));
206cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse("SubMap contains incorrect elements",
207cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                subMap_startExcluded_endIncluded.containsKey(key));
208cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue("SubMap contains incorrect elements",
209cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                subMap_startIncluded_endExcluded.containsKey(key));
210cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue("SubMap contains incorrect elements",
211cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                subMap_startIncluded_endIncluded.containsKey(key));
212cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
213cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = objArray[109].toString();
214cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse("SubMap contains incorrect elements", subMap_default
215cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .containsKey(key));
216cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse("SubMap contains incorrect elements",
217cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                subMap_startExcluded_endExcluded.containsKey(key));
218cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue("SubMap contains incorrect elements",
219cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                subMap_startExcluded_endIncluded.containsKey(key));
220cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse("SubMap contains incorrect elements",
221cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                subMap_startIncluded_endExcluded.containsKey(key));
222cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue("SubMap contains incorrect elements",
223cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                subMap_startIncluded_endIncluded.containsKey(key));
224cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
225cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // With Comparator
226cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int counter = 101; counter < 109; counter++) {
227cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            key = objArray[counter].toString();
228cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertTrue("SubMap contains incorrect elements",
229cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    subMap_default_comparator.containsKey(key));
230cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertTrue("SubMap contains incorrect elements",
231cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    subMap_startExcluded_endExcluded_comparator
232cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                            .containsKey(key));
233cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertTrue("SubMap contains incorrect elements",
234cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    subMap_startExcluded_endIncluded_comparator
235cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                            .containsKey(key));
236cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertTrue("SubMap contains incorrect elements",
237cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    subMap_startIncluded_endExcluded_comparator
238cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                            .containsKey(key));
239cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertTrue("SubMap contains incorrect elements",
240cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    subMap_startIncluded_endIncluded_comparator
241cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                            .containsKey(key));
242cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
243cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
244cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // Check boundary
245cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = objArray[100].toString();
246cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue("SubMap contains incorrect elements",
247cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                subMap_default_comparator.containsKey(key));
248cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse("SubMap contains incorrect elements",
249cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                subMap_startExcluded_endExcluded_comparator.containsKey(key));
250cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse("SubMap contains incorrect elements",
251cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                subMap_startExcluded_endIncluded_comparator.containsKey(key));
252cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue("SubMap contains incorrect elements",
253cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                subMap_startIncluded_endExcluded_comparator.containsKey(key));
254cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue("SubMap contains incorrect elements",
255cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                subMap_startIncluded_endIncluded_comparator.containsKey(key));
256cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
257cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = objArray[109].toString();
258cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse("SubMap contains incorrect elements",
259cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                subMap_default_comparator.containsKey(key));
260cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse("SubMap contains incorrect elements",
261cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                subMap_startExcluded_endExcluded_comparator.containsKey(key));
262cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue("SubMap contains incorrect elements",
263cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                subMap_startExcluded_endIncluded_comparator.containsKey(key));
264cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse("SubMap contains incorrect elements",
265cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                subMap_startIncluded_endExcluded_comparator.containsKey(key));
266cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue("SubMap contains incorrect elements",
267cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                subMap_startIncluded_endIncluded_comparator.containsKey(key));
268cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
269cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
270cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_SubMap_containsValue() {
271cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Object value = null;
272cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int counter = 101; counter < 109; counter++) {
273cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            value = objArray[counter];
274cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertTrue("SubMap contains incorrect elements", subMap_default
275cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    .containsValue(value));
276cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertTrue("SubMap contains incorrect elements",
277cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    subMap_startExcluded_endExcluded.containsValue(value));
278cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertTrue("SubMap contains incorrect elements",
279cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    subMap_startExcluded_endIncluded.containsValue(value));
280cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertTrue("SubMap contains incorrect elements",
281cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    subMap_startIncluded_endExcluded.containsValue(value));
282cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertTrue("SubMap contains incorrect elements",
283cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    subMap_startIncluded_endIncluded.containsValue(value));
284cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
285cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
286cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // Check boundary
287cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        value = objArray[100];
288cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue("SubMap contains incorrect elements", subMap_default
289cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .containsValue(value));
290cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse("SubMap contains incorrect elements",
291cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                subMap_startExcluded_endExcluded.containsValue(value));
292cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse("SubMap contains incorrect elements",
293cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                subMap_startExcluded_endIncluded.containsValue(value));
294cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue("SubMap contains incorrect elements",
295cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                subMap_startIncluded_endExcluded.containsValue(value));
296cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue("SubMap contains incorrect elements",
297cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                subMap_startIncluded_endIncluded.containsValue(value));
298cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
299cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        value = objArray[109];
300cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse("SubMap contains incorrect elements", subMap_default
301cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .containsValue(value));
302cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse("SubMap contains incorrect elements",
303cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                subMap_startExcluded_endExcluded.containsValue(value));
304cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue("SubMap contains incorrect elements",
305cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                subMap_startExcluded_endIncluded.containsValue(value));
306cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse("SubMap contains incorrect elements",
307cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                subMap_startIncluded_endExcluded.containsValue(value));
308cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue("SubMap contains incorrect elements",
309cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                subMap_startIncluded_endIncluded.containsValue(value));
310cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
311cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(subMap_default.containsValue(null));
312cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
313cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        TreeMap tm_null = new TreeMap();
314cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        tm_null.put("0", 1);
315cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        tm_null.put("1", null);
316cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        tm_null.put("2", 2);
317cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        SortedMap subMap = tm_null.subMap("0", "2");
318cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(subMap.containsValue(null));
319cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
320cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        subMap.remove("1");
321cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(subMap.containsValue(null));
322cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
323cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
324cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_SubMap_entrySet() {
325cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Set entrySet = subMap_default.entrySet();
326cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(entrySet.isEmpty());
327cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(9, entrySet.size());
328cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
329cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        entrySet = subMap_startExcluded_endExcluded.entrySet();
330cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(entrySet.isEmpty());
331cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(8, entrySet.size());
332cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
333cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        entrySet = subMap_startExcluded_endIncluded.entrySet();
334cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(entrySet.isEmpty());
335cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(9, entrySet.size());
336cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
337cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        entrySet = subMap_startIncluded_endExcluded.entrySet();
338cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(entrySet.isEmpty());
339cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(9, entrySet.size());
340cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
341cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        entrySet = subMap_startIncluded_endIncluded.entrySet();
342cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(entrySet.isEmpty());
343cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(10, entrySet.size());
344cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
345cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
346cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_SubMap_firstKey() {
347cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        String firstKey1 = new Integer(100).toString();
348cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        String firstKey2 = new Integer(101).toString();
349cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(firstKey1, subMap_default.firstKey());
350cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(firstKey2, subMap_startExcluded_endExcluded.firstKey());
351cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(firstKey2, subMap_startExcluded_endIncluded.firstKey());
352cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(firstKey1, subMap_startIncluded_endExcluded.firstKey());
353cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(firstKey1, subMap_startIncluded_endIncluded.firstKey());
354cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
355cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
356cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            subMap_default.subMap(firstKey1, firstKey1).firstKey();
357cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw NoSuchElementException");
358cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (NoSuchElementException e) {
359cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
360cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
361cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
362cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
363cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            subMap_startExcluded_endExcluded.subMap(firstKey2, firstKey2)
364cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    .firstKey();
365cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw NoSuchElementException");
366cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (NoSuchElementException e) {
367cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
368cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
369cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
370cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
371cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            subMap_startExcluded_endIncluded.subMap(firstKey2, firstKey2)
372cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    .firstKey();
373cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw NoSuchElementException");
374cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (NoSuchElementException e) {
375cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
376cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
377cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
378cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
379cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            subMap_startIncluded_endExcluded.subMap(firstKey1, firstKey1)
380cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    .firstKey();
381cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw NoSuchElementException");
382cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (NoSuchElementException e) {
383cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
384cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
385cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
386cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
387cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            subMap_startIncluded_endIncluded.subMap(firstKey1, firstKey1)
388cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    .firstKey();
389cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw NoSuchElementException");
390cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (NoSuchElementException e) {
391cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
392cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
393cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
394cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // With Comparator
395cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(firstKey1, subMap_default_comparator.firstKey());
396cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(firstKey2, subMap_startExcluded_endExcluded_comparator
397cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .firstKey());
398cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(firstKey2, subMap_startExcluded_endIncluded_comparator
399cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .firstKey());
400cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(firstKey1, subMap_startIncluded_endExcluded_comparator
401cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .firstKey());
402cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(firstKey1, subMap_startIncluded_endIncluded_comparator
403cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .firstKey());
404cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
405cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
406cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            subMap_default_comparator.subMap(firstKey1, firstKey1).firstKey();
407cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw NoSuchElementException");
408cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (NoSuchElementException e) {
409cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
410cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
411cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
412cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
413cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            subMap_startExcluded_endExcluded_comparator.subMap(firstKey2,
414cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    firstKey2).firstKey();
415cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw NoSuchElementException");
416cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (NoSuchElementException e) {
417cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
418cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
419cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
420cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
421cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            subMap_startExcluded_endIncluded_comparator.subMap(firstKey2,
422cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    firstKey2).firstKey();
423cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw NoSuchElementException");
424cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (NoSuchElementException e) {
425cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
426cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
427cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
428cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
429cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            subMap_startIncluded_endExcluded_comparator.subMap(firstKey1,
430cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    firstKey1).firstKey();
431cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw NoSuchElementException");
432cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (NoSuchElementException e) {
433cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
434cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
435cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
436cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
437cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            subMap_startIncluded_endIncluded_comparator.subMap(firstKey1,
438cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    firstKey1).firstKey();
439cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw NoSuchElementException");
440cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (NoSuchElementException e) {
441cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
442cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
443cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
444cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
445cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
446cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_SubMap_lastKey() {
447cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        String lastKey1 = new Integer(108).toString();
448cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        String lastKey2 = new Integer(109).toString();
449cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(lastKey1, subMap_default.lastKey());
450cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(lastKey1, subMap_startExcluded_endExcluded.lastKey());
451cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(lastKey2, subMap_startExcluded_endIncluded.lastKey());
452cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(lastKey1, subMap_startIncluded_endExcluded.lastKey());
453cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(lastKey2, subMap_startIncluded_endIncluded.lastKey());
454cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
455cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
456cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            subMap_default.subMap(lastKey1, lastKey1).lastKey();
457cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw NoSuchElementException");
458cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (NoSuchElementException e) {
459cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
460cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
461cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
462cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
463cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            subMap_startExcluded_endExcluded.subMap(lastKey1, lastKey1)
464cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    .lastKey();
465cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw NoSuchElementException");
466cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (NoSuchElementException e) {
467cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
468cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
469cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
470cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
471cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            subMap_startExcluded_endIncluded.subMap(lastKey2, lastKey2)
472cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    .lastKey();
473cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw NoSuchElementException");
474cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (NoSuchElementException e) {
475cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
476cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
477cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
478cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
479cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            subMap_startIncluded_endExcluded.subMap(lastKey1, lastKey1)
480cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    .lastKey();
481cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw NoSuchElementException");
482cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (NoSuchElementException e) {
483cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
484cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
485cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
486cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
487cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            subMap_startIncluded_endIncluded.subMap(lastKey2, lastKey2)
488cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    .lastKey();
489cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw NoSuchElementException");
490cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (NoSuchElementException e) {
491cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
492cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
493cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
494cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // With Comparator
495cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(lastKey1, subMap_default_comparator.lastKey());
496cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(lastKey1, subMap_startExcluded_endExcluded_comparator
497cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .lastKey());
498cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(lastKey2, subMap_startExcluded_endIncluded_comparator
499cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .lastKey());
500cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(lastKey1, subMap_startIncluded_endExcluded_comparator
501cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .lastKey());
502cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(lastKey2, subMap_startIncluded_endIncluded_comparator
503cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .lastKey());
504cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
505cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
506cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            subMap_default_comparator.subMap(lastKey1, lastKey1).lastKey();
507cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw NoSuchElementException");
508cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (NoSuchElementException e) {
509cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
510cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
511cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
512cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
513cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            subMap_startExcluded_endExcluded_comparator.subMap(lastKey1,
514cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    lastKey1).lastKey();
515cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw NoSuchElementException");
516cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (NoSuchElementException e) {
517cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
518cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
519cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
520cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
521cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            subMap_startExcluded_endIncluded_comparator.subMap(lastKey2,
522cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    lastKey2).lastKey();
523cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw NoSuchElementException");
524cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (NoSuchElementException e) {
525cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
526cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
527cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
528cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
529cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            subMap_startIncluded_endExcluded_comparator.subMap(lastKey1,
530cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    lastKey1).lastKey();
531cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw NoSuchElementException");
532cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (NoSuchElementException e) {
533cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
534cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
535cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
536cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
537cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            subMap_startIncluded_endIncluded_comparator.subMap(lastKey2,
538cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    lastKey2).lastKey();
539cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw NoSuchElementException");
540cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (NoSuchElementException e) {
541cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
542cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
543cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
544cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
545cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_SubMap_get() {
546cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // left boundary
547cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Integer value = new Integer(100);
548cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(value, subMap_default.get(value.toString()));
549cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(null, subMap_startExcluded_endExcluded.get(value
550cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .toString()));
551cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(null, subMap_startExcluded_endIncluded.get(value
552cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .toString()));
553cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(value, subMap_startIncluded_endExcluded.get(value
554cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .toString()));
555cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(value, subMap_startIncluded_endIncluded.get(value
556cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .toString()));
557cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
558cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // normal value
559cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        value = new Integer(105);
560cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(value, subMap_default.get(value.toString()));
561cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(value, subMap_startExcluded_endExcluded.get(value
562cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .toString()));
563cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(value, subMap_startExcluded_endIncluded.get(value
564cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .toString()));
565cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(value, subMap_startIncluded_endExcluded.get(value
566cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .toString()));
567cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(value, subMap_startIncluded_endIncluded.get(value
568cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .toString()));
569cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
570cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // right boundary
571cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        value = new Integer(109);
572cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(null, subMap_default.get(value.toString()));
573cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(null, subMap_startExcluded_endExcluded.get(value
574cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .toString()));
575cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(value, subMap_startExcluded_endIncluded.get(value
576cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .toString()));
577cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(null, subMap_startIncluded_endExcluded.get(value
578cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .toString()));
579cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(value, subMap_startIncluded_endIncluded.get(value
580cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .toString()));
581cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
582cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // With Comparator to test inInRange
583cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // left boundary
584cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        value = new Integer(100);
585cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(value, subMap_default_comparator.get(value.toString()));
586cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
587cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // normal value
588cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        value = new Integer(105);
589cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(value, subMap_default_comparator.get(value.toString()));
590cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
591cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // right boundary
592cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        value = new Integer(109);
593cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(null, subMap_default_comparator.get(value.toString()));
594cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
595cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
596cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_SubMap_headMap() {
597cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        String endKey = new Integer(99).toString();
598cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
599cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            subMap_default.headMap(endKey);
600cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
601cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
602cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
603cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
604cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
605cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
606cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            subMap_startExcluded_endExcluded.headMap(endKey);
607cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
608cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
609cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
610cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
611cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
612cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
613cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            subMap_startExcluded_endIncluded.headMap(endKey);
614cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
615cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
616cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
617cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
618cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
619cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
620cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            subMap_startIncluded_endExcluded.headMap(endKey);
621cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
622cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
623cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
624cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
625cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
626cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
627cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            subMap_startIncluded_endIncluded.headMap(endKey);
628cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
629cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
630cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
631cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
632cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
633cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        SortedMap headMap = null;
634cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        endKey = new Integer(100).toString();
635cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        headMap = subMap_default.headMap(endKey);
636cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(0, headMap.size());
637cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
638e22b1d53d200616e59483cdbf0df0796583b1007Narayan Kamath        try {
639e22b1d53d200616e59483cdbf0df0796583b1007Narayan Kamath            headMap = subMap_startExcluded_endExcluded.headMap(endKey);
640e22b1d53d200616e59483cdbf0df0796583b1007Narayan Kamath            fail("should throw IllegalArgumentException");
641e22b1d53d200616e59483cdbf0df0796583b1007Narayan Kamath        } catch (IllegalArgumentException e) {
642e22b1d53d200616e59483cdbf0df0796583b1007Narayan Kamath            // Expected
643e22b1d53d200616e59483cdbf0df0796583b1007Narayan Kamath        }
644cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
645e22b1d53d200616e59483cdbf0df0796583b1007Narayan Kamath        try {
646e22b1d53d200616e59483cdbf0df0796583b1007Narayan Kamath            headMap = subMap_startExcluded_endIncluded.headMap(endKey);
647e22b1d53d200616e59483cdbf0df0796583b1007Narayan Kamath            fail("should throw IllegalArgumentException");
648e22b1d53d200616e59483cdbf0df0796583b1007Narayan Kamath        } catch (IllegalArgumentException e) {
649e22b1d53d200616e59483cdbf0df0796583b1007Narayan Kamath            // Expected
650e22b1d53d200616e59483cdbf0df0796583b1007Narayan Kamath        }
651cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
652cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        headMap = subMap_startIncluded_endExcluded.headMap(endKey);
653cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(0, headMap.size());
654cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
655cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        headMap = subMap_startIncluded_endIncluded.headMap(endKey);
656cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(0, headMap.size());
657cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
658cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int i = 0, j = 101; i < 8; i++) {
659cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            endKey = new Integer(i + j).toString();
660cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            headMap = subMap_default.headMap(endKey);
661cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(i + 1, headMap.size());
662cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
663cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            headMap = subMap_startExcluded_endExcluded.headMap(endKey);
664cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(i, headMap.size());
665cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
666cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            headMap = subMap_startExcluded_endIncluded.headMap(endKey);
667cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(i, headMap.size());
668cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
669cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            headMap = subMap_startIncluded_endExcluded.headMap(endKey);
670cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(i + 1, headMap.size());
671cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
672cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            headMap = subMap_startIncluded_endIncluded.headMap(endKey);
673cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(i + 1, headMap.size());
674cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
675cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
676cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        endKey = new Integer(109).toString();
677cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        headMap = subMap_default.headMap(endKey);
678cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(9, headMap.size());
679cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
680cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        headMap = subMap_startExcluded_endExcluded.headMap(endKey);
681cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(8, headMap.size());
682cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
683cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        headMap = subMap_startExcluded_endIncluded.headMap(endKey);
684cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(8, headMap.size());
685cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
686cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        headMap = subMap_startIncluded_endExcluded.headMap(endKey);
687cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(9, headMap.size());
688cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
689cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        headMap = subMap_startIncluded_endIncluded.headMap(endKey);
690cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(9, headMap.size());
691cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
692cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        endKey = new Integer(110).toString();
693cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
694cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            subMap_default.headMap(endKey);
695cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
696cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
697cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
698cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
699cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
700cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
701cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            subMap_startExcluded_endExcluded.headMap(endKey);
702cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
703cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
704cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
705cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
706cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
707cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
708cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            subMap_startExcluded_endIncluded.headMap(endKey);
709cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
710cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
711cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
712cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
713cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
714cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
715cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            subMap_startIncluded_endExcluded.headMap(endKey);
716cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
717cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
718cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
719cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
720cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
721cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
722cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            subMap_startIncluded_endIncluded.headMap(endKey);
723cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
724cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
725cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
726cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
727cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
728cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // With Comparator
729cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        endKey = new Integer(99).toString();
730cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
731cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            subMap_default_comparator.headMap(endKey);
732cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
733cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
734cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
735cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
736cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
737cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
738cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            subMap_startExcluded_endExcluded_comparator.headMap(endKey);
739cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
740cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
741cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
742cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
743cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
744cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
745cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            subMap_startExcluded_endIncluded_comparator.headMap(endKey);
746cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
747cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
748cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
749cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
750cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
751cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
752cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            subMap_startIncluded_endExcluded_comparator.headMap(endKey);
753cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
754cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
755cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
756cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
757cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
758cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
759cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            subMap_startIncluded_endIncluded_comparator.headMap(endKey);
760cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
761cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
762cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
763cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
764cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
765cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        headMap = null;
766cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        endKey = new Integer(100).toString();
767cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        headMap = subMap_default_comparator.headMap(endKey);
768cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(0, headMap.size());
769cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
770e22b1d53d200616e59483cdbf0df0796583b1007Narayan Kamath        try {
771e22b1d53d200616e59483cdbf0df0796583b1007Narayan Kamath            headMap = subMap_startExcluded_endExcluded_comparator.headMap(endKey);
772e22b1d53d200616e59483cdbf0df0796583b1007Narayan Kamath            fail("should throw IllegalArgumentException");
773e22b1d53d200616e59483cdbf0df0796583b1007Narayan Kamath        } catch (IllegalArgumentException e) {
774e22b1d53d200616e59483cdbf0df0796583b1007Narayan Kamath            // Expected
775e22b1d53d200616e59483cdbf0df0796583b1007Narayan Kamath        }
776cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
777e22b1d53d200616e59483cdbf0df0796583b1007Narayan Kamath        try {
778e22b1d53d200616e59483cdbf0df0796583b1007Narayan Kamath            headMap = subMap_startExcluded_endIncluded_comparator.headMap(endKey);
779e22b1d53d200616e59483cdbf0df0796583b1007Narayan Kamath            fail("should throw IllegalArgumentException");
780e22b1d53d200616e59483cdbf0df0796583b1007Narayan Kamath        } catch (IllegalArgumentException e) {
781e22b1d53d200616e59483cdbf0df0796583b1007Narayan Kamath            // Expected
782e22b1d53d200616e59483cdbf0df0796583b1007Narayan Kamath        }
783cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
784cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        headMap = subMap_startIncluded_endExcluded_comparator.headMap(endKey);
785cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(0, headMap.size());
786cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
787cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        headMap = subMap_startIncluded_endIncluded_comparator.headMap(endKey);
788cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(0, headMap.size());
789cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
790cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int i = 0, j = 101; i < 8; i++) {
791cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            endKey = new Integer(i + j).toString();
792cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            headMap = subMap_default_comparator.headMap(endKey);
793cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(i + 1, headMap.size());
794cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
795cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            headMap = subMap_startExcluded_endExcluded_comparator
796cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    .headMap(endKey);
797cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(i, headMap.size());
798cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
799cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            headMap = subMap_startExcluded_endIncluded_comparator
800cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    .headMap(endKey);
801cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(i, headMap.size());
802cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
803cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            headMap = subMap_startIncluded_endExcluded_comparator
804cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    .headMap(endKey);
805cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(i + 1, headMap.size());
806cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
807cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            headMap = subMap_startIncluded_endIncluded_comparator
808cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    .headMap(endKey);
809cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(i + 1, headMap.size());
810cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
811cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
812cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        endKey = new Integer(108).toString();
813cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        headMap = subMap_default_comparator.headMap(endKey);
814cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(8, headMap.size());
815cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
816cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        headMap = subMap_startExcluded_endExcluded_comparator.headMap(endKey);
817cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(7, headMap.size());
818cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
819cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        headMap = subMap_startExcluded_endIncluded_comparator.headMap(endKey);
820cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(7, headMap.size());
821cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
822cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        headMap = subMap_startIncluded_endExcluded_comparator.headMap(endKey);
823cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(8, headMap.size());
824cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
825cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        headMap = subMap_startIncluded_endIncluded_comparator.headMap(endKey);
826cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(8, headMap.size());
827cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
828cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        endKey = new Integer(110).toString();
829cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
830cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            subMap_default_comparator.headMap(endKey);
831cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
832cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
833cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
834cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
835cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
836cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
837cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            subMap_startExcluded_endExcluded_comparator.headMap(endKey);
838cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
839cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
840cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
841cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
842cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
843cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
844cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            subMap_startExcluded_endIncluded_comparator.headMap(endKey);
845cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
846cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
847cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
848cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
849cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
850cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
851cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            subMap_startIncluded_endExcluded_comparator.headMap(endKey);
852cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
853cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
854cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
855cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
856cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
857cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
858cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            subMap_startIncluded_endIncluded_comparator.headMap(endKey);
859cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
860cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
861cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
862cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
863cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
864cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
865cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_SubMap_isEmpty() {
866cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(subMap_default.isEmpty());
867cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(subMap_startExcluded_endExcluded.isEmpty());
868cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(subMap_startExcluded_endIncluded.isEmpty());
869cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(subMap_startIncluded_endExcluded.isEmpty());
870cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(subMap_startIncluded_endIncluded.isEmpty());
871cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
872cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Object startKey = new Integer(100);
873cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Object endKey = startKey;
874cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        SortedMap subMap = tm.subMap(startKey.toString(), endKey.toString());
875cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(subMap.isEmpty());
876cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        subMap = subMap_default.subMap(startKey.toString(), endKey.toString());
877cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(subMap.isEmpty());
878cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        subMap = subMap_startIncluded_endExcluded.subMap(startKey.toString(),
879cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                endKey.toString());
880cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(subMap.isEmpty());
881cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        subMap = subMap_startIncluded_endIncluded.subMap(startKey.toString(),
882cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                endKey.toString());
883cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(subMap.isEmpty());
884cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
885cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int i = 0, j = 101; i < 8; i++) {
886cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            startKey = i + j;
887cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            endKey = startKey;
888cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
889cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            subMap = subMap_default.subMap(startKey.toString(), endKey
890cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    .toString());
891cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertTrue(subMap.isEmpty());
892cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
893cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            subMap = subMap_startExcluded_endExcluded.subMap(startKey
894cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    .toString(), endKey.toString());
895cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertTrue(subMap.isEmpty());
896cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
897cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            subMap = subMap_startExcluded_endIncluded.subMap(startKey
898cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    .toString(), endKey.toString());
899cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertTrue(subMap.isEmpty());
900cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
901cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            subMap = subMap_startIncluded_endExcluded.subMap(startKey
902cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    .toString(), endKey.toString());
903cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertTrue(subMap.isEmpty());
904cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
905cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            subMap = subMap_startIncluded_endIncluded.subMap(startKey
906cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    .toString(), endKey.toString());
907cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertTrue(subMap.isEmpty());
908cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
909cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
910cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int i = 0, j = 101; i < 5; i++) {
911cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            startKey = i + j;
912cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            endKey = i + j + 4;
913cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
914cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            subMap = subMap_default.subMap(startKey.toString(), endKey
915cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    .toString());
916cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertFalse(subMap.isEmpty());
917cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
918cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            subMap = subMap_startExcluded_endExcluded.subMap(startKey
919cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    .toString(), endKey.toString());
920cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertFalse(subMap.isEmpty());
921cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
922cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            subMap = subMap_startExcluded_endIncluded.subMap(startKey
923cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    .toString(), endKey.toString());
924cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertFalse(subMap.isEmpty());
925cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
926cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            subMap = subMap_startIncluded_endExcluded.subMap(startKey
927cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    .toString(), endKey.toString());
928cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertFalse(subMap.isEmpty());
929cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
930cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            subMap = subMap_startIncluded_endIncluded.subMap(startKey
931cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    .toString(), endKey.toString());
932cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertFalse(subMap.isEmpty());
933cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
934cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
935cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        startKey = new Integer(109).toString();
936cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        endKey = startKey;
937cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        subMap = tm.subMap(startKey.toString(), endKey.toString());
938cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(subMap.isEmpty());
939cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        subMap = subMap_startExcluded_endIncluded.subMap(startKey, endKey);
940cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(subMap.isEmpty());
941cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        subMap = subMap_startIncluded_endIncluded.subMap(startKey, endKey);
942cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(subMap.isEmpty());
943cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
944cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
945cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
946cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_SubMap_keySet() {
947cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Set keySet = subMap_default.keySet();
948cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(keySet.isEmpty());
949cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(9, keySet.size());
950cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
951cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        keySet = subMap_startExcluded_endExcluded.entrySet();
952cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(keySet.isEmpty());
953cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(8, keySet.size());
954cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
955cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        keySet = subMap_startExcluded_endIncluded.entrySet();
956cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(keySet.isEmpty());
957cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(9, keySet.size());
958cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
959cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        keySet = subMap_startIncluded_endExcluded.entrySet();
960cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(keySet.isEmpty());
961cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(9, keySet.size());
962cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
963cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        keySet = subMap_startIncluded_endIncluded.entrySet();
964cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(keySet.isEmpty());
965cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(10, keySet.size());
966cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
967cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
968cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_SubMap_put() {
969cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Integer value = new Integer(100);
970cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        int addValue = 5;
971cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
972cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        subMap_default.put(value.toString(), value + addValue);
973cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(value + addValue, subMap_default.get(value.toString()));
974cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
975cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
976cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            subMap_startExcluded_endExcluded.put(value.toString(), value
977cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    + addValue);
978cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
979cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
980cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
981cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
982cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
983cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
984cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            subMap_startExcluded_endIncluded.put(value.toString(), value
985cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    + addValue);
986cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
987cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
988cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
989cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
990cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
991cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        subMap_startIncluded_endExcluded
992cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .put(value.toString(), value + addValue);
993cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(value + addValue, subMap_startIncluded_endExcluded
994cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .get(value.toString()));
995cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
996cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        subMap_startIncluded_endIncluded
997cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .put(value.toString(), value + addValue);
998cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(value + addValue, subMap_startIncluded_endIncluded
999cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .get(value.toString()));
1000cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1001cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        value = new Integer(109);
1002cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
1003cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            subMap_default.put(value.toString(), value + addValue);
1004cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
1005cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
1006cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
1007cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
1008cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1009cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
1010cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            subMap_startExcluded_endExcluded.put(value.toString(), value
1011cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    + addValue);
1012cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
1013cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
1014cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
1015cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
1016cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1017cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        subMap_startExcluded_endIncluded
1018cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .put(value.toString(), value + addValue);
1019cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(value + addValue, subMap_startExcluded_endIncluded
1020cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .get(value.toString()));
1021cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1022cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
1023cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            subMap_startIncluded_endExcluded.put(value.toString(), value
1024cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    + addValue);
1025cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
1026cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
1027cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
1028cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
1029cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1030cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        subMap_startIncluded_endIncluded
1031cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .put(value.toString(), value + addValue);
1032cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(value + addValue, subMap_startIncluded_endIncluded
1033cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .get(value.toString()));
1034cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
1035cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1036cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_SubMap_remove() {
1037cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Integer value = new Integer(100);
1038cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1039cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        subMap_default.remove(value.toString());
1040cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNull(subMap_default.get(value.toString()));
1041cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1042cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        subMap_startExcluded_endExcluded.remove(value.toString());
1043cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNull(subMap_startExcluded_endExcluded.get(value.toString()));
1044cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1045cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        subMap_startExcluded_endIncluded.remove(value.toString());
1046cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNull(subMap_startExcluded_endIncluded.get(value.toString()));
1047cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1048cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        subMap_startIncluded_endExcluded.remove(value.toString());
1049cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNull(subMap_startIncluded_endExcluded.get(value.toString()));
1050cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1051cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        subMap_startIncluded_endIncluded.remove(value.toString());
1052cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNull(subMap_startIncluded_endIncluded.get(value.toString()));
1053cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1054cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        value = new Integer(109);
1055cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        subMap_default.remove(value.toString());
1056cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNull(subMap_default.get(value.toString()));
1057cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1058cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        subMap_startExcluded_endExcluded.remove(value.toString());
1059cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNull(subMap_startExcluded_endExcluded.get(value.toString()));
1060cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1061cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        subMap_startExcluded_endIncluded.remove(value.toString());
1062cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNull(subMap_startExcluded_endIncluded.get(value.toString()));
1063cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1064cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        subMap_startIncluded_endExcluded.remove(value.toString());
1065cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNull(subMap_startIncluded_endExcluded.get(value.toString()));
1066cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1067cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        subMap_startIncluded_endIncluded.remove(value.toString());
1068cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNull(subMap_startIncluded_endIncluded.get(value.toString()));
1069cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
1070cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1071cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_SubMap_subMap_NoComparator() {
1072cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        String startKey = new Integer[100].toString();
1073cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        String endKey = new Integer[100].toString();
1074cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
1075cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            subMap_default.subMap(startKey, endKey);
1076cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
1077cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
1078cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
1079cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
1080cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1081cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
1082cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            subMap_startExcluded_endExcluded.subMap(startKey, endKey);
1083cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
1084cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
1085cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
1086cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
1087cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1088cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
1089cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            subMap_startExcluded_endIncluded.subMap(startKey, endKey);
1090cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
1091cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
1092cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
1093cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
1094cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1095cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
1096cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            subMap_startIncluded_endExcluded.subMap(startKey, endKey);
1097cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
1098cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
1099cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
1100cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
1101cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1102cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
1103cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            subMap_startIncluded_endIncluded.subMap(startKey, endKey);
1104cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
1105cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
1106cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
1107cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
1108cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1109cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        SortedMap subSubMap = null;
1110cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int i = 101; i < 109; i++) {
1111cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            startKey = new Integer(i).toString();
1112cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            endKey = startKey;
1113cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1114cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            subSubMap = subMap_default.subMap(startKey, endKey);
1115cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(0, subSubMap.size());
1116cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1117cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            subSubMap = subMap_startExcluded_endExcluded.subMap(startKey,
1118cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    endKey);
1119cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(0, subSubMap.size());
1120cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1121cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            subSubMap = subMap_startExcluded_endIncluded.subMap(startKey,
1122cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    endKey);
1123cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(0, subSubMap.size());
1124cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1125cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            subSubMap = subMap_startIncluded_endExcluded.subMap(startKey,
1126cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    endKey);
1127cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(0, subSubMap.size());
1128cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1129cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            subSubMap = subMap_startIncluded_endIncluded.subMap(startKey,
1130cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    endKey);
1131cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(0, subSubMap.size());
1132cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
1133cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1134cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int i = 101, j = 5; i < 105; i++) {
1135cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            startKey = new Integer(i).toString();
1136cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            endKey = new Integer(i + j).toString();
1137cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1138cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            subSubMap = subMap_default.subMap(startKey, endKey);
1139cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(j, subSubMap.size());
1140cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1141cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            subSubMap = subMap_startExcluded_endExcluded.subMap(startKey,
1142cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    endKey);
1143cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(j, subSubMap.size());
1144cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1145cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            subSubMap = subMap_startExcluded_endIncluded.subMap(startKey,
1146cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    endKey);
1147cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(j, subSubMap.size());
1148cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1149cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            subSubMap = subMap_startIncluded_endExcluded.subMap(startKey,
1150cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    endKey);
1151cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(j, subSubMap.size());
1152cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1153cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            subSubMap = subMap_startIncluded_endIncluded.subMap(startKey,
1154cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    endKey);
1155cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(j, subSubMap.size());
1156cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
1157cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1158cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        startKey = new Integer(108).toString();
1159cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        endKey = new Integer(109).toString();
1160cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1161cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        subSubMap = subMap_default.subMap(startKey, endKey);
1162cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(1, subSubMap.size());
1163cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1164cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        subSubMap = subMap_startExcluded_endExcluded.subMap(startKey, endKey);
1165cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(1, subSubMap.size());
1166cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1167cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        subSubMap = subMap_startExcluded_endIncluded.subMap(startKey, endKey);
1168cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(1, subSubMap.size());
1169cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1170cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        subSubMap = subMap_startIncluded_endExcluded.subMap(startKey, endKey);
1171cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(1, subSubMap.size());
1172cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1173cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        subSubMap = subMap_startIncluded_endIncluded.subMap(startKey, endKey);
1174cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(1, subSubMap.size());
1175cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1176cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        startKey = new Integer(109).toString();
1177cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        endKey = new Integer(109).toString();
1178cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1179cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
1180cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            subMap_default.subMap(startKey, endKey);
1181cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
1182cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
1183cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
1184cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
1185cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1186cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
1187cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            subMap_startExcluded_endExcluded.subMap(startKey, endKey);
1188cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
1189cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
1190cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
1191cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
1192cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1193cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        subSubMap = subMap_startExcluded_endIncluded.subMap(startKey, endKey);
1194cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(0, subSubMap.size());
1195cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1196cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
1197cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            subMap_startIncluded_endExcluded.subMap(startKey, endKey);
1198cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
1199cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
1200cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
1201cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
1202cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1203cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        subSubMap = subMap_startIncluded_endIncluded.subMap(startKey, endKey);
1204cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(0, subSubMap.size());
1205cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
1206cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1207cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_SubMap_subMap_Comparator() {
1208cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        String startKey = new Integer[100].toString();
1209cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        String endKey = new Integer[100].toString();
1210cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
1211cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            subMap_default_comparator.subMap(startKey, endKey);
1212cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
1213cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
1214cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
1215cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
1216cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1217cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
1218cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            subMap_startExcluded_endExcluded_comparator
1219cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    .subMap(startKey, endKey);
1220cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
1221cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
1222cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
1223cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
1224cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1225cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
1226cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            subMap_startExcluded_endIncluded_comparator
1227cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    .subMap(startKey, endKey);
1228cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
1229cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
1230cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
1231cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
1232cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1233cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
1234cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            subMap_startIncluded_endExcluded_comparator
1235cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    .subMap(startKey, endKey);
1236cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
1237cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
1238cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
1239cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
1240cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1241cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
1242cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            subMap_startIncluded_endIncluded_comparator
1243cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    .subMap(startKey, endKey);
1244cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
1245cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
1246cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
1247cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
1248cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1249cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        SortedMap subSubMap = null;
1250cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int i = 101; i < 109; i++) {
1251cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            startKey = new Integer(i).toString();
1252cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            endKey = startKey;
1253cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1254cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            subSubMap = subMap_default_comparator.subMap(startKey, endKey);
1255cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(0, subSubMap.size());
1256cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1257cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            subSubMap = subMap_startExcluded_endExcluded_comparator.subMap(
1258cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    startKey, endKey);
1259cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(0, subSubMap.size());
1260cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1261cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            subSubMap = subMap_startExcluded_endIncluded_comparator.subMap(
1262cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    startKey, endKey);
1263cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(0, subSubMap.size());
1264cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1265cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            subSubMap = subMap_startIncluded_endExcluded_comparator.subMap(
1266cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    startKey, endKey);
1267cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(0, subSubMap.size());
1268cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1269cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            subSubMap = subMap_startIncluded_endIncluded_comparator.subMap(
1270cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    startKey, endKey);
1271cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(0, subSubMap.size());
1272cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
1273cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1274cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int i = 101, j = 5; i < 105; i++) {
1275cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            startKey = new Integer(i).toString();
1276cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            endKey = new Integer(i + j).toString();
1277cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1278cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            subSubMap = subMap_default_comparator.subMap(startKey, endKey);
1279cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(j, subSubMap.size());
1280cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1281cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            subSubMap = subMap_startExcluded_endExcluded_comparator.subMap(
1282cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    startKey, endKey);
1283cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(j, subSubMap.size());
1284cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1285cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            subSubMap = subMap_startExcluded_endIncluded_comparator.subMap(
1286cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    startKey, endKey);
1287cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(j, subSubMap.size());
1288cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1289cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            subSubMap = subMap_startIncluded_endExcluded_comparator.subMap(
1290cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    startKey, endKey);
1291cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(j, subSubMap.size());
1292cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1293cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            subSubMap = subMap_startIncluded_endIncluded_comparator.subMap(
1294cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    startKey, endKey);
1295cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(j, subSubMap.size());
1296cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
1297cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1298cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        startKey = new Integer(108).toString();
1299cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        endKey = new Integer(109).toString();
1300cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1301cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        subSubMap = subMap_default_comparator.subMap(startKey, endKey);
1302cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(1, subSubMap.size());
1303cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1304cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        subSubMap = subMap_startExcluded_endExcluded_comparator.subMap(
1305cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                startKey, endKey);
1306cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(1, subSubMap.size());
1307cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1308cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        subSubMap = subMap_startExcluded_endIncluded_comparator.subMap(
1309cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                startKey, endKey);
1310cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(1, subSubMap.size());
1311cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1312cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        subSubMap = subMap_startIncluded_endExcluded_comparator.subMap(
1313cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                startKey, endKey);
1314cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(1, subSubMap.size());
1315cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1316cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        subSubMap = subMap_startIncluded_endIncluded_comparator.subMap(
1317cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                startKey, endKey);
1318cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(1, subSubMap.size());
1319cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1320cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        startKey = new Integer(109).toString();
1321cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        endKey = new Integer(109).toString();
1322cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1323cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
1324cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            subMap_default_comparator.subMap(startKey, endKey);
1325cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
1326cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
1327cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
1328cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
1329cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1330cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
1331cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            subMap_startExcluded_endExcluded_comparator
1332cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    .subMap(startKey, endKey);
1333cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
1334cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
1335cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
1336cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
1337cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1338cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        subSubMap = subMap_startExcluded_endIncluded_comparator.subMap(
1339cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                startKey, endKey);
1340cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(0, subSubMap.size());
1341cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1342cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
1343cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            subMap_startIncluded_endExcluded_comparator
1344cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    .subMap(startKey, endKey);
1345cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
1346cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
1347cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
1348cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
1349cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1350cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        subSubMap = subMap_startIncluded_endIncluded_comparator.subMap(
1351cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                startKey, endKey);
1352cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(0, subSubMap.size());
1353cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
1354cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1355cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_SubMap_tailMap() {
1356cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        String startKey = new Integer(99).toString();
1357cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
1358cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            subMap_default.tailMap(startKey);
1359cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
1360cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
1361cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
1362cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
1363cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1364cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
1365cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            subMap_startExcluded_endExcluded.tailMap(startKey);
1366cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
1367cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
1368cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
1369cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
1370cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1371cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
1372cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            subMap_startExcluded_endIncluded.tailMap(startKey);
1373cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
1374cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
1375cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
1376cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
1377cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1378cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
1379cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            subMap_startIncluded_endExcluded.tailMap(startKey);
1380cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
1381cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
1382cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
1383cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
1384cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1385cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
1386cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            subMap_startIncluded_endIncluded.tailMap(startKey);
1387cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
1388cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
1389cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
1390cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
1391cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        SortedMap tailMap = null;
1392cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1393cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        startKey = new Integer(100).toString();
1394cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        tailMap = subMap_default.tailMap(startKey);
1395cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(9, tailMap.size());
1396cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1397cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
1398cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            subMap_startExcluded_endExcluded.tailMap(startKey);
1399cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
1400cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
1401cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
1402cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
1403cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1404cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
1405cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            subMap_startExcluded_endIncluded.tailMap(startKey);
1406cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
1407cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
1408cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
1409cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
1410cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1411cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        tailMap = subMap_startIncluded_endExcluded.tailMap(startKey);
1412cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(9, tailMap.size());
1413cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1414cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        tailMap = subMap_startIncluded_endIncluded.tailMap(startKey);
1415cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(10, tailMap.size());
1416cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1417cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int i = 0, j = 101, end = 8; i < end; i++) {
1418cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            startKey = new Integer(i + j).toString();
1419cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            tailMap = subMap_default.tailMap(startKey);
1420cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(end - i, tailMap.size());
1421cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1422cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            tailMap = subMap_startExcluded_endExcluded.tailMap(startKey);
1423cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(end - i, tailMap.size());
1424cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1425cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            tailMap = subMap_startExcluded_endIncluded.tailMap(startKey);
1426cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(end - i + 1, tailMap.size());
1427cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1428cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            tailMap = subMap_startIncluded_endExcluded.tailMap(startKey);
1429cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(end - i, tailMap.size());
1430cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1431cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            tailMap = subMap_startIncluded_endIncluded.tailMap(startKey);
1432cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(end - i + 1, tailMap.size());
1433cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
1434cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1435cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        startKey = new Integer(109).toString();
1436cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
1437cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            subMap_default.tailMap(startKey);
1438cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
1439cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
1440cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
1441cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
1442cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
1443cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            subMap_startExcluded_endExcluded.tailMap(startKey);
1444cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
1445cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
1446cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
1447cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
1448cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1449cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        tailMap = subMap_startExcluded_endIncluded.tailMap(startKey);
1450cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(1, tailMap.size());
1451cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1452cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
1453cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            subMap_startIncluded_endExcluded.tailMap(startKey);
1454cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
1455cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
1456cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
1457cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
1458cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1459cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        tailMap = subMap_startIncluded_endIncluded.tailMap(startKey);
1460cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(1, tailMap.size());
1461cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1462cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        startKey = new Integer(110).toString();
1463cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
1464cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            subMap_default.tailMap(startKey);
1465cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
1466cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
1467cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
1468cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
1469cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1470cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
1471cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            subMap_startExcluded_endExcluded.tailMap(startKey);
1472cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
1473cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
1474cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
1475cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
1476cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
1477cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            subMap_startExcluded_endIncluded.tailMap(startKey);
1478cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
1479cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
1480cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
1481cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
1482cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
1483cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            subMap_startIncluded_endExcluded.tailMap(startKey);
1484cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
1485cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
1486cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
1487cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
1488cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
1489cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            subMap_startIncluded_endIncluded.tailMap(startKey);
1490cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
1491cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
1492cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
1493cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
1494cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
1495cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1496cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_SubMap_values() {
1497cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Collection values = subMap_default.values();
1498cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1499cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(values.isEmpty());
1500cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(values.contains(100));
1501cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int i = 101; i < 109; i++) {
1502cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertTrue(values.contains(i));
1503cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
1504cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(values.contains(109));
1505cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1506cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        values = subMap_startExcluded_endExcluded.values();
1507cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(values.isEmpty());
1508cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(values.contains(100));
1509cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int i = 101; i < 109; i++) {
1510cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertTrue(values.contains(i));
1511cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
1512cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(values.contains(109));
1513cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1514cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        values = subMap_startExcluded_endIncluded.values();
1515cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(values.isEmpty());
1516cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(values.contains(100));
1517cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int i = 101; i < 109; i++) {
1518cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertTrue(values.contains(i));
1519cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
1520cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(values.contains(109));
1521cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1522cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        values = subMap_startIncluded_endExcluded.values();
1523cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(values.isEmpty());
1524cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(values.contains(100));
1525cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int i = 101; i < 109; i++) {
1526cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertTrue(values.contains(i));
1527cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
1528cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(values.contains(109));
1529cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1530cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        values = subMap_startIncluded_endIncluded.values();
1531cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(values.isEmpty());
1532cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(values.contains(100));
1533cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int i = 100; i < 109; i++) {
1534cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertTrue(values.contains(i));
1535cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
1536cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(values.contains(109));
1537cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
1538cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1539cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_SubMap_size() {
1540cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(9, subMap_default.size());
1541cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(8, subMap_startExcluded_endExcluded.size());
1542cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(9, subMap_startExcluded_endIncluded.size());
1543cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(9, subMap_startIncluded_endExcluded.size());
1544cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(10, subMap_startIncluded_endIncluded.size());
1545cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1546cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(9, subMap_default_comparator.size());
1547cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(8, subMap_startExcluded_endExcluded_comparator.size());
1548cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(9, subMap_startExcluded_endIncluded_comparator.size());
1549cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(9, subMap_startIncluded_endExcluded_comparator.size());
1550cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(10, subMap_startIncluded_endIncluded_comparator.size());
1551cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
1552cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1553cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_SubMap_readObject() throws Exception {
1554cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // SerializationTest.verifySelf(subMap_default);
1555cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // SerializationTest.verifySelf(subMap_startExcluded_endExcluded);
1556cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // SerializationTest.verifySelf(subMap_startExcluded_endIncluded);
1557cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // SerializationTest.verifySelf(subMap_startIncluded_endExcluded);
1558cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // SerializationTest.verifySelf(subMap_startIncluded_endIncluded);
1559cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
1560cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1561cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_AscendingSubMap_ceilingEntry() {
1562cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        String key = new Integer(99).toString();
1563cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNull(navigableMap_startExcluded_endExcluded.ceilingEntry(key));
1564cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNull(navigableMap_startExcluded_endIncluded.ceilingEntry(key));
1565cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNull(navigableMap_startIncluded_endExcluded.ceilingEntry(key));
1566cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNull(navigableMap_startIncluded_endIncluded.ceilingEntry(key));
1567cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1568cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = new Integer(100).toString();
1569cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(101, navigableMap_startExcluded_endExcluded.ceilingEntry(
1570cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                key).getValue());
1571cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(101, navigableMap_startExcluded_endIncluded.ceilingEntry(
1572cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                key).getValue());
1573cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(100, navigableMap_startIncluded_endExcluded.ceilingEntry(
1574cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                key).getValue());
1575cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(100, navigableMap_startIncluded_endIncluded.ceilingEntry(
1576cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                key).getValue());
1577cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1578cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int i = 101; i < 109; i++) {
1579cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            key = new Integer(i).toString();
1580cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(i, navigableMap_startExcluded_endExcluded
1581cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    .ceilingEntry(key).getValue());
1582cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(i, navigableMap_startExcluded_endIncluded
1583cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    .ceilingEntry(key).getValue());
1584cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(i, navigableMap_startIncluded_endExcluded
1585cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    .ceilingEntry(key).getValue());
1586cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(i, navigableMap_startIncluded_endIncluded
1587cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    .ceilingEntry(key).getValue());
1588cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1589cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
1590cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1591cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = new Integer(109).toString();
1592cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNull(navigableMap_startExcluded_endExcluded.ceilingEntry(key));
1593cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(109, navigableMap_startExcluded_endIncluded.ceilingEntry(
1594cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                key).getValue());
1595cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNull(navigableMap_startIncluded_endExcluded.ceilingEntry(key));
1596cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(109, navigableMap_startIncluded_endIncluded.ceilingEntry(
1597cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                key).getValue());
1598cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1599cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = new Integer(110).toString();
1600cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNull(navigableMap_startExcluded_endExcluded.ceilingEntry(key));
1601cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNull(navigableMap_startExcluded_endIncluded.ceilingEntry(key));
1602cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNull(navigableMap_startIncluded_endExcluded.ceilingEntry(key));
1603cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNull(navigableMap_startIncluded_endIncluded.ceilingEntry(key));
1604cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
1605cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1606cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_AscendingSubMap_descendingMap() {
1607cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        NavigableMap descendingMap = navigableMap_startExcluded_endExcluded
1608cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .descendingMap();
1609cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(navigableMap_startExcluded_endExcluded.size(),
1610cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                descendingMap.size());
1611cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNotNull(descendingMap.comparator());
1612cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1613cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(navigableMap_startExcluded_endExcluded.firstKey(),
1614cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                descendingMap.lastKey());
1615cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(navigableMap_startExcluded_endExcluded.firstEntry(),
1616cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                descendingMap.lastEntry());
1617cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1618cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(navigableMap_startExcluded_endExcluded.lastKey(),
1619cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                descendingMap.firstKey());
1620cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(navigableMap_startExcluded_endExcluded.lastEntry(),
1621cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                descendingMap.firstEntry());
1622cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1623cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        descendingMap = navigableMap_startExcluded_endIncluded.descendingMap();
1624cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(navigableMap_startExcluded_endIncluded.size(),
1625cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                descendingMap.size());
1626cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNotNull(descendingMap.comparator());
1627cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1628cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(navigableMap_startExcluded_endIncluded.firstKey(),
1629cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                descendingMap.lastKey());
1630cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(navigableMap_startExcluded_endIncluded.firstEntry(),
1631cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                descendingMap.lastEntry());
1632cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1633cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(navigableMap_startExcluded_endIncluded.lastKey(),
1634cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                descendingMap.firstKey());
1635cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(navigableMap_startExcluded_endIncluded.lastEntry(),
1636cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                descendingMap.firstEntry());
1637cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1638cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        descendingMap = navigableMap_startIncluded_endExcluded.descendingMap();
1639cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(navigableMap_startIncluded_endExcluded.size(),
1640cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                descendingMap.size());
1641cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNotNull(descendingMap.comparator());
1642cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1643cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(navigableMap_startIncluded_endExcluded.firstKey(),
1644cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                descendingMap.lastKey());
1645cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(navigableMap_startIncluded_endExcluded.firstEntry(),
1646cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                descendingMap.lastEntry());
1647cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1648cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(navigableMap_startIncluded_endExcluded.lastKey(),
1649cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                descendingMap.firstKey());
1650cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(navigableMap_startIncluded_endExcluded.lastEntry(),
1651cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                descendingMap.firstEntry());
1652cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1653cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        descendingMap = navigableMap_startIncluded_endIncluded.descendingMap();
1654cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(navigableMap_startIncluded_endIncluded.size(),
1655cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                descendingMap.size());
1656cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNotNull(descendingMap.comparator());
1657cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1658cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(navigableMap_startIncluded_endIncluded.firstKey(),
1659cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                descendingMap.lastKey());
1660cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(navigableMap_startIncluded_endIncluded.firstEntry(),
1661cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                descendingMap.lastEntry());
1662cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1663cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(navigableMap_startIncluded_endIncluded.lastKey(),
1664cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                descendingMap.firstKey());
1665cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(navigableMap_startIncluded_endIncluded.lastEntry(),
1666cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                descendingMap.firstEntry());
1667cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
1668cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1669cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_AscendingSubMap_floorEntry() {
1670cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        String key = new Integer(99).toString();
1671cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(108, navigableMap_startExcluded_endExcluded
1672cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .floorEntry(key).getValue());
1673cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(109, navigableMap_startExcluded_endIncluded
1674cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .floorEntry(key).getValue());
1675cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(108, navigableMap_startIncluded_endExcluded
1676cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .floorEntry(key).getValue());
1677cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(109, navigableMap_startIncluded_endIncluded
1678cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .floorEntry(key).getValue());
1679cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1680cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = new Integer(100).toString();
1681cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNull(navigableMap_startExcluded_endExcluded.floorEntry(key));
1682cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNull(navigableMap_startExcluded_endIncluded.floorEntry(key));
1683cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(100, navigableMap_startIncluded_endExcluded
1684cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .floorEntry(key).getValue());
1685cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(100, navigableMap_startIncluded_endIncluded
1686cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .floorEntry(key).getValue());
1687cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1688cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int i = 101; i < 109; i++) {
1689cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            key = new Integer(i).toString();
1690cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(i, navigableMap_startExcluded_endExcluded.floorEntry(
1691cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    key).getValue());
1692cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(i, navigableMap_startExcluded_endIncluded.floorEntry(
1693cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    key).getValue());
1694cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(i, navigableMap_startIncluded_endExcluded.floorEntry(
1695cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    key).getValue());
1696cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(i, navigableMap_startIncluded_endIncluded.floorEntry(
1697cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    key).getValue());
1698cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1699cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
1700cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1701cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = new Integer(109).toString();
1702cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(108, navigableMap_startExcluded_endExcluded
1703cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .floorEntry(key).getValue());
1704cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(109, navigableMap_startExcluded_endIncluded
1705cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .floorEntry(key).getValue());
1706cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(108, navigableMap_startIncluded_endExcluded
1707cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .floorEntry(key).getValue());
1708cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(109, navigableMap_startIncluded_endIncluded
1709cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .floorEntry(key).getValue());
1710cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1711cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = new Integer(110).toString();
1712cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(108, navigableMap_startExcluded_endExcluded
1713cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .floorEntry(key).getValue());
1714cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(109, navigableMap_startExcluded_endIncluded
1715cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .floorEntry(key).getValue());
1716cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(108, navigableMap_startIncluded_endExcluded
1717cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .floorEntry(key).getValue());
1718cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(109, navigableMap_startIncluded_endIncluded
1719cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .floorEntry(key).getValue());
1720cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
1721cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1722cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_AscendingSubMap_pollFirstEntry() {
1723cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(101, navigableMap_startExcluded_endExcluded
1724cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .pollFirstEntry().getValue());
1725cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(102, navigableMap_startExcluded_endIncluded
1726cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .pollFirstEntry().getValue());
1727cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(100, navigableMap_startIncluded_endExcluded
1728cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .pollFirstEntry().getValue());
1729cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(103, navigableMap_startIncluded_endIncluded
1730cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .pollFirstEntry().getValue());
1731cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
1732cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1733cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_AscendingSubMap_pollLastEntry() {
1734cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(108, navigableMap_startExcluded_endExcluded
1735cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .pollLastEntry().getValue());
1736cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(109, navigableMap_startExcluded_endIncluded
1737cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .pollLastEntry().getValue());
1738cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(107, navigableMap_startIncluded_endExcluded
1739cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .pollLastEntry().getValue());
1740cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(106, navigableMap_startIncluded_endIncluded
1741cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .pollLastEntry().getValue());
1742cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
1743cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1744cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_AscendingSubMap_entrySet() {
1745cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(8, navigableMap_startExcluded_endExcluded.entrySet()
1746cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .size());
1747cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(9, navigableMap_startExcluded_endIncluded.entrySet()
1748cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .size());
1749cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(9, navigableMap_startIncluded_endExcluded.entrySet()
1750cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .size());
1751cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(10, navigableMap_startIncluded_endIncluded.entrySet()
1752cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .size());
1753cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
1754cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1755cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_AscendingSubMap_subMap() {
1756cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Set entrySet;
1757cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Entry startEntry, endEntry;
1758cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        int startIndex, endIndex;
1759cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        SortedMap subMap;
1760cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Iterator subMapSetIterator;
1761cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1762cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        entrySet = navigableMap_startExcluded_endExcluded.entrySet();
1763cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Iterator startIterator = entrySet.iterator();
1764cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        while (startIterator.hasNext()) {
1765cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            startEntry = (Entry) startIterator.next();
1766cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            startIndex = (Integer) startEntry.getValue();
1767cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            Iterator endIterator = entrySet.iterator();
1768cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            while (endIterator.hasNext()) {
1769cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                endEntry = (Entry) endIterator.next();
1770cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                endIndex = (Integer) endEntry.getValue();
1771cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1772cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                if (startIndex > endIndex) {
1773cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    try {
1774cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        navigableMap_startExcluded_endExcluded.subMap(
1775cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                                startEntry.getKey(), endEntry.getKey());
1776cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        fail("should throw IllegalArgumentException");
1777cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    } catch (IllegalArgumentException e) {
1778cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        // Expected
1779cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    }
1780cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    try {
1781cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        navigableMap_startExcluded_endExcluded.subMap(
1782cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                                startEntry.getKey(), false, endEntry.getKey(),
1783cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                                false);
1784cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        fail("should throw IllegalArgumentException");
1785cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    } catch (IllegalArgumentException e) {
1786cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        // Expected
1787cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    }
1788cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    try {
1789cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        navigableMap_startExcluded_endExcluded.subMap(
1790cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                                startEntry.getKey(), false, endEntry.getKey(),
1791cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                                true);
1792cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        fail("should throw IllegalArgumentException");
1793cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    } catch (IllegalArgumentException e) {
1794cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        // Expected
1795cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    }
1796cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    try {
1797cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        navigableMap_startExcluded_endExcluded.subMap(
1798cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                                startEntry.getKey(), true, endEntry.getKey(),
1799cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                                false);
1800cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        fail("should throw IllegalArgumentException");
1801cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    } catch (IllegalArgumentException e) {
1802cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        // Expected
1803cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    }
1804cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    try {
1805cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        navigableMap_startExcluded_endExcluded.subMap(
1806cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                                startEntry.getKey(), true, endEntry.getKey(),
1807cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                                true);
1808cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        fail("should throw IllegalArgumentException");
1809cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    } catch (IllegalArgumentException e) {
1810cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        // Expected
1811cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    }
1812cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                } else {
1813cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    subMap = navigableMap_startExcluded_endExcluded.subMap(
1814cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                            startEntry.getKey(), endEntry.getKey());
1815cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    subMapSetIterator = subMap.entrySet().iterator();
1816cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    for (int index = startIndex; index < endIndex; index++) {
1817cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        assertEquals(index, ((Entry) subMapSetIterator.next())
1818cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                                .getValue());
1819cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    }
1820cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1821cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    subMap = navigableMap_startExcluded_endExcluded.subMap(
1822cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                            startEntry.getKey(), false, endEntry.getKey(),
1823cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                            false);
1824cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    subMapSetIterator = subMap.entrySet().iterator();
1825cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    for (int index = startIndex + 1; index < endIndex; index++) {
1826cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        assertEquals(index, ((Entry) subMapSetIterator.next())
1827cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                                .getValue());
1828cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    }
1829cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1830cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    subMap = navigableMap_startExcluded_endExcluded
1831cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                            .subMap(startEntry.getKey(), false, endEntry
1832cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                                    .getKey(), true);
1833cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    subMapSetIterator = subMap.entrySet().iterator();
1834cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    for (int index = startIndex + 1; index < endIndex; index++) {
1835cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        assertEquals(index, ((Entry) subMapSetIterator.next())
1836cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                                .getValue());
1837cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    }
1838cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1839cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    subMap = navigableMap_startExcluded_endExcluded
1840cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                            .subMap(startEntry.getKey(), true, endEntry
1841cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                                    .getKey(), false);
1842cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    subMapSetIterator = subMap.entrySet().iterator();
1843cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    for (int index = startIndex; index < endIndex; index++) {
1844cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        assertEquals(index, ((Entry) subMapSetIterator.next())
1845cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                                .getValue());
1846cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    }
1847cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1848cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    subMap = navigableMap_startExcluded_endExcluded.subMap(
1849cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                            startEntry.getKey(), true, endEntry.getKey(), true);
1850cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    subMapSetIterator = subMap.entrySet().iterator();
1851cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    for (int index = startIndex; index <= endIndex; index++) {
1852cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        assertEquals(index, ((Entry) subMapSetIterator.next())
1853cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                                .getValue());
1854cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    }
1855cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                }
1856cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
1857cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
1858cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
1859cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1860cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_DescendingSubMap_ceilingEntry() {
1861cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        NavigableMap decendingMap = tm.descendingMap();
1862cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        String key = new Integer(-1).toString();
1863cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNull(decendingMap.ceilingEntry(key));
1864cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int i = 0; i < objArray.length; i++) {
1865cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            key = objArray[i].toString();
1866cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(objArray[i], decendingMap.ceilingEntry(key).getValue());
1867cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
1868cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = new Integer(1000).toString();
1869cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(100, decendingMap.ceilingEntry(key).getValue());
1870cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = new Integer(1001).toString();
1871cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(100, decendingMap.ceilingEntry(key).getValue());
1872cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1873cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        decendingMap = navigableMap_startExcluded_endExcluded.descendingMap();
1874cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = new Integer(100).toString();
1875cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNull(decendingMap.ceilingEntry(key));
1876cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int i = 101; i < 109; i++) {
1877cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            key = new Integer(i).toString();
1878cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(i, decendingMap.ceilingEntry(key).getValue());
1879cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
1880cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = new Integer(109).toString();
1881cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(108, decendingMap.ceilingEntry(key).getValue());
1882cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1883cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        decendingMap = navigableMap_startExcluded_endIncluded.descendingMap();
1884cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = new Integer(100).toString();
1885cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNull(decendingMap.ceilingEntry(key));
1886cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int i = 101; i < 109; i++) {
1887cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            key = new Integer(i).toString();
1888cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(i, decendingMap.ceilingEntry(key).getValue());
1889cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
1890cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = new Integer(109).toString();
1891cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(109, decendingMap.ceilingEntry(key).getValue());
1892cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1893cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        decendingMap = navigableMap_startIncluded_endExcluded.descendingMap();
1894cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = new Integer(100).toString();
1895cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(100, decendingMap.ceilingEntry(key).getValue());
1896cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int i = 101; i < 109; i++) {
1897cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            key = new Integer(i).toString();
1898cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(i, decendingMap.ceilingEntry(key).getValue());
1899cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
1900cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = new Integer(109).toString();
1901cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(108, decendingMap.ceilingEntry(key).getValue());
1902cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1903cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        decendingMap = navigableMap_startIncluded_endIncluded.descendingMap();
1904cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = new Integer(100).toString();
1905cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(100, decendingMap.ceilingEntry(key).getValue());
1906cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int i = 101; i < 109; i++) {
1907cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            key = new Integer(i).toString();
1908cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(i, decendingMap.ceilingEntry(key).getValue());
1909cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
1910cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = new Integer(109).toString();
1911cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(109, decendingMap.ceilingEntry(key).getValue());
1912cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1913cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // With Comparator
1914cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        decendingMap = ((NavigableMap) subMap_startExcluded_endExcluded_comparator)
1915cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .descendingMap();
1916cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = new Integer(100).toString();
1917cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNull(decendingMap.ceilingEntry(key));
1918cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int i = 101; i < 109; i++) {
1919cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            key = new Integer(i).toString();
1920cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(i, decendingMap.ceilingEntry(key).getValue());
1921cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
1922cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = new Integer(109).toString();
1923cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(108, decendingMap.ceilingEntry(key).getValue());
1924cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1925cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        decendingMap = ((NavigableMap) subMap_startExcluded_endIncluded_comparator)
1926cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .descendingMap();
1927cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = new Integer(100).toString();
1928cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNull(decendingMap.ceilingEntry(key));
1929cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int i = 101; i < 109; i++) {
1930cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            key = new Integer(i).toString();
1931cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(i, decendingMap.ceilingEntry(key).getValue());
1932cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
1933cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = new Integer(109).toString();
1934cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(109, decendingMap.ceilingEntry(key).getValue());
1935cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1936cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        decendingMap = ((NavigableMap) subMap_startIncluded_endExcluded_comparator)
1937cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .descendingMap();
1938cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = new Integer(100).toString();
1939cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(100, decendingMap.ceilingEntry(key).getValue());
1940cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int i = 101; i < 109; i++) {
1941cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            key = new Integer(i).toString();
1942cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(i, decendingMap.ceilingEntry(key).getValue());
1943cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
1944cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = new Integer(109).toString();
1945cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(108, decendingMap.ceilingEntry(key).getValue());
1946cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1947cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        decendingMap = ((NavigableMap) subMap_startIncluded_endIncluded_comparator)
1948cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .descendingMap();
1949cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = new Integer(100).toString();
1950cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(100, decendingMap.ceilingEntry(key).getValue());
1951cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int i = 101; i < 109; i++) {
1952cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            key = new Integer(i).toString();
1953cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(i, decendingMap.ceilingEntry(key).getValue());
1954cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
1955cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = new Integer(109).toString();
1956cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(109, decendingMap.ceilingEntry(key).getValue());
1957cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
1958cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1959cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_DescendingSubMap_descendingMap() {
1960cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        NavigableMap decendingMap = tm.descendingMap();
1961cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        NavigableMap decendingDecendingMap = decendingMap.descendingMap();
1962cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(decendingMap, decendingDecendingMap);
1963cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1964cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        NavigableMap decendingMapHeadMap = decendingMap.headMap(
1965cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                new Integer(990).toString(), false);
1966cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        NavigableMap decendingDecendingHeadMap = decendingMapHeadMap
1967cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .descendingMap();
1968cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNotNull(decendingMapHeadMap);
1969cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNotNull(decendingDecendingHeadMap);
1970cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(decendingMapHeadMap, decendingDecendingHeadMap);
1971cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1972cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        NavigableMap decendingMapTailMap = decendingMap.tailMap(
1973cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                new Integer(990).toString(), false);
1974cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        NavigableMap decendingDecendingTailMap = decendingMapTailMap
1975cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .descendingMap();
1976cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNotNull(decendingMapTailMap);
1977cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNotNull(decendingDecendingTailMap);
1978cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // assertEquals(decendingMapTailMap,decendingDecendingTailMap);
1979cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1980cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        decendingMap = navigableMap_startExcluded_endExcluded.descendingMap();
1981cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        decendingDecendingMap = decendingMap.descendingMap();
1982cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(decendingMap, decendingDecendingMap);
1983cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1984cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        decendingMapHeadMap = decendingMap.headMap(new Integer(104).toString(),
1985cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                false);
1986cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        decendingDecendingHeadMap = decendingMapHeadMap.descendingMap();
1987cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(decendingMapHeadMap, decendingDecendingHeadMap);
1988cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1989cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        decendingMapTailMap = decendingMap.tailMap(new Integer(104).toString(),
1990cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                false);
1991cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        decendingDecendingTailMap = decendingMapTailMap.descendingMap();
1992cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(decendingMapTailMap, decendingDecendingTailMap);
1993cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1994cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        decendingMap = navigableMap_startExcluded_endIncluded.descendingMap();
1995cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        decendingDecendingMap = decendingMap.descendingMap();
1996cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(decendingMap, decendingDecendingMap);
1997cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1998cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        decendingMapHeadMap = decendingMap.headMap(new Integer(104).toString(),
1999cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                false);
2000cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        decendingDecendingHeadMap = decendingMapHeadMap.descendingMap();
2001cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(decendingMapHeadMap, decendingDecendingHeadMap);
2002cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2003cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        decendingMapTailMap = decendingMap.tailMap(new Integer(104).toString(),
2004cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                false);
2005cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        decendingDecendingTailMap = decendingMapTailMap.descendingMap();
2006cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(decendingMapTailMap, decendingDecendingTailMap);
2007cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2008cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        decendingMap = navigableMap_startIncluded_endExcluded.descendingMap();
2009cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        decendingDecendingMap = decendingMap.descendingMap();
2010cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(decendingMap, decendingDecendingMap);
2011cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2012cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        decendingMapHeadMap = decendingMap.headMap(new Integer(104).toString(),
2013cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                false);
2014cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        decendingDecendingHeadMap = decendingMapHeadMap.descendingMap();
2015cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(decendingMapHeadMap, decendingDecendingHeadMap);
2016cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2017cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        decendingMapTailMap = decendingMap.tailMap(new Integer(104).toString(),
2018cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                false);
2019cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        decendingDecendingTailMap = decendingMapTailMap.descendingMap();
2020cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(decendingMapTailMap, decendingDecendingTailMap);
2021cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2022cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        decendingMap = navigableMap_startIncluded_endIncluded.descendingMap();
2023cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        decendingDecendingMap = decendingMap.descendingMap();
2024cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(decendingMap, decendingDecendingMap);
2025cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2026cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        decendingMapHeadMap = decendingMap.headMap(new Integer(104).toString(),
2027cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                false);
2028cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        decendingDecendingHeadMap = decendingMapHeadMap.descendingMap();
2029cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(decendingMapHeadMap, decendingDecendingHeadMap);
2030cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2031cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        decendingMapTailMap = decendingMap.tailMap(new Integer(104).toString(),
2032cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                false);
2033cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        decendingDecendingTailMap = decendingMapTailMap.descendingMap();
2034cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(decendingMapTailMap, decendingDecendingTailMap);
2035cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
2036cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2037cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_DescendingSubMap_firstEntry() {
2038cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        NavigableMap decendingMap = tm.descendingMap();
2039cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(999, decendingMap.firstEntry().getValue());
2040cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2041cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        decendingMap = navigableMap_startExcluded_endExcluded.descendingMap();
2042cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(108, decendingMap.firstEntry().getValue());
2043cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2044cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        decendingMap = navigableMap_startExcluded_endIncluded.descendingMap();
2045cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(109, decendingMap.firstEntry().getValue());
2046cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2047cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        decendingMap = navigableMap_startIncluded_endExcluded.descendingMap();
2048cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(108, decendingMap.firstEntry().getValue());
2049cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2050cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        decendingMap = navigableMap_startIncluded_endIncluded.descendingMap();
2051cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(109, decendingMap.firstEntry().getValue());
2052cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
2053cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2054cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_DescendingSubMap_floorEntry() {
2055cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        NavigableMap decendingMap = tm.descendingMap();
2056cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        String key = new Integer(-1).toString();
2057cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(0, decendingMap.floorEntry(key).getValue());
2058cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int i = 0; i < objArray.length; i++) {
2059cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            key = objArray[i].toString();
2060cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(objArray[i], decendingMap.floorEntry(key).getValue());
2061cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
2062cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = new Integer(1000).toString();
2063cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(101, decendingMap.floorEntry(key).getValue());
2064cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = new Integer(1001).toString();
2065cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(101, decendingMap.floorEntry(key).getValue());
2066cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2067cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        decendingMap = navigableMap_startExcluded_endExcluded.descendingMap();
2068cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = new Integer(100).toString();
2069cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(101, decendingMap.floorEntry(key).getValue());
2070cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int i = 101; i < 109; i++) {
2071cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            key = new Integer(i).toString();
2072cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(i, decendingMap.floorEntry(key).getValue());
2073cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
2074cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = new Integer(109).toString();
2075cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNull(decendingMap.floorEntry(key));
2076cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2077cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        decendingMap = navigableMap_startExcluded_endIncluded.descendingMap();
2078cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = new Integer(100).toString();
2079cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(101, decendingMap.floorEntry(key).getValue());
2080cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int i = 101; i < 109; i++) {
2081cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            key = new Integer(i).toString();
2082cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(i, decendingMap.floorEntry(key).getValue());
2083cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
2084cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = new Integer(109).toString();
2085cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(109, decendingMap.floorEntry(key).getValue());
2086cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2087cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        decendingMap = navigableMap_startIncluded_endExcluded.descendingMap();
2088cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = new Integer(100).toString();
2089cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(100, decendingMap.floorEntry(key).getValue());
2090cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int i = 101; i < 109; i++) {
2091cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            key = new Integer(i).toString();
2092cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(i, decendingMap.floorEntry(key).getValue());
2093cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
2094cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = new Integer(109).toString();
2095cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNull(decendingMap.floorEntry(key));
2096cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2097cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        decendingMap = navigableMap_startIncluded_endIncluded.descendingMap();
2098cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = new Integer(100).toString();
2099cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(100, decendingMap.floorEntry(key).getValue());
2100cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int i = 101; i < 109; i++) {
2101cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            key = new Integer(i).toString();
2102cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(i, decendingMap.floorEntry(key).getValue());
2103cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
2104cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = new Integer(109).toString();
2105cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(109, decendingMap.floorEntry(key).getValue());
2106cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2107cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // With Comparator
2108cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        decendingMap = ((NavigableMap) subMap_startExcluded_endExcluded_comparator)
2109cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .descendingMap();
2110cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = new Integer(100).toString();
2111cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(101, decendingMap.floorEntry(key).getValue());
2112cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int i = 101; i < 109; i++) {
2113cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            key = new Integer(i).toString();
2114cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(i, decendingMap.floorEntry(key).getValue());
2115cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
2116cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = new Integer(109).toString();
2117cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNull(decendingMap.floorEntry(key));
2118cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2119cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        decendingMap = ((NavigableMap) subMap_startExcluded_endIncluded_comparator)
2120cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .descendingMap();
2121cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = new Integer(100).toString();
2122cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(101, decendingMap.floorEntry(key).getValue());
2123cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int i = 101; i < 109; i++) {
2124cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            key = new Integer(i).toString();
2125cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(i, decendingMap.floorEntry(key).getValue());
2126cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
2127cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = new Integer(109).toString();
2128cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(109, decendingMap.floorEntry(key).getValue());
2129cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2130cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        decendingMap = ((NavigableMap) subMap_startIncluded_endExcluded_comparator)
2131cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .descendingMap();
2132cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = new Integer(100).toString();
2133cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(100, decendingMap.floorEntry(key).getValue());
2134cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int i = 101; i < 109; i++) {
2135cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            key = new Integer(i).toString();
2136cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(i, decendingMap.floorEntry(key).getValue());
2137cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
2138cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = new Integer(109).toString();
2139cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNull(decendingMap.floorEntry(key));
2140cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2141cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        decendingMap = ((NavigableMap) subMap_startIncluded_endIncluded_comparator)
2142cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .descendingMap();
2143cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = new Integer(100).toString();
2144cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(100, decendingMap.floorEntry(key).getValue());
2145cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int i = 101; i < 109; i++) {
2146cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            key = new Integer(i).toString();
2147cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(i, decendingMap.floorEntry(key).getValue());
2148cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
2149cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = new Integer(109).toString();
2150cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(109, decendingMap.floorEntry(key).getValue());
2151cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
2152cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2153cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_DescendingSubMap_lastEntry() {
2154cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        NavigableMap decendingMap = tm.descendingMap();
2155cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(0, decendingMap.lastEntry().getValue());
2156cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2157cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        decendingMap = navigableMap_startExcluded_endExcluded.descendingMap();
2158cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(101, decendingMap.lastEntry().getValue());
2159cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2160cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        decendingMap = navigableMap_startExcluded_endIncluded.descendingMap();
2161cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(101, decendingMap.lastEntry().getValue());
2162cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2163cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        decendingMap = navigableMap_startIncluded_endExcluded.descendingMap();
2164cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(100, decendingMap.lastEntry().getValue());
2165cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2166cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        decendingMap = navigableMap_startIncluded_endIncluded.descendingMap();
2167cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(100, decendingMap.lastEntry().getValue());
2168cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
2169cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2170cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_DescendingSubMap_higherEntry() {
2171cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        NavigableMap decendingMap;
2172cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        NavigableMap decendingTailMap;
2173cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Integer value;
2174cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Entry entry;
2175cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        decendingMap = navigableMap_startExcluded_endExcluded.descendingMap();
2176cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        value = new Integer(101);
2177cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNull(decendingMap.higherEntry(value.toString()));
2178cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2179cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int i = 108; i > 101; i--) {
2180cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            value = new Integer(i);
2181cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            entry = decendingMap.higherEntry(value.toString());
2182cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(value - 1, entry.getValue());
2183cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
2184cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2185cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        value = new Integer(109);
2186cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        entry = decendingMap.higherEntry(value.toString());
2187cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(108, entry.getValue());
2188cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2189cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        decendingTailMap = decendingMap.tailMap(new Integer(104).toString(),
2190cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                false);
2191cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        value = new Integer(109);
2192cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        entry = decendingTailMap.higherEntry(value.toString());
2193cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(103, entry.getValue());
2194cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2195cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        decendingMap = navigableMap_startIncluded_endExcluded.descendingMap();
2196cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        value = new Integer(100);
2197cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNull(decendingMap.higherEntry(value.toString()));
2198cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2199cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int i = 108; i > 100; i--) {
2200cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            value = new Integer(i);
2201cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            entry = decendingMap.higherEntry(value.toString());
2202cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(value - 1, entry.getValue());
2203cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
2204cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2205cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        value = new Integer(109);
2206cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        entry = decendingMap.higherEntry(value.toString());
2207cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(108, entry.getValue());
2208cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2209cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        decendingTailMap = decendingMap.tailMap(new Integer(104).toString(),
2210cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                false);
2211cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        value = new Integer(109);
2212cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        entry = decendingTailMap.higherEntry(value.toString());
2213cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(103, entry.getValue());
2214cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2215cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        decendingMap = navigableMap_startExcluded_endIncluded.descendingMap();
2216cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        value = new Integer(101);
2217cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNull(decendingMap.higherEntry(value.toString()));
2218cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2219cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int i = 109; i > 101; i--) {
2220cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            value = new Integer(i);
2221cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            entry = decendingMap.higherEntry(value.toString());
2222cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(value - 1, entry.getValue());
2223cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
2224cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2225cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        value = new Integer(2);
2226cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        entry = decendingMap.higherEntry(value.toString());
2227cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(109, entry.getValue());
2228cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2229cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        decendingTailMap = decendingMap.tailMap(new Integer(104).toString(),
2230cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                false);
2231cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        value = new Integer(109);
2232cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        entry = decendingTailMap.higherEntry(value.toString());
2233cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(103, entry.getValue());
2234cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2235cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        decendingMap = navigableMap_startIncluded_endIncluded.descendingMap();
2236cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        value = new Integer(100);
2237cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNull(decendingMap.higherEntry(value.toString()));
2238cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2239cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int i = 109; i > 100; i--) {
2240cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            value = new Integer(i);
2241cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            entry = decendingMap.higherEntry(value.toString());
2242cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(value - 1, entry.getValue());
2243cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
2244cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2245cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        value = new Integer(2);
2246cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        entry = decendingMap.higherEntry(value.toString());
2247cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(109, entry.getValue());
2248cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2249cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        decendingTailMap = decendingMap.tailMap(new Integer(104).toString(),
2250cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                false);
2251cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        value = new Integer(109);
2252cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        entry = decendingTailMap.higherEntry(value.toString());
2253cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(103, entry.getValue());
2254cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
2255cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2256cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_DescendingSubMap_lowerEntry() {
2257cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        NavigableMap decendingMap;
2258cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        NavigableMap decendingHeadMap;
2259cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Integer value;
2260cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Entry entry;
2261cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        decendingMap = navigableMap_startExcluded_endExcluded.descendingMap();
2262cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        value = new Integer(99);
2263cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNull(decendingMap.lowerEntry(value.toString()));
2264cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int i = 100; i < 108; i++) {
2265cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            value = new Integer(i);
2266cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            entry = decendingMap.lowerEntry(value.toString());
2267cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(value + 1, entry.getValue());
2268cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
2269cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        value = new Integer(109);
2270cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNull(decendingMap.lowerEntry(value.toString()));
2271cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2272cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        decendingHeadMap = decendingMap.headMap(new Integer(103).toString(),
2273cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                false);
2274cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int i = 104; i < 106; i++) {
2275cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            value = new Integer(i);
2276cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            entry = decendingHeadMap.lowerEntry(value.toString());
2277cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(value + 1, entry.getValue());
2278cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
2279cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        value = new Integer(102);
2280cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        entry = decendingHeadMap.lowerEntry(value.toString());
2281cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(104, entry.getValue());
2282cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2283cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        value = new Integer(109);
2284cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        entry = decendingHeadMap.lowerEntry(value.toString());
2285cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNull(entry);
2286cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2287cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        decendingMap = navigableMap_startExcluded_endIncluded.descendingMap();
2288cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        value = new Integer(99);
2289cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNull(decendingMap.lowerEntry(value.toString()));
2290cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int i = 100; i < 109; i++) {
2291cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            value = new Integer(i);
2292cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            entry = decendingMap.lowerEntry(value.toString());
2293cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(value + 1, entry.getValue());
2294cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
2295cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        value = new Integer(110);
2296cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNull(decendingMap.lowerEntry(value.toString()));
2297cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2298cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        decendingHeadMap = decendingMap.headMap(new Integer(103).toString(),
2299cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                false);
2300cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int i = 104; i < 109; i++) {
2301cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            value = new Integer(i);
2302cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            entry = decendingHeadMap.lowerEntry(value.toString());
2303cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(value + 1, entry.getValue());
2304cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
2305cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        value = new Integer(102);
2306cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        entry = decendingHeadMap.lowerEntry(value.toString());
2307cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(104, entry.getValue());
2308cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2309cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        value = new Integer(2);
2310cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        entry = decendingHeadMap.lowerEntry(value.toString());
2311cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNull(entry);
2312cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2313cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        decendingMap = navigableMap_startIncluded_endExcluded.descendingMap();
2314cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        value = new Integer(99);
2315cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNull(decendingMap.lowerEntry(value.toString()));
2316cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int i = 100; i < 108; i++) {
2317cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            value = new Integer(i);
2318cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            entry = decendingMap.lowerEntry(value.toString());
2319cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(value + 1, entry.getValue());
2320cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
2321cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        value = new Integer(109);
2322cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNull(decendingMap.lowerEntry(value.toString()));
2323cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2324cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        decendingHeadMap = decendingMap.headMap(new Integer(103).toString(),
2325cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                false);
2326cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int i = 104; i < 107; i++) {
2327cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            value = new Integer(i);
2328cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            entry = decendingHeadMap.lowerEntry(value.toString());
2329cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(value + 1, entry.getValue());
2330cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
2331cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        value = new Integer(102);
2332cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        entry = decendingHeadMap.lowerEntry(value.toString());
2333cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(104, entry.getValue());
2334cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2335cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        value = new Integer(2);
2336cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        entry = decendingHeadMap.lowerEntry(value.toString());
2337cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNull(entry);
2338cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2339cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        decendingMap = navigableMap_startIncluded_endIncluded.descendingMap();
2340cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        value = new Integer(99);
2341cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNull(decendingMap.lowerEntry(value.toString()));
2342cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int i = 100; i < 109; i++) {
2343cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            value = new Integer(i);
2344cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            entry = decendingMap.lowerEntry(value.toString());
2345cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(value + 1, entry.getValue());
2346cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
2347cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        value = new Integer(110);
2348cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNull(decendingMap.lowerEntry(value.toString()));
2349cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2350cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        decendingHeadMap = decendingMap.headMap(new Integer(103).toString(),
2351cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                false);
2352cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int i = 104; i < 109; i++) {
2353cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            value = new Integer(i);
2354cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            entry = decendingHeadMap.lowerEntry(value.toString());
2355cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(value + 1, entry.getValue());
2356cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
2357cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        value = new Integer(102);
2358cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        entry = decendingHeadMap.lowerEntry(value.toString());
2359cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(104, entry.getValue());
2360cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2361cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        value = new Integer(2);
2362cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        entry = decendingHeadMap.lowerEntry(value.toString());
2363cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNull(entry);
2364cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
2365cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2366cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_DescendingSubMap_pollFirstEntry() {
2367cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        NavigableMap decendingMap = tm.descendingMap();
2368cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(999, decendingMap.pollFirstEntry().getValue());
2369cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2370cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        decendingMap = navigableMap_startExcluded_endExcluded.descendingMap();
2371cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(108, decendingMap.pollFirstEntry().getValue());
2372cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2373cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        decendingMap = navigableMap_startExcluded_endIncluded.descendingMap();
2374cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(109, decendingMap.pollFirstEntry().getValue());
2375cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2376cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        decendingMap = navigableMap_startIncluded_endExcluded.descendingMap();
2377cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(107, decendingMap.pollFirstEntry().getValue());
2378cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2379cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        decendingMap = navigableMap_startIncluded_endIncluded.descendingMap();
2380cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(106, decendingMap.pollFirstEntry().getValue());
2381cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
2382cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2383cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_DescendingSubMap_pollLastEntry() {
2384cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        NavigableMap decendingMap = tm.descendingMap();
2385cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(0, decendingMap.pollLastEntry().getValue());
2386cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2387cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        decendingMap = navigableMap_startExcluded_endExcluded.descendingMap();
2388cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(101, decendingMap.pollLastEntry().getValue());
2389cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2390cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        decendingMap = navigableMap_startExcluded_endIncluded.descendingMap();
2391cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(102, decendingMap.pollLastEntry().getValue());
2392cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2393cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        decendingMap = navigableMap_startIncluded_endExcluded.descendingMap();
2394cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(100, decendingMap.pollLastEntry().getValue());
2395cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2396cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        decendingMap = navigableMap_startIncluded_endIncluded.descendingMap();
2397cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(103, decendingMap.pollLastEntry().getValue());
2398cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
2399cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2400cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_DescendingSubMap_values() {
2401cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        NavigableMap decendingMap = tm.descendingMap();
2402cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Collection values = decendingMap.values();
2403cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(values.isEmpty());
2404cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(values.contains(1000));
2405cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int i = 999; i > 0; i--) {
2406cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertTrue(values.contains(i));
2407cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
2408cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(values.contains(0));
2409cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2410cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        String endKey = new Integer(99).toString();
2411cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        NavigableMap headMap = decendingMap.headMap(endKey, false);
2412cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        values = headMap.values();
2413cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Iterator it = values.iterator();
2414cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int i = 999; i > 990; i--) {
2415cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertTrue(values.contains(i));
2416cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(i, it.next());
2417cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
2418cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2419cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        String startKey = new Integer(11).toString();
2420cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        NavigableMap tailMap = decendingMap.tailMap(startKey, false);
2421cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        values = tailMap.values();
2422cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        it = values.iterator();
2423cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int i = 109; i > 100; i--) {
2424cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertTrue(values.contains(i));
2425cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(i, it.next());
2426cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
2427cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2428cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        decendingMap = navigableMap_startExcluded_endExcluded.descendingMap();
2429cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        values = decendingMap.values();
2430cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(values.isEmpty());
2431cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(values.contains(109));
2432cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int i = 108; i > 100; i--) {
2433cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertTrue(values.contains(i));
2434cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
2435cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(values.contains(100));
2436cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2437cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        decendingMap = navigableMap_startExcluded_endIncluded.descendingMap();
2438cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        values = decendingMap.values();
2439cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(values.isEmpty());
2440cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(values.contains(100));
2441cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int i = 108; i > 100; i--) {
2442cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertTrue(values.contains(i));
2443cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
2444cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(values.contains(109));
2445cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2446cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        decendingMap = navigableMap_startIncluded_endExcluded.descendingMap();
2447cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        values = decendingMap.values();
2448cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(values.isEmpty());
2449cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(values.contains(100));
2450cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int i = 108; i > 100; i--) {
2451cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertTrue(values.contains(i));
2452cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
2453cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(values.contains(109));
2454cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2455cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        decendingMap = navigableMap_startIncluded_endIncluded.descendingMap();
2456cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        values = decendingMap.values();
2457cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(values.isEmpty());
2458cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(values.contains(100));
2459cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int i = 108; i > 100; i--) {
2460cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertTrue(values.contains(i));
2461cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
2462cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(values.contains(109));
2463cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
2464cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2465cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_DescendingSubMap_headMap() {
2466cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        NavigableMap decendingMap = tm.descendingMap();
2467cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        String endKey = new Integer(0).toString(), key;
2468cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        SortedMap subDecendingMap_Included = decendingMap.headMap(endKey, true);
2469cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        SortedMap subDecendingMap_Excluded = decendingMap
2470cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .headMap(endKey, false);
2471cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = endKey;
2472cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(subDecendingMap_Included.containsKey(key));
2473cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(subDecendingMap_Excluded.containsKey(key));
2474cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int i = 1; i < 1000; i++) {
2475cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            key = new Integer(i).toString();
2476cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertTrue(subDecendingMap_Included.containsKey(key));
2477cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertTrue(subDecendingMap_Excluded.containsKey(key));
2478cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
2479cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = new Integer(1000).toString();
2480cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(subDecendingMap_Included.containsKey(key));
2481cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(subDecendingMap_Excluded.containsKey(key));
2482cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2483cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        decendingMap = navigableMap_startExcluded_endExcluded.descendingMap();
2484cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        endKey = new Integer(100).toString();
2485cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
2486cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            decendingMap.headMap(endKey, true);
2487cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
2488cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
2489cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
2490cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
2491cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        subDecendingMap_Excluded = decendingMap.headMap(endKey, false);
2492cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = endKey;
2493cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(subDecendingMap_Excluded.containsKey(key));
2494cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2495cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        endKey = new Integer(101).toString();
2496cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        subDecendingMap_Included = decendingMap.headMap(endKey, true);
2497cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        subDecendingMap_Excluded = decendingMap.headMap(endKey, false);
2498cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2499cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = endKey;
2500cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(subDecendingMap_Included.containsKey(key));
2501cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(subDecendingMap_Excluded.containsKey(key));
2502cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2503cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int i = 102; i < 109; i++) {
2504cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            key = new Integer(i).toString();
2505cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertTrue(subDecendingMap_Included.containsKey(key));
2506cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertTrue(subDecendingMap_Excluded.containsKey(key));
2507cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
2508cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = new Integer(109).toString();
2509cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(subDecendingMap_Included.containsKey(key));
2510cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(subDecendingMap_Excluded.containsKey(key));
2511cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2512cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        decendingMap = navigableMap_startExcluded_endIncluded.descendingMap();
2513cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        endKey = new Integer(100).toString();
2514cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
2515cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            decendingMap.headMap(endKey, true);
2516cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
2517cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
2518cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
2519cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
2520cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        subDecendingMap_Excluded = decendingMap.headMap(endKey, false);
2521cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = endKey;
2522cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(subDecendingMap_Excluded.containsKey(key));
2523cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2524cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        endKey = new Integer(101).toString();
2525cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        subDecendingMap_Included = decendingMap.headMap(endKey, true);
2526cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        subDecendingMap_Excluded = decendingMap.headMap(endKey, false);
2527cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2528cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = endKey;
2529cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(subDecendingMap_Included.containsKey(key));
2530cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(subDecendingMap_Excluded.containsKey(key));
2531cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2532cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int i = 102; i < 109; i++) {
2533cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            key = new Integer(i).toString();
2534cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertTrue(subDecendingMap_Included.containsKey(key));
2535cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertTrue(subDecendingMap_Excluded.containsKey(key));
2536cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
2537cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = new Integer(109).toString();
2538cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(subDecendingMap_Included.containsKey(key));
2539cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(subDecendingMap_Excluded.containsKey(key));
2540cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2541cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        decendingMap = navigableMap_startIncluded_endExcluded.descendingMap();
2542cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        endKey = new Integer(100).toString();
2543cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        subDecendingMap_Included = decendingMap.headMap(endKey, true);
2544cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        subDecendingMap_Excluded = decendingMap.headMap(endKey, false);
2545cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = endKey;
2546cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(subDecendingMap_Included.containsKey(key));
2547cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(subDecendingMap_Excluded.containsKey(key));
2548cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2549cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        endKey = new Integer(101).toString();
2550cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        subDecendingMap_Included = decendingMap.headMap(endKey, true);
2551cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        subDecendingMap_Excluded = decendingMap.headMap(endKey, false);
2552cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2553cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = endKey;
2554cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(subDecendingMap_Included.containsKey(key));
2555cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(subDecendingMap_Excluded.containsKey(key));
2556cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2557cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int i = 102; i < 109; i++) {
2558cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            key = new Integer(i).toString();
2559cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertTrue(subDecendingMap_Included.containsKey(key));
2560cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertTrue(subDecendingMap_Excluded.containsKey(key));
2561cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
2562cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = new Integer(109).toString();
2563cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(subDecendingMap_Included.containsKey(key));
2564cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(subDecendingMap_Excluded.containsKey(key));
2565cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2566cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        decendingMap = navigableMap_startIncluded_endIncluded.descendingMap();
2567cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        endKey = new Integer(100).toString();
2568cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        subDecendingMap_Included = decendingMap.headMap(endKey, true);
2569cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        subDecendingMap_Excluded = decendingMap.headMap(endKey, false);
2570cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = endKey;
2571cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(subDecendingMap_Included.containsKey(key));
2572cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(subDecendingMap_Excluded.containsKey(key));
2573cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2574cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        endKey = new Integer(101).toString();
2575cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        subDecendingMap_Included = decendingMap.headMap(endKey, true);
2576cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        subDecendingMap_Excluded = decendingMap.headMap(endKey, false);
2577cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2578cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = endKey;
2579cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(subDecendingMap_Included.containsKey(key));
2580cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(subDecendingMap_Excluded.containsKey(key));
2581cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2582cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int i = 102; i < 109; i++) {
2583cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            key = new Integer(i).toString();
2584cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertTrue(subDecendingMap_Included.containsKey(key));
2585cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertTrue(subDecendingMap_Excluded.containsKey(key));
2586cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
2587cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = new Integer(109).toString();
2588cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(subDecendingMap_Included.containsKey(key));
2589cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(subDecendingMap_Excluded.containsKey(key));
2590cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2591cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // With Comparator
2592cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2593cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        decendingMap = ((NavigableMap) subMap_startExcluded_endExcluded_comparator)
2594cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .descendingMap();
2595cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        endKey = new Integer(100).toString();
2596cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
2597cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            decendingMap.headMap(endKey, true);
2598cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
2599cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
2600cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
2601cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
2602cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        subDecendingMap_Excluded = decendingMap.headMap(endKey, false);
2603cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = endKey;
2604cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(subDecendingMap_Excluded.containsKey(key));
2605cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2606cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        endKey = new Integer(101).toString();
2607cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        subDecendingMap_Included = decendingMap.headMap(endKey, true);
2608cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        subDecendingMap_Excluded = decendingMap.headMap(endKey, false);
2609cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2610cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = endKey;
2611cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(subDecendingMap_Included.containsKey(key));
2612cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(subDecendingMap_Excluded.containsKey(key));
2613cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2614cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int i = 102; i < 109; i++) {
2615cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            key = new Integer(i).toString();
2616cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertTrue(subDecendingMap_Included.containsKey(key));
2617cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertTrue(subDecendingMap_Excluded.containsKey(key));
2618cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
2619cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = new Integer(109).toString();
2620cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(subDecendingMap_Included.containsKey(key));
2621cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(subDecendingMap_Excluded.containsKey(key));
2622cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2623cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        decendingMap = ((NavigableMap) subMap_startExcluded_endIncluded_comparator)
2624cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .descendingMap();
2625cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        endKey = new Integer(100).toString();
2626cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
2627cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            decendingMap.headMap(endKey, true);
2628cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
2629cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
2630cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
2631cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
2632cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        subDecendingMap_Excluded = decendingMap.headMap(endKey, false);
2633cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = endKey;
2634cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(subDecendingMap_Excluded.containsKey(key));
2635cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2636cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        endKey = new Integer(101).toString();
2637cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        subDecendingMap_Included = decendingMap.headMap(endKey, true);
2638cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        subDecendingMap_Excluded = decendingMap.headMap(endKey, false);
2639cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2640cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = endKey;
2641cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(subDecendingMap_Included.containsKey(key));
2642cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(subDecendingMap_Excluded.containsKey(key));
2643cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2644cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int i = 102; i < 109; i++) {
2645cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            key = new Integer(i).toString();
2646cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertTrue(subDecendingMap_Included.containsKey(key));
2647cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertTrue(subDecendingMap_Excluded.containsKey(key));
2648cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
2649cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = new Integer(109).toString();
2650cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(subDecendingMap_Included.containsKey(key));
2651cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(subDecendingMap_Excluded.containsKey(key));
2652cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2653cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        decendingMap = ((NavigableMap) subMap_startIncluded_endExcluded_comparator)
2654cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .descendingMap();
2655cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        endKey = new Integer(100).toString();
2656cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        subDecendingMap_Included = decendingMap.headMap(endKey, true);
2657cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        subDecendingMap_Excluded = decendingMap.headMap(endKey, false);
2658cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = endKey;
2659cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(subDecendingMap_Included.containsKey(key));
2660cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(subDecendingMap_Excluded.containsKey(key));
2661cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2662cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        endKey = new Integer(101).toString();
2663cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        subDecendingMap_Included = decendingMap.headMap(endKey, true);
2664cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        subDecendingMap_Excluded = decendingMap.headMap(endKey, false);
2665cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2666cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = endKey;
2667cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(subDecendingMap_Included.containsKey(key));
2668cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(subDecendingMap_Excluded.containsKey(key));
2669cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2670cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int i = 102; i < 109; i++) {
2671cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            key = new Integer(i).toString();
2672cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertTrue(subDecendingMap_Included.containsKey(key));
2673cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertTrue(subDecendingMap_Excluded.containsKey(key));
2674cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
2675cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = new Integer(109).toString();
2676cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(subDecendingMap_Included.containsKey(key));
2677cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(subDecendingMap_Excluded.containsKey(key));
2678cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2679cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        decendingMap = ((NavigableMap) subMap_startIncluded_endIncluded_comparator)
2680cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .descendingMap();
2681cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        endKey = new Integer(100).toString();
2682cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        subDecendingMap_Included = decendingMap.headMap(endKey, true);
2683cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        subDecendingMap_Excluded = decendingMap.headMap(endKey, false);
2684cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = endKey;
2685cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(subDecendingMap_Included.containsKey(key));
2686cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(subDecendingMap_Excluded.containsKey(key));
2687cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2688cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        endKey = new Integer(101).toString();
2689cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        subDecendingMap_Included = decendingMap.headMap(endKey, true);
2690cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        subDecendingMap_Excluded = decendingMap.headMap(endKey, false);
2691cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2692cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = endKey;
2693cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(subDecendingMap_Included.containsKey(key));
2694cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(subDecendingMap_Excluded.containsKey(key));
2695cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2696cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int i = 102; i < 109; i++) {
2697cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            key = new Integer(i).toString();
2698cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertTrue(subDecendingMap_Included.containsKey(key));
2699cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertTrue(subDecendingMap_Excluded.containsKey(key));
2700cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
2701cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = new Integer(109).toString();
2702cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(subDecendingMap_Included.containsKey(key));
2703cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(subDecendingMap_Excluded.containsKey(key));
2704cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
2705cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2706cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_DescendingSubMap_subMap() {
2707cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        NavigableMap descendingMap = tm.descendingMap();
2708cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        String startKey = new Integer(109).toString();
2709cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        String endKey = new Integer(100).toString();
2710cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
2711cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            descendingMap.subMap(endKey, false, startKey, false);
2712cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
2713cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
2714cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
2715cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2716cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        SortedMap subDescendingMap = descendingMap.subMap(startKey, false,
2717cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                endKey, false);
2718cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        String key = new Integer(100).toString();
2719cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(subDescendingMap.containsKey(key));
2720cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int i = 101; i < 109; i++) {
2721cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            key = new Integer(i).toString();
2722cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertTrue(subDescendingMap.containsKey(key));
2723cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
2724cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = new Integer(109).toString();
2725cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(subDescendingMap.containsKey(key));
2726cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2727cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        subDescendingMap = descendingMap.subMap(startKey, false, endKey, true);
2728cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = new Integer(100).toString();
2729cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(subDescendingMap.containsKey(key));
2730cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int i = 101; i < 109; i++) {
2731cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            key = new Integer(i).toString();
2732cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertTrue(subDescendingMap.containsKey(key));
2733cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
2734cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = new Integer(109).toString();
2735cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(subDescendingMap.containsKey(key));
2736cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2737cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        subDescendingMap = descendingMap.subMap(startKey, true, endKey, false);
2738cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = new Integer(100).toString();
2739cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(subDescendingMap.containsKey(key));
2740cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int i = 101; i < 109; i++) {
2741cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            key = new Integer(i).toString();
2742cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertTrue(subDescendingMap.containsKey(key));
2743cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
2744cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = new Integer(109).toString();
2745cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(subDescendingMap.containsKey(key));
2746cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2747cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        subDescendingMap = descendingMap.subMap(startKey, true, endKey, true);
2748cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = new Integer(100).toString();
2749cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(subDescendingMap.containsKey(key));
2750cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int i = 101; i < 109; i++) {
2751cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            key = new Integer(i).toString();
2752cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertTrue(subDescendingMap.containsKey(key));
2753cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
2754cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = new Integer(109).toString();
2755cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(subDescendingMap.containsKey(key));
2756cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2757cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        TreeMap<Integer, String> treeMap = new TreeMap<Integer, String>();
2758cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int i = -10; i < 10; i++) {
2759cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            treeMap.put(i, String.valueOf(i));
2760cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
2761cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        descendingMap = treeMap.descendingMap();
2762cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        subDescendingMap = descendingMap.subMap(5, 0);
2763cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(5, subDescendingMap.size());
2764cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
2765cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2766cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_DescendingSubMap_tailMap() {
2767cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // tm
2768cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        NavigableMap decendingMap = tm.descendingMap();
2769cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        String endKey = new Integer(1000).toString(), key;
2770cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        SortedMap subDecendingMap_Included = decendingMap.tailMap(endKey, true);
2771cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        SortedMap subDecendingMap_Excluded = decendingMap
2772cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .tailMap(endKey, false);
2773cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2774cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = endKey;
2775cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(subDecendingMap_Included.containsKey(key));
2776cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(subDecendingMap_Excluded.containsKey(key));
2777cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = new Integer(100).toString();
2778cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(subDecendingMap_Included.containsKey(key));
2779cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(subDecendingMap_Excluded.containsKey(key));
2780cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2781cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = new Integer(10).toString();
2782cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(subDecendingMap_Included.containsKey(key));
2783cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(subDecendingMap_Excluded.containsKey(key));
2784cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2785cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = new Integer(1).toString();
2786cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(subDecendingMap_Included.containsKey(key));
2787cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(subDecendingMap_Excluded.containsKey(key));
2788cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2789cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = new Integer(0).toString();
2790cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(subDecendingMap_Included.containsKey(key));
2791cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(subDecendingMap_Excluded.containsKey(key));
2792cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2793cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        endKey = new Integer(999).toString();
2794cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        subDecendingMap_Included = decendingMap.tailMap(endKey, true);
2795cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        subDecendingMap_Excluded = decendingMap.tailMap(endKey, false);
2796cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = endKey;
2797cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(subDecendingMap_Included.containsKey(key));
2798cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(subDecendingMap_Excluded.containsKey(key));
2799cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int i = 998; i > 0; i--) {
2800cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            key = new Integer(i).toString();
2801cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertTrue(subDecendingMap_Included.containsKey(key));
2802cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertTrue(subDecendingMap_Excluded.containsKey(key));
2803cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
2804cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = new Integer(0).toString();
2805cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(subDecendingMap_Included.containsKey(key));
2806cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(subDecendingMap_Excluded.containsKey(key));
2807cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2808cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        endKey = new Integer(0).toString();
2809cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        subDecendingMap_Included = decendingMap.tailMap(endKey, true);
2810cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        subDecendingMap_Excluded = decendingMap.tailMap(endKey, false);
2811cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(1, subDecendingMap_Included.size());
2812cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = endKey;
2813cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(subDecendingMap_Included.containsKey(key));
2814cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(subDecendingMap_Excluded.isEmpty());
2815cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2816cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // navigableMap_startExcluded_endExcluded
2817cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        decendingMap = navigableMap_startExcluded_endExcluded.descendingMap();
2818cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        endKey = new Integer(110).toString();
2819cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
2820cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            decendingMap.tailMap(endKey, true);
2821cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
2822cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
2823cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
2824cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
2825cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2826cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
2827cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            decendingMap.tailMap(endKey, false);
2828cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
2829cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
2830cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
2831cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
2832cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2833cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        endKey = new Integer(109).toString();
2834cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
2835cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            decendingMap.tailMap(endKey, true);
2836cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
2837cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
2838cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
2839cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
2840cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        subDecendingMap_Excluded = decendingMap.tailMap(endKey, false);
2841cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = endKey;
2842cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(subDecendingMap_Excluded.containsKey(key));
2843cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2844cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        endKey = new Integer(108).toString();
2845cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        subDecendingMap_Included = decendingMap.tailMap(endKey, true);
2846cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        subDecendingMap_Excluded = decendingMap.tailMap(endKey, false);
2847cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = endKey;
2848cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(subDecendingMap_Included.containsKey(key));
2849cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(subDecendingMap_Excluded.containsKey(key));
2850cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int i = 107; i > 100; i--) {
2851cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            key = new Integer(i).toString();
2852cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertTrue(subDecendingMap_Included.containsKey(key));
2853cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertTrue(subDecendingMap_Excluded.containsKey(key));
2854cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
2855cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = new Integer(100).toString();
2856cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(subDecendingMap_Included.containsKey(key));
2857cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(subDecendingMap_Included.containsKey(key));
2858cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2859cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        endKey = new Integer(101).toString();
2860cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        subDecendingMap_Included = decendingMap.tailMap(endKey, true);
2861cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        subDecendingMap_Excluded = decendingMap.tailMap(endKey, false);
2862cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = endKey;
2863cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(1, subDecendingMap_Included.size());
2864cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(subDecendingMap_Included.containsKey(key));
2865cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(subDecendingMap_Excluded.isEmpty());
2866cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2867cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        endKey = new Integer(100).toString();
2868cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
2869cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            decendingMap.tailMap(endKey, true);
2870cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
2871cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
2872cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
2873cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
2874e22b1d53d200616e59483cdbf0df0796583b1007Narayan Kamath        try {
2875e22b1d53d200616e59483cdbf0df0796583b1007Narayan Kamath            decendingMap.tailMap(endKey, false);
2876e22b1d53d200616e59483cdbf0df0796583b1007Narayan Kamath            fail("should throw IllegalArgumentException");
2877e22b1d53d200616e59483cdbf0df0796583b1007Narayan Kamath        } catch (IllegalArgumentException e) {
2878e22b1d53d200616e59483cdbf0df0796583b1007Narayan Kamath            // Expected
2879e22b1d53d200616e59483cdbf0df0796583b1007Narayan Kamath        }
2880cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2881cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        endKey = new Integer(99).toString();
2882cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
2883cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            decendingMap.tailMap(endKey, true);
2884cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
2885cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
2886cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
2887cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
2888cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2889cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
2890cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            decendingMap.tailMap(endKey, false);
2891cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
2892cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
2893cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
2894cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
2895cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2896cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // navigableMap_startExcluded_endIncluded
2897cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        decendingMap = navigableMap_startExcluded_endIncluded.descendingMap();
2898cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        endKey = new Integer(110).toString();
2899cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
2900cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            decendingMap.tailMap(endKey, true);
2901cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
2902cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
2903cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
2904cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
2905cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2906cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
2907cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            decendingMap.tailMap(endKey, false);
2908cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
2909cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
2910cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
2911cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
2912cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2913cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        endKey = new Integer(109).toString();
2914cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        subDecendingMap_Included = decendingMap.tailMap(endKey, true);
2915cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        subDecendingMap_Excluded = decendingMap.tailMap(endKey, false);
2916cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = endKey;
2917cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(subDecendingMap_Included.containsKey(key));
2918cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(subDecendingMap_Excluded.containsKey(key));
2919cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2920cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        endKey = new Integer(108).toString();
2921cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        subDecendingMap_Included = decendingMap.tailMap(endKey, true);
2922cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        subDecendingMap_Excluded = decendingMap.tailMap(endKey, false);
2923cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = endKey;
2924cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(subDecendingMap_Included.containsKey(key));
2925cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(subDecendingMap_Excluded.containsKey(key));
2926cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int i = 107; i > 100; i--) {
2927cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            key = new Integer(i).toString();
2928cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertTrue(subDecendingMap_Included.containsKey(key));
2929cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertTrue(subDecendingMap_Excluded.containsKey(key));
2930cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
2931cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = new Integer(100).toString();
2932cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(subDecendingMap_Included.containsKey(key));
2933cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(subDecendingMap_Included.containsKey(key));
2934cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2935cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        endKey = new Integer(101).toString();
2936cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        subDecendingMap_Included = decendingMap.tailMap(endKey, true);
2937cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        subDecendingMap_Excluded = decendingMap.tailMap(endKey, false);
2938cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = endKey;
2939cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(1, subDecendingMap_Included.size());
2940cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(subDecendingMap_Included.containsKey(key));
2941cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(subDecendingMap_Excluded.isEmpty());
2942cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2943cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        endKey = new Integer(100).toString();
2944cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
2945cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            decendingMap.tailMap(endKey, true);
2946cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
2947cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
2948cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
2949cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
2950e22b1d53d200616e59483cdbf0df0796583b1007Narayan Kamath        try {
2951e22b1d53d200616e59483cdbf0df0796583b1007Narayan Kamath            decendingMap.tailMap(endKey, false);
2952e22b1d53d200616e59483cdbf0df0796583b1007Narayan Kamath            fail("should throw IllegalArgumentException");
2953e22b1d53d200616e59483cdbf0df0796583b1007Narayan Kamath        } catch (IllegalArgumentException e) {
2954e22b1d53d200616e59483cdbf0df0796583b1007Narayan Kamath            // Expected
2955e22b1d53d200616e59483cdbf0df0796583b1007Narayan Kamath        }
2956cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2957cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        endKey = new Integer(99).toString();
2958cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
2959cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            decendingMap.tailMap(endKey, true);
2960cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
2961cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
2962cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
2963cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
2964cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
2965cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            decendingMap.tailMap(endKey, false);
2966cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
2967cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
2968cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
2969cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
2970cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2971cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // navigableMap_startIncluded_endExcluded
2972cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        decendingMap = navigableMap_startIncluded_endExcluded.descendingMap();
2973cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        endKey = new Integer(110).toString();
2974cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
2975cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            decendingMap.tailMap(endKey, true);
2976cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
2977cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
2978cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
2979cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
2980cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2981cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
2982cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            decendingMap.tailMap(endKey, false);
2983cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
2984cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
2985cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
2986cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
2987cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2988cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        endKey = new Integer(109).toString();
2989cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
2990cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            decendingMap.tailMap(endKey, true);
2991cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2992cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
2993cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
2994cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
2995cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        subDecendingMap_Excluded = decendingMap.tailMap(endKey, false);
2996cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = endKey;
2997cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(subDecendingMap_Excluded.containsKey(key));
2998cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2999cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        endKey = new Integer(108).toString();
3000cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        subDecendingMap_Included = decendingMap.tailMap(endKey, true);
3001cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        subDecendingMap_Excluded = decendingMap.tailMap(endKey, false);
3002cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = endKey;
3003cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(subDecendingMap_Included.containsKey(key));
3004cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(subDecendingMap_Excluded.containsKey(key));
3005cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int i = 107; i > 100; i--) {
3006cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            key = new Integer(i).toString();
3007cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertTrue(subDecendingMap_Included.containsKey(key));
3008cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertTrue(subDecendingMap_Excluded.containsKey(key));
3009cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
3010cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = new Integer(100).toString();
3011cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(subDecendingMap_Included.containsKey(key));
3012cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(subDecendingMap_Included.containsKey(key));
3013cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
3014cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        endKey = new Integer(101).toString();
3015cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        subDecendingMap_Included = decendingMap.tailMap(endKey, true);
3016cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        subDecendingMap_Excluded = decendingMap.tailMap(endKey, false);
3017cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = endKey;
3018cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(2, subDecendingMap_Included.size());
3019cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(subDecendingMap_Included.containsKey(key));
3020cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(subDecendingMap_Excluded.containsKey(key));
3021cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
3022cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        endKey = new Integer(100).toString();
3023cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        subDecendingMap_Included = decendingMap.tailMap(endKey, true);
3024cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        subDecendingMap_Excluded = decendingMap.tailMap(endKey, false);
3025cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = endKey;
3026cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(subDecendingMap_Included.containsKey(key));
3027cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(subDecendingMap_Excluded.containsKey(key));
3028cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
3029cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        endKey = new Integer(99).toString();
3030cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
3031cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            decendingMap.tailMap(endKey, true);
3032cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
3033cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
3034cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
3035cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
3036cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
3037cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            decendingMap.tailMap(endKey, false);
3038cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
3039cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
3040cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
3041cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
3042cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
3043cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // navigableMap_startIncluded_endIncluded
3044cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        decendingMap = navigableMap_startIncluded_endIncluded.descendingMap();
3045cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        endKey = new Integer(110).toString();
3046cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
3047cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            decendingMap.tailMap(endKey, true);
3048cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
3049cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
3050cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
3051cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
3052cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
3053cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            decendingMap.tailMap(endKey, false);
3054cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
3055cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
3056cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
3057cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
3058cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
3059cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        endKey = new Integer(109).toString();
3060cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
3061cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            decendingMap.tailMap(endKey, true);
3062cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
3063cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
3064cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
3065cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
3066cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        subDecendingMap_Excluded = decendingMap.tailMap(endKey, false);
3067cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = endKey;
3068cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(subDecendingMap_Excluded.containsKey(key));
3069cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
3070cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        endKey = new Integer(108).toString();
3071cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        subDecendingMap_Included = decendingMap.tailMap(endKey, true);
3072cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        subDecendingMap_Excluded = decendingMap.tailMap(endKey, false);
3073cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = endKey;
3074cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(subDecendingMap_Included.containsKey(key));
3075cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(subDecendingMap_Excluded.containsKey(key));
3076cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int i = 107; i > 100; i--) {
3077cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            key = new Integer(i).toString();
3078cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertTrue(subDecendingMap_Included.containsKey(key));
3079cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertTrue(subDecendingMap_Excluded.containsKey(key));
3080cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
3081cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = new Integer(100).toString();
3082cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(subDecendingMap_Included.containsKey(key));
3083cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(subDecendingMap_Included.containsKey(key));
3084cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
3085cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        endKey = new Integer(101).toString();
3086cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        subDecendingMap_Included = decendingMap.tailMap(endKey, true);
3087cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        subDecendingMap_Excluded = decendingMap.tailMap(endKey, false);
3088cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = endKey;
3089cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(2, subDecendingMap_Included.size());
3090cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(subDecendingMap_Included.containsKey(key));
3091cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(subDecendingMap_Excluded.containsKey(key));
3092cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
3093cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        endKey = new Integer(100).toString();
3094cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        subDecendingMap_Included = decendingMap.tailMap(endKey, true);
3095cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        subDecendingMap_Excluded = decendingMap.tailMap(endKey, false);
3096cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = endKey;
3097cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(subDecendingMap_Included.containsKey(key));
3098cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(subDecendingMap_Excluded.containsKey(key));
3099cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
3100cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        endKey = new Integer(99).toString();
3101cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
3102cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            decendingMap.tailMap(endKey, true);
3103cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
3104cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
3105cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
3106cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
3107cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
3108cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            decendingMap.tailMap(endKey, false);
3109cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
3110cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
3111cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
3112cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
3113cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
3114cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // With Comparator
3115cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        decendingMap = ((NavigableMap) subMap_startExcluded_endExcluded_comparator)
3116cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .descendingMap();
3117cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        endKey = new Integer(110).toString();
3118cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
3119cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            decendingMap.tailMap(endKey, true);
3120cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
3121cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
3122cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
3123cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
3124cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
3125cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
3126cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            decendingMap.tailMap(endKey, false);
3127cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
3128cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
3129cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
3130cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
3131cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
3132cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        endKey = new Integer(109).toString();
3133cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
3134cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            decendingMap.tailMap(endKey, true);
3135cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
3136cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
3137cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
3138cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
3139cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        subDecendingMap_Excluded = decendingMap.tailMap(endKey, false);
3140cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = endKey;
3141cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(subDecendingMap_Excluded.containsKey(key));
3142cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
3143cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        endKey = new Integer(108).toString();
3144cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        subDecendingMap_Included = decendingMap.tailMap(endKey, true);
3145cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        subDecendingMap_Excluded = decendingMap.tailMap(endKey, false);
3146cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = endKey;
3147cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(subDecendingMap_Included.containsKey(key));
3148cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(subDecendingMap_Excluded.containsKey(key));
3149cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int i = 107; i > 100; i--) {
3150cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            key = new Integer(i).toString();
3151cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertTrue(subDecendingMap_Included.containsKey(key));
3152cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertTrue(subDecendingMap_Excluded.containsKey(key));
3153cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
3154cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = new Integer(100).toString();
3155cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(subDecendingMap_Included.containsKey(key));
3156cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(subDecendingMap_Included.containsKey(key));
3157cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
3158cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        endKey = new Integer(101).toString();
3159cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        subDecendingMap_Included = decendingMap.tailMap(endKey, true);
3160cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        subDecendingMap_Excluded = decendingMap.tailMap(endKey, false);
3161cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = endKey;
3162cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(1, subDecendingMap_Included.size());
3163cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(subDecendingMap_Included.containsKey(key));
3164cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(subDecendingMap_Excluded.isEmpty());
3165cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
3166cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        endKey = new Integer(100).toString();
3167cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
3168cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            decendingMap.tailMap(endKey, true);
3169cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
3170cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
3171cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
3172cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
3173e22b1d53d200616e59483cdbf0df0796583b1007Narayan Kamath        try {
3174e22b1d53d200616e59483cdbf0df0796583b1007Narayan Kamath            decendingMap.tailMap(endKey, false);
3175e22b1d53d200616e59483cdbf0df0796583b1007Narayan Kamath            fail("should throw IllegalArgumentException");
3176e22b1d53d200616e59483cdbf0df0796583b1007Narayan Kamath        } catch (IllegalArgumentException e) {
3177e22b1d53d200616e59483cdbf0df0796583b1007Narayan Kamath            // Expected
3178e22b1d53d200616e59483cdbf0df0796583b1007Narayan Kamath        }
3179cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
3180cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        endKey = new Integer(99).toString();
3181cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
3182cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            decendingMap.tailMap(endKey, true);
3183cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
3184cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
3185cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
3186cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
3187cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
3188cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
3189cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            decendingMap.tailMap(endKey, false);
3190cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
3191cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
3192cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
3193cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
3194cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
3195cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        decendingMap = ((NavigableMap) subMap_startExcluded_endIncluded_comparator)
3196cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .descendingMap();
3197cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        endKey = new Integer(110).toString();
3198cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
3199cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            decendingMap.tailMap(endKey, true);
3200cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
3201cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
3202cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
3203cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
3204cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
3205cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
3206cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            decendingMap.tailMap(endKey, false);
3207cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
3208cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
3209cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
3210cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
3211cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
3212cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        endKey = new Integer(109).toString();
3213cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        subDecendingMap_Included = decendingMap.tailMap(endKey, true);
3214cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        subDecendingMap_Excluded = decendingMap.tailMap(endKey, false);
3215cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = endKey;
3216cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(subDecendingMap_Included.containsKey(key));
3217cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(subDecendingMap_Excluded.containsKey(key));
3218cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
3219cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        endKey = new Integer(108).toString();
3220cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        subDecendingMap_Included = decendingMap.tailMap(endKey, true);
3221cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        subDecendingMap_Excluded = decendingMap.tailMap(endKey, false);
3222cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = endKey;
3223cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(subDecendingMap_Included.containsKey(key));
3224cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(subDecendingMap_Excluded.containsKey(key));
3225cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int i = 107; i > 100; i--) {
3226cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            key = new Integer(i).toString();
3227cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertTrue(subDecendingMap_Included.containsKey(key));
3228cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertTrue(subDecendingMap_Excluded.containsKey(key));
3229cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
3230cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = new Integer(100).toString();
3231cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(subDecendingMap_Included.containsKey(key));
3232cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(subDecendingMap_Included.containsKey(key));
3233cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
3234cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        endKey = new Integer(101).toString();
3235cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        subDecendingMap_Included = decendingMap.tailMap(endKey, true);
3236cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        subDecendingMap_Excluded = decendingMap.tailMap(endKey, false);
3237cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = endKey;
3238cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(1, subDecendingMap_Included.size());
3239cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(subDecendingMap_Included.containsKey(key));
3240cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(subDecendingMap_Excluded.isEmpty());
3241cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
3242cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        endKey = new Integer(100).toString();
3243cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
3244cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            decendingMap.tailMap(endKey, true);
3245cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
3246cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
3247cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
3248cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
3249e22b1d53d200616e59483cdbf0df0796583b1007Narayan Kamath        try {
3250e22b1d53d200616e59483cdbf0df0796583b1007Narayan Kamath            decendingMap.tailMap(endKey, false);
3251e22b1d53d200616e59483cdbf0df0796583b1007Narayan Kamath            fail("should throw IllegalArgumentException");
3252e22b1d53d200616e59483cdbf0df0796583b1007Narayan Kamath        } catch (IllegalArgumentException e) {
3253e22b1d53d200616e59483cdbf0df0796583b1007Narayan Kamath            // Expected
3254e22b1d53d200616e59483cdbf0df0796583b1007Narayan Kamath        }
3255cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
3256cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        endKey = new Integer(99).toString();
3257cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
3258cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            decendingMap.tailMap(endKey, true);
3259cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
3260cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
3261cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
3262cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
3263cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
3264cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            decendingMap.tailMap(endKey, false);
3265cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
3266cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
3267cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
3268cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
3269cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
3270cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // navigableMap_startIncluded_endExcluded
3271cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        decendingMap = ((NavigableMap) subMap_startIncluded_endExcluded)
3272cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .descendingMap();
3273cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        endKey = new Integer(110).toString();
3274cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
3275cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            decendingMap.tailMap(endKey, true);
3276cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
3277cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
3278cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
3279cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
3280cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
3281cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
3282cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            decendingMap.tailMap(endKey, false);
3283cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
3284cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
3285cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
3286cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
3287cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
3288cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        endKey = new Integer(109).toString();
3289cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
3290cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            decendingMap.tailMap(endKey, true);
3291cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
3292cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
3293cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
3294cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
3295cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        subDecendingMap_Excluded = decendingMap.tailMap(endKey, false);
3296cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = endKey;
3297cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(subDecendingMap_Excluded.containsKey(key));
3298cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
3299cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        endKey = new Integer(108).toString();
3300cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        subDecendingMap_Included = decendingMap.tailMap(endKey, true);
3301cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        subDecendingMap_Excluded = decendingMap.tailMap(endKey, false);
3302cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = endKey;
3303cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(subDecendingMap_Included.containsKey(key));
3304cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(subDecendingMap_Excluded.containsKey(key));
3305cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int i = 107; i > 100; i--) {
3306cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            key = new Integer(i).toString();
3307cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertTrue(subDecendingMap_Included.containsKey(key));
3308cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertTrue(subDecendingMap_Excluded.containsKey(key));
3309cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
3310cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = new Integer(100).toString();
3311cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(subDecendingMap_Included.containsKey(key));
3312cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(subDecendingMap_Included.containsKey(key));
3313cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
3314cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        endKey = new Integer(101).toString();
3315cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        subDecendingMap_Included = decendingMap.tailMap(endKey, true);
3316cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        subDecendingMap_Excluded = decendingMap.tailMap(endKey, false);
3317cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = endKey;
3318cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(2, subDecendingMap_Included.size());
3319cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(subDecendingMap_Included.containsKey(key));
3320cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(subDecendingMap_Excluded.containsKey(key));
3321cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
3322cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        endKey = new Integer(100).toString();
3323cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        subDecendingMap_Included = decendingMap.tailMap(endKey, true);
3324cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        subDecendingMap_Excluded = decendingMap.tailMap(endKey, false);
3325cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = endKey;
3326cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(subDecendingMap_Included.containsKey(key));
3327cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(subDecendingMap_Excluded.containsKey(key));
3328cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
3329cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        endKey = new Integer(99).toString();
3330cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
3331cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            decendingMap.tailMap(endKey, true);
3332cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
3333cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
3334cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
3335cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
3336cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
3337cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            decendingMap.tailMap(endKey, false);
3338cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
3339cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
3340cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
3341cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
3342cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
3343cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        decendingMap = ((NavigableMap) subMap_startIncluded_endIncluded)
3344cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .descendingMap();
3345cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        endKey = new Integer(110).toString();
3346cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
3347cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            decendingMap.tailMap(endKey, true);
3348cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
3349cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
3350cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
3351cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
3352cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
3353cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            decendingMap.tailMap(endKey, false);
3354cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
3355cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
3356cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
3357cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
3358cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
3359cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        endKey = new Integer(109).toString();
3360cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
3361cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            decendingMap.tailMap(endKey, true);
3362cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
3363cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
3364cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
3365cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
3366cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        subDecendingMap_Excluded = decendingMap.tailMap(endKey, false);
3367cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = endKey;
3368cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(subDecendingMap_Excluded.containsKey(key));
3369cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
3370cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        endKey = new Integer(108).toString();
3371cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        subDecendingMap_Included = decendingMap.tailMap(endKey, true);
3372cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        subDecendingMap_Excluded = decendingMap.tailMap(endKey, false);
3373cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = endKey;
3374cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(subDecendingMap_Included.containsKey(key));
3375cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(subDecendingMap_Excluded.containsKey(key));
3376cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int i = 107; i > 100; i--) {
3377cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            key = new Integer(i).toString();
3378cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertTrue(subDecendingMap_Included.containsKey(key));
3379cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertTrue(subDecendingMap_Excluded.containsKey(key));
3380cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
3381cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = new Integer(100).toString();
3382cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(subDecendingMap_Included.containsKey(key));
3383cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(subDecendingMap_Included.containsKey(key));
3384cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
3385cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        endKey = new Integer(101).toString();
3386cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        subDecendingMap_Included = decendingMap.tailMap(endKey, true);
3387cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        subDecendingMap_Excluded = decendingMap.tailMap(endKey, false);
3388cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = endKey;
3389cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(2, subDecendingMap_Included.size());
3390cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(subDecendingMap_Included.containsKey(key));
3391cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(subDecendingMap_Excluded.containsKey(key));
3392cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
3393cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        endKey = new Integer(100).toString();
3394cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        subDecendingMap_Included = decendingMap.tailMap(endKey, true);
3395cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        subDecendingMap_Excluded = decendingMap.tailMap(endKey, false);
3396cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = endKey;
3397cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(subDecendingMap_Included.containsKey(key));
3398cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(subDecendingMap_Excluded.containsKey(key));
3399cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
3400cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        endKey = new Integer(99).toString();
3401cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
3402cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            decendingMap.tailMap(endKey, true);
3403cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
3404cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
3405cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
3406cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
3407cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
3408cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            decendingMap.tailMap(endKey, false);
3409cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
3410cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
3411cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
3412cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
3413cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
3414cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
3415cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_Entry_setValue() {
3416cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        TreeMap treeMap = new TreeMap();
3417cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Integer value = null;
3418cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int i = 0; i < 50; i++) {
3419cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            value = new Integer(i);
3420cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            treeMap.put(value, value);
3421cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
3422cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Map checkedMap = Collections.checkedMap(treeMap, Integer.class,
3423cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                Integer.class);
3424cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Set entrySet = checkedMap.entrySet();
3425cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Iterator iterator = entrySet.iterator();
3426cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Entry entry;
3427cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        value = new Integer(0);
3428cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (; iterator.hasNext(); value++) {
3429cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            entry = (Entry) iterator.next();
3430cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(value, entry.setValue(value + 1));
3431cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(value + 1, entry.getValue());
3432cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
3433cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
3434cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
3435cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_DescendingSubMapEntrySet_comparator() {
3436cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Set entrySet;
3437cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        NavigableSet descendingSet;
3438cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Comparator comparator;
3439cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Entry[] entryArray;
3440cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Integer value1, value2;
3441cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
3442cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        entrySet = navigableMap_startExcluded_endExcluded.entrySet();
3443cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        if (entrySet instanceof NavigableSet) {
3444cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            descendingSet = ((NavigableSet) entrySet).descendingSet();
3445cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertNull(((NavigableSet) entrySet).comparator());
3446cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            comparator = descendingSet.comparator();
3447cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertNotNull(comparator);
3448cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
3449cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            entryArray = (Entry[]) descendingSet
3450cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    .toArray(new Entry[descendingSet.size()]);
3451cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            for (int i = 1; i < entryArray.length; i++) {
3452cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                value1 = (Integer) entryArray[i - 1].getValue();
3453cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                value2 = (Integer) entryArray[i].getValue();
3454cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                assertTrue(value1 > value2);
3455cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                assertTrue(comparator.compare(value1, value2) < 0);
3456cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
3457cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
3458cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
3459cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        entrySet = navigableMap_startExcluded_endIncluded.entrySet();
3460cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        if (entrySet instanceof NavigableSet) {
3461cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            descendingSet = ((NavigableSet) entrySet).descendingSet();
3462cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertNull(((NavigableSet) entrySet).comparator());
3463cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            comparator = descendingSet.comparator();
3464cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertNotNull(comparator);
3465cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
3466cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            entryArray = (Entry[]) descendingSet
3467cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    .toArray(new Entry[descendingSet.size()]);
3468cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            for (int i = 1; i < entryArray.length; i++) {
3469cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                value1 = (Integer) entryArray[i - 1].getValue();
3470cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                value2 = (Integer) entryArray[i].getValue();
3471cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                assertTrue(value1 > value2);
3472cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                assertTrue(comparator.compare(value1, value2) < 0);
3473cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
3474cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
3475cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
3476cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        entrySet = navigableMap_startIncluded_endExcluded.entrySet();
3477cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        if (entrySet instanceof NavigableSet) {
3478cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            descendingSet = ((NavigableSet) entrySet).descendingSet();
3479cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertNull(((NavigableSet) entrySet).comparator());
3480cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            comparator = descendingSet.comparator();
3481cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertNotNull(comparator);
3482cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
3483cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            entryArray = (Entry[]) descendingSet
3484cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    .toArray(new Entry[descendingSet.size()]);
3485cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            for (int i = 1; i < entryArray.length; i++) {
3486cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                value1 = (Integer) entryArray[i - 1].getValue();
3487cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                value2 = (Integer) entryArray[i].getValue();
3488cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                assertTrue(value1 > value2);
3489cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                assertTrue(comparator.compare(value1, value2) < 0);
3490cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
3491cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
3492cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
3493cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        entrySet = navigableMap_startIncluded_endIncluded.entrySet();
3494cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        if (entrySet instanceof NavigableSet) {
3495cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            descendingSet = ((NavigableSet) entrySet).descendingSet();
3496cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertNull(((NavigableSet) entrySet).comparator());
3497cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            comparator = descendingSet.comparator();
3498cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertNotNull(comparator);
3499cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
3500cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            entryArray = (Entry[]) descendingSet
3501cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    .toArray(new Entry[descendingSet.size()]);
3502cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            for (int i = 1; i < entryArray.length; i++) {
3503cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                value1 = (Integer) entryArray[i - 1].getValue();
3504cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                value2 = (Integer) entryArray[i].getValue();
3505cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                assertTrue(value1 > value2);
3506cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                assertTrue(comparator.compare(value1, value2) < 0);
3507cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
3508cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
3509cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
3510cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        String endKey = new Integer(2).toString();
3511cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        entrySet = tm.headMap(endKey, true).entrySet();
3512cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        if (entrySet instanceof NavigableSet) {
3513cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            descendingSet = ((NavigableSet) entrySet).descendingSet();
3514cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertNotNull(descendingSet.comparator());
3515cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
3516cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
3517cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
3518cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_DescendingSubMapEntrySet_descendingSet() {
3519cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Set entrySet;
3520cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        NavigableSet ascendingSubMapEntrySet, descendingSet, descendingDescedingSet;
3521cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Entry[] ascendingEntryArray, descendingDescendingArray;
3522cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
3523cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        entrySet = navigableMap_startExcluded_endExcluded.entrySet();
3524cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        if (entrySet instanceof NavigableSet) {
3525cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            ascendingSubMapEntrySet = (NavigableSet) entrySet;
3526cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            descendingSet = ascendingSubMapEntrySet.descendingSet();
3527cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            descendingDescedingSet = descendingSet.descendingSet();
3528cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            ascendingEntryArray = (Entry[]) ascendingSubMapEntrySet
3529cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    .toArray(new Entry[ascendingSubMapEntrySet.size()]);
3530cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
3531cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            descendingDescendingArray = (Entry[]) descendingDescedingSet
3532cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    .toArray(new Entry[descendingDescedingSet.size()]);
3533cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
3534cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(ascendingEntryArray.length,
3535cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    descendingDescendingArray.length);
3536cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            for (int i = 0; i < ascendingEntryArray.length; i++) {
3537cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                assertEquals(ascendingEntryArray[i],
3538cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        descendingDescendingArray[i]);
3539cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
3540cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
3541cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
3542cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        entrySet = navigableMap_startExcluded_endIncluded.entrySet();
3543cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        if (entrySet instanceof NavigableSet) {
3544cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            ascendingSubMapEntrySet = (NavigableSet) entrySet;
3545cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            descendingSet = ascendingSubMapEntrySet.descendingSet();
3546cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            descendingDescedingSet = descendingSet.descendingSet();
3547cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            ascendingEntryArray = (Entry[]) ascendingSubMapEntrySet
3548cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    .toArray(new Entry[ascendingSubMapEntrySet.size()]);
3549cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
3550cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            descendingDescendingArray = (Entry[]) descendingDescedingSet
3551cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    .toArray(new Entry[descendingDescedingSet.size()]);
3552cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
3553cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(ascendingEntryArray.length,
3554cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    descendingDescendingArray.length);
3555cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            for (int i = 0; i < ascendingEntryArray.length; i++) {
3556cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                assertEquals(ascendingEntryArray[i],
3557cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        descendingDescendingArray[i]);
3558cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
3559cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
3560cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
3561cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        entrySet = navigableMap_startIncluded_endExcluded.entrySet();
3562cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        if (entrySet instanceof NavigableSet) {
3563cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            ascendingSubMapEntrySet = (NavigableSet) entrySet;
3564cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            descendingSet = ascendingSubMapEntrySet.descendingSet();
3565cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            descendingDescedingSet = descendingSet.descendingSet();
3566cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            ascendingEntryArray = (Entry[]) ascendingSubMapEntrySet
3567cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    .toArray(new Entry[ascendingSubMapEntrySet.size()]);
3568cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
3569cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            descendingDescendingArray = (Entry[]) descendingDescedingSet
3570cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    .toArray(new Entry[descendingDescedingSet.size()]);
3571cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
3572cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(ascendingEntryArray.length,
3573cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    descendingDescendingArray.length);
3574cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            for (int i = 0; i < ascendingEntryArray.length; i++) {
3575cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                assertEquals(ascendingEntryArray[i],
3576cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        descendingDescendingArray[i]);
3577cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
3578cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
3579cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
3580cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        entrySet = navigableMap_startIncluded_endIncluded.entrySet();
3581cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        if (entrySet instanceof NavigableSet) {
3582cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            ascendingSubMapEntrySet = (NavigableSet) entrySet;
3583cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            descendingSet = ascendingSubMapEntrySet.descendingSet();
3584cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            descendingDescedingSet = descendingSet.descendingSet();
3585cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            ascendingEntryArray = (Entry[]) ascendingSubMapEntrySet
3586cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    .toArray(new Entry[ascendingSubMapEntrySet.size()]);
3587cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
3588cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            descendingDescendingArray = (Entry[]) descendingDescedingSet
3589cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    .toArray(new Entry[descendingDescedingSet.size()]);
3590cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
3591cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(ascendingEntryArray.length,
3592cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    descendingDescendingArray.length);
3593cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            for (int i = 0; i < ascendingEntryArray.length; i++) {
3594cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                assertEquals(ascendingEntryArray[i],
3595cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        descendingDescendingArray[i]);
3596cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
3597cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
3598cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
3599cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        String endKey = new Integer(2).toString();
3600cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        entrySet = tm.headMap(endKey, true).entrySet();// 0...2
3601cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        if (entrySet instanceof NavigableSet) {
3602cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // [2...0]
3603cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            descendingSet = ((NavigableSet) entrySet).descendingSet();
3604cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // [0...2]
3605cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            descendingDescedingSet = descendingSet.descendingSet();
3606cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            Iterator iterator = descendingDescedingSet.iterator();
3607cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(0, ((Entry) iterator.next()).getValue());
3608cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
3609cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
3610cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        String startKey = new Integer(2).toString();
3611cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        entrySet = tm.tailMap(startKey, true).entrySet();// 2...
3612cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        if (entrySet instanceof NavigableSet) {
3613cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // [2...0]
3614cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            descendingSet = ((NavigableSet) entrySet).descendingSet();
3615cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // [0...2]
3616cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            descendingDescedingSet = descendingSet.descendingSet();
3617cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            Iterator iterator = descendingDescedingSet.iterator();
3618cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(2, ((Entry) iterator.next()).getValue());
3619cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
3620cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
3621cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
3622cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
3623cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_DescendingSubMapEntrySet_first() {
3624cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Set entrySet;
3625cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        NavigableSet ascendingSubMapEntrySet, descendingSet;
3626cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Entry entry;
3627cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
3628cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        entrySet = navigableMap_startExcluded_endExcluded.entrySet();
3629cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        if (entrySet instanceof NavigableSet) {
3630cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            ascendingSubMapEntrySet = (NavigableSet) entrySet;
3631cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            descendingSet = ascendingSubMapEntrySet.descendingSet();
3632cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            entry = (Entry) descendingSet.first();
3633cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(101, entry.getValue());
3634cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
3635cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
3636cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        entrySet = navigableMap_startExcluded_endIncluded.entrySet();
3637cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        if (entrySet instanceof NavigableSet) {
3638cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            ascendingSubMapEntrySet = (NavigableSet) entrySet;
3639cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            descendingSet = ascendingSubMapEntrySet.descendingSet();
3640cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            entry = (Entry) descendingSet.first();
3641cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(101, entry.getValue());
3642cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
3643cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
3644cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        entrySet = navigableMap_startIncluded_endExcluded.entrySet();
3645cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        if (entrySet instanceof NavigableSet) {
3646cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            ascendingSubMapEntrySet = (NavigableSet) entrySet;
3647cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            descendingSet = ascendingSubMapEntrySet.descendingSet();
3648cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            entry = (Entry) descendingSet.first();
3649cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(100, entry.getValue());
3650cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
3651cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
3652cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        entrySet = navigableMap_startIncluded_endIncluded.entrySet();
3653cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        if (entrySet instanceof NavigableSet) {
3654cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            ascendingSubMapEntrySet = (NavigableSet) entrySet;
3655cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            descendingSet = ascendingSubMapEntrySet.descendingSet();
3656cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            entry = (Entry) descendingSet.first();
3657cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(100, entry.getValue());
3658cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
3659cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
3660cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
3661cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_DescendingSubMapEntrySet_last() {
3662cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Set entrySet;
3663cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        NavigableSet ascendingSubMapEntrySet, descendingSet;
3664cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Entry entry;
3665cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
3666cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        entrySet = navigableMap_startExcluded_endExcluded.entrySet();
3667cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        if (entrySet instanceof NavigableSet) {
3668cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            ascendingSubMapEntrySet = (NavigableSet) entrySet;
3669cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            descendingSet = ascendingSubMapEntrySet.descendingSet();
3670cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            entry = (Entry) descendingSet.last();
3671cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(108, entry.getValue());
3672cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
3673cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
3674cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        entrySet = navigableMap_startExcluded_endIncluded.entrySet();
3675cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        if (entrySet instanceof NavigableSet) {
3676cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            ascendingSubMapEntrySet = (NavigableSet) entrySet;
3677cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            descendingSet = ascendingSubMapEntrySet.descendingSet();
3678cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            entry = (Entry) descendingSet.last();
3679cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(109, entry.getValue());
3680cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
3681cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
3682cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        entrySet = navigableMap_startIncluded_endExcluded.entrySet();
3683cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        if (entrySet instanceof NavigableSet) {
3684cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            ascendingSubMapEntrySet = (NavigableSet) entrySet;
3685cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            descendingSet = ascendingSubMapEntrySet.descendingSet();
3686cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            entry = (Entry) descendingSet.last();
3687cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(108, entry.getValue());
3688cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
3689cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
3690cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        entrySet = navigableMap_startIncluded_endIncluded.entrySet();
3691cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        if (entrySet instanceof NavigableSet) {
3692cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            ascendingSubMapEntrySet = (NavigableSet) entrySet;
3693cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            descendingSet = ascendingSubMapEntrySet.descendingSet();
3694cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            entry = (Entry) descendingSet.last();
3695cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(109, entry.getValue());
3696cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
3697cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
3698cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
3699cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_DescendingSubMapEntrySet_pollFirst_startExcluded_endExcluded() {
3700cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Set entrySet = navigableMap_startExcluded_endExcluded.entrySet();
3701cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Entry entry;
3702cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        if (entrySet instanceof NavigableSet) {
3703cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            NavigableSet descendingSubMapEntrySet = ((NavigableSet) entrySet)
3704cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    .descendingSet();
3705cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(8, descendingSubMapEntrySet.size());
3706cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            for (int i = 101; i < 109; i++) {
3707cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                entry = (Entry) descendingSubMapEntrySet.pollFirst();
3708cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                assertEquals(i, entry.getValue());
3709cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
3710cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertNull(descendingSubMapEntrySet.pollFirst());
3711cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
3712cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
3713cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
3714cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_DescendingSubMapEntrySet_pollFirst_startExcluded_endIncluded() {
3715cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Set entrySet = navigableMap_startExcluded_endIncluded.entrySet();
3716cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Entry entry;
3717cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        if (entrySet instanceof NavigableSet) {
3718cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            NavigableSet descendingSubMapEntrySet = ((NavigableSet) entrySet)
3719cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    .descendingSet();
3720cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(9, descendingSubMapEntrySet.size());
3721cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            for (int i = 101; i < 110; i++) {
3722cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                entry = (Entry) descendingSubMapEntrySet.pollFirst();
3723cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                assertEquals(i, entry.getValue());
3724cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
3725cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertNull(descendingSubMapEntrySet.pollFirst());
3726cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
3727cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
3728cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
3729cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_DescendingSubMapEntrySet_pollFirst_startIncluded_endExcluded() {
3730cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Set entrySet = navigableMap_startIncluded_endExcluded.entrySet();
3731cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Entry entry;
3732cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        if (entrySet instanceof NavigableSet) {
3733cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            NavigableSet descendingSubMapEntrySet = ((NavigableSet) entrySet)
3734cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    .descendingSet();
3735cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(9, descendingSubMapEntrySet.size());
3736cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            for (int i = 100; i < 109; i++) {
3737cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                entry = (Entry) descendingSubMapEntrySet.pollFirst();
3738cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                assertEquals(i, entry.getValue());
3739cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
3740cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertNull(descendingSubMapEntrySet.pollFirst());
3741cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
3742cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
3743cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
3744cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_DescendingSubMapEntrySet_pollFirst_startIncluded_endIncluded() {
3745cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Set entrySet = navigableMap_startIncluded_endIncluded.entrySet();
3746cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Entry entry;
3747cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        if (entrySet instanceof NavigableSet) {
3748cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            NavigableSet descendingSubMapEntrySet = ((NavigableSet) entrySet)
3749cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    .descendingSet();
3750cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(10, descendingSubMapEntrySet.size());
3751cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            for (int i = 100; i < 110; i++) {
3752cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                entry = (Entry) descendingSubMapEntrySet.pollFirst();
3753cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                assertEquals(i, entry.getValue());
3754cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
3755cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertNull(descendingSubMapEntrySet.pollFirst());
3756cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
3757cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
3758cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
3759cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_DescendingSubMapEntrySet_pollFirst() {
3760cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        String key = new Integer(2).toString();
3761cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Set entrySet = tm.headMap(key, true).entrySet();// [0...2]
3762cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        NavigableSet descendingEntrySet;
3763cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Entry entry;
3764cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
3765cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        if (entrySet instanceof NavigableSet) {
3766cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // [2...0]
3767cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            descendingEntrySet = ((NavigableSet) entrySet).descendingSet();
3768cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            entry = (Entry) descendingEntrySet.pollFirst();
3769cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(0, entry.getValue());
3770cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
3771cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
3772cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        entrySet = tm.tailMap(key, true).entrySet();
3773cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        if (entrySet instanceof NavigableSet) {
3774cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            descendingEntrySet = ((NavigableSet) entrySet).descendingSet();
3775cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            entry = (Entry) descendingEntrySet.pollFirst();
3776cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(2, entry.getValue());
3777cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
3778cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
3779cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
3780cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_DescendingSubMapEntrySet_pollLast_startExcluded_endExclued() {
3781cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Set entrySet = navigableMap_startExcluded_endExcluded.entrySet();
3782cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Entry entry;
3783cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        if (entrySet instanceof NavigableSet) {
3784cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            NavigableSet descendingSubMapEntrySet = ((NavigableSet) entrySet)
3785cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    .descendingSet();
3786cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(8, descendingSubMapEntrySet.size());
3787cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            for (int i = 108; i > 100; i--) {
3788cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                entry = (Entry) descendingSubMapEntrySet.pollLast();
3789cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                assertEquals(i, entry.getValue());
3790cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
3791cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertNull(descendingSubMapEntrySet.pollFirst());
3792cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
3793cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
3794cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
3795cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_DescendingSubMapEntrySet_pollLast_startExcluded_endInclued() {
3796cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Set entrySet = navigableMap_startExcluded_endIncluded.entrySet();
3797cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Entry entry;
3798cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        if (entrySet instanceof NavigableSet) {
3799cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            NavigableSet descendingSubMapEntrySet = ((NavigableSet) entrySet)
3800cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    .descendingSet();
3801cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(9, descendingSubMapEntrySet.size());
3802cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            for (int i = 109; i > 100; i--) {
3803cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                entry = (Entry) descendingSubMapEntrySet.pollLast();
3804cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                assertEquals(i, entry.getValue());
3805cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
3806cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertNull(descendingSubMapEntrySet.pollFirst());
3807cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
3808cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
3809cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
3810cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_DescendingSubMapEntrySet_pollLast_startIncluded_endExclued() {
3811cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Set entrySet = navigableMap_startIncluded_endExcluded.entrySet();
3812cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Entry entry;
3813cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        if (entrySet instanceof NavigableSet) {
3814cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            NavigableSet descendingSubMapEntrySet = ((NavigableSet) entrySet)
3815cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    .descendingSet();
3816cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(9, descendingSubMapEntrySet.size());
3817cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            for (int i = 108; i > 99; i--) {
3818cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                entry = (Entry) descendingSubMapEntrySet.pollLast();
3819cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                assertEquals(i, entry.getValue());
3820cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
3821cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertNull(descendingSubMapEntrySet.pollFirst());
3822cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
3823cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
3824cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
3825cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_DescendingSubMapEntrySet_pollLast_startIncluded_endInclued() {
3826cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Set entrySet = navigableMap_startIncluded_endIncluded.entrySet();
3827cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Entry entry;
3828cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        if (entrySet instanceof NavigableSet) {
3829cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            NavigableSet descendingSubMapEntrySet = ((NavigableSet) entrySet)
3830cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    .descendingSet();
3831cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(10, descendingSubMapEntrySet.size());
3832cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            for (int i = 109; i > 99; i--) {
3833cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                entry = (Entry) descendingSubMapEntrySet.pollLast();
3834cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                assertEquals(i, entry.getValue());
3835cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
3836cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertNull(descendingSubMapEntrySet.pollFirst());
3837cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
3838cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
3839cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
3840cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_DescendingSubMapEntrySet_pollLast() {
3841cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        String key = new Integer(2).toString();
3842cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Set entrySet = tm.headMap(key, true).entrySet();// [0...2]
3843cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        NavigableSet descendingEntrySet;
3844cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Entry entry;
3845cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
3846cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        if (entrySet instanceof NavigableSet) {
3847cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // [2...0]
3848cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            descendingEntrySet = ((NavigableSet) entrySet).descendingSet();
3849cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            entry = (Entry) descendingEntrySet.pollLast();
3850cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(2, entry.getValue());
3851cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
3852cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
3853cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        entrySet = tm.tailMap(key, true).entrySet();
3854cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        if (entrySet instanceof NavigableSet) {
3855cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            descendingEntrySet = ((NavigableSet) entrySet).descendingSet();
3856cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            entry = (Entry) descendingEntrySet.pollLast();
3857cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(999, entry.getValue());
3858cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
3859cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
3860cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
3861cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_DescendingSubMapEntrySet_descendingIterator() {
3862cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Set entrySet;
3863cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        NavigableSet descendingSet;
3864cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Iterator iterator;
3865cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
3866cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        entrySet = navigableMap_startExcluded_endExcluded.entrySet();
3867cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        if (entrySet instanceof NavigableSet) {
3868cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            descendingSet = ((NavigableSet) entrySet).descendingSet();
3869cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            iterator = descendingSet.iterator();
3870cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            for (int value = 108; value > 100; value--) {
3871cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                assertTrue(iterator.hasNext());
3872cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                assertEquals(value, ((Entry) iterator.next()).getValue());
3873cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
3874cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertFalse(iterator.hasNext());
3875cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            try {
3876cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                iterator.next();
3877cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                fail("should throw NoSuchElementException");
3878cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            } catch (NoSuchElementException e) {
3879cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                // Expected
3880cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
3881cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
3882cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
3883cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        entrySet = navigableMap_startExcluded_endIncluded.entrySet();
3884cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        if (entrySet instanceof NavigableSet) {
3885cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            descendingSet = ((NavigableSet) entrySet).descendingSet();
3886cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            iterator = descendingSet.iterator();
3887cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            for (int value = 109; value > 100; value--) {
3888cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                assertTrue(iterator.hasNext());
3889cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                assertEquals(value, ((Entry) iterator.next()).getValue());
3890cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
3891cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertFalse(iterator.hasNext());
3892cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            try {
3893cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                iterator.next();
3894cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                fail("should throw NoSuchElementException");
3895cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            } catch (NoSuchElementException e) {
3896cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                // Expected
3897cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
3898cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
3899cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
3900cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        entrySet = navigableMap_startIncluded_endExcluded.entrySet();
3901cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        if (entrySet instanceof NavigableSet) {
3902cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            descendingSet = ((NavigableSet) entrySet).descendingSet();
3903cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            iterator = descendingSet.iterator();
3904cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            for (int value = 108; value > 99; value--) {
3905cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                assertTrue(iterator.hasNext());
3906cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                assertEquals(value, ((Entry) iterator.next()).getValue());
3907cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
3908cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertFalse(iterator.hasNext());
3909cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            try {
3910cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                iterator.next();
3911cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                fail("should throw NoSuchElementException");
3912cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            } catch (NoSuchElementException e) {
3913cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                // Expected
3914cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
3915cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
3916cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
3917cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        entrySet = navigableMap_startIncluded_endIncluded.entrySet();
3918cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        if (entrySet instanceof NavigableSet) {
3919cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            descendingSet = ((NavigableSet) entrySet).descendingSet();
3920cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            iterator = descendingSet.iterator();
3921cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            for (int value = 109; value > 99; value--) {
3922cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                assertTrue(iterator.hasNext());
3923cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                assertEquals(value, ((Entry) iterator.next()).getValue());
3924cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
3925cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertFalse(iterator.hasNext());
3926cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            try {
3927cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                iterator.next();
3928cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                fail("should throw NoSuchElementException");
3929cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            } catch (NoSuchElementException e) {
3930cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                // Expected
3931cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
3932cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
3933cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
3934cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        String endKey = new Integer(2).toString();
3935cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        entrySet = tm.headMap(endKey, true).entrySet();// 0...2
3936cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        if (entrySet instanceof NavigableSet) {
3937cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // [2...0]
3938cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            descendingSet = ((NavigableSet) entrySet).descendingSet();
3939cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            iterator = descendingSet.descendingIterator();
3940cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(0, ((Entry) iterator.next()).getValue());// 0...2
3941cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
3942cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
3943cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
3944cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_DescendingSubMapEntrySet_headSet() {
3945cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Set entrySet, headSet;
3946cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        NavigableSet descendingSubMapEntrySet;
3947cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Iterator iterator, headSetIterator;
3948cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Entry entry;
3949cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        int value;
3950cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
3951cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        entrySet = navigableMap_startExcluded_endExcluded.entrySet();
3952cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        if (entrySet instanceof NavigableSet) {
3953cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            descendingSubMapEntrySet = ((NavigableSet) entrySet)
3954cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    .descendingSet();
3955cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            iterator = descendingSubMapEntrySet.iterator();
3956cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            while (iterator.hasNext()) {
3957cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                entry = (Entry) iterator.next();
3958cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                headSet = descendingSubMapEntrySet.headSet(entry);
3959cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                headSetIterator = headSet.iterator();
3960cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                for (value = 108; headSetIterator.hasNext(); value--) {
3961cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    assertEquals(value, ((Entry) headSetIterator.next())
3962cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                            .getValue());
3963cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                }
3964cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                try {
3965cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    headSetIterator.next();
3966cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    fail("should throw NoSuchElementException");
3967cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                } catch (NoSuchElementException e) {
3968cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    // Expected
3969cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                }
3970cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
3971cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                headSet = descendingSubMapEntrySet.headSet(entry, false);
3972cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                headSetIterator = headSet.iterator();
3973cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                for (value = 108; headSetIterator.hasNext(); value--) {
3974cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    assertEquals(value, ((Entry) headSetIterator.next())
3975cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                            .getValue());
3976cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                }
3977cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                try {
3978cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    headSetIterator.next();
3979cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    fail("should throw NoSuchElementException");
3980cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                } catch (NoSuchElementException e) {
3981cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    // Expected
3982cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                }
3983cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
3984cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                headSet = descendingSubMapEntrySet.headSet(entry, true);
3985cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                headSetIterator = headSet.iterator();
3986cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                for (value = 108; headSetIterator.hasNext(); value--) {
3987cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    assertEquals(value, ((Entry) headSetIterator.next())
3988cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                            .getValue());
3989cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                }
3990cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                try {
3991cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    headSetIterator.next();
3992cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    fail("should throw NoSuchElementException");
3993cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                } catch (NoSuchElementException e) {
3994cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    // Expected
3995cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                }
3996cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
3997cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
3998cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
3999cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        entrySet = navigableMap_startExcluded_endIncluded.entrySet();
4000cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        if (entrySet instanceof NavigableSet) {
4001cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            descendingSubMapEntrySet = ((NavigableSet) entrySet)
4002cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    .descendingSet();
4003cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            iterator = descendingSubMapEntrySet.iterator();
4004cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            while (iterator.hasNext()) {
4005cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                entry = (Entry) iterator.next();
4006cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                headSet = descendingSubMapEntrySet.headSet(entry);
4007cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                headSetIterator = headSet.iterator();
4008cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                for (value = 109; headSetIterator.hasNext(); value--) {
4009cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    assertEquals(value, ((Entry) headSetIterator.next())
4010cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                            .getValue());
4011cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                }
4012cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                try {
4013cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    headSetIterator.next();
4014cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    fail("should throw NoSuchElementException");
4015cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                } catch (NoSuchElementException e) {
4016cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    // Expected
4017cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                }
4018cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
4019cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                headSet = descendingSubMapEntrySet.headSet(entry, false);
4020cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                headSetIterator = headSet.iterator();
4021cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                for (value = 109; headSetIterator.hasNext(); value--) {
4022cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    assertEquals(value, ((Entry) headSetIterator.next())
4023cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                            .getValue());
4024cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                }
4025cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                try {
4026cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    headSetIterator.next();
4027cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    fail("should throw NoSuchElementException");
4028cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                } catch (NoSuchElementException e) {
4029cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    // Expected
4030cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                }
4031cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
4032cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                headSet = descendingSubMapEntrySet.headSet(entry, true);
4033cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                headSetIterator = headSet.iterator();
4034cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                for (value = 109; headSetIterator.hasNext(); value--) {
4035cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    assertEquals(value, ((Entry) headSetIterator.next())
4036cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                            .getValue());
4037cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                }
4038cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                try {
4039cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    headSetIterator.next();
4040cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    fail("should throw NoSuchElementException");
4041cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                } catch (NoSuchElementException e) {
4042cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    // Expected
4043cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                }
4044cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
4045cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
4046cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
4047cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        entrySet = navigableMap_startIncluded_endExcluded.entrySet();
4048cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        if (entrySet instanceof NavigableSet) {
4049cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            descendingSubMapEntrySet = ((NavigableSet) entrySet)
4050cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    .descendingSet();
4051cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            iterator = descendingSubMapEntrySet.iterator();
4052cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            while (iterator.hasNext()) {
4053cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                entry = (Entry) iterator.next();
4054cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                headSet = descendingSubMapEntrySet.headSet(entry);
4055cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                headSetIterator = headSet.iterator();
4056cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                for (value = 108; headSetIterator.hasNext(); value--) {
4057cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    assertEquals(value, ((Entry) headSetIterator.next())
4058cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                            .getValue());
4059cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                }
4060cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                try {
4061cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    headSetIterator.next();
4062cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    fail("should throw NoSuchElementException");
4063cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                } catch (NoSuchElementException e) {
4064cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    // Expected
4065cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                }
4066cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
4067cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                headSet = descendingSubMapEntrySet.headSet(entry, false);
4068cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                headSetIterator = headSet.iterator();
4069cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                for (value = 108; headSetIterator.hasNext(); value--) {
4070cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    assertEquals(value, ((Entry) headSetIterator.next())
4071cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                            .getValue());
4072cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                }
4073cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                try {
4074cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    headSetIterator.next();
4075cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    fail("should throw NoSuchElementException");
4076cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                } catch (NoSuchElementException e) {
4077cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    // Expected
4078cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                }
4079cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
4080cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                headSet = descendingSubMapEntrySet.headSet(entry, true);
4081cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                headSetIterator = headSet.iterator();
4082cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                for (value = 108; headSetIterator.hasNext(); value--) {
4083cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    assertEquals(value, ((Entry) headSetIterator.next())
4084cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                            .getValue());
4085cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                }
4086cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                try {
4087cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    headSetIterator.next();
4088cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    fail("should throw NoSuchElementException");
4089cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                } catch (NoSuchElementException e) {
4090cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    // Expected
4091cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                }
4092cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
4093cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
4094cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
4095cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        entrySet = navigableMap_startIncluded_endIncluded.entrySet();
4096cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        if (entrySet instanceof NavigableSet) {
4097cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            descendingSubMapEntrySet = ((NavigableSet) entrySet)
4098cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    .descendingSet();
4099cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            iterator = descendingSubMapEntrySet.iterator();
4100cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            while (iterator.hasNext()) {
4101cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                entry = (Entry) iterator.next();
4102cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                headSet = descendingSubMapEntrySet.headSet(entry);
4103cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                headSetIterator = headSet.iterator();
4104cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                for (value = 109; headSetIterator.hasNext(); value--) {
4105cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    assertEquals(value, ((Entry) headSetIterator.next())
4106cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                            .getValue());
4107cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                }
4108cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                try {
4109cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    headSetIterator.next();
4110cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    fail("should throw NoSuchElementException");
4111cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                } catch (NoSuchElementException e) {
4112cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    // Expected
4113cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                }
4114cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
4115cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                headSet = descendingSubMapEntrySet.headSet(entry, false);
4116cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                headSetIterator = headSet.iterator();
4117cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                for (value = 109; headSetIterator.hasNext(); value--) {
4118cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    assertEquals(value, ((Entry) headSetIterator.next())
4119cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                            .getValue());
4120cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                }
4121cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                try {
4122cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    headSetIterator.next();
4123cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    fail("should throw NoSuchElementException");
4124cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                } catch (NoSuchElementException e) {
4125cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    // Expected
4126cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                }
4127cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
4128cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                headSet = descendingSubMapEntrySet.headSet(entry, true);
4129cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                headSetIterator = headSet.iterator();
4130cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                for (value = 109; headSetIterator.hasNext(); value--) {
4131cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    assertEquals(value, ((Entry) headSetIterator.next())
4132cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                            .getValue());
4133cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                }
4134cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                try {
4135cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    headSetIterator.next();
4136cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    fail("should throw NoSuchElementException");
4137cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                } catch (NoSuchElementException e) {
4138cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    // Expected
4139cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                }
4140cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
4141cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
4142cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
4143cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        String endKey = new Integer(2).toString();
4144cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        entrySet = tm.headMap(endKey, true).entrySet();// 0...2
4145cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        if (entrySet instanceof NavigableSet) {
4146cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // [2...0]
4147cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            descendingSubMapEntrySet = ((NavigableSet) entrySet)
4148cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    .descendingSet();
4149cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            iterator = descendingSubMapEntrySet.iterator();
4150cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            iterator.next();// 2
4151cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            iterator.next();// 199
4152cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            entry = (Entry) iterator.next();// 198
4153cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            headSet = descendingSubMapEntrySet.headSet(entry);
4154cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(2, headSet.size());// 2 199
4155cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            headSetIterator = headSet.iterator();
4156cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(2, ((Entry) headSetIterator.next()).getValue());
4157cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(199, ((Entry) headSetIterator.next()).getValue());
4158cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
4159cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            headSet = descendingSubMapEntrySet.headSet(entry, true);
4160cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(3, headSet.size());// 2 199
4161cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            headSetIterator = headSet.iterator();
4162cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(2, ((Entry) headSetIterator.next()).getValue());
4163cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(199, ((Entry) headSetIterator.next()).getValue());
4164cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(198, ((Entry) headSetIterator.next()).getValue());
4165cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
4166cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
4167cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
4168cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_DescendingSubMapEntrySet_tailSet() {
4169cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Set entrySet, tailSet;
4170cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        NavigableSet descendingSubMapEntrySet;
4171cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Iterator iterator, tailSetIterator;
4172cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Entry entry;
4173cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        int value;
4174cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
4175cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        entrySet = navigableMap_startExcluded_endExcluded.entrySet();
4176cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        if (entrySet instanceof NavigableSet) {
4177cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            descendingSubMapEntrySet = ((NavigableSet) entrySet)
4178cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    .descendingSet();
4179cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            iterator = descendingSubMapEntrySet.iterator();
4180cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            while (iterator.hasNext()) {
4181cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                entry = (Entry) iterator.next();
4182cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                tailSet = descendingSubMapEntrySet.tailSet(entry);
4183cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                tailSetIterator = tailSet.iterator();
4184cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                for (value = (Integer) entry.getValue(); tailSetIterator
4185cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        .hasNext(); value--) {
4186cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    assertEquals(value, ((Entry) tailSetIterator.next())
4187cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                            .getValue());
4188cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                }
4189cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                try {
4190cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    tailSetIterator.next();
4191cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    fail("should throw NoSuchElementException");
4192cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                } catch (NoSuchElementException e) {
4193cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    // Expected
4194cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                }
4195cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
4196cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                tailSet = descendingSubMapEntrySet.tailSet(entry, false);
4197cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                tailSetIterator = tailSet.iterator();
4198cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                for (value = (Integer) entry.getValue(); tailSetIterator
4199cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        .hasNext(); value--) {
4200cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    assertEquals(value - 1, ((Entry) tailSetIterator.next())
4201cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                            .getValue());
4202cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                }
4203cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                try {
4204cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    tailSetIterator.next();
4205cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    fail("should throw NoSuchElementException");
4206cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                } catch (NoSuchElementException e) {
4207cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    // Expected
4208cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                }
4209cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
4210cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                tailSet = descendingSubMapEntrySet.tailSet(entry, true);
4211cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                tailSetIterator = tailSet.iterator();
4212cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                for (value = (Integer) entry.getValue(); tailSetIterator
4213cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        .hasNext(); value--) {
4214cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    assertEquals(value, ((Entry) tailSetIterator.next())
4215cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                            .getValue());
4216cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                }
4217cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                try {
4218cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    tailSetIterator.next();
4219cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    fail("should throw NoSuchElementException");
4220cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                } catch (NoSuchElementException e) {
4221cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    // Expected
4222cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                }
4223cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
4224cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
4225cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
4226cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        entrySet = navigableMap_startExcluded_endIncluded.entrySet();
4227cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        if (entrySet instanceof NavigableSet) {
4228cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            descendingSubMapEntrySet = ((NavigableSet) entrySet)
4229cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    .descendingSet();
4230cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            iterator = descendingSubMapEntrySet.iterator();
4231cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            while (iterator.hasNext()) {
4232cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                entry = (Entry) iterator.next();
4233cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                tailSet = descendingSubMapEntrySet.tailSet(entry);
4234cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                tailSetIterator = tailSet.iterator();
4235cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                for (value = (Integer) entry.getValue(); tailSetIterator
4236cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        .hasNext(); value--) {
4237cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    assertEquals(value, ((Entry) tailSetIterator.next())
4238cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                            .getValue());
4239cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                }
4240cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                try {
4241cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    tailSetIterator.next();
4242cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    fail("should throw NoSuchElementException");
4243cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                } catch (NoSuchElementException e) {
4244cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    // Expected
4245cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                }
4246cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
4247cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                tailSet = descendingSubMapEntrySet.tailSet(entry, false);
4248cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                tailSetIterator = tailSet.iterator();
4249cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                for (value = (Integer) entry.getValue(); tailSetIterator
4250cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        .hasNext(); value--) {
4251cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    assertEquals(value - 1, ((Entry) tailSetIterator.next())
4252cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                            .getValue());
4253cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                }
4254cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                try {
4255cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    tailSetIterator.next();
4256cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    fail("should throw NoSuchElementException");
4257cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                } catch (NoSuchElementException e) {
4258cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    // Expected
4259cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                }
4260cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
4261cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                tailSet = descendingSubMapEntrySet.tailSet(entry, true);
4262cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                tailSetIterator = tailSet.iterator();
4263cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                for (value = (Integer) entry.getValue(); tailSetIterator
4264cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        .hasNext(); value--) {
4265cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    assertEquals(value, ((Entry) tailSetIterator.next())
4266cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                            .getValue());
4267cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                }
4268cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                try {
4269cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    tailSetIterator.next();
4270cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    fail("should throw NoSuchElementException");
4271cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                } catch (NoSuchElementException e) {
4272cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    // Expected
4273cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                }
4274cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
4275cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
4276cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
4277cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        entrySet = navigableMap_startIncluded_endExcluded.entrySet();
4278cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        if (entrySet instanceof NavigableSet) {
4279cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            descendingSubMapEntrySet = ((NavigableSet) entrySet)
4280cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    .descendingSet();
4281cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            iterator = descendingSubMapEntrySet.iterator();
4282cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            while (iterator.hasNext()) {
4283cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                entry = (Entry) iterator.next();
4284cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                tailSet = descendingSubMapEntrySet.tailSet(entry);
4285cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                tailSetIterator = tailSet.iterator();
4286cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                for (value = (Integer) entry.getValue(); tailSetIterator
4287cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        .hasNext(); value--) {
4288cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    assertEquals(value, ((Entry) tailSetIterator.next())
4289cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                            .getValue());
4290cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                }
4291cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                try {
4292cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    tailSetIterator.next();
4293cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    fail("should throw NoSuchElementException");
4294cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                } catch (NoSuchElementException e) {
4295cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    // Expected
4296cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                }
4297cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
4298cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                tailSet = descendingSubMapEntrySet.tailSet(entry, false);
4299cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                tailSetIterator = tailSet.iterator();
4300cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                for (value = (Integer) entry.getValue(); tailSetIterator
4301cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        .hasNext(); value--) {
4302cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    assertEquals(value - 1, ((Entry) tailSetIterator.next())
4303cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                            .getValue());
4304cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                }
4305cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                try {
4306cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    tailSetIterator.next();
4307cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    fail("should throw NoSuchElementException");
4308cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                } catch (NoSuchElementException e) {
4309cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    // Expected
4310cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                }
4311cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
4312cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                tailSet = descendingSubMapEntrySet.tailSet(entry, true);
4313cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                tailSetIterator = tailSet.iterator();
4314cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                for (value = (Integer) entry.getValue(); tailSetIterator
4315cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        .hasNext(); value--) {
4316cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    assertEquals(value, ((Entry) tailSetIterator.next())
4317cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                            .getValue());
4318cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                }
4319cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                try {
4320cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    tailSetIterator.next();
4321cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    fail("should throw NoSuchElementException");
4322cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                } catch (NoSuchElementException e) {
4323cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    // Expected
4324cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                }
4325cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
4326cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
4327cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
4328cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        entrySet = navigableMap_startIncluded_endIncluded.entrySet();
4329cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        if (entrySet instanceof NavigableSet) {
4330cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            descendingSubMapEntrySet = ((NavigableSet) entrySet)
4331cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    .descendingSet();
4332cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            iterator = descendingSubMapEntrySet.iterator();
4333cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            while (iterator.hasNext()) {
4334cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                entry = (Entry) iterator.next();
4335cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                tailSet = descendingSubMapEntrySet.tailSet(entry);
4336cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                tailSetIterator = tailSet.iterator();
4337cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                for (value = (Integer) entry.getValue(); tailSetIterator
4338cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        .hasNext(); value--) {
4339cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    assertEquals(value, ((Entry) tailSetIterator.next())
4340cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                            .getValue());
4341cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                }
4342cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                try {
4343cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    tailSetIterator.next();
4344cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    fail("should throw NoSuchElementException");
4345cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                } catch (NoSuchElementException e) {
4346cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    // Expected
4347cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                }
4348cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
4349cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                tailSet = descendingSubMapEntrySet.tailSet(entry, false);
4350cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                tailSetIterator = tailSet.iterator();
4351cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                for (value = (Integer) entry.getValue(); tailSetIterator
4352cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        .hasNext(); value--) {
4353cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    assertEquals(value - 1, ((Entry) tailSetIterator.next())
4354cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                            .getValue());
4355cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                }
4356cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                try {
4357cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    tailSetIterator.next();
4358cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    fail("should throw NoSuchElementException");
4359cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                } catch (NoSuchElementException e) {
4360cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    // Expected
4361cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                }
4362cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
4363cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                tailSet = descendingSubMapEntrySet.tailSet(entry, true);
4364cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                tailSetIterator = tailSet.iterator();
4365cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                for (value = (Integer) entry.getValue(); tailSetIterator
4366cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        .hasNext(); value--) {
4367cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    assertEquals(value, ((Entry) tailSetIterator.next())
4368cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                            .getValue());
4369cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                }
4370cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                try {
4371cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    tailSetIterator.next();
4372cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    fail("should throw NoSuchElementException");
4373cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                } catch (NoSuchElementException e) {
4374cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    // Expected
4375cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                }
4376cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
4377cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
4378cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
4379cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        String endKey = new Integer(2).toString();
4380cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        entrySet = tm.headMap(endKey, true).entrySet();// 0...2
4381cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        if (entrySet instanceof NavigableSet) {
4382cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // [2...0]
4383cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            descendingSubMapEntrySet = ((NavigableSet) entrySet)
4384cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    .descendingSet();
4385cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            iterator = descendingSubMapEntrySet.iterator();
4386cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            iterator.next();// 2
4387cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            entry = (Entry) iterator.next();// 199
4388cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            tailSet = descendingSubMapEntrySet.tailSet(entry);
4389cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            tailSetIterator = tailSet.iterator();
4390cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(199, ((Entry) tailSetIterator.next()).getValue());
4391cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
4392cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            tailSet = descendingSubMapEntrySet.tailSet(entry, false);
4393cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            tailSetIterator = tailSet.iterator();
4394cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(198, ((Entry) tailSetIterator.next()).getValue());
4395cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
4396cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            tailSet = descendingSubMapEntrySet.tailSet(entry, true);
4397cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            tailSetIterator = tailSet.iterator();
4398cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(199, ((Entry) tailSetIterator.next()).getValue());
4399cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
4400cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
4401cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
4402cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_DescendingSubMapEntrySet_subSet() {
4403cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Set entrySet, subSet;
4404cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        NavigableSet descendingSubMapEntrySet;
4405cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Entry startEntry, endEntry;
4406cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Iterator subSetIterator;
4407cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
4408cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        entrySet = navigableMap_startExcluded_endExcluded.entrySet();
4409cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        if (entrySet instanceof NavigableSet) {
4410cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            descendingSubMapEntrySet = ((NavigableSet) entrySet)
4411cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    .descendingSet();
4412cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            Iterator iteratorStart = descendingSubMapEntrySet.iterator();
4413cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            while (iteratorStart.hasNext()) {
4414cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                startEntry = (Entry) iteratorStart.next();
4415cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                Iterator iteratorEnd = descendingSubMapEntrySet.iterator();
4416cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                while (iteratorEnd.hasNext()) {
4417cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    endEntry = (Entry) iteratorEnd.next();
4418cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    int startIndex = (Integer) startEntry.getValue();
4419cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    int endIndex = (Integer) endEntry.getValue();
4420cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    if (startIndex < endIndex) {
4421cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        try {
4422cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                            descendingSubMapEntrySet.subSet(startEntry,
4423cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                                    endEntry);
4424cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                            fail("should throw IllegalArgumentException");
4425cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        } catch (IllegalArgumentException e) {
4426cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                            // Expected
4427cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        }
4428cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
4429cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        try {
4430cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                            descendingSubMapEntrySet.subSet(startEntry, false,
4431cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                                    endEntry, false);
4432cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                            fail("should throw IllegalArgumentException");
4433cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        } catch (IllegalArgumentException e) {
4434cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                            // Expected
4435cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        }
4436cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
4437cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        try {
4438cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                            descendingSubMapEntrySet.subSet(startEntry, false,
4439cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                                    endEntry, true);
4440cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                            fail("should throw IllegalArgumentException");
4441cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        } catch (IllegalArgumentException e) {
4442cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                            // Expected
4443cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        }
4444cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
4445cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        try {
4446cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                            descendingSubMapEntrySet.subSet(startEntry, true,
4447cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                                    endEntry, false);
4448cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                            fail("should throw IllegalArgumentException");
4449cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        } catch (IllegalArgumentException e) {
4450cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                            // Expected
4451cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        }
4452cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
4453cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        try {
4454cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                            descendingSubMapEntrySet.subSet(startEntry, true,
4455cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                                    endEntry, true);
4456cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                            fail("should throw IllegalArgumentException");
4457cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        } catch (IllegalArgumentException e) {
4458cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                            // Expected
4459cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        }
4460cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    } else {
4461cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        subSet = descendingSubMapEntrySet.subSet(startEntry,
4462cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                                endEntry);
4463cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        subSetIterator = subSet.iterator();
4464cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        for (int index = startIndex; subSetIterator.hasNext(); index--) {
4465cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                            assertEquals(index, ((Entry) subSetIterator.next())
4466cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                                    .getValue());
4467cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        }
4468cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
4469cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        subSet = descendingSubMapEntrySet.subSet(startEntry,
4470cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                                false, endEntry, false);
4471cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        subSetIterator = subSet.iterator();
4472cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        for (int index = startIndex - 1; subSetIterator
4473cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                                .hasNext(); index--) {
4474cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                            assertEquals(index, ((Entry) subSetIterator.next())
4475cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                                    .getValue());
4476cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        }
4477cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
4478cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        subSet = descendingSubMapEntrySet.subSet(startEntry,
4479cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                                false, endEntry, true);
4480cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        subSetIterator = subSet.iterator();
4481cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        for (int index = startIndex - 1; subSetIterator
4482cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                                .hasNext(); index--) {
4483cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                            assertEquals(index, ((Entry) subSetIterator.next())
4484cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                                    .getValue());
4485cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        }
4486cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
4487cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        subSet = descendingSubMapEntrySet.subSet(startEntry,
4488cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                                true, endEntry, false);
4489cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        subSetIterator = subSet.iterator();
4490cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        for (int index = startIndex; subSetIterator.hasNext(); index--) {
4491cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                            assertEquals(index, ((Entry) subSetIterator.next())
4492cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                                    .getValue());
4493cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        }
4494cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
4495cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        subSet = descendingSubMapEntrySet.subSet(startEntry,
4496cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                                true, endEntry, true);
4497cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        subSetIterator = subSet.iterator();
4498cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        for (int index = startIndex; subSetIterator.hasNext(); index--) {
4499cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                            assertEquals(index, ((Entry) subSetIterator.next())
4500cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                                    .getValue());
4501cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        }
4502cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    }
4503cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                }
4504cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
4505cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
4506cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
4507cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        String endKey = new Integer(2).toString();
4508cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        entrySet = tm.headMap(endKey, true).entrySet();
4509cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        if (entrySet instanceof NavigableSet) {
4510cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // [2...0]
4511cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            descendingSubMapEntrySet = ((NavigableSet) entrySet)
4512cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    .descendingSet();
4513cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            Iterator iterator = descendingSubMapEntrySet.iterator();
4514cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            startEntry = (Entry) iterator.next();
4515cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            iterator.next();
4516cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            endEntry = (Entry) iterator.next();
4517cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            subSet = descendingSubMapEntrySet.subSet(startEntry, endEntry);
4518cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(2, subSet.size());
4519cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
4520cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            subSet = descendingSubMapEntrySet.subSet(startEntry, false,
4521cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    endEntry, false);
4522cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(1, subSet.size());
4523cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            subSetIterator = subSet.iterator();
4524cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(199, ((Entry) subSetIterator.next()).getValue());
4525cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
4526cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            subSet = descendingSubMapEntrySet.subSet(startEntry, false,
4527cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    endEntry, true);
4528cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(2, subSet.size());
4529cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            subSetIterator = subSet.iterator();
4530cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(199, ((Entry) subSetIterator.next()).getValue());
4531cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(198, ((Entry) subSetIterator.next()).getValue());
4532cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
4533cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            subSet = descendingSubMapEntrySet.subSet(startEntry, true,
4534cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    endEntry, false);
4535cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(2, subSet.size());
4536cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            subSetIterator = subSet.iterator();
4537cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(2, ((Entry) subSetIterator.next()).getValue());
4538cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(199, ((Entry) subSetIterator.next()).getValue());
4539cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
4540cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            subSet = descendingSubMapEntrySet.subSet(startEntry, true,
4541cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    endEntry, true);
4542cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(3, subSet.size());
4543cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            subSetIterator = subSet.iterator();
4544cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(2, ((Entry) subSetIterator.next()).getValue());
4545cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(199, ((Entry) subSetIterator.next()).getValue());
4546cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(198, ((Entry) subSetIterator.next()).getValue());
4547cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
4548cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
4549cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // With Comnparator
4550cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        entrySet = subMap_startExcluded_endExcluded_comparator.entrySet();
4551cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        if (entrySet instanceof NavigableSet) {
4552cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            descendingSubMapEntrySet = ((NavigableSet) entrySet)
4553cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    .descendingSet();
4554cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            Iterator iteratorStart = descendingSubMapEntrySet.iterator();
4555cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            while (iteratorStart.hasNext()) {
4556cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                startEntry = (Entry) iteratorStart.next();
4557cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                Iterator iteratorEnd = descendingSubMapEntrySet.iterator();
4558cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                while (iteratorEnd.hasNext()) {
4559cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    endEntry = (Entry) iteratorEnd.next();
4560cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    int startIndex = (Integer) startEntry.getValue();
4561cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    int endIndex = (Integer) endEntry.getValue();
4562cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    if (startIndex < endIndex) {
4563cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        try {
4564cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                            descendingSubMapEntrySet.subSet(startEntry,
4565cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                                    endEntry);
4566cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                            fail("should throw IllegalArgumentException");
4567cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        } catch (IllegalArgumentException e) {
4568cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                            // Expected
4569cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        }
4570cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
4571cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        try {
4572cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                            descendingSubMapEntrySet.subSet(startEntry, false,
4573cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                                    endEntry, false);
4574cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                            fail("should throw IllegalArgumentException");
4575cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        } catch (IllegalArgumentException e) {
4576cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                            // Expected
4577cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        }
4578cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
4579cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        try {
4580cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                            descendingSubMapEntrySet.subSet(startEntry, false,
4581cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                                    endEntry, true);
4582cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                            fail("should throw IllegalArgumentException");
4583cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        } catch (IllegalArgumentException e) {
4584cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                            // Expected
4585cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        }
4586cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
4587cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        try {
4588cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                            descendingSubMapEntrySet.subSet(startEntry, true,
4589cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                                    endEntry, false);
4590cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                            fail("should throw IllegalArgumentException");
4591cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        } catch (IllegalArgumentException e) {
4592cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                            // Expected
4593cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        }
4594cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
4595cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        try {
4596cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                            descendingSubMapEntrySet.subSet(startEntry, true,
4597cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                                    endEntry, true);
4598cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                            fail("should throw IllegalArgumentException");
4599cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        } catch (IllegalArgumentException e) {
4600cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                            // Expected
4601cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        }
4602cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    } else {
4603cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        subSet = descendingSubMapEntrySet.subSet(startEntry,
4604cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                                endEntry);
4605cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        subSetIterator = subSet.iterator();
4606cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        for (int index = startIndex; subSetIterator.hasNext(); index--) {
4607cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                            assertEquals(index, ((Entry) subSetIterator.next())
4608cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                                    .getValue());
4609cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        }
4610cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
4611cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        subSet = descendingSubMapEntrySet.subSet(startEntry,
4612cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                                false, endEntry, false);
4613cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        subSetIterator = subSet.iterator();
4614cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        for (int index = startIndex - 1; subSetIterator
4615cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                                .hasNext(); index--) {
4616cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                            assertEquals(index, ((Entry) subSetIterator.next())
4617cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                                    .getValue());
4618cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        }
4619cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
4620cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        subSet = descendingSubMapEntrySet.subSet(startEntry,
4621cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                                false, endEntry, true);
4622cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        subSetIterator = subSet.iterator();
4623cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        for (int index = startIndex - 1; subSetIterator
4624cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                                .hasNext(); index--) {
4625cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                            assertEquals(index, ((Entry) subSetIterator.next())
4626cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                                    .getValue());
4627cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        }
4628cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
4629cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        subSet = descendingSubMapEntrySet.subSet(startEntry,
4630cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                                true, endEntry, false);
4631cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        subSetIterator = subSet.iterator();
4632cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        for (int index = startIndex; subSetIterator.hasNext(); index--) {
4633cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                            assertEquals(index, ((Entry) subSetIterator.next())
4634cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                                    .getValue());
4635cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        }
4636cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
4637cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        subSet = descendingSubMapEntrySet.subSet(startEntry,
4638cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                                true, endEntry, true);
4639cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        subSetIterator = subSet.iterator();
4640cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        for (int index = startIndex; subSetIterator.hasNext(); index--) {
4641cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                            assertEquals(index, ((Entry) subSetIterator.next())
4642cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                                    .getValue());
4643cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        }
4644cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    }
4645cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                }
4646cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
4647cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
4648cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
4649cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
4650cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_DescendingSubMapEntrySet_lower() {
4651cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Set entrySet, subSet;
4652cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        NavigableSet descendingSubMapEntrySet;
4653cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Iterator iterator;
4654cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Entry entry, lowerEntry;
4655cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        int value;
4656cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
4657cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        entrySet = navigableMap_startExcluded_endExcluded.entrySet();
4658cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        if (entrySet instanceof NavigableSet) {
4659cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            descendingSubMapEntrySet = ((NavigableSet) entrySet)
4660cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    .descendingSet();
4661cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            iterator = descendingSubMapEntrySet.iterator();
4662cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            while (iterator.hasNext()) {
4663cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                entry = (Entry) iterator.next();
4664cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                lowerEntry = (Entry) descendingSubMapEntrySet.lower(entry);
4665cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                value = (Integer) entry.getValue();
4666cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                if (value < 108) {
4667cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    assertEquals(value + 1, lowerEntry.getValue());
4668cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                } else {
4669cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    assertNull(lowerEntry);
4670cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                }
4671cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
4672cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
4673cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // System.out.println(descendingSubMapEntrySet);
4674cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // System.out.println(tm);
4675cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            Object afterEnd = this.subMap_default_afterEnd_109.entrySet()
4676cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    .iterator().next();
4677cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // System.out.println("o:" + afterEnd);
4678cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            Object x = descendingSubMapEntrySet.lower(afterEnd);
4679cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // System.out.println("x:" + x);
4680cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertNull(x);
4681cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            Object beforeStart = this.subMap_default_beforeStart_100.entrySet()
4682cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    .iterator().next();
4683cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // System.out.println("before: " + beforeStart);
4684cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            Object y = descendingSubMapEntrySet.lower(beforeStart);
4685cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // System.out.println("y: " + y);
4686cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertNotNull(y);
4687cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(101, (((Entry) y).getValue()));
4688cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
4689cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
4690cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        entrySet = navigableMap_startExcluded_endIncluded.entrySet();
4691cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        if (entrySet instanceof NavigableSet) {
4692cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            descendingSubMapEntrySet = ((NavigableSet) entrySet)
4693cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    .descendingSet();
4694cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            iterator = descendingSubMapEntrySet.iterator();
4695cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            while (iterator.hasNext()) {
4696cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                entry = (Entry) iterator.next();
4697cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                lowerEntry = (Entry) descendingSubMapEntrySet.lower(entry);
4698cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                value = (Integer) entry.getValue();
4699cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                if (value < 109) {
4700cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    assertEquals(value + 1, lowerEntry.getValue());
4701cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                } else {
4702cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    assertNull(lowerEntry);
4703cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                }
4704cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
4705cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
4706cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
4707cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        entrySet = navigableMap_startIncluded_endExcluded.entrySet();
4708cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        if (entrySet instanceof NavigableSet) {
4709cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            descendingSubMapEntrySet = ((NavigableSet) entrySet)
4710cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    .descendingSet();
4711cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            iterator = descendingSubMapEntrySet.iterator();
4712cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            while (iterator.hasNext()) {
4713cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                entry = (Entry) iterator.next();
4714cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                lowerEntry = (Entry) descendingSubMapEntrySet.lower(entry);
4715cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                value = (Integer) entry.getValue();
4716cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                if (value < 108) {
4717cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    assertEquals(value + 1, lowerEntry.getValue());
4718cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                } else {
4719cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    assertNull(lowerEntry);
4720cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                }
4721cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
4722cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
4723cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
4724cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        entrySet = navigableMap_startIncluded_endIncluded.entrySet();
4725cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        if (entrySet instanceof NavigableSet) {
4726cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            descendingSubMapEntrySet = ((NavigableSet) entrySet)
4727cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    .descendingSet();
4728cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            iterator = descendingSubMapEntrySet.iterator();
4729cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            while (iterator.hasNext()) {
4730cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                entry = (Entry) iterator.next();
4731cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                lowerEntry = (Entry) descendingSubMapEntrySet.lower(entry);
4732cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                value = (Integer) entry.getValue();
4733cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                if (value < 109) {
4734cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    assertEquals(value + 1, lowerEntry.getValue());
4735cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                } else {
4736cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    assertNull(lowerEntry);
4737cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                }
4738cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
4739cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
4740cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
4741cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        String endKey = new Integer(2).toString();
4742cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        entrySet = tm.headMap(endKey, true).entrySet();
4743cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        if (entrySet instanceof NavigableSet) {
4744cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            descendingSubMapEntrySet = ((NavigableSet) entrySet)
4745cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    .descendingSet();
4746cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            iterator = descendingSubMapEntrySet.iterator();
4747cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            iterator.next();// 2
4748cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            iterator.next();// 199
4749cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            entry = (Entry) iterator.next();// 198
4750cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            lowerEntry = (Entry) descendingSubMapEntrySet.lower(entry);
4751cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(199, lowerEntry.getValue());
4752cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
4753cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
4754cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
4755cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_DescendingSubMapEntrySet_higher() {
4756cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Set entrySet, subSet;
4757cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        NavigableSet descendingSubMapEntrySet;
4758cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Iterator iterator;
4759cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Entry entry, higherEntry;
4760cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        int value;
4761cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
4762cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        entrySet = navigableMap_startExcluded_endExcluded.entrySet();
4763cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        if (entrySet instanceof NavigableSet) {
4764cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            descendingSubMapEntrySet = ((NavigableSet) entrySet)
4765cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    .descendingSet();
4766cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            iterator = descendingSubMapEntrySet.iterator();
4767cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            while (iterator.hasNext()) {
4768cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                entry = (Entry) iterator.next();
4769cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                higherEntry = (Entry) descendingSubMapEntrySet.higher(entry);
4770cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                value = (Integer) entry.getValue();
4771cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                if (value > 101) {
4772cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    assertEquals(value - 1, higherEntry.getValue());
4773cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                } else {
4774cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    assertNull(higherEntry);
4775cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                }
4776cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
4777cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
4778cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            Object afterEnd = this.subMap_default_afterEnd_109.entrySet()
4779cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    .iterator().next();
4780cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            Object x = descendingSubMapEntrySet.higher(afterEnd);
4781cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertNotNull(x);
4782cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(108, ((Entry) x).getValue());
4783cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            Object beforeStart = this.subMap_default_beforeStart_100.entrySet()
4784cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    .iterator().next();
4785cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            Object y = descendingSubMapEntrySet.higher(beforeStart);
4786cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertNull(y);
4787cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
4788cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
4789cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        entrySet = navigableMap_startExcluded_endIncluded.entrySet();
4790cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        if (entrySet instanceof NavigableSet) {
4791cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            descendingSubMapEntrySet = ((NavigableSet) entrySet)
4792cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    .descendingSet();
4793cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            iterator = descendingSubMapEntrySet.iterator();
4794cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            while (iterator.hasNext()) {
4795cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                entry = (Entry) iterator.next();
4796cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                higherEntry = (Entry) descendingSubMapEntrySet.higher(entry);
4797cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                value = (Integer) entry.getValue();
4798cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                if (value > 101) {
4799cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    assertEquals(value - 1, higherEntry.getValue());
4800cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                } else {
4801cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    assertNull(higherEntry);
4802cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                }
4803cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
4804cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
4805cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
4806cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        entrySet = navigableMap_startIncluded_endExcluded.entrySet();
4807cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        if (entrySet instanceof NavigableSet) {
4808cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            descendingSubMapEntrySet = ((NavigableSet) entrySet)
4809cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    .descendingSet();
4810cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            iterator = descendingSubMapEntrySet.iterator();
4811cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            while (iterator.hasNext()) {
4812cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                entry = (Entry) iterator.next();
4813cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                higherEntry = (Entry) descendingSubMapEntrySet.higher(entry);
4814cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                value = (Integer) entry.getValue();
4815cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                if (value > 100) {
4816cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    assertEquals(value - 1, higherEntry.getValue());
4817cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                } else {
4818cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    assertNull(higherEntry);
4819cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                }
4820cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
4821cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
4822cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
4823cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        entrySet = navigableMap_startIncluded_endIncluded.entrySet();
4824cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        if (entrySet instanceof NavigableSet) {
4825cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            descendingSubMapEntrySet = ((NavigableSet) entrySet)
4826cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    .descendingSet();
4827cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            iterator = descendingSubMapEntrySet.iterator();
4828cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            while (iterator.hasNext()) {
4829cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                entry = (Entry) iterator.next();
4830cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                higherEntry = (Entry) descendingSubMapEntrySet.higher(entry);
4831cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                value = (Integer) entry.getValue();
4832cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                if (value > 100) {
4833cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    assertEquals(value - 1, higherEntry.getValue());
4834cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                } else {
4835cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    assertNull(higherEntry);
4836cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                }
4837cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
4838cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
4839cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
4840cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        String endKey = new Integer(2).toString();
4841cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        entrySet = tm.headMap(endKey, true).entrySet();
4842cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        if (entrySet instanceof NavigableSet) {
4843cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            descendingSubMapEntrySet = ((NavigableSet) entrySet)
4844cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    .descendingSet();
4845cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            iterator = descendingSubMapEntrySet.iterator();
4846cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            iterator.next();// 2
4847cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            iterator.next();// 199
4848cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            entry = (Entry) iterator.next();// 198
4849cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            higherEntry = (Entry) descendingSubMapEntrySet.higher(entry);
4850cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(197, higherEntry.getValue());
4851cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
4852cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
4853cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // With Comparator
4854cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        entrySet = subMap_startExcluded_endExcluded_comparator.entrySet();
4855cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        if (entrySet instanceof NavigableSet) {
4856cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            descendingSubMapEntrySet = ((NavigableSet) entrySet)
4857cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    .descendingSet();
4858cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            iterator = descendingSubMapEntrySet.iterator();
4859cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            while (iterator.hasNext()) {
4860cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                entry = (Entry) iterator.next();
4861cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                higherEntry = (Entry) descendingSubMapEntrySet.higher(entry);
4862cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                value = (Integer) entry.getValue();
4863cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                if (value > 101) {
4864cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    assertEquals(value - 1, higherEntry.getValue());
4865cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                } else {
4866cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    assertNull(higherEntry);
4867cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                }
4868cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
4869cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
4870cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            Object afterEnd = this.subMap_default_afterEnd_109.entrySet()
4871cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    .iterator().next();
4872cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            Object x = descendingSubMapEntrySet.higher(afterEnd);
4873cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertNotNull(x);
4874cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(108, ((Entry) x).getValue());
4875cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            Object beforeStart = this.subMap_default_beforeStart_100.entrySet()
4876cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    .iterator().next();
4877cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            Object y = descendingSubMapEntrySet.higher(beforeStart);
4878cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertNull(y);
4879cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
4880cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
4881cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
4882cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_DescendingSubMapEntrySet_ceiling() {
4883cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Set entrySet;
4884cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        NavigableSet ascendingSubMapEntrySet, descendingSet;
4885cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Entry entry;
4886cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Entry[] entryArray;
4887cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
4888cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        entrySet = navigableMap_startExcluded_endExcluded.entrySet();
4889cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        if (entrySet instanceof NavigableSet) {
4890cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            ascendingSubMapEntrySet = (NavigableSet) entrySet;
4891cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            descendingSet = ascendingSubMapEntrySet.descendingSet();
4892cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            try {
4893cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                descendingSet.ceiling(null);
4894cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                fail("should throw NPE");
4895cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            } catch (NullPointerException e) {
4896cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                // Expected
4897cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
4898cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
4899cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            entryArray = (Entry[]) descendingSet
4900cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    .toArray(new Entry[descendingSet.size()]);
4901cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            for (int i = 0, j = 108; i < entryArray.length; i++) {
4902cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                entry = (Entry) descendingSet.ceiling(entryArray[i]);
4903cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                assertEquals(j - i, entry.getValue());
4904cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
4905cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
4906cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // System.out.println(descendingSet);
4907cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // System.out.println(tm);
4908cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            Object afterEnd = this.subMap_default_afterEnd_109.entrySet()
4909cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    .iterator().next();
4910cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // System.out.println("o:" + afterEnd);//110
4911cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            Object x = descendingSet.ceiling(afterEnd);
4912cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertNotNull(x);
4913cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // System.out.println("x:" + x);
4914cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(108, ((Entry) x).getValue());
4915cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            Object beforeStart = this.subMap_default_beforeStart_100.entrySet()
4916cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    .iterator().next();
4917cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // System.out.println("before: " + beforeStart);//0
4918cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            Object y = descendingSet.ceiling(beforeStart);
4919cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertNull(y);
4920cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
4921cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
4922cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        entrySet = navigableMap_startExcluded_endIncluded.entrySet();
4923cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        if (entrySet instanceof NavigableSet) {
4924cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            ascendingSubMapEntrySet = (NavigableSet) entrySet;
4925cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            descendingSet = ascendingSubMapEntrySet.descendingSet();
4926cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            try {
4927cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                descendingSet.ceiling(null);
4928cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                fail("should throw NPE");
4929cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            } catch (NullPointerException e) {
4930cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                // Expected
4931cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
4932cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
4933cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            entryArray = (Entry[]) descendingSet
4934cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    .toArray(new Entry[descendingSet.size()]);
4935cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            for (int i = 0, j = 109; i < entryArray.length; i++) {
4936cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                entry = (Entry) descendingSet.ceiling(entryArray[i]);
4937cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                assertEquals(j - i, entry.getValue());
4938cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
4939cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
4940cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
4941cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        entrySet = navigableMap_startIncluded_endExcluded.entrySet();
4942cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        if (entrySet instanceof NavigableSet) {
4943cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            ascendingSubMapEntrySet = (NavigableSet) entrySet;
4944cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            descendingSet = ascendingSubMapEntrySet.descendingSet();
4945cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            try {
4946cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                descendingSet.ceiling(null);
4947cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                fail("should throw NPE");
4948cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            } catch (NullPointerException e) {
4949cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                // Expected
4950cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
4951cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
4952cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            entryArray = (Entry[]) descendingSet
4953cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    .toArray(new Entry[descendingSet.size()]);
4954cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            for (int i = 0, j = 108; i < entryArray.length; i++) {
4955cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                entry = (Entry) descendingSet.ceiling(entryArray[i]);
4956cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                assertEquals(j - i, entry.getValue());
4957cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
4958cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
4959cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
4960cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        entrySet = navigableMap_startIncluded_endIncluded.entrySet();
4961cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        if (entrySet instanceof NavigableSet) {
4962cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            descendingSet = ((NavigableSet) entrySet).descendingSet();
4963cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            try {
4964cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                descendingSet.ceiling(null);
4965cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                fail("should throw NPE");
4966cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            } catch (NullPointerException e) {
4967cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                // Expected
4968cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
4969cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
4970cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            entryArray = (Entry[]) descendingSet
4971cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    .toArray(new Entry[descendingSet.size()]);
4972cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            for (int i = 0, j = 109; i < entryArray.length; i++) {
4973cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                entry = (Entry) descendingSet.ceiling(entryArray[i]);
4974cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                assertEquals(j - i, entry.getValue());
4975cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
4976cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
4977cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
4978cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        String endKey = new Integer(2).toString();
4979cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        entrySet = tm.headMap(endKey, true).entrySet();
4980cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        if (entrySet instanceof NavigableSet) {
4981cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            descendingSet = ((NavigableSet) entrySet).descendingSet();
4982cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            try {
4983cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                descendingSet.ceiling(null);
4984cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                fail("should throw NPE");
4985cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            } catch (NullPointerException e) {
4986cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                // Expected
4987cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
4988cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
4989cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            Iterator iterator = descendingSet.iterator();
4990cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            Entry ceilingEntry;
4991cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            while (iterator.hasNext()) {
4992cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                entry = (Entry) iterator.next();
4993cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                ceilingEntry = (Entry) descendingSet.ceiling(entry);
4994cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                assertEquals(entry, ceilingEntry);
4995cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
4996cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
4997cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
4998cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
4999cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
5000cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_DescendingSubMapEntrySet_floor() {
5001cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Set entrySet;
5002cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        NavigableSet ascendingSubMapEntrySet, descendingSet;
5003cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Entry entry;
5004cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Entry[] entryArray;
5005cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
5006cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        entrySet = navigableMap_startExcluded_endExcluded.entrySet();
5007cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        if (entrySet instanceof NavigableSet) {
5008cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            ascendingSubMapEntrySet = (NavigableSet) entrySet;
5009cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            descendingSet = ascendingSubMapEntrySet.descendingSet();
5010cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            try {
5011cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                descendingSet.floor(null);
5012cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                fail("should throw NPE");
5013cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            } catch (NullPointerException e) {
5014cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                // Expected
5015cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
5016cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
5017cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            entryArray = (Entry[]) descendingSet
5018cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    .toArray(new Entry[descendingSet.size()]);
5019cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            for (int i = 0, j = 108; i < entryArray.length; i++) {
5020cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                entry = (Entry) descendingSet.floor(entryArray[i]);
5021cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                assertEquals(j - i, entry.getValue());
5022cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
5023cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
5024cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            Object afterEnd = this.subMap_default_afterEnd_109.entrySet()
5025cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    .iterator().next();
5026cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            Object x = descendingSet.floor(afterEnd);
5027cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertNull(x);
5028cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
5029cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            Object beforeStart = this.subMap_default_beforeStart_100.entrySet()
5030cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    .iterator().next();
5031cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            Object y = descendingSet.floor(beforeStart);
5032cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertNotNull(y);
5033cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(101, (((Entry) y).getValue()));
5034cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
5035cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
5036cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        entrySet = navigableMap_startExcluded_endIncluded.entrySet();
5037cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        if (entrySet instanceof NavigableSet) {
5038cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            ascendingSubMapEntrySet = (NavigableSet) entrySet;
5039cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            descendingSet = ascendingSubMapEntrySet.descendingSet();
5040cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            try {
5041cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                descendingSet.floor(null);
5042cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                fail("should throw NPE");
5043cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            } catch (NullPointerException e) {
5044cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                // Expected
5045cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
5046cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
5047cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            entryArray = (Entry[]) descendingSet
5048cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    .toArray(new Entry[descendingSet.size()]);
5049cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            for (int i = 0, j = 109; i < entryArray.length; i++) {
5050cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                entry = (Entry) descendingSet.floor(entryArray[i]);
5051cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                assertEquals(j - i, entry.getValue());
5052cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
5053cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
5054cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
5055cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        entrySet = navigableMap_startIncluded_endExcluded.entrySet();
5056cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        if (entrySet instanceof NavigableSet) {
5057cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            ascendingSubMapEntrySet = (NavigableSet) entrySet;
5058cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            descendingSet = ascendingSubMapEntrySet.descendingSet();
5059cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            try {
5060cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                descendingSet.floor(null);
5061cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                fail("should throw NPE");
5062cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            } catch (NullPointerException e) {
5063cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                // Expected
5064cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
5065cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
5066cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            entryArray = (Entry[]) descendingSet
5067cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    .toArray(new Entry[descendingSet.size()]);
5068cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            for (int i = 0, j = 108; i < entryArray.length; i++) {
5069cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                entry = (Entry) descendingSet.floor(entryArray[i]);
5070cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                assertEquals(j - i, entry.getValue());
5071cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
5072cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
5073cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
5074cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        entrySet = navigableMap_startIncluded_endIncluded.entrySet();
5075cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        if (entrySet instanceof NavigableSet) {
5076cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            descendingSet = ((NavigableSet) entrySet).descendingSet();
5077cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            try {
5078cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                descendingSet.floor(null);
5079cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                fail("should throw NPE");
5080cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            } catch (NullPointerException e) {
5081cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                // Expected
5082cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
5083cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
5084cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            entryArray = (Entry[]) descendingSet
5085cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    .toArray(new Entry[descendingSet.size()]);
5086cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            for (int i = 0, j = 109; i < entryArray.length; i++) {
5087cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                entry = (Entry) descendingSet.floor(entryArray[i]);
5088cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                assertEquals(j - i, entry.getValue());
5089cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
5090cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
5091cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
5092cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        String endKey = new Integer(2).toString();
5093cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        entrySet = tm.headMap(endKey, true).entrySet();
5094cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        if (entrySet instanceof NavigableSet) {
5095cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            descendingSet = ((NavigableSet) entrySet).descendingSet();
5096cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
5097cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            Iterator iterator = descendingSet.iterator();
5098cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            Entry floorEntry;
5099cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            while (iterator.hasNext()) {
5100cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                entry = (Entry) iterator.next();
5101cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                floorEntry = (Entry) descendingSet.floor(entry);
5102cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                assertEquals(entry, floorEntry);
5103cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
5104cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
5105cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
5106cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // With Comparator
5107cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        entrySet = subMap_startExcluded_endExcluded_comparator.entrySet();
5108cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        if (entrySet instanceof NavigableSet) {
5109cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            ascendingSubMapEntrySet = (NavigableSet) entrySet;
5110cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            descendingSet = ascendingSubMapEntrySet.descendingSet();
5111cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            try {
5112cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                descendingSet.floor(null);
5113cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                fail("should throw NPE");
5114cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            } catch (NullPointerException e) {
5115cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                // Expected
5116cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
5117cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
5118cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            entryArray = (Entry[]) descendingSet
5119cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    .toArray(new Entry[descendingSet.size()]);
5120cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            for (int i = 0, j = 108; i < entryArray.length; i++) {
5121cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                entry = (Entry) descendingSet.floor(entryArray[i]);
5122cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                assertEquals(j - i, entry.getValue());
5123cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
5124cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
5125cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
5126cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        entrySet = subMap_startExcluded_endIncluded_comparator.entrySet();
5127cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        if (entrySet instanceof NavigableSet) {
5128cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            ascendingSubMapEntrySet = (NavigableSet) entrySet;
5129cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            descendingSet = ascendingSubMapEntrySet.descendingSet();
5130cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            try {
5131cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                descendingSet.floor(null);
5132cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                fail("should throw NPE");
5133cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            } catch (NullPointerException e) {
5134cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                // Expected
5135cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
5136cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
5137cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            entryArray = (Entry[]) descendingSet
5138cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    .toArray(new Entry[descendingSet.size()]);
5139cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            for (int i = 0, j = 109; i < entryArray.length; i++) {
5140cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                entry = (Entry) descendingSet.floor(entryArray[i]);
5141cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                assertEquals(j - i, entry.getValue());
5142cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
5143cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
5144cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
5145cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        entrySet = subMap_startIncluded_endExcluded_comparator.entrySet();
5146cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        if (entrySet instanceof NavigableSet) {
5147cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            ascendingSubMapEntrySet = (NavigableSet) entrySet;
5148cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            descendingSet = ascendingSubMapEntrySet.descendingSet();
5149cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            try {
5150cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                descendingSet.floor(null);
5151cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                fail("should throw NPE");
5152cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            } catch (NullPointerException e) {
5153cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                // Expected
5154cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
5155cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
5156cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            entryArray = (Entry[]) descendingSet
5157cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    .toArray(new Entry[descendingSet.size()]);
5158cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            for (int i = 0, j = 108; i < entryArray.length; i++) {
5159cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                entry = (Entry) descendingSet.floor(entryArray[i]);
5160cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                assertEquals(j - i, entry.getValue());
5161cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
5162cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
5163cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
5164cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        entrySet = subMap_startIncluded_endIncluded_comparator.entrySet();
5165cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        if (entrySet instanceof NavigableSet) {
5166cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            descendingSet = ((NavigableSet) entrySet).descendingSet();
5167cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            try {
5168cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                descendingSet.floor(null);
5169cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                fail("should throw NPE");
5170cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            } catch (NullPointerException e) {
5171cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                // Expected
5172cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
5173cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
5174cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            entryArray = (Entry[]) descendingSet
5175cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    .toArray(new Entry[descendingSet.size()]);
5176cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            for (int i = 0, j = 109; i < entryArray.length; i++) {
5177cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                entry = (Entry) descendingSet.floor(entryArray[i]);
5178cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                assertEquals(j - i, entry.getValue());
5179cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
5180cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
5181cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
5182cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
5183cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_DescendingSubMapKeySet_comparator() {
5184cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        NavigableSet keySet, descendingKeySet;
5185cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Comparator comparator;
5186cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        String[] keyArray;
5187cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Integer value1, value2;
5188cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
5189cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        keySet = navigableMap_startExcluded_endExcluded.navigableKeySet();
5190cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNull(keySet.comparator());
5191cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        descendingKeySet = keySet.descendingSet();
5192cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        comparator = descendingKeySet.comparator();
5193cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNotNull(comparator);
5194cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        keyArray = (String[]) descendingKeySet
5195cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .toArray(new String[descendingKeySet.size()]);
5196cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int i = 1; i < keyArray.length; i++) {
5197cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            value1 = Integer.valueOf(keyArray[i - 1]);
5198cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            value2 = Integer.valueOf(keyArray[i]);
5199cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertTrue(value1 > value2);
5200cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertTrue(comparator.compare(value1, value2) < 0);
5201cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
5202cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
5203cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        keySet = navigableMap_startExcluded_endIncluded.navigableKeySet();
5204cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNull(keySet.comparator());
5205cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        descendingKeySet = keySet.descendingSet();
5206cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        comparator = descendingKeySet.comparator();
5207cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNotNull(comparator);
5208cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        keyArray = (String[]) descendingKeySet
5209cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .toArray(new String[descendingKeySet.size()]);
5210cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int i = 1; i < keyArray.length; i++) {
5211cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            value1 = Integer.valueOf(keyArray[i - 1]);
5212cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            value2 = Integer.valueOf(keyArray[i]);
5213cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertTrue(value1 > value2);
5214cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertTrue(comparator.compare(value1, value2) < 0);
5215cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
5216cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
5217cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        keySet = navigableMap_startIncluded_endExcluded.navigableKeySet();
5218cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNull(keySet.comparator());
5219cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        descendingKeySet = keySet.descendingSet();
5220cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        comparator = descendingKeySet.comparator();
5221cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNotNull(comparator);
5222cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        keyArray = (String[]) descendingKeySet
5223cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .toArray(new String[descendingKeySet.size()]);
5224cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int i = 1; i < keyArray.length; i++) {
5225cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            value1 = Integer.valueOf(keyArray[i - 1]);
5226cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            value2 = Integer.valueOf(keyArray[i]);
5227cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertTrue(value1 > value2);
5228cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertTrue(comparator.compare(value1, value2) < 0);
5229cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
5230cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
5231cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        keySet = navigableMap_startIncluded_endIncluded.navigableKeySet();
5232cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNull(keySet.comparator());
5233cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        descendingKeySet = keySet.descendingSet();
5234cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        comparator = descendingKeySet.comparator();
5235cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNotNull(comparator);
5236cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        keyArray = (String[]) descendingKeySet
5237cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .toArray(new String[descendingKeySet.size()]);
5238cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int i = 1; i < keyArray.length; i++) {
5239cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            value1 = Integer.valueOf(keyArray[i - 1]);
5240cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            value2 = Integer.valueOf(keyArray[i]);
5241cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertTrue(value1 > value2);
5242cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertTrue(comparator.compare(value1, value2) < 0);
5243cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
5244cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
5245cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        String endKey = new Integer(2).toString();
5246cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        keySet = tm.headMap(endKey, true).navigableKeySet();
5247cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNull(keySet.comparator());
5248cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        descendingKeySet = keySet.descendingSet();
5249cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNotNull(descendingKeySet.comparator());
5250cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
5251cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
5252cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_AscendingSubMapKeySet_first() {
5253cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        NavigableSet keySet;
5254cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        String firstKey1 = new Integer(100).toString();
5255cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        String firstKey2 = new Integer(101).toString();
5256cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
5257cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        keySet = navigableMap_startExcluded_endExcluded.navigableKeySet();
5258cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(firstKey2, keySet.first());
5259cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
5260cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        keySet = navigableMap_startExcluded_endIncluded.navigableKeySet();
5261cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(firstKey2, keySet.first());
5262cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
5263cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        keySet = navigableMap_startIncluded_endExcluded.navigableKeySet();
5264cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(firstKey1, keySet.first());
5265cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
5266cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        keySet = navigableMap_startIncluded_endIncluded.navigableKeySet();
5267cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(firstKey1, keySet.first());
5268cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
5269cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
5270cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_DescendingSubMapKeySet_pollFirst_startExcluded_endExcluded() {
5271cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        NavigableSet keySet = navigableMap_startExcluded_endExcluded
5272cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .navigableKeySet();
5273cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        NavigableSet descendingKeySet = keySet.descendingSet();
5274cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Iterator iterator = descendingKeySet.iterator();
5275cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(8, keySet.size());
5276cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int value = 101; value < 109; value++) {
5277cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(new Integer(value).toString(), keySet.pollFirst());
5278cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
5279cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(0, keySet.size());
5280cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNull(keySet.pollLast());
5281cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
5282cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
5283cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_DescendingSubMapKeySet_pollFirst_startExcluded_endIncluded() {
5284cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        NavigableSet keySet = navigableMap_startExcluded_endIncluded
5285cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .navigableKeySet();
5286cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        NavigableSet descendingKeySet = keySet.descendingSet();
5287cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Iterator iterator = descendingKeySet.iterator();
5288cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(9, keySet.size());
5289cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int value = 101; value < 110; value++) {
5290cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(new Integer(value).toString(), keySet.pollFirst());
5291cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
5292cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(0, keySet.size());
5293cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNull(keySet.pollLast());
5294cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
5295cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
5296cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_DescendingSubMapKeySet_pollFirst_startIncluded_endExcluded() {
5297cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        NavigableSet keySet = navigableMap_startIncluded_endExcluded
5298cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .navigableKeySet();
5299cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        NavigableSet descendingKeySet = keySet.descendingSet();
5300cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Iterator iterator = descendingKeySet.iterator();
5301cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(9, keySet.size());
5302cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int value = 100; value < 109; value++) {
5303cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(new Integer(value).toString(), keySet.pollFirst());
5304cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
5305cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(0, keySet.size());
5306cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNull(keySet.pollLast());
5307cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
5308cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
5309cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_DescendingSubMapKeySet_pollFirst_startIncluded_endIncluded() {
5310cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        NavigableSet keySet = navigableMap_startIncluded_endIncluded
5311cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .navigableKeySet();
5312cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        NavigableSet descendingKeySet = keySet.descendingSet();
5313cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Iterator iterator = descendingKeySet.iterator();
5314cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(10, keySet.size());
5315cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int value = 100; value < 110; value++) {
5316cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(new Integer(value).toString(), keySet.pollFirst());
5317cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
5318cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(0, keySet.size());
5319cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNull(keySet.pollLast());
5320cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
5321cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
5322cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_DescendingSubMapKeySet_pollFirst() {
5323cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        String endKey = new Integer(2).toString();
5324cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        NavigableSet keySet = tm.headMap(endKey, true).navigableKeySet();
5325cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        NavigableSet descendingKeySet = keySet.descendingSet();
5326cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(endKey, descendingKeySet.pollFirst());
5327cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
5328cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
5329cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_DescendingSubMapKeySet_pollLast_startExcluded_endExcluded() {
5330cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        NavigableSet keySet = navigableMap_startExcluded_endExcluded
5331cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .navigableKeySet();
5332cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        NavigableSet descendingKeySet = keySet.descendingSet();
5333cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Iterator iterator = descendingKeySet.iterator();
5334cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(8, keySet.size());
5335cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int value = 108; value > 100; value--) {
5336cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(new Integer(value).toString(), keySet.pollLast());
5337cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
5338cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(0, keySet.size());
5339cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNull(keySet.pollLast());
5340cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
5341cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
5342cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_DescendingSubMapKeySet_pollLast_startExcluded_endIncluded() {
5343cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        NavigableSet keySet = navigableMap_startExcluded_endIncluded
5344cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .navigableKeySet();
5345cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        NavigableSet descendingKeySet = keySet.descendingSet();
5346cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Iterator iterator = descendingKeySet.iterator();
5347cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(9, keySet.size());
5348cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int value = 109; value > 100; value--) {
5349cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(new Integer(value).toString(), keySet.pollLast());
5350cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
5351cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(0, keySet.size());
5352cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNull(keySet.pollLast());
5353cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
5354cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
5355cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_DescendingSubMapKeySet_pollLast_startIncluded_endExcluded() {
5356cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        NavigableSet keySet = navigableMap_startIncluded_endExcluded
5357cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .navigableKeySet();
5358cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        NavigableSet descendingKeySet = keySet.descendingSet();
5359cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Iterator iterator = descendingKeySet.iterator();
5360cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(9, keySet.size());
5361cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int value = 108; value > 99; value--) {
5362cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(new Integer(value).toString(), keySet.pollLast());
5363cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
5364cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(0, keySet.size());
5365cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNull(keySet.pollLast());
5366cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
5367cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
5368cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_DescendingSubMapKeySet_pollLast_startIncluded_endIncluded() {
5369cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        NavigableSet keySet = navigableMap_startIncluded_endIncluded
5370cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .navigableKeySet();
5371cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        NavigableSet descendingKeySet = keySet.descendingSet();
5372cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Iterator iterator = descendingKeySet.iterator();
5373cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(10, keySet.size());
5374cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int value = 109; value > 99; value--) {
5375cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(new Integer(value).toString(), keySet.pollLast());
5376cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
5377cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(0, keySet.size());
5378cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNull(keySet.pollLast());
5379cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
5380cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
5381cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_DescendingSubMapKeySet_pollLast() {
5382cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        String endKey = new Integer(2).toString();
5383cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        NavigableSet keySet = tm.headMap(endKey, true).navigableKeySet();
5384cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        NavigableSet descendingKeySet = keySet.descendingSet();
5385cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(new Integer(0).toString(), descendingKeySet.pollLast());
5386cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
5387cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
5388cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_DescendingSubMapKeySet_headSet() {
5389cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        NavigableSet keySet, descendingKeySet;
5390cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        SortedSet headSet;
5391cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        String endKey, key;
5392cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Iterator iterator;
5393cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        int index;
5394cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
5395cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        keySet = navigableMap_startExcluded_endExcluded.navigableKeySet();
5396cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        descendingKeySet = keySet.descendingSet();
5397cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        endKey = new Integer(99).toString();
5398cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
5399cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            descendingKeySet.headSet(endKey);
5400cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
5401cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
5402cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
5403cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
5404cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
5405cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            descendingKeySet.headSet(endKey, false);
5406cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
5407cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
5408cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
5409cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
5410cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
5411cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            descendingKeySet.headSet(endKey, true);
5412cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
5413cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
5414cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
5415cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
5416cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
5417cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        endKey = new Integer(100).toString();
5418cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        headSet = descendingKeySet.headSet(endKey);
5419cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        iterator = headSet.iterator();
5420cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (index = 108; iterator.hasNext(); index--) {
5421cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            key = (String) iterator.next();
5422cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(new Integer(index).toString(), key);
5423cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
5424cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(100, index);
5425cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
5426cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        headSet = descendingKeySet.headSet(endKey, false);
5427cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        iterator = headSet.iterator();
5428cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (index = 108; iterator.hasNext(); index--) {
5429cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            key = (String) iterator.next();
5430cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(new Integer(index).toString(), key);
5431cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
5432cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(100, index);
5433cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
5434cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
5435cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            descendingKeySet.headSet(endKey, true);
5436cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
5437cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
5438cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
5439cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
5440cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
5441cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        endKey = new Integer(101).toString();
5442cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        headSet = descendingKeySet.headSet(endKey);
5443cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        iterator = headSet.iterator();
5444cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (index = 108; iterator.hasNext(); index--) {
5445cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            key = (String) iterator.next();
5446cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(new Integer(index).toString(), key);
5447cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
5448cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(101, index);
5449cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
5450cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        headSet = descendingKeySet.headSet(endKey, false);
5451cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        iterator = headSet.iterator();
5452cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (index = 108; iterator.hasNext(); index--) {
5453cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            key = (String) iterator.next();
5454cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(new Integer(index).toString(), key);
5455cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
5456cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(101, index);
5457cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
5458cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        headSet = descendingKeySet.headSet(endKey, true);
5459cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        iterator = headSet.iterator();
5460cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (index = 108; iterator.hasNext(); index--) {
5461cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            key = (String) iterator.next();
5462cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(new Integer(index).toString(), key);
5463cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
5464cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(100, index);
5465cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
5466cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int i = 102; i < 109; i++) {
5467cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            endKey = new Integer(i).toString();
5468cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            headSet = descendingKeySet.headSet(endKey);
5469cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            iterator = headSet.iterator();
5470cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            int j;
5471cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            for (j = 108; iterator.hasNext(); j--) {
5472cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                key = (String) iterator.next();
5473cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                assertEquals(new Integer(j).toString(), key);
5474cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
5475cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(i, j);
5476cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
5477cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            headSet = descendingKeySet.headSet(endKey, false);
5478cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            iterator = headSet.iterator();
5479cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            for (j = 108; iterator.hasNext(); j--) {
5480cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                key = (String) iterator.next();
5481cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                assertEquals(new Integer(j).toString(), key);
5482cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
5483cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(i, j);
5484cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
5485cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            headSet = descendingKeySet.headSet(endKey, true);
5486cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            iterator = headSet.iterator();
5487cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            for (j = 108; iterator.hasNext(); j--) {
5488cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                key = (String) iterator.next();
5489cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                assertEquals(new Integer(j).toString(), key);
5490cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
5491cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(i - 1, j);
5492cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
5493cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
5494cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        endKey = new Integer(109).toString();
5495e22b1d53d200616e59483cdbf0df0796583b1007Narayan Kamath        try {
5496e22b1d53d200616e59483cdbf0df0796583b1007Narayan Kamath            headSet = descendingKeySet.headSet(endKey);
5497e22b1d53d200616e59483cdbf0df0796583b1007Narayan Kamath            fail("should throw IllegalArgumentException");
5498e22b1d53d200616e59483cdbf0df0796583b1007Narayan Kamath        } catch (IllegalArgumentException expected) {
5499e22b1d53d200616e59483cdbf0df0796583b1007Narayan Kamath            // Expected
5500cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
5501cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
5502e22b1d53d200616e59483cdbf0df0796583b1007Narayan Kamath        try {
5503e22b1d53d200616e59483cdbf0df0796583b1007Narayan Kamath            descendingKeySet.headSet(endKey, false);
5504e22b1d53d200616e59483cdbf0df0796583b1007Narayan Kamath            fail("should throw IllegalArgumentException");
5505e22b1d53d200616e59483cdbf0df0796583b1007Narayan Kamath        } catch (IllegalArgumentException e) {
5506e22b1d53d200616e59483cdbf0df0796583b1007Narayan Kamath            // Expected
5507cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
5508cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
5509cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
5510cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            descendingKeySet.headSet(endKey, true);
5511cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
5512cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
5513cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
5514cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
5515cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
5516cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        endKey = new Integer(110).toString();
5517cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
5518cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            descendingKeySet.headSet(endKey);
5519cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
5520cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
5521cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
5522cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
5523cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
5524cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            descendingKeySet.headSet(endKey, true);
5525cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
5526cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
5527cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
5528cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
5529cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
5530cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            descendingKeySet.headSet(endKey, false);
5531cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
5532cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
5533cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
5534cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
5535cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
5536cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        keySet = navigableMap_startExcluded_endIncluded.navigableKeySet();
5537cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        descendingKeySet = keySet.descendingSet();
5538cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        endKey = new Integer(99).toString();
5539cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
5540cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            descendingKeySet.headSet(endKey);
5541cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
5542cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
5543cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
5544cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
5545cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
5546cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            descendingKeySet.headSet(endKey, false);
5547cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
5548cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
5549cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
5550cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
5551cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
5552cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            descendingKeySet.headSet(endKey, true);
5553cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
5554cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
5555cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
5556cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
5557cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
5558cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        endKey = new Integer(100).toString();
5559cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        headSet = descendingKeySet.headSet(endKey);
5560cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        iterator = headSet.iterator();
5561cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (index = 109; iterator.hasNext(); index--) {
5562cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            key = (String) iterator.next();
5563cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(new Integer(index).toString(), key);
5564cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
5565cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(100, index);
5566cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
5567cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        headSet = descendingKeySet.headSet(endKey, false);
5568cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        iterator = headSet.iterator();
5569cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (index = 109; iterator.hasNext(); index--) {
5570cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            key = (String) iterator.next();
5571cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(new Integer(index).toString(), key);
5572cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
5573cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(100, index);
5574cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
5575cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
5576cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            descendingKeySet.headSet(endKey, true);
5577cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
5578cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
5579cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
5580cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
5581cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
5582cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        endKey = new Integer(101).toString();
5583cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        headSet = descendingKeySet.headSet(endKey);
5584cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        iterator = headSet.iterator();
5585cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (index = 109; iterator.hasNext(); index--) {
5586cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            key = (String) iterator.next();
5587cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(new Integer(index).toString(), key);
5588cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
5589cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(101, index);
5590cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
5591cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        headSet = descendingKeySet.headSet(endKey, false);
5592cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        iterator = headSet.iterator();
5593cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (index = 109; iterator.hasNext(); index--) {
5594cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            key = (String) iterator.next();
5595cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(new Integer(index).toString(), key);
5596cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
5597cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(101, index);
5598cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
5599cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        headSet = descendingKeySet.headSet(endKey, true);
5600cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        iterator = headSet.iterator();
5601cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (index = 109; iterator.hasNext(); index--) {
5602cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            key = (String) iterator.next();
5603cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(new Integer(index).toString(), key);
5604cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
5605cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(100, index);
5606cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
5607cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int i = 102; i < 109; i++) {
5608cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            endKey = new Integer(i).toString();
5609cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            headSet = descendingKeySet.headSet(endKey);
5610cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            iterator = headSet.iterator();
5611cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            int j;
5612cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            for (j = 109; iterator.hasNext(); j--) {
5613cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                key = (String) iterator.next();
5614cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                assertEquals(new Integer(j).toString(), key);
5615cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
5616cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(i, j);
5617cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
5618cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            headSet = descendingKeySet.headSet(endKey, false);
5619cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            iterator = headSet.iterator();
5620cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            for (j = 109; iterator.hasNext(); j--) {
5621cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                key = (String) iterator.next();
5622cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                assertEquals(new Integer(j).toString(), key);
5623cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
5624cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(i, j);
5625cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
5626cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            headSet = descendingKeySet.headSet(endKey, true);
5627cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            iterator = headSet.iterator();
5628cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            for (j = 109; iterator.hasNext(); j--) {
5629cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                key = (String) iterator.next();
5630cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                assertEquals(new Integer(j).toString(), key);
5631cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
5632cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(i - 1, j);
5633cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
5634cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
5635cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        endKey = new Integer(109).toString();
5636cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        headSet = descendingKeySet.headSet(endKey);
5637cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        iterator = headSet.iterator();
5638cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (index = 109; iterator.hasNext(); index--) {
5639cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            key = (String) iterator.next();
5640cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(new Integer(index).toString(), key);
5641cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
5642cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(109, index);
5643cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
5644cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        headSet = descendingKeySet.headSet(endKey, false);
5645cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        iterator = headSet.iterator();
5646cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (index = 109; iterator.hasNext(); index--) {
5647cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            key = (String) iterator.next();
5648cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(new Integer(index).toString(), key);
5649cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
5650cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(109, index);
5651cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
5652cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        headSet = descendingKeySet.headSet(endKey, true);
5653cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        iterator = headSet.iterator();
5654cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (index = 109; iterator.hasNext(); index--) {
5655cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            key = (String) iterator.next();
5656cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(new Integer(index).toString(), key);
5657cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
5658cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(108, index);
5659cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
5660cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        endKey = new Integer(110).toString();
5661cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
5662cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            descendingKeySet.headSet(endKey);
5663cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
5664cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
5665cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
5666cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
5667cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
5668cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            descendingKeySet.headSet(endKey, true);
5669cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
5670cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
5671cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
5672cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
5673cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
5674cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            descendingKeySet.headSet(endKey, false);
5675cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
5676cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
5677cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
5678cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
5679cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
5680cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        keySet = navigableMap_startIncluded_endExcluded.navigableKeySet();
5681cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        descendingKeySet = keySet.descendingSet();
5682cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        endKey = new Integer(99).toString();
5683cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
5684cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            descendingKeySet.headSet(endKey);
5685cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
5686cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
5687cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
5688cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
5689cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
5690cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            descendingKeySet.headSet(endKey, false);
5691cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
5692cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
5693cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
5694cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
5695cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
5696cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            descendingKeySet.headSet(endKey, true);
5697cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
5698cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
5699cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
5700cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
5701cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
5702cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        endKey = new Integer(100).toString();
5703cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        headSet = descendingKeySet.headSet(endKey);
5704cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        iterator = headSet.iterator();
5705cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (index = 108; iterator.hasNext(); index--) {
5706cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            key = (String) iterator.next();
5707cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(new Integer(index).toString(), key);
5708cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
5709cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(100, index);
5710cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
5711cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        headSet = descendingKeySet.headSet(endKey, false);
5712cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        iterator = headSet.iterator();
5713cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (index = 108; iterator.hasNext(); index--) {
5714cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            key = (String) iterator.next();
5715cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(new Integer(index).toString(), key);
5716cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
5717cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(100, index);
5718cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
5719cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        headSet = descendingKeySet.headSet(endKey, true);
5720cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        iterator = headSet.iterator();
5721cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (index = 108; iterator.hasNext(); index--) {
5722cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            key = (String) iterator.next();
5723cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(new Integer(index).toString(), key);
5724cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
5725cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(99, index);
5726cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
5727cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        endKey = new Integer(101).toString();
5728cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        headSet = descendingKeySet.headSet(endKey);
5729cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        iterator = headSet.iterator();
5730cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (index = 108; iterator.hasNext(); index--) {
5731cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            key = (String) iterator.next();
5732cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(new Integer(index).toString(), key);
5733cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
5734cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(101, index);
5735cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
5736cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        headSet = descendingKeySet.headSet(endKey, false);
5737cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        iterator = headSet.iterator();
5738cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (index = 108; iterator.hasNext(); index--) {
5739cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            key = (String) iterator.next();
5740cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(new Integer(index).toString(), key);
5741cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
5742cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(101, index);
5743cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
5744cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        headSet = descendingKeySet.headSet(endKey, true);
5745cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        iterator = headSet.iterator();
5746cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (index = 108; iterator.hasNext(); index--) {
5747cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            key = (String) iterator.next();
5748cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(new Integer(index).toString(), key);
5749cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
5750cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(100, index);
5751cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
5752cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int i = 102; i < 109; i++) {
5753cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            endKey = new Integer(i).toString();
5754cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            headSet = descendingKeySet.headSet(endKey);
5755cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            iterator = headSet.iterator();
5756cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            int j;
5757cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            for (j = 108; iterator.hasNext(); j--) {
5758cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                key = (String) iterator.next();
5759cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                assertEquals(new Integer(j).toString(), key);
5760cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
5761cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(i, j);
5762cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
5763cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            headSet = descendingKeySet.headSet(endKey, false);
5764cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            iterator = headSet.iterator();
5765cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            for (j = 108; iterator.hasNext(); j--) {
5766cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                key = (String) iterator.next();
5767cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                assertEquals(new Integer(j).toString(), key);
5768cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
5769cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(i, j);
5770cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
5771cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            headSet = descendingKeySet.headSet(endKey, true);
5772cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            iterator = headSet.iterator();
5773cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            for (j = 108; iterator.hasNext(); j--) {
5774cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                key = (String) iterator.next();
5775cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                assertEquals(new Integer(j).toString(), key);
5776cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
5777cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(i - 1, j);
5778cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
5779cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
5780cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        endKey = new Integer(109).toString();
5781e22b1d53d200616e59483cdbf0df0796583b1007Narayan Kamath
5782e22b1d53d200616e59483cdbf0df0796583b1007Narayan Kamath        try {
5783e22b1d53d200616e59483cdbf0df0796583b1007Narayan Kamath            descendingKeySet.headSet(endKey);
5784e22b1d53d200616e59483cdbf0df0796583b1007Narayan Kamath            fail("should throw IllegalArgumentException");
5785e22b1d53d200616e59483cdbf0df0796583b1007Narayan Kamath        } catch (IllegalArgumentException e) {
5786e22b1d53d200616e59483cdbf0df0796583b1007Narayan Kamath            // Expected
5787cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
5788cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
5789e22b1d53d200616e59483cdbf0df0796583b1007Narayan Kamath        try {
5790e22b1d53d200616e59483cdbf0df0796583b1007Narayan Kamath            descendingKeySet.headSet(endKey, false);
5791e22b1d53d200616e59483cdbf0df0796583b1007Narayan Kamath            fail("should throw IllegalArgumentException");
5792e22b1d53d200616e59483cdbf0df0796583b1007Narayan Kamath        } catch (IllegalArgumentException e) {
5793e22b1d53d200616e59483cdbf0df0796583b1007Narayan Kamath            // Expected
5794cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
5795cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
5796cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
5797cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            descendingKeySet.headSet(endKey, true);
5798cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
5799cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
5800cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
5801cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
5802cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
5803cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        endKey = new Integer(110).toString();
5804cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
5805cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            descendingKeySet.headSet(endKey);
5806cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
5807cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
5808cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
5809cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
5810cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
5811cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            descendingKeySet.headSet(endKey, true);
5812cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
5813cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
5814cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
5815cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
5816cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
5817cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            descendingKeySet.headSet(endKey, false);
5818cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
5819cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
5820cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
5821cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
5822cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
5823cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        keySet = navigableMap_startIncluded_endIncluded.navigableKeySet();
5824cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        descendingKeySet = keySet.descendingSet();
5825cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        endKey = new Integer(99).toString();
5826cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
5827cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            descendingKeySet.headSet(endKey);
5828cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
5829cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
5830cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
5831cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
5832cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
5833cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            descendingKeySet.headSet(endKey, false);
5834cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
5835cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
5836cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
5837cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
5838cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
5839cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            descendingKeySet.headSet(endKey, true);
5840cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
5841cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
5842cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
5843cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
5844cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
5845cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        endKey = new Integer(100).toString();
5846cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        headSet = descendingKeySet.headSet(endKey);
5847cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        iterator = headSet.iterator();
5848cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (index = 109; iterator.hasNext(); index--) {
5849cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            key = (String) iterator.next();
5850cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(new Integer(index).toString(), key);
5851cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
5852cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(100, index);
5853cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
5854cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        headSet = descendingKeySet.headSet(endKey, false);
5855cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        iterator = headSet.iterator();
5856cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (index = 109; iterator.hasNext(); index--) {
5857cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            key = (String) iterator.next();
5858cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(new Integer(index).toString(), key);
5859cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
5860cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(100, index);
5861cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
5862cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        headSet = descendingKeySet.headSet(endKey, true);
5863cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        iterator = headSet.iterator();
5864cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (index = 109; iterator.hasNext(); index--) {
5865cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            key = (String) iterator.next();
5866cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(new Integer(index).toString(), key);
5867cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
5868cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(99, index);
5869cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
5870cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        endKey = new Integer(101).toString();
5871cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        headSet = descendingKeySet.headSet(endKey);
5872cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        iterator = headSet.iterator();
5873cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (index = 109; iterator.hasNext(); index--) {
5874cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            key = (String) iterator.next();
5875cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(new Integer(index).toString(), key);
5876cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
5877cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(101, index);
5878cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
5879cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        headSet = descendingKeySet.headSet(endKey, false);
5880cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        iterator = headSet.iterator();
5881cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (index = 109; iterator.hasNext(); index--) {
5882cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            key = (String) iterator.next();
5883cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(new Integer(index).toString(), key);
5884cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
5885cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(101, index);
5886cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
5887cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        headSet = descendingKeySet.headSet(endKey, true);
5888cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        iterator = headSet.iterator();
5889cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (index = 109; iterator.hasNext(); index--) {
5890cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            key = (String) iterator.next();
5891cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(new Integer(index).toString(), key);
5892cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
5893cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(100, index);
5894cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
5895cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int i = 102; i < 109; i++) {
5896cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            endKey = new Integer(i).toString();
5897cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            headSet = descendingKeySet.headSet(endKey);
5898cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            iterator = headSet.iterator();
5899cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            int j;
5900cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            for (j = 109; iterator.hasNext(); j--) {
5901cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                key = (String) iterator.next();
5902cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                assertEquals(new Integer(j).toString(), key);
5903cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
5904cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(i, j);
5905cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
5906cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            headSet = descendingKeySet.headSet(endKey, false);
5907cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            iterator = headSet.iterator();
5908cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            for (j = 109; iterator.hasNext(); j--) {
5909cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                key = (String) iterator.next();
5910cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                assertEquals(new Integer(j).toString(), key);
5911cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
5912cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(i, j);
5913cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
5914cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            headSet = descendingKeySet.headSet(endKey, true);
5915cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            iterator = headSet.iterator();
5916cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            for (j = 109; iterator.hasNext(); j--) {
5917cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                key = (String) iterator.next();
5918cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                assertEquals(new Integer(j).toString(), key);
5919cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
5920cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(i - 1, j);
5921cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
5922cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
5923cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        endKey = new Integer(109).toString();
5924cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        headSet = descendingKeySet.headSet(endKey);
5925cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        iterator = headSet.iterator();
5926cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (index = 109; iterator.hasNext(); index--) {
5927cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            key = (String) iterator.next();
5928cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(new Integer(index).toString(), key);
5929cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
5930cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(109, index);
5931cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
5932cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        headSet = descendingKeySet.headSet(endKey, false);
5933cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        iterator = headSet.iterator();
5934cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (index = 109; iterator.hasNext(); index--) {
5935cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            key = (String) iterator.next();
5936cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(new Integer(index).toString(), key);
5937cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
5938cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(109, index);
5939cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
5940cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        headSet = descendingKeySet.headSet(endKey, true);
5941cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        iterator = headSet.iterator();
5942cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (index = 109; iterator.hasNext(); index--) {
5943cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            key = (String) iterator.next();
5944cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(new Integer(index).toString(), key);
5945cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
5946cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(108, index);
5947cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
5948cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        endKey = new Integer(110).toString();
5949cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
5950cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            descendingKeySet.headSet(endKey);
5951cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
5952cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
5953cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
5954cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
5955cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
5956cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            descendingKeySet.headSet(endKey, true);
5957cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
5958cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
5959cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
5960cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
5961cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
5962cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            descendingKeySet.headSet(endKey, false);
5963cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
5964cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
5965cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
5966cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
5967cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
5968cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = new Integer(2).toString();
5969cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        keySet = tm.headMap(key, true).navigableKeySet();
5970cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        descendingKeySet = keySet.descendingSet();
5971cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        iterator = descendingKeySet.iterator();
5972cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        iterator.next();
5973cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        endKey = (String) iterator.next();
5974cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
5975cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        headSet = descendingKeySet.headSet(endKey);
5976cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(1, headSet.size());
5977cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
5978cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        headSet = descendingKeySet.headSet(endKey, false);
5979cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(1, headSet.size());
5980cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
5981cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        headSet = descendingKeySet.headSet(endKey, true);
5982cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(2, headSet.size());
5983cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
5984cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = new Integer(2).toString();
5985cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        keySet = tm.tailMap(key, true).navigableKeySet();
5986cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        descendingKeySet = keySet.descendingSet();
5987cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        iterator = descendingKeySet.iterator();
5988cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        iterator.next();
5989cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        endKey = (String) iterator.next();
5990cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        headSet = descendingKeySet.headSet(endKey);
5991cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(1, headSet.size());
5992cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        iterator = headSet.iterator();
5993cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(999, Integer.parseInt((String) iterator.next()));
5994cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
5995cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
5996cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_DescendingSubMapKeySet_tailSet() {
5997cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        NavigableSet keySet, descendingKeySet;
5998cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        SortedSet tailSet;
5999cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        String startKey, key;
6000cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Iterator iterator;
6001cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        int index;
6002cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
6003cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        keySet = navigableMap_startExcluded_endExcluded.navigableKeySet();
6004cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        descendingKeySet = keySet.descendingSet();
6005cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        startKey = new Integer(99).toString();
6006cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
6007cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            descendingKeySet.tailSet(startKey);
6008cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
6009cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
6010cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
6011cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
6012cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
6013cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
6014cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            descendingKeySet.tailSet(startKey, true);
6015cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
6016cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
6017cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
6018cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
6019cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
6020cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
6021cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            descendingKeySet.tailSet(startKey, false);
6022cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
6023cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
6024cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
6025cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
6026cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
6027cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        startKey = new Integer(100).toString();
6028cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
6029cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            descendingKeySet.tailSet(startKey);
6030cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
6031cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
6032cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
6033cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
6034cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
6035cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            descendingKeySet.tailSet(startKey, true);
6036cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
6037cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
6038cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
6039cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
6040e22b1d53d200616e59483cdbf0df0796583b1007Narayan Kamath
6041e22b1d53d200616e59483cdbf0df0796583b1007Narayan Kamath        try {
6042e22b1d53d200616e59483cdbf0df0796583b1007Narayan Kamath            descendingKeySet.tailSet(startKey, false);
6043e22b1d53d200616e59483cdbf0df0796583b1007Narayan Kamath            fail("should throw IllegalArgumentException");
6044e22b1d53d200616e59483cdbf0df0796583b1007Narayan Kamath        } catch (IllegalArgumentException e) {
6045e22b1d53d200616e59483cdbf0df0796583b1007Narayan Kamath            // Expected
6046e22b1d53d200616e59483cdbf0df0796583b1007Narayan Kamath        }
6047cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
6048cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        startKey = new Integer(101).toString();
6049cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        tailSet = descendingKeySet.tailSet(startKey);
6050cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        iterator = tailSet.iterator();
6051cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (index = 101; iterator.hasNext(); index--) {
6052cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            key = (String) iterator.next();
6053cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(new Integer(index).toString(), key);
6054cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
6055cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(100, index);
6056cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
6057cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        tailSet = descendingKeySet.tailSet(startKey, true);
6058cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        iterator = tailSet.iterator();
6059cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (index = 101; iterator.hasNext(); index--) {
6060cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            key = (String) iterator.next();
6061cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(new Integer(index).toString(), key);
6062cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
6063cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(100, index);
6064cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
6065cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        tailSet = descendingKeySet.tailSet(startKey, false);
6066cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        iterator = tailSet.iterator();
6067cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (index = 101; iterator.hasNext(); index--) {
6068cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            key = (String) iterator.next();
6069cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(new Integer(index).toString(), key);
6070cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
6071cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(101, index);
6072cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
6073cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int i = 102; i < 109; i++) {
6074cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            startKey = new Integer(i).toString();
6075cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
6076cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            tailSet = descendingKeySet.tailSet(startKey);
6077cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            iterator = tailSet.iterator();
6078cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            int j;
6079cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            for (j = i; iterator.hasNext(); j--) {
6080cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                key = (String) iterator.next();
6081cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                assertEquals(new Integer(j).toString(), key);
6082cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
6083cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(100, j);
6084cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
6085cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            tailSet = descendingKeySet.tailSet(startKey, true);
6086cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            iterator = tailSet.iterator();
6087cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            for (j = i; iterator.hasNext(); j--) {
6088cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                key = (String) iterator.next();
6089cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                assertEquals(new Integer(j).toString(), key);
6090cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
6091cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(100, j);
6092cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
6093cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            tailSet = descendingKeySet.tailSet(startKey, false);
6094cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            iterator = tailSet.iterator();
6095cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            for (j = i; iterator.hasNext(); j--) {
6096cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                key = (String) iterator.next();
6097cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                assertEquals(new Integer(j - 1).toString(), key);
6098cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
6099cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(101, j);
6100cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
6101cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
6102cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        startKey = new Integer(109).toString();
6103cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
6104cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            descendingKeySet.tailSet(startKey);
6105cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
6106cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
6107cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
6108cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
6109cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
6110cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            descendingKeySet.tailSet(startKey, true);
6111cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
6112cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
6113cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
6114cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
6115cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        tailSet = descendingKeySet.tailSet(startKey, false);
6116cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        iterator = tailSet.iterator();
6117cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (index = 109; iterator.hasNext(); index--) {
6118cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            key = (String) iterator.next();
6119cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(new Integer(index - 1).toString(), key);
6120cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
6121cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(101, index);
6122cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
6123cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        startKey = new Integer(110).toString();
6124cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
6125cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            descendingKeySet.tailSet(startKey);
6126cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
6127cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
6128cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
6129cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
6130cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
6131cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            descendingKeySet.tailSet(startKey, true);
6132cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
6133cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
6134cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
6135cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
6136cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
6137cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            descendingKeySet.tailSet(startKey, false);
6138cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
6139cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
6140cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
6141cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
6142cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
6143cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        keySet = navigableMap_startExcluded_endIncluded.navigableKeySet();
6144cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        descendingKeySet = keySet.descendingSet();
6145cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        startKey = new Integer(99).toString();
6146cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
6147cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            descendingKeySet.tailSet(startKey);
6148cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
6149cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
6150cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
6151cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
6152cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
6153cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
6154cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            descendingKeySet.tailSet(startKey, true);
6155cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
6156cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
6157cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
6158cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
6159cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
6160cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
6161cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            descendingKeySet.tailSet(startKey, false);
6162cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
6163cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
6164cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
6165cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
6166cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
6167cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        startKey = new Integer(100).toString();
6168cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
6169cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            descendingKeySet.tailSet(startKey);
6170cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
6171cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
6172cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
6173cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
6174cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
6175cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            descendingKeySet.tailSet(startKey, true);
6176cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
6177cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
6178cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
6179cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
6180e22b1d53d200616e59483cdbf0df0796583b1007Narayan Kamath        try {
6181e22b1d53d200616e59483cdbf0df0796583b1007Narayan Kamath            descendingKeySet.tailSet(startKey, false);
6182e22b1d53d200616e59483cdbf0df0796583b1007Narayan Kamath            fail("should throw IllegalArgumentException");
6183e22b1d53d200616e59483cdbf0df0796583b1007Narayan Kamath        } catch (IllegalArgumentException e) {
6184e22b1d53d200616e59483cdbf0df0796583b1007Narayan Kamath            // Expected
6185e22b1d53d200616e59483cdbf0df0796583b1007Narayan Kamath        }
6186cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
6187cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        startKey = new Integer(101).toString();
6188cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        tailSet = descendingKeySet.tailSet(startKey);
6189cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        iterator = tailSet.iterator();
6190cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (index = 101; iterator.hasNext(); index--) {
6191cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            key = (String) iterator.next();
6192cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(new Integer(index).toString(), key);
6193cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
6194cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(100, index);
6195cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
6196cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        tailSet = descendingKeySet.tailSet(startKey, true);
6197cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        iterator = tailSet.iterator();
6198cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (index = 101; iterator.hasNext(); index--) {
6199cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            key = (String) iterator.next();
6200cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(new Integer(index).toString(), key);
6201cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
6202cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(100, index);
6203cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
6204cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        tailSet = descendingKeySet.tailSet(startKey, false);
6205cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        iterator = tailSet.iterator();
6206cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (index = 101; iterator.hasNext(); index--) {
6207cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            key = (String) iterator.next();
6208cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(new Integer(index).toString(), key);
6209cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
6210cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(101, index);
6211cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
6212cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int i = 102; i < 109; i++) {
6213cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            startKey = new Integer(i).toString();
6214cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
6215cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            tailSet = descendingKeySet.tailSet(startKey);
6216cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            iterator = tailSet.iterator();
6217cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            int j;
6218cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            for (j = i; iterator.hasNext(); j--) {
6219cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                key = (String) iterator.next();
6220cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                assertEquals(new Integer(j).toString(), key);
6221cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
6222cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(100, j);
6223cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
6224cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            tailSet = descendingKeySet.tailSet(startKey, true);
6225cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            iterator = tailSet.iterator();
6226cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            for (j = i; iterator.hasNext(); j--) {
6227cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                key = (String) iterator.next();
6228cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                assertEquals(new Integer(j).toString(), key);
6229cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
6230cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(100, j);
6231cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
6232cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            tailSet = descendingKeySet.tailSet(startKey, false);
6233cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            iterator = tailSet.iterator();
6234cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            for (j = i; iterator.hasNext(); j--) {
6235cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                key = (String) iterator.next();
6236cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                assertEquals(new Integer(j - 1).toString(), key);
6237cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
6238cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(101, j);
6239cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
6240cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
6241cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        startKey = new Integer(109).toString();
6242cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        tailSet = descendingKeySet.tailSet(startKey);
6243cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        iterator = tailSet.iterator();
6244cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (index = 109; iterator.hasNext(); index--) {
6245cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            key = (String) iterator.next();
6246cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(new Integer(index).toString(), key);
6247cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
6248cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(100, index);
6249cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
6250cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        tailSet = descendingKeySet.tailSet(startKey, true);
6251cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        iterator = tailSet.iterator();
6252cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (index = 109; iterator.hasNext(); index--) {
6253cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            key = (String) iterator.next();
6254cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(new Integer(index).toString(), key);
6255cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
6256cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(100, index);
6257cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
6258cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        tailSet = descendingKeySet.tailSet(startKey, false);
6259cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        iterator = tailSet.iterator();
6260cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (index = 109; iterator.hasNext(); index--) {
6261cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            key = (String) iterator.next();
6262cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(new Integer(index - 1).toString(), key);
6263cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
6264cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(101, index);
6265cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
6266cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        startKey = new Integer(110).toString();
6267cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
6268cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            descendingKeySet.tailSet(startKey);
6269cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
6270cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
6271cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
6272cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
6273cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
6274cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            descendingKeySet.tailSet(startKey, true);
6275cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
6276cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
6277cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
6278cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
6279cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
6280cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            descendingKeySet.tailSet(startKey, false);
6281cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
6282cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
6283cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
6284cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
6285cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
6286cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        keySet = navigableMap_startIncluded_endExcluded.navigableKeySet();
6287cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        descendingKeySet = keySet.descendingSet();
6288cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        startKey = new Integer(99).toString();
6289cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
6290cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            descendingKeySet.tailSet(startKey);
6291cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
6292cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
6293cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
6294cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
6295cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
6296cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            descendingKeySet.tailSet(startKey, true);
6297cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
6298cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
6299cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
6300cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
6301cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
6302cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            descendingKeySet.tailSet(startKey, false);
6303cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
6304cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
6305cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
6306cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
6307cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
6308cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        startKey = new Integer(100).toString();
6309cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        tailSet = descendingKeySet.tailSet(startKey);
6310cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(1, tailSet.size());
6311cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        iterator = tailSet.iterator();
6312cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(startKey, iterator.next());
6313cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
6314cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        tailSet = descendingKeySet.tailSet(startKey, true);
6315cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(1, tailSet.size());
6316cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        iterator = tailSet.iterator();
6317cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(startKey, iterator.next());
6318cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
6319cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        tailSet = descendingKeySet.tailSet(startKey, false);
6320cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(0, tailSet.size());
6321cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
6322cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        startKey = new Integer(101).toString();
6323cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        tailSet = descendingKeySet.tailSet(startKey);
6324cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        iterator = tailSet.iterator();
6325cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (index = 101; iterator.hasNext(); index--) {
6326cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            key = (String) iterator.next();
6327cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(new Integer(index).toString(), key);
6328cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
6329cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(99, index);
6330cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
6331cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        tailSet = descendingKeySet.tailSet(startKey, true);
6332cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        iterator = tailSet.iterator();
6333cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (index = 101; iterator.hasNext(); index--) {
6334cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            key = (String) iterator.next();
6335cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(new Integer(index).toString(), key);
6336cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
6337cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(99, index);
6338cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
6339cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        tailSet = descendingKeySet.tailSet(startKey, false);
6340cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        iterator = tailSet.iterator();
6341cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (index = 101; iterator.hasNext(); index--) {
6342cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            key = (String) iterator.next();
6343cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(new Integer(index - 1).toString(), key);
6344cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
6345cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(100, index);
6346cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
6347cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int i = 102; i < 109; i++) {
6348cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            startKey = new Integer(i).toString();
6349cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
6350cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            tailSet = descendingKeySet.tailSet(startKey);
6351cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            iterator = tailSet.iterator();
6352cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            int j;
6353cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            for (j = i; iterator.hasNext(); j--) {
6354cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                key = (String) iterator.next();
6355cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                assertEquals(new Integer(j).toString(), key);
6356cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
6357cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(99, j);
6358cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
6359cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            tailSet = descendingKeySet.tailSet(startKey, true);
6360cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            iterator = tailSet.iterator();
6361cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            for (j = i; iterator.hasNext(); j--) {
6362cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                key = (String) iterator.next();
6363cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                assertEquals(new Integer(j).toString(), key);
6364cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
6365cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(99, j);
6366cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
6367cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            tailSet = descendingKeySet.tailSet(startKey, false);
6368cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            iterator = tailSet.iterator();
6369cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            for (j = i; iterator.hasNext(); j--) {
6370cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                key = (String) iterator.next();
6371cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                assertEquals(new Integer(j - 1).toString(), key);
6372cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
6373cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(100, j);
6374cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
6375cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
6376cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        startKey = new Integer(109).toString();
6377cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
6378cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            descendingKeySet.tailSet(startKey);
6379cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
6380cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
6381cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
6382cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
6383cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
6384cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            descendingKeySet.tailSet(startKey, true);
6385cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
6386cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
6387cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
6388cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
6389cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        tailSet = descendingKeySet.tailSet(startKey, false);
6390cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        iterator = tailSet.iterator();
6391cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (index = 109; iterator.hasNext(); index--) {
6392cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            key = (String) iterator.next();
6393cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(new Integer(index - 1).toString(), key);
6394cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
6395cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(100, index);
6396cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
6397cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        startKey = new Integer(110).toString();
6398cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
6399cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            descendingKeySet.tailSet(startKey);
6400cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
6401cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
6402cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
6403cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
6404cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
6405cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            descendingKeySet.tailSet(startKey, true);
6406cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
6407cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
6408cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
6409cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
6410cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
6411cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            descendingKeySet.tailSet(startKey, false);
6412cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
6413cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
6414cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
6415cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
6416cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
6417cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        keySet = navigableMap_startIncluded_endIncluded.navigableKeySet();
6418cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        descendingKeySet = keySet.descendingSet();
6419cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        startKey = new Integer(99).toString();
6420cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
6421cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            descendingKeySet.tailSet(startKey);
6422cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
6423cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
6424cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
6425cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
6426cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
6427cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            descendingKeySet.tailSet(startKey, true);
6428cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
6429cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
6430cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
6431cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
6432cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
6433cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            descendingKeySet.tailSet(startKey, false);
6434cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
6435cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
6436cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
6437cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
6438cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
6439cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        startKey = new Integer(100).toString();
6440cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        tailSet = descendingKeySet.tailSet(startKey);
6441cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(1, tailSet.size());
6442cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        iterator = tailSet.iterator();
6443cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(startKey, iterator.next());
6444cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
6445cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        tailSet = descendingKeySet.tailSet(startKey, true);
6446cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(1, tailSet.size());
6447cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        iterator = tailSet.iterator();
6448cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(startKey, iterator.next());
6449cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
6450cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        tailSet = descendingKeySet.tailSet(startKey, false);
6451cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(0, tailSet.size());
6452cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
6453cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        startKey = new Integer(101).toString();
6454cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        tailSet = descendingKeySet.tailSet(startKey);
6455cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        iterator = tailSet.iterator();
6456cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (index = 101; iterator.hasNext(); index--) {
6457cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            key = (String) iterator.next();
6458cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(new Integer(index).toString(), key);
6459cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
6460cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(99, index);
6461cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
6462cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        tailSet = descendingKeySet.tailSet(startKey, true);
6463cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        iterator = tailSet.iterator();
6464cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (index = 101; iterator.hasNext(); index--) {
6465cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            key = (String) iterator.next();
6466cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(new Integer(index).toString(), key);
6467cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
6468cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(99, index);
6469cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
6470cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        tailSet = descendingKeySet.tailSet(startKey, false);
6471cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        iterator = tailSet.iterator();
6472cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (index = 101; iterator.hasNext(); index--) {
6473cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            key = (String) iterator.next();
6474cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(new Integer(index - 1).toString(), key);
6475cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
6476cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(100, index);
6477cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
6478cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int i = 102; i < 109; i++) {
6479cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            startKey = new Integer(i).toString();
6480cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
6481cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            tailSet = descendingKeySet.tailSet(startKey);
6482cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            iterator = tailSet.iterator();
6483cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            int j;
6484cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            for (j = i; iterator.hasNext(); j--) {
6485cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                key = (String) iterator.next();
6486cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                assertEquals(new Integer(j).toString(), key);
6487cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
6488cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(99, j);
6489cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
6490cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            tailSet = descendingKeySet.tailSet(startKey, true);
6491cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            iterator = tailSet.iterator();
6492cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            for (j = i; iterator.hasNext(); j--) {
6493cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                key = (String) iterator.next();
6494cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                assertEquals(new Integer(j).toString(), key);
6495cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
6496cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(99, j);
6497cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
6498cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            tailSet = descendingKeySet.tailSet(startKey, false);
6499cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            iterator = tailSet.iterator();
6500cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            for (j = i; iterator.hasNext(); j--) {
6501cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                key = (String) iterator.next();
6502cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                assertEquals(new Integer(j - 1).toString(), key);
6503cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
6504cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(100, j);
6505cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
6506cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
6507cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        startKey = new Integer(109).toString();
6508cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        tailSet = descendingKeySet.tailSet(startKey);
6509cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        iterator = tailSet.iterator();
6510cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (index = 109; iterator.hasNext(); index--) {
6511cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            key = (String) iterator.next();
6512cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(new Integer(index).toString(), key);
6513cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
6514cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(99, index);
6515cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
6516cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        tailSet = descendingKeySet.tailSet(startKey, true);
6517cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        iterator = tailSet.iterator();
6518cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (index = 109; iterator.hasNext(); index--) {
6519cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            key = (String) iterator.next();
6520cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(new Integer(index).toString(), key);
6521cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
6522cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(99, index);
6523cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
6524cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        tailSet = descendingKeySet.tailSet(startKey, false);
6525cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        iterator = tailSet.iterator();
6526cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (index = 109; iterator.hasNext(); index--) {
6527cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            key = (String) iterator.next();
6528cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(new Integer(index - 1).toString(), key);
6529cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
6530cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(100, index);
6531cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
6532cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        startKey = new Integer(110).toString();
6533cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
6534cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            descendingKeySet.tailSet(startKey);
6535cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
6536cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
6537cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
6538cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
6539cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
6540cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            descendingKeySet.tailSet(startKey, true);
6541cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
6542cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
6543cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
6544cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
6545cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
6546cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            descendingKeySet.tailSet(startKey, false);
6547cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
6548cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
6549cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
6550cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
6551cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
6552cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = new Integer(2).toString();
6553cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        keySet = tm.headMap(key, true).navigableKeySet();
6554cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        descendingKeySet = keySet.descendingSet();
6555cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        iterator = descendingKeySet.iterator();
6556cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        iterator.next();
6557cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        startKey = (String) iterator.next();
6558cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
6559cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        tailSet = descendingKeySet.tailSet(startKey);
6560cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(112, tailSet.size());
6561cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Iterator tailIterator = tailSet.iterator();
6562cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(new Integer(199).toString(), tailIterator.next());
6563cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
6564cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        tailSet = descendingKeySet.tailSet(startKey, true);
6565cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(112, tailSet.size());
6566cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        tailIterator = tailSet.iterator();
6567cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(new Integer(199).toString(), tailIterator.next());
6568cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
6569cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        tailSet = descendingKeySet.tailSet(startKey, false);
6570cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(111, tailSet.size());
6571cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        tailIterator = tailSet.iterator();
6572cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(new Integer(198).toString(), tailIterator.next());
6573cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
6574cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
6575cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_DescendingSubMapKeySet_subSet() {
6576cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        NavigableSet keySet, descendingKeySet;
6577cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        SortedSet subSet;
6578cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        String startKey, endKey, key;
6579cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Iterator startIterator, endIterator, subSetIterator;
6580cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
6581cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        keySet = navigableMap_startExcluded_endExcluded.navigableKeySet();
6582cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        descendingKeySet = keySet.descendingSet();
6583cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        startIterator = descendingKeySet.iterator();
6584cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        while (startIterator.hasNext()) {
6585cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            startKey = (String) startIterator.next();
6586cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            endIterator = descendingKeySet.iterator();
6587cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            while (endIterator.hasNext()) {
6588cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                endKey = (String) endIterator.next();
6589cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                int startIndex = Integer.valueOf(startKey);
6590cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                int endIndex = Integer.valueOf(endKey);
6591cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                if (startIndex < endIndex) {
6592cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    try {
6593cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        descendingKeySet.subSet(startKey, endKey);
6594cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        fail("should throw IllegalArgumentException");
6595cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    } catch (IllegalArgumentException e) {
6596cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        // Expected
6597cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    }
6598cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
6599cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    try {
6600cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        descendingKeySet.subSet(startKey, false, endKey, false);
6601cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        fail("shoudl throw IllegalArgumentException");
6602cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    } catch (IllegalArgumentException e) {
6603cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        // Expected
6604cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    }
6605cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
6606cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    try {
6607cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        descendingKeySet.subSet(startKey, false, endKey, true);
6608cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        fail("shoudl throw IllegalArgumentException");
6609cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    } catch (IllegalArgumentException e) {
6610cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        // Expected
6611cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    }
6612cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
6613cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    try {
6614cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        descendingKeySet.subSet(startKey, true, endKey, false);
6615cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        fail("shoudl throw IllegalArgumentException");
6616cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    } catch (IllegalArgumentException e) {
6617cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        // Expected
6618cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    }
6619cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
6620cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    try {
6621cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        descendingKeySet.subSet(startKey, true, endKey, true);
6622cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        fail("shoudl throw IllegalArgumentException");
6623cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    } catch (IllegalArgumentException e) {
6624cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        // Expected
6625cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    }
6626cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                } else {
6627cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    subSet = descendingKeySet.subSet(startKey, endKey);
6628cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    subSetIterator = subSet.iterator();
6629cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    for (int index = startIndex; subSetIterator.hasNext(); index--) {
6630cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        assertEquals(new Integer(index).toString(),
6631cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                                subSetIterator.next());
6632cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    }
6633cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
6634cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    subSet = descendingKeySet.subSet(startKey, false, endKey,
6635cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                            false);
6636cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    subSetIterator = subSet.iterator();
6637cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    for (int index = startIndex - 1; subSetIterator.hasNext(); index--) {
6638cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        assertEquals(new Integer(index).toString(),
6639cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                                subSetIterator.next());
6640cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    }
6641cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
6642cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    subSet = descendingKeySet.subSet(startKey, false, endKey,
6643cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                            true);
6644cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    subSetIterator = subSet.iterator();
6645cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    for (int index = startIndex - 1; subSetIterator.hasNext(); index--) {
6646cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        assertEquals(new Integer(index).toString(),
6647cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                                subSetIterator.next());
6648cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    }
6649cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
6650cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    subSet = descendingKeySet.subSet(startKey, true, endKey,
6651cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                            false);
6652cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    subSetIterator = subSet.iterator();
6653cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    for (int index = startIndex; subSetIterator.hasNext(); index--) {
6654cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        assertEquals(new Integer(index).toString(),
6655cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                                subSetIterator.next());
6656cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    }
6657cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
6658cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    subSet = descendingKeySet.subSet(startKey, true, endKey,
6659cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                            true);
6660cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    subSetIterator = subSet.iterator();
6661cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    for (int index = startIndex; subSetIterator.hasNext(); index--) {
6662cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        assertEquals(new Integer(index).toString(),
6663cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                                subSetIterator.next());
6664cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    }
6665cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                }
6666cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
6667cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
6668cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
6669cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        endKey = new Integer(2).toString();
6670cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        keySet = tm.headMap(endKey, true).navigableKeySet();
6671cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        descendingKeySet = keySet.descendingSet();
6672cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Iterator iterator = descendingKeySet.iterator();
6673cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
6674cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        startKey = (String) iterator.next();
6675cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        iterator.next();
6676cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        endKey = (String) iterator.next();
6677cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
6678cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        subSet = descendingKeySet.subSet(startKey, endKey);
6679cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(2, subSet.size());
6680cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        subSetIterator = subSet.iterator();
6681cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(startKey, subSetIterator.next());
6682cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        subSetIterator.next();
6683cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
6684cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            subSetIterator.next();
6685cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw NoSuchElementException");
6686cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (NoSuchElementException e) {
6687cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
6688cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
6689cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
6690cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        subSet = descendingKeySet.subSet(startKey, false, endKey, false);
6691cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(1, subSet.size());
6692cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        subSetIterator = subSet.iterator();
6693cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        subSetIterator.next();
6694cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
6695cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            subSetIterator.next();
6696cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw NoSuchElementException");
6697cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (NoSuchElementException e) {
6698cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
6699cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
6700cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
6701cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        subSet = descendingKeySet.subSet(startKey, false, endKey, true);
6702cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(2, subSet.size());
6703cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        subSetIterator = subSet.iterator();
6704cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        subSetIterator.next();
6705cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(endKey, subSetIterator.next());
6706cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
6707cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            subSetIterator.next();
6708cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw NoSuchElementException");
6709cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (NoSuchElementException e) {
6710cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
6711cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
6712cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
6713cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        subSet = descendingKeySet.subSet(startKey, true, endKey, false);
6714cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(2, subSet.size());
6715cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        subSetIterator = subSet.iterator();
6716cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(startKey, subSetIterator.next());
6717cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        subSetIterator.next();
6718cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
6719cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            subSetIterator.next();
6720cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw NoSuchElementException");
6721cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (NoSuchElementException e) {
6722cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
6723cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
6724cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
6725cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        subSet = descendingKeySet.subSet(startKey, true, endKey, true);
6726cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(3, subSet.size());
6727cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        subSetIterator = subSet.iterator();
6728cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(startKey, subSetIterator.next());
6729cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        subSetIterator.next();
6730cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(endKey, subSetIterator.next());
6731cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
6732cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            subSetIterator.next();
6733cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw NoSuchElementException");
6734cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (NoSuchElementException e) {
6735cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
6736cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
6737cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
6738cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // With Comparator
6739cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        keySet = ((NavigableMap) subMap_startExcluded_endExcluded_comparator)
6740cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .navigableKeySet();
6741cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        descendingKeySet = keySet.descendingSet();
6742cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        startIterator = descendingKeySet.iterator();
6743cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        while (startIterator.hasNext()) {
6744cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            startKey = (String) startIterator.next();
6745cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            endIterator = descendingKeySet.iterator();
6746cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            while (endIterator.hasNext()) {
6747cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                endKey = (String) endIterator.next();
6748cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                int startIndex = Integer.valueOf(startKey);
6749cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                int endIndex = Integer.valueOf(endKey);
6750cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                if (startIndex < endIndex) {
6751cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    try {
6752cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        descendingKeySet.subSet(startKey, endKey);
6753cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        fail("should throw IllegalArgumentException");
6754cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    } catch (IllegalArgumentException e) {
6755cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        // Expected
6756cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    }
6757cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
6758cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    try {
6759cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        descendingKeySet.subSet(startKey, false, endKey, false);
6760cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        fail("shoudl throw IllegalArgumentException");
6761cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    } catch (IllegalArgumentException e) {
6762cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        // Expected
6763cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    }
6764cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
6765cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    try {
6766cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        descendingKeySet.subSet(startKey, false, endKey, true);
6767cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        fail("shoudl throw IllegalArgumentException");
6768cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    } catch (IllegalArgumentException e) {
6769cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        // Expected
6770cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    }
6771cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
6772cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    try {
6773cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        descendingKeySet.subSet(startKey, true, endKey, false);
6774cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        fail("shoudl throw IllegalArgumentException");
6775cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    } catch (IllegalArgumentException e) {
6776cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        // Expected
6777cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    }
6778cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
6779cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    try {
6780cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        descendingKeySet.subSet(startKey, true, endKey, true);
6781cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        fail("shoudl throw IllegalArgumentException");
6782cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    } catch (IllegalArgumentException e) {
6783cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        // Expected
6784cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    }
6785cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                } else {
6786cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    subSet = descendingKeySet.subSet(startKey, endKey);
6787cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    subSetIterator = subSet.iterator();
6788cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    for (int index = startIndex; subSetIterator.hasNext(); index--) {
6789cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        assertEquals(new Integer(index).toString(),
6790cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                                subSetIterator.next());
6791cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    }
6792cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
6793cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    subSet = descendingKeySet.subSet(startKey, false, endKey,
6794cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                            false);
6795cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    subSetIterator = subSet.iterator();
6796cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    for (int index = startIndex - 1; subSetIterator.hasNext(); index--) {
6797cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        assertEquals(new Integer(index).toString(),
6798cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                                subSetIterator.next());
6799cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    }
6800cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
6801cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    subSet = descendingKeySet.subSet(startKey, false, endKey,
6802cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                            true);
6803cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    subSetIterator = subSet.iterator();
6804cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    for (int index = startIndex - 1; subSetIterator.hasNext(); index--) {
6805cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        assertEquals(new Integer(index).toString(),
6806cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                                subSetIterator.next());
6807cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    }
6808cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
6809cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    subSet = descendingKeySet.subSet(startKey, true, endKey,
6810cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                            false);
6811cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    subSetIterator = subSet.iterator();
6812cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    for (int index = startIndex; subSetIterator.hasNext(); index--) {
6813cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        assertEquals(new Integer(index).toString(),
6814cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                                subSetIterator.next());
6815cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    }
6816cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
6817cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    subSet = descendingKeySet.subSet(startKey, true, endKey,
6818cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                            true);
6819cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    subSetIterator = subSet.iterator();
6820cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    for (int index = startIndex; subSetIterator.hasNext(); index--) {
6821cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        assertEquals(new Integer(index).toString(),
6822cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                                subSetIterator.next());
6823cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    }
6824cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                }
6825cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
6826cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
6827cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
6828cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
6829cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_DescendingSubMapKeySet_descendingSet() {
6830cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        NavigableSet keySet, descendingSet, descendingDescendingSet;
6831cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        int value;
6832cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Iterator iterator;
6833cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
6834cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        keySet = navigableMap_startExcluded_endExcluded.navigableKeySet();
6835cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        descendingSet = keySet.descendingSet();
6836cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        descendingDescendingSet = descendingSet.descendingSet();
6837cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        iterator = descendingDescendingSet.iterator();
6838cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(iterator.hasNext());
6839cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (value = 101; iterator.hasNext(); value++) {
6840cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(new Integer(value).toString(), iterator.next());
6841cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
6842cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(109, value);
6843cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
6844cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            iterator.next();
6845cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw NoSuchElementException");
6846cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (NoSuchElementException e) {
6847cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
6848cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
6849cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
6850cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        keySet = navigableMap_startExcluded_endIncluded.navigableKeySet();
6851cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        descendingSet = keySet.descendingSet();
6852cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        descendingDescendingSet = descendingSet.descendingSet();
6853cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        iterator = descendingDescendingSet.iterator();
6854cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(iterator.hasNext());
6855cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (value = 101; iterator.hasNext(); value++) {
6856cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(new Integer(value).toString(), iterator.next());
6857cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
6858cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(110, value);
6859cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
6860cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            iterator.next();
6861cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw NoSuchElementException");
6862cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (NoSuchElementException e) {
6863cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
6864cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
6865cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
6866cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        keySet = navigableMap_startIncluded_endExcluded.navigableKeySet();
6867cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        descendingSet = keySet.descendingSet();
6868cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        descendingDescendingSet = descendingSet.descendingSet();
6869cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        iterator = descendingDescendingSet.iterator();
6870cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(iterator.hasNext());
6871cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (value = 100; iterator.hasNext(); value++) {
6872cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(new Integer(value).toString(), iterator.next());
6873cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
6874cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(109, value);
6875cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
6876cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            iterator.next();
6877cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw NoSuchElementException");
6878cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (NoSuchElementException e) {
6879cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
6880cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
6881cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
6882cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        keySet = navigableMap_startIncluded_endIncluded.navigableKeySet();
6883cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        descendingSet = keySet.descendingSet();
6884cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        descendingDescendingSet = descendingSet.descendingSet();
6885cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        iterator = descendingDescendingSet.iterator();
6886cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(iterator.hasNext());
6887cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (value = 100; iterator.hasNext(); value++) {
6888cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(new Integer(value).toString(), iterator.next());
6889cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
6890cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(110, value);
6891cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
6892cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            iterator.next();
6893cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw NoSuchElementException");
6894cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (NoSuchElementException e) {
6895cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
6896cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
6897cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
6898cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        String endKey = new Integer(2).toString();
6899cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        keySet = tm.headMap(endKey, true).navigableKeySet();
6900cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        descendingSet = keySet.descendingSet();
6901cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        descendingDescendingSet = descendingSet.descendingSet();
6902cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(keySet, descendingDescendingSet);
6903cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
6904cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        String startKey = new Integer(2).toString();
6905cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        keySet = tm.tailMap(startKey, true).navigableKeySet();
6906cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        descendingSet = keySet.descendingSet();
6907cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        descendingDescendingSet = descendingSet.descendingSet();
6908cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(keySet, descendingDescendingSet);
6909cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
6910cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
6911cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_DescendingSubMapKeySet_descendingIterator() {
6912cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        NavigableSet keySet, descendingSet;
6913cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        int value;
6914cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Iterator iterator, descendingIterator;
6915cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
6916cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        keySet = navigableMap_startExcluded_endExcluded.navigableKeySet();
6917cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        descendingSet = keySet.descendingSet();
6918cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        descendingIterator = descendingSet.descendingIterator();
6919cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(descendingIterator.hasNext());
6920cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (value = 101; descendingIterator.hasNext(); value++) {
6921cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(new Integer(value).toString(), descendingIterator
6922cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    .next());
6923cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
6924cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(109, value);
6925cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
6926cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            descendingIterator.next();
6927cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw NoSuchElementException");
6928cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (NoSuchElementException e) {
6929cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
6930cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
6931cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
6932cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        descendingSet = descendingSet
6933cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .headSet(new Integer(105).toString(), true);
6934cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        descendingIterator = descendingSet.descendingIterator();
6935cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (value = 105; descendingIterator.hasNext(); value++) {
6936cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(new Integer(value).toString(), descendingIterator
6937cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    .next());
6938cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
6939cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
6940cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        descendingSet = keySet.descendingSet();
6941cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        descendingSet = descendingSet
6942cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .tailSet(new Integer(105).toString(), true);
6943cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        descendingIterator = descendingSet.descendingIterator();
6944cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (value = 101; descendingIterator.hasNext(); value++) {
6945cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(new Integer(value).toString(), descendingIterator
6946cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    .next());
6947cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
6948cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
6949cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        keySet = navigableMap_startExcluded_endIncluded.navigableKeySet();
6950cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        descendingSet = keySet.descendingSet();
6951cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        descendingIterator = descendingSet.descendingIterator();
6952cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(descendingIterator.hasNext());
6953cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (value = 101; descendingIterator.hasNext(); value++) {
6954cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(new Integer(value).toString(), descendingIterator
6955cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    .next());
6956cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
6957cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(110, value);
6958cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
6959cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            descendingIterator.next();
6960cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw NoSuchElementException");
6961cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (NoSuchElementException e) {
6962cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
6963cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
6964cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
6965cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        descendingSet = descendingSet
6966cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .headSet(new Integer(105).toString(), true);
6967cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        descendingIterator = descendingSet.descendingIterator();
6968cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (value = 105; descendingIterator.hasNext(); value++) {
6969cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(new Integer(value).toString(), descendingIterator
6970cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    .next());
6971cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
6972cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
6973cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        descendingSet = keySet.descendingSet();
6974cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        descendingSet = descendingSet
6975cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .tailSet(new Integer(105).toString(), true);
6976cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        descendingIterator = descendingSet.descendingIterator();
6977cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (value = 101; descendingIterator.hasNext(); value++) {
6978cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(new Integer(value).toString(), descendingIterator
6979cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    .next());
6980cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
6981cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
6982cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        keySet = navigableMap_startIncluded_endExcluded.navigableKeySet();
6983cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        descendingSet = keySet.descendingSet();
6984cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        descendingIterator = descendingSet.descendingIterator();
6985cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(descendingIterator.hasNext());
6986cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (value = 100; descendingIterator.hasNext(); value++) {
6987cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(new Integer(value).toString(), descendingIterator
6988cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    .next());
6989cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
6990cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(109, value);
6991cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
6992cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            descendingIterator.next();
6993cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw NoSuchElementException");
6994cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (NoSuchElementException e) {
6995cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
6996cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
6997cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
6998cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        keySet = navigableMap_startIncluded_endIncluded.navigableKeySet();
6999cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        descendingSet = keySet.descendingSet();
7000cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        descendingIterator = descendingSet.descendingIterator();
7001cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(descendingIterator.hasNext());
7002cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (value = 100; descendingIterator.hasNext(); value++) {
7003cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(new Integer(value).toString(), descendingIterator
7004cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    .next());
7005cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
7006cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(110, value);
7007cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
7008cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            descendingIterator.next();
7009cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw NoSuchElementException");
7010cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (NoSuchElementException e) {
7011cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
7012cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
7013cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
7014cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        String endKey = new Integer(2).toString();
7015cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        keySet = tm.headMap(endKey, true).navigableKeySet();
7016cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        iterator = keySet.iterator();
7017cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
7018cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        descendingSet = keySet.descendingSet();
7019cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        descendingIterator = descendingSet.descendingIterator();
7020cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
7021cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        while (iterator.hasNext()) {
7022cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(iterator.next(), descendingIterator.next());
7023cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
7024cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
7025cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        String startKey = new Integer(2).toString();
7026cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        keySet = tm.tailMap(startKey, true).navigableKeySet();
7027cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        iterator = keySet.iterator();
7028cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        descendingSet = keySet.descendingSet();
7029cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        descendingIterator = descendingSet.descendingIterator();
7030cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
7031cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        while (iterator.hasNext()) {
7032cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(iterator.next(), descendingIterator.next());
7033cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
7034cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
7035cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
7036cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_DescendingSubMapKeySet_lower() {
7037cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        NavigableSet keySet, descendingKeySet;
7038cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Iterator iterator;
7039cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        String key, lowerKey;
7040cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        int value, lowerValue;
7041cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
7042cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        keySet = navigableMap_startExcluded_endExcluded.navigableKeySet();
7043cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        descendingKeySet = keySet.descendingSet();
7044cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        iterator = descendingKeySet.iterator();
7045cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        while (iterator.hasNext()) {
7046cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            key = (String) iterator.next();
7047cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            value = Integer.valueOf(key);
7048cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            lowerKey = (String) descendingKeySet.lower(key);
7049cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            if (value < 108) {
7050cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                lowerValue = Integer.valueOf(lowerKey);
7051cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                assertEquals(value + 1, lowerValue);
7052cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            } else {
7053cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                assertNull(lowerKey);
7054cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
7055cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
7056cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
7057cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = new Integer(0).toString();
7058cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        lowerKey = (String) descendingKeySet.lower(key);
7059cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(101, Integer.parseInt(lowerKey));
7060cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
7061cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = new Integer(2).toString();
7062cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        lowerKey = (String) descendingKeySet.lower(key);
7063cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNull(lowerKey);
7064cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
7065cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        keySet = navigableMap_startExcluded_endIncluded.navigableKeySet();
7066cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        descendingKeySet = keySet.descendingSet();
7067cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        iterator = descendingKeySet.iterator();
7068cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        while (iterator.hasNext()) {
7069cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            key = (String) iterator.next();
7070cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            value = Integer.valueOf(key);
7071cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            lowerKey = (String) descendingKeySet.lower(key);
7072cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            if (value < 109) {
7073cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                lowerValue = Integer.valueOf(lowerKey);
7074cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                assertEquals(value + 1, lowerValue);
7075cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            } else {
7076cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                assertNull(lowerKey);
7077cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
7078cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
7079cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
7080cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = new Integer(0).toString();
7081cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        lowerKey = (String) descendingKeySet.lower(key);
7082cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(101, Integer.parseInt(lowerKey));
7083cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
7084cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = new Integer(2).toString();
7085cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        lowerKey = (String) descendingKeySet.lower(key);
7086cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNull(lowerKey);
7087cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
7088cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        keySet = navigableMap_startIncluded_endExcluded.navigableKeySet();
7089cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        descendingKeySet = keySet.descendingSet();
7090cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        iterator = descendingKeySet.iterator();
7091cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        while (iterator.hasNext()) {
7092cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            key = (String) iterator.next();
7093cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            value = Integer.valueOf(key);
7094cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            lowerKey = (String) descendingKeySet.lower(key);
7095cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            if (value < 108) {
7096cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                lowerValue = Integer.valueOf(lowerKey);
7097cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                assertEquals(value + 1, lowerValue);
7098cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            } else {
7099cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                assertNull(lowerKey);
7100cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
7101cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
7102cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
7103cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = new Integer(0).toString();
7104cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        lowerKey = (String) descendingKeySet.lower(key);
7105cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(100, Integer.parseInt(lowerKey));
7106cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
7107cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = new Integer(2).toString();
7108cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        lowerKey = (String) descendingKeySet.lower(key);
7109cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNull(lowerKey);
7110cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
7111cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        keySet = navigableMap_startIncluded_endIncluded.navigableKeySet();
7112cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        descendingKeySet = keySet.descendingSet();
7113cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        iterator = descendingKeySet.iterator();
7114cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        while (iterator.hasNext()) {
7115cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            key = (String) iterator.next();
7116cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            value = Integer.valueOf(key);
7117cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            lowerKey = (String) descendingKeySet.lower(key);
7118cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            if (value < 109) {
7119cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                lowerValue = Integer.valueOf(lowerKey);
7120cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                assertEquals(value + 1, lowerValue);
7121cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            } else {
7122cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                assertNull(lowerKey);
7123cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
7124cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
7125cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
7126cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = new Integer(0).toString();
7127cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        lowerKey = (String) descendingKeySet.lower(key);
7128cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(100, Integer.parseInt(lowerKey));
7129cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
7130cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = new Integer(2).toString();
7131cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        lowerKey = (String) descendingKeySet.lower(key);
7132cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNull(lowerKey);
7133cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
7134cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = new Integer(2).toString();
7135cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        keySet = tm.headMap(key, true).navigableKeySet();
7136cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        descendingKeySet = keySet.descendingSet();
7137cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        iterator = descendingKeySet.iterator();
7138cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        iterator.next();
7139cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        iterator.next();
7140cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = (String) iterator.next();
7141cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        lowerKey = (String) descendingKeySet.lower(key);
7142cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(new Integer(199).toString(), lowerKey);
7143cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
7144cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            descendingKeySet.lower(null);
7145cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw NPE");
7146cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (NullPointerException e) {
7147cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
7148cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
7149cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
7150cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = new Integer(0).toString();
7151cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        String endKey = key;
7152cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
7153cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        keySet = tm.headMap(endKey, true).navigableKeySet();
7154cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        descendingKeySet = keySet.descendingSet();
7155cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNull(descendingKeySet.lower(endKey));
7156cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
7157cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = new Integer(0).toString();
7158cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        keySet = tm.headMap(endKey, false).navigableKeySet();
7159cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        descendingKeySet = keySet.descendingSet();
7160cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNull(descendingKeySet.lower(endKey));
7161cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
7162cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        endKey = new Integer(999).toString();
7163cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        keySet = tm.headMap(endKey, true).navigableKeySet();
7164cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        descendingKeySet = keySet.descendingSet();
7165cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNull(descendingKeySet.lower(endKey));
7166cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(new Integer(1).toString(), descendingKeySet.lower(key));
7167cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
7168cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        endKey = new Integer(999).toString();
7169cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        keySet = tm.headMap(endKey, false).navigableKeySet();
7170cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        descendingKeySet = keySet.descendingSet();
7171cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNull(descendingKeySet.lower(endKey));
7172cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(new Integer(1).toString(), descendingKeySet.lower(key));
7173cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
7174cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // With Comparator
7175cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        keySet = ((NavigableMap) subMap_startExcluded_endExcluded_comparator)
7176cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .navigableKeySet();
7177cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        descendingKeySet = keySet.descendingSet();
7178cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        iterator = descendingKeySet.iterator();
7179cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        while (iterator.hasNext()) {
7180cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            key = (String) iterator.next();
7181cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            value = Integer.valueOf(key);
7182cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            lowerKey = (String) descendingKeySet.lower(key);
7183cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            if (value < 108) {
7184cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                lowerValue = Integer.valueOf(lowerKey);
7185cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                assertEquals(value + 1, lowerValue);
7186cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            } else {
7187cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                assertNull(lowerKey);
7188cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
7189cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
7190cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
7191cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = new Integer(0).toString();
7192cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        lowerKey = (String) descendingKeySet.lower(key);
7193cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(101, Integer.parseInt(lowerKey));
7194cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
7195cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = new Integer(2).toString();
7196cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        lowerKey = (String) descendingKeySet.lower(key);
7197cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNull(lowerKey);
7198cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
7199cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        keySet = ((NavigableMap) subMap_startExcluded_endIncluded_comparator)
7200cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .navigableKeySet();
7201cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        descendingKeySet = keySet.descendingSet();
7202cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        iterator = descendingKeySet.iterator();
7203cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        while (iterator.hasNext()) {
7204cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            key = (String) iterator.next();
7205cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            value = Integer.valueOf(key);
7206cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            lowerKey = (String) descendingKeySet.lower(key);
7207cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            if (value < 109) {
7208cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                lowerValue = Integer.valueOf(lowerKey);
7209cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                assertEquals(value + 1, lowerValue);
7210cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            } else {
7211cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                assertNull(lowerKey);
7212cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
7213cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
7214cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
7215cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = new Integer(0).toString();
7216cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        lowerKey = (String) descendingKeySet.lower(key);
7217cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(101, Integer.parseInt(lowerKey));
7218cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
7219cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = new Integer(2).toString();
7220cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        lowerKey = (String) descendingKeySet.lower(key);
7221cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNull(lowerKey);
7222cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
7223cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        keySet = ((NavigableMap) subMap_startIncluded_endExcluded_comparator)
7224cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .navigableKeySet();
7225cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        descendingKeySet = keySet.descendingSet();
7226cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        iterator = descendingKeySet.iterator();
7227cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        while (iterator.hasNext()) {
7228cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            key = (String) iterator.next();
7229cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            value = Integer.valueOf(key);
7230cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            lowerKey = (String) descendingKeySet.lower(key);
7231cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            if (value < 108) {
7232cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                lowerValue = Integer.valueOf(lowerKey);
7233cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                assertEquals(value + 1, lowerValue);
7234cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            } else {
7235cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                assertNull(lowerKey);
7236cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
7237cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
7238cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
7239cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = new Integer(0).toString();
7240cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        lowerKey = (String) descendingKeySet.lower(key);
7241cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(100, Integer.parseInt(lowerKey));
7242cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
7243cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = new Integer(2).toString();
7244cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        lowerKey = (String) descendingKeySet.lower(key);
7245cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNull(lowerKey);
7246cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
7247cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        keySet = ((NavigableMap) subMap_startIncluded_endIncluded_comparator)
7248cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .navigableKeySet();
7249cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        descendingKeySet = keySet.descendingSet();
7250cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        iterator = descendingKeySet.iterator();
7251cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        while (iterator.hasNext()) {
7252cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            key = (String) iterator.next();
7253cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            value = Integer.valueOf(key);
7254cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            lowerKey = (String) descendingKeySet.lower(key);
7255cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            if (value < 109) {
7256cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                lowerValue = Integer.valueOf(lowerKey);
7257cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                assertEquals(value + 1, lowerValue);
7258cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            } else {
7259cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                assertNull(lowerKey);
7260cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
7261cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
7262cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
7263cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
7264cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_DescendingSubMapKeySet_higher() {
7265cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        NavigableSet keySet, descendingKeySet;
7266cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Iterator iterator;
7267cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        String key, higherKey;
7268cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        int value, higherValue;
7269cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
7270cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        keySet = navigableMap_startExcluded_endExcluded.navigableKeySet();
7271cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        descendingKeySet = keySet.descendingSet();
7272cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        iterator = descendingKeySet.iterator();
7273cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        while (iterator.hasNext()) {
7274cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            key = (String) iterator.next();
7275cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            value = Integer.valueOf(key);
7276cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            higherKey = (String) descendingKeySet.higher(key);
7277cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            if (value > 101) {
7278cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                higherValue = Integer.valueOf(higherKey);
7279cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                assertEquals(value - 1, higherValue);
7280cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            } else {
7281cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                assertNull(higherKey);
7282cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
7283cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
7284cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
7285cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = new Integer(99999).toString();
7286cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        higherKey = (String) descendingKeySet.higher(key);
7287cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("108", higherKey);
7288cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
7289cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = new Integer(-1).toString();
7290cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        higherKey = (String) descendingKeySet.higher(key);
7291cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNull(higherKey);
7292cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
7293cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = new Integer(100).toString();
7294cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        higherKey = (String) descendingKeySet.higher(key);
7295cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNull(higherKey);
7296cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
7297cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = new Integer(0).toString();
7298cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        higherKey = (String) descendingKeySet.higher(key);
7299cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNull(higherKey);
7300cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
7301cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = new Integer(2).toString();
7302cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        higherKey = (String) descendingKeySet.higher(key);
7303cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(108, Integer.parseInt(higherKey));
7304cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
7305cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        keySet = navigableMap_startExcluded_endIncluded.navigableKeySet();
7306cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        descendingKeySet = keySet.descendingSet();
7307cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        iterator = descendingKeySet.iterator();
7308cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        while (iterator.hasNext()) {
7309cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            key = (String) iterator.next();
7310cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            value = Integer.valueOf(key);
7311cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            higherKey = (String) descendingKeySet.higher(key);
7312cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            if (value > 101) {
7313cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                higherValue = Integer.valueOf(higherKey);
7314cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                assertEquals(value - 1, higherValue);
7315cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            } else {
7316cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                assertNull(higherKey);
7317cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
7318cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
7319cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
7320cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = new Integer(99999).toString();
7321cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        higherKey = (String) descendingKeySet.higher(key);
7322cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("109", higherKey);
7323cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
7324cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = new Integer(-1).toString();
7325cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        higherKey = (String) descendingKeySet.higher(key);
7326cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNull(higherKey);
7327cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
7328cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = new Integer(100).toString();
7329cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        higherKey = (String) descendingKeySet.higher(key);
7330cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNull(higherKey);
7331cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
7332cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = new Integer(2).toString();
7333cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        higherKey = (String) descendingKeySet.higher(key);
7334cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(109, Integer.parseInt(higherKey));
7335cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
7336cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        keySet = navigableMap_startIncluded_endExcluded.navigableKeySet();
7337cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        descendingKeySet = keySet.descendingSet();
7338cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        iterator = descendingKeySet.iterator();
7339cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        while (iterator.hasNext()) {
7340cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            key = (String) iterator.next();
7341cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            value = Integer.valueOf(key);
7342cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            higherKey = (String) descendingKeySet.higher(key);
7343cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            if (value > 100) {
7344cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                higherValue = Integer.valueOf(higherKey);
7345cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                assertEquals(value - 1, higherValue);
7346cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            } else {
7347cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                assertNull(higherKey);
7348cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
7349cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
7350cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
7351cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = new Integer(99999).toString();
7352cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        higherKey = (String) descendingKeySet.higher(key);
7353cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("108", higherKey);
7354cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
7355cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = new Integer(-1).toString();
7356cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        higherKey = (String) descendingKeySet.higher(key);
7357cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNull(higherKey);
7358cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
7359cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = new Integer(100).toString();
7360cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        higherKey = (String) descendingKeySet.higher(key);
7361cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNull(higherKey);
7362cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
7363cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = new Integer(2).toString();
7364cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        higherKey = (String) descendingKeySet.higher(key);
7365cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(108, Integer.parseInt(higherKey));
7366cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
7367cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        keySet = navigableMap_startIncluded_endIncluded.navigableKeySet();
7368cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        descendingKeySet = keySet.descendingSet();
7369cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        iterator = descendingKeySet.iterator();
7370cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        while (iterator.hasNext()) {
7371cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            key = (String) iterator.next();
7372cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            value = Integer.valueOf(key);
7373cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            higherKey = (String) descendingKeySet.higher(key);
7374cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            if (value > 100) {
7375cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                higherValue = Integer.valueOf(higherKey);
7376cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                assertEquals(value - 1, higherValue);
7377cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            } else {
7378cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                assertNull(higherKey);
7379cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
7380cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
7381cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
7382cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = new Integer(99999).toString();
7383cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        higherKey = (String) descendingKeySet.higher(key);
7384cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("109", higherKey);
7385cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
7386cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = new Integer(-1).toString();
7387cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        higherKey = (String) descendingKeySet.higher(key);
7388cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNull(higherKey);
7389cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
7390cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = new Integer(100).toString();
7391cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        higherKey = (String) descendingKeySet.higher(key);
7392cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNull(higherKey);
7393cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
7394cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = new Integer(2).toString();
7395cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        higherKey = (String) descendingKeySet.higher(key);
7396cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(109, Integer.parseInt(higherKey));
7397cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
7398cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = new Integer(2).toString();
7399cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        keySet = tm.headMap(key, true).navigableKeySet();
7400cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        descendingKeySet = keySet.descendingSet();
7401cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        iterator = descendingKeySet.iterator();
7402cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = (String) iterator.next();
7403cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        higherKey = (String) descendingKeySet.higher(key);
7404cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(new Integer(199).toString(), higherKey);
7405cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
7406cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            descendingKeySet.higher(null);
7407cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw NPE");
7408cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (NullPointerException e) {
7409cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
7410cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
7411cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
7412cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = new Integer(0).toString();
7413cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        String endKey = key;
7414cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
7415cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        keySet = tm.headMap(endKey, true).navigableKeySet();
7416cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        descendingKeySet = keySet.descendingSet();
7417cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNull(descendingKeySet.higher(endKey));
7418cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
7419cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = new Integer(0).toString();
7420cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        keySet = tm.headMap(endKey, false).navigableKeySet();
7421cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        descendingKeySet = keySet.descendingSet();
7422cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNull(descendingKeySet.higher(endKey));
7423cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
7424cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        endKey = new Integer(999).toString();
7425cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        keySet = tm.headMap(endKey, true).navigableKeySet();
7426cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        descendingKeySet = keySet.descendingSet();
7427cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(new Integer(998).toString(), descendingKeySet
7428cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .higher(endKey));
7429cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNull(descendingKeySet.higher(key));
7430cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
7431cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        endKey = new Integer(999).toString();
7432cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        keySet = tm.headMap(endKey, false).navigableKeySet();
7433cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        descendingKeySet = keySet.descendingSet();
7434cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(new Integer(998).toString(), descendingKeySet
7435cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .higher(endKey));
7436cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNull(descendingKeySet.higher(key));
7437cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
7438cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // With Comparator
7439cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        keySet = ((NavigableMap) subMap_startExcluded_endExcluded_comparator)
7440cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .navigableKeySet();
7441cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        descendingKeySet = keySet.descendingSet();
7442cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        iterator = descendingKeySet.iterator();
7443cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        while (iterator.hasNext()) {
7444cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            key = (String) iterator.next();
7445cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            value = Integer.valueOf(key);
7446cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            higherKey = (String) descendingKeySet.higher(key);
7447cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            if (value > 101) {
7448cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                higherValue = Integer.valueOf(higherKey);
7449cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                assertEquals(value - 1, higherValue);
7450cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            } else {
7451cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                assertNull(higherKey);
7452cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
7453cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
7454cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
7455cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = new Integer(99999).toString();
7456cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        higherKey = (String) descendingKeySet.higher(key);
7457cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("108", higherKey);
7458cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
7459cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = new Integer(-1).toString();
7460cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        higherKey = (String) descendingKeySet.higher(key);
7461cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNull(higherKey);
7462cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
7463cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = new Integer(100).toString();
7464cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        higherKey = (String) descendingKeySet.higher(key);
7465cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNull(higherKey);
7466cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
7467cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = new Integer(0).toString();
7468cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        higherKey = (String) descendingKeySet.higher(key);
7469cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNull(higherKey);
7470cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
7471cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = new Integer(2).toString();
7472cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        higherKey = (String) descendingKeySet.higher(key);
7473cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(108, Integer.parseInt(higherKey));
7474cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
7475cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        keySet = ((NavigableMap) subMap_startExcluded_endIncluded_comparator)
7476cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .navigableKeySet();
7477cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        descendingKeySet = keySet.descendingSet();
7478cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        iterator = descendingKeySet.iterator();
7479cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        while (iterator.hasNext()) {
7480cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            key = (String) iterator.next();
7481cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            value = Integer.valueOf(key);
7482cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            higherKey = (String) descendingKeySet.higher(key);
7483cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            if (value > 101) {
7484cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                higherValue = Integer.valueOf(higherKey);
7485cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                assertEquals(value - 1, higherValue);
7486cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            } else {
7487cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                assertNull(higherKey);
7488cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
7489cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
7490cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
7491cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = new Integer(99999).toString();
7492cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        higherKey = (String) descendingKeySet.higher(key);
7493cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("109", higherKey);
7494cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
7495cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = new Integer(-1).toString();
7496cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        higherKey = (String) descendingKeySet.higher(key);
7497cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNull(higherKey);
7498cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
7499cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = new Integer(100).toString();
7500cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        higherKey = (String) descendingKeySet.higher(key);
7501cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNull(higherKey);
7502cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
7503cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = new Integer(2).toString();
7504cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        higherKey = (String) descendingKeySet.higher(key);
7505cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(109, Integer.parseInt(higherKey));
7506cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
7507cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        keySet = ((NavigableMap) subMap_startIncluded_endExcluded_comparator)
7508cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .navigableKeySet();
7509cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        descendingKeySet = keySet.descendingSet();
7510cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        iterator = descendingKeySet.iterator();
7511cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        while (iterator.hasNext()) {
7512cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            key = (String) iterator.next();
7513cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            value = Integer.valueOf(key);
7514cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            higherKey = (String) descendingKeySet.higher(key);
7515cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            if (value > 100) {
7516cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                higherValue = Integer.valueOf(higherKey);
7517cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                assertEquals(value - 1, higherValue);
7518cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            } else {
7519cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                assertNull(higherKey);
7520cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
7521cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
7522cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
7523cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = new Integer(99999).toString();
7524cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        higherKey = (String) descendingKeySet.higher(key);
7525cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("108", higherKey);
7526cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
7527cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = new Integer(-1).toString();
7528cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        higherKey = (String) descendingKeySet.higher(key);
7529cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNull(higherKey);
7530cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
7531cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = new Integer(100).toString();
7532cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        higherKey = (String) descendingKeySet.higher(key);
7533cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNull(higherKey);
7534cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
7535cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = new Integer(2).toString();
7536cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        higherKey = (String) descendingKeySet.higher(key);
7537cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(108, Integer.parseInt(higherKey));
7538cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
7539cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        keySet = ((NavigableMap) subMap_startIncluded_endIncluded_comparator)
7540cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .navigableKeySet();
7541cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        descendingKeySet = keySet.descendingSet();
7542cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        iterator = descendingKeySet.iterator();
7543cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        while (iterator.hasNext()) {
7544cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            key = (String) iterator.next();
7545cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            value = Integer.valueOf(key);
7546cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            higherKey = (String) descendingKeySet.higher(key);
7547cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            if (value > 100) {
7548cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                higherValue = Integer.valueOf(higherKey);
7549cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                assertEquals(value - 1, higherValue);
7550cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            } else {
7551cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                assertNull(higherKey);
7552cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
7553cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
7554cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
7555cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = new Integer(99999).toString();
7556cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        higherKey = (String) descendingKeySet.higher(key);
7557cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("109", higherKey);
7558cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
7559cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = new Integer(-1).toString();
7560cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        higherKey = (String) descendingKeySet.higher(key);
7561cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNull(higherKey);
7562cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
7563cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = new Integer(100).toString();
7564cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        higherKey = (String) descendingKeySet.higher(key);
7565cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNull(higherKey);
7566cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
7567cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = new Integer(2).toString();
7568cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        higherKey = (String) descendingKeySet.higher(key);
7569cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(109, Integer.parseInt(higherKey));
7570cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
7571cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = new Integer(2).toString();
7572cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        keySet = tm.headMap(key, true).navigableKeySet();
7573cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        descendingKeySet = keySet.descendingSet();
7574cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        iterator = descendingKeySet.iterator();
7575cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = (String) iterator.next();
7576cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        higherKey = (String) descendingKeySet.higher(key);
7577cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(new Integer(199).toString(), higherKey);
7578cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
7579cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            descendingKeySet.higher(null);
7580cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw NPE");
7581cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (NullPointerException e) {
7582cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
7583cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
7584cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
7585cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = new Integer(0).toString();
7586cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        endKey = key;
7587cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
7588cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        keySet = tm.headMap(endKey, true).navigableKeySet();
7589cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        descendingKeySet = keySet.descendingSet();
7590cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNull(descendingKeySet.higher(endKey));
7591cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
7592cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = new Integer(0).toString();
7593cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        keySet = tm.headMap(endKey, false).navigableKeySet();
7594cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        descendingKeySet = keySet.descendingSet();
7595cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNull(descendingKeySet.higher(endKey));
7596cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
7597cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        endKey = new Integer(999).toString();
7598cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        keySet = tm.headMap(endKey, true).navigableKeySet();
7599cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        descendingKeySet = keySet.descendingSet();
7600cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(new Integer(998).toString(), descendingKeySet
7601cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .higher(endKey));
7602cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNull(descendingKeySet.higher(key));
7603cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
7604cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        endKey = new Integer(999).toString();
7605cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        keySet = tm.headMap(endKey, false).navigableKeySet();
7606cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        descendingKeySet = keySet.descendingSet();
7607cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(new Integer(998).toString(), descendingKeySet
7608cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .higher(endKey));
7609cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNull(descendingKeySet.higher(key));
7610cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
7611cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
7612cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_DescendingSubMapKeySet_ceiling() {
7613cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        NavigableSet keySet, descendingKeySet;
7614cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        String[] keyArray;
7615cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        String key, ceilingKey;
7616cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
7617cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        keySet = navigableMap_startExcluded_endExcluded.navigableKeySet();
7618cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        descendingKeySet = keySet.descendingSet();
7619cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        keyArray = (String[]) descendingKeySet
7620cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .toArray(new String[descendingKeySet.size()]);
7621cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int i = 0, j = 108; i < keyArray.length; i++) {
7622cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            ceilingKey = (String) descendingKeySet.ceiling(keyArray[i]);
7623cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(new Integer(j - i).toString(), ceilingKey);
7624cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
7625cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
7626cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = new Integer(2).toString();
7627cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        ceilingKey = (String) descendingKeySet.ceiling(key);
7628cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(108, Integer.parseInt(ceilingKey));
7629cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
7630cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = new Integer(0).toString();
7631cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        ceilingKey = (String) descendingKeySet.ceiling(key);
7632cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNull(ceilingKey);
7633cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
7634cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = new Integer(-1).toString();
7635cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        ceilingKey = (String) descendingKeySet.ceiling(key);
7636cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNull(ceilingKey);
7637cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
7638cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = new Integer(99999).toString();
7639cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        ceilingKey = (String) descendingKeySet.ceiling(key);
7640cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(108, Integer.parseInt(ceilingKey));
7641cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
7642cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        keySet = navigableMap_startExcluded_endIncluded.navigableKeySet();
7643cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        descendingKeySet = keySet.descendingSet();
7644cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        keyArray = (String[]) descendingKeySet
7645cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .toArray(new String[descendingKeySet.size()]);
7646cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int i = 0, j = 109; i < keyArray.length; i++) {
7647cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            ceilingKey = (String) descendingKeySet.ceiling(keyArray[i]);
7648cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(new Integer(j - i).toString(), ceilingKey);
7649cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
7650cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
7651cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        keySet = navigableMap_startIncluded_endExcluded.navigableKeySet();
7652cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        descendingKeySet = keySet.descendingSet();
7653cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        keyArray = (String[]) descendingKeySet
7654cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .toArray(new String[descendingKeySet.size()]);
7655cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int i = 0, j = 108; i < keyArray.length; i++) {
7656cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            ceilingKey = (String) descendingKeySet.ceiling(keyArray[i]);
7657cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(new Integer(j - i).toString(), ceilingKey);
7658cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
7659cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
7660cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        keySet = navigableMap_startIncluded_endIncluded.navigableKeySet();
7661cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        descendingKeySet = keySet.descendingSet();
7662cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        keyArray = (String[]) descendingKeySet
7663cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .toArray(new String[descendingKeySet.size()]);
7664cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int i = 0, j = 109; i < keyArray.length; i++) {
7665cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            ceilingKey = (String) descendingKeySet.ceiling(keyArray[i]);
7666cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(new Integer(j - i).toString(), ceilingKey);
7667cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
7668cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
7669cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = new Integer(2).toString();
7670cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        keySet = tm.headMap(key, true).navigableKeySet();
7671cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        descendingKeySet = keySet.descendingSet();
7672cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Iterator iterator = descendingKeySet.iterator();
7673cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(key, descendingKeySet.ceiling(iterator.next()));
7674cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
7675cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            descendingKeySet.ceiling(null);
7676cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw NPE");
7677cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (NullPointerException e) {
7678cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
7679cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
7680cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
7681cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = new Integer(0).toString();
7682cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        String endKey = key;
7683cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
7684cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        keySet = tm.headMap(endKey, true).navigableKeySet();
7685cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        descendingKeySet = keySet.descendingSet();
7686cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(key, descendingKeySet.ceiling(endKey));
7687cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
7688cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = new Integer(0).toString();
7689cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        keySet = tm.headMap(endKey, false).navigableKeySet();
7690cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        descendingKeySet = keySet.descendingSet();
7691cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNull(descendingKeySet.ceiling(endKey));
7692cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
7693cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        endKey = new Integer(999).toString();
7694cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        keySet = tm.headMap(endKey, true).navigableKeySet();
7695cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        descendingKeySet = keySet.descendingSet();
7696cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(new Integer(999).toString(), descendingKeySet
7697cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .ceiling(endKey));
7698cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(key, descendingKeySet.ceiling(key));
7699cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
7700cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        endKey = new Integer(999).toString();
7701cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        keySet = tm.headMap(endKey, false).navigableKeySet();
7702cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        descendingKeySet = keySet.descendingSet();
7703cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(new Integer(998).toString(), descendingKeySet
7704cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .ceiling(endKey));
7705cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(key, descendingKeySet.ceiling(key));
7706cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
7707cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // With Comparator
7708cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        keySet = ((NavigableMap) subMap_startExcluded_endExcluded_comparator)
7709cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .navigableKeySet();
7710cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        descendingKeySet = keySet.descendingSet();
7711cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        keyArray = (String[]) descendingKeySet
7712cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .toArray(new String[descendingKeySet.size()]);
7713cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int i = 0, j = 108; i < keyArray.length; i++) {
7714cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            ceilingKey = (String) descendingKeySet.ceiling(keyArray[i]);
7715cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(new Integer(j - i).toString(), ceilingKey);
7716cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
7717cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
7718cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = new Integer(2).toString();
7719cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        ceilingKey = (String) descendingKeySet.ceiling(key);
7720cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(108, Integer.parseInt(ceilingKey));
7721cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
7722cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = new Integer(0).toString();
7723cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        ceilingKey = (String) descendingKeySet.ceiling(key);
7724cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNull(ceilingKey);
7725cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
7726cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        keySet = ((NavigableMap) subMap_startExcluded_endIncluded_comparator)
7727cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .navigableKeySet();
7728cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        descendingKeySet = keySet.descendingSet();
7729cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        keyArray = (String[]) descendingKeySet
7730cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .toArray(new String[descendingKeySet.size()]);
7731cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int i = 0, j = 109; i < keyArray.length; i++) {
7732cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            ceilingKey = (String) descendingKeySet.ceiling(keyArray[i]);
7733cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(new Integer(j - i).toString(), ceilingKey);
7734cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
7735cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
7736cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        keySet = ((NavigableMap) subMap_startIncluded_endExcluded_comparator)
7737cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .navigableKeySet();
7738cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        descendingKeySet = keySet.descendingSet();
7739cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        keyArray = (String[]) descendingKeySet
7740cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .toArray(new String[descendingKeySet.size()]);
7741cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int i = 0, j = 108; i < keyArray.length; i++) {
7742cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            ceilingKey = (String) descendingKeySet.ceiling(keyArray[i]);
7743cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(new Integer(j - i).toString(), ceilingKey);
7744cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
7745cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
7746cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        keySet = ((NavigableMap) subMap_startIncluded_endIncluded_comparator)
7747cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .navigableKeySet();
7748cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        descendingKeySet = keySet.descendingSet();
7749cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        keyArray = (String[]) descendingKeySet
7750cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .toArray(new String[descendingKeySet.size()]);
7751cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int i = 0, j = 109; i < keyArray.length; i++) {
7752cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            ceilingKey = (String) descendingKeySet.ceiling(keyArray[i]);
7753cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(new Integer(j - i).toString(), ceilingKey);
7754cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
7755cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
7756cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
7757cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_DescendingSubMapKeySet_floor() {
7758cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        NavigableSet keySet, descendingKeySet;
7759cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        String[] keyArray;
7760cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        String floorKey;
7761cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
7762cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        keySet = navigableMap_startExcluded_endExcluded.navigableKeySet();
7763cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        descendingKeySet = keySet.descendingSet();
7764cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        keyArray = (String[]) descendingKeySet
7765cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .toArray(new String[descendingKeySet.size()]);
7766cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int i = 0, j = 108; i < keyArray.length; i++) {
7767cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            floorKey = (String) descendingKeySet.floor(keyArray[i]);
7768cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(new Integer(j - i).toString(), floorKey);
7769cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
7770cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
7771cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        String key = new Integer(0).toString();
7772cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        floorKey = (String) descendingKeySet.floor(key);
7773cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(101, Integer.parseInt(floorKey));
7774cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
7775cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = new Integer(2).toString();
7776cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        floorKey = (String) descendingKeySet.floor(key);
7777cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNull(floorKey);
7778cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
7779cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        keySet = navigableMap_startExcluded_endIncluded.navigableKeySet();
7780cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        descendingKeySet = keySet.descendingSet();
7781cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        keyArray = (String[]) descendingKeySet
7782cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .toArray(new String[descendingKeySet.size()]);
7783cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int i = 0, j = 109; i < keyArray.length; i++) {
7784cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            floorKey = (String) descendingKeySet.floor(keyArray[i]);
7785cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(new Integer(j - i).toString(), floorKey);
7786cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
7787cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
7788cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = new Integer(0).toString();
7789cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        floorKey = (String) descendingKeySet.floor(key);
7790cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(101, Integer.parseInt(floorKey));
7791cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
7792cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = new Integer(2).toString();
7793cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        floorKey = (String) descendingKeySet.floor(key);
7794cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNull(floorKey);
7795cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
7796cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        keySet = navigableMap_startIncluded_endExcluded.navigableKeySet();
7797cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        descendingKeySet = keySet.descendingSet();
7798cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        keyArray = (String[]) descendingKeySet
7799cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .toArray(new String[descendingKeySet.size()]);
7800cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int i = 0, j = 108; i < keyArray.length; i++) {
7801cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            floorKey = (String) descendingKeySet.floor(keyArray[i]);
7802cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(new Integer(j - i).toString(), floorKey);
7803cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
7804cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
7805cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = new Integer(0).toString();
7806cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        floorKey = (String) descendingKeySet.floor(key);
7807cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(100, Integer.parseInt(floorKey));
7808cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
7809cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = new Integer(2).toString();
7810cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        floorKey = (String) descendingKeySet.floor(key);
7811cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNull(floorKey);
7812cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
7813cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        keySet = navigableMap_startIncluded_endIncluded.navigableKeySet();
7814cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        descendingKeySet = keySet.descendingSet();
7815cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        keyArray = (String[]) descendingKeySet
7816cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .toArray(new String[descendingKeySet.size()]);
7817cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int i = 0, j = 109; i < keyArray.length; i++) {
7818cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            floorKey = (String) descendingKeySet.floor(keyArray[i]);
7819cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(new Integer(j - i).toString(), floorKey);
7820cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
7821cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
7822cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = new Integer(0).toString();
7823cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        floorKey = (String) descendingKeySet.floor(key);
7824cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(100, Integer.parseInt(floorKey));
7825cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
7826cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = new Integer(2).toString();
7827cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        floorKey = (String) descendingKeySet.floor(key);
7828cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNull(floorKey);
7829cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
7830cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = new Integer(2).toString();
7831cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        keySet = tm.headMap(key, true).navigableKeySet();
7832cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        descendingKeySet = keySet.descendingSet();
7833cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Iterator iterator = descendingKeySet.iterator();
7834cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(key, descendingKeySet.floor(iterator.next()));
7835cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
7836cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            descendingKeySet.floor(null);
7837cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw NPE");
7838cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (NullPointerException e) {
7839cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
7840cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
7841cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
7842cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = new Integer(0).toString();
7843cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        String endKey = key;
7844cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
7845cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        keySet = tm.headMap(endKey, true).navigableKeySet();
7846cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        descendingKeySet = keySet.descendingSet();
7847cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(key, descendingKeySet.floor(endKey));
7848cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
7849cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = new Integer(0).toString();
7850cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        keySet = tm.headMap(endKey, false).navigableKeySet();
7851cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        descendingKeySet = keySet.descendingSet();
7852cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNull(descendingKeySet.floor(endKey));
7853cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
7854cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        endKey = new Integer(999).toString();
7855cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        keySet = tm.headMap(endKey, true).navigableKeySet();
7856cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        descendingKeySet = keySet.descendingSet();
7857cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(new Integer(999).toString(), descendingKeySet
7858cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .floor(endKey));
7859cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(key, descendingKeySet.floor(key));
7860cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
7861cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        endKey = new Integer(999).toString();
7862cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        keySet = tm.headMap(endKey, false).navigableKeySet();
7863cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        descendingKeySet = keySet.descendingSet();
7864cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNull(descendingKeySet.floor(endKey));
7865cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(key, descendingKeySet.floor(key));
7866cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
7867cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // With Comparator
7868cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        keySet = ((NavigableMap) subMap_startExcluded_endExcluded_comparator)
7869cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .navigableKeySet();
7870cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        descendingKeySet = keySet.descendingSet();
7871cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        keyArray = (String[]) descendingKeySet
7872cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .toArray(new String[descendingKeySet.size()]);
7873cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int i = 0, j = 108; i < keyArray.length; i++) {
7874cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            floorKey = (String) descendingKeySet.floor(keyArray[i]);
7875cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(new Integer(j - i).toString(), floorKey);
7876cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
7877cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
7878cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = new Integer(0).toString();
7879cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        floorKey = (String) descendingKeySet.floor(key);
7880cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(101, Integer.parseInt(floorKey));
7881cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
7882cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = new Integer(2).toString();
7883cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        floorKey = (String) descendingKeySet.floor(key);
7884cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNull(floorKey);
7885cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
7886cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        keySet = ((NavigableMap) subMap_startExcluded_endIncluded_comparator)
7887cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .navigableKeySet();
7888cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        descendingKeySet = keySet.descendingSet();
7889cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        keyArray = (String[]) descendingKeySet
7890cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .toArray(new String[descendingKeySet.size()]);
7891cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int i = 0, j = 109; i < keyArray.length; i++) {
7892cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            floorKey = (String) descendingKeySet.floor(keyArray[i]);
7893cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(new Integer(j - i).toString(), floorKey);
7894cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
7895cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
7896cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = new Integer(0).toString();
7897cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        floorKey = (String) descendingKeySet.floor(key);
7898cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(101, Integer.parseInt(floorKey));
7899cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
7900cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = new Integer(2).toString();
7901cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        floorKey = (String) descendingKeySet.floor(key);
7902cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNull(floorKey);
7903cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
7904cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        keySet = ((NavigableMap) subMap_startIncluded_endExcluded_comparator)
7905cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .navigableKeySet();
7906cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        descendingKeySet = keySet.descendingSet();
7907cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        keyArray = (String[]) descendingKeySet
7908cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .toArray(new String[descendingKeySet.size()]);
7909cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int i = 0, j = 108; i < keyArray.length; i++) {
7910cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            floorKey = (String) descendingKeySet.floor(keyArray[i]);
7911cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(new Integer(j - i).toString(), floorKey);
7912cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
7913cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
7914cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = new Integer(0).toString();
7915cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        floorKey = (String) descendingKeySet.floor(key);
7916cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(100, Integer.parseInt(floorKey));
7917cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
7918cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = new Integer(2).toString();
7919cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        floorKey = (String) descendingKeySet.floor(key);
7920cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNull(floorKey);
7921cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
7922cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        keySet = ((NavigableMap) subMap_startIncluded_endIncluded)
7923cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .navigableKeySet();
7924cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        descendingKeySet = keySet.descendingSet();
7925cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        keyArray = (String[]) descendingKeySet
7926cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .toArray(new String[descendingKeySet.size()]);
7927cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int i = 0, j = 109; i < keyArray.length; i++) {
7928cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            floorKey = (String) descendingKeySet.floor(keyArray[i]);
7929cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(new Integer(j - i).toString(), floorKey);
7930cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
7931cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
7932cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = new Integer(0).toString();
7933cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        floorKey = (String) descendingKeySet.floor(key);
7934cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(100, Integer.parseInt(floorKey));
7935cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
7936cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = new Integer(2).toString();
7937cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        floorKey = (String) descendingKeySet.floor(key);
7938cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNull(floorKey);
7939cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
7940cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
7941cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_AscendingSubMapKeySet_last() {
7942cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        NavigableSet keySet;
7943cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        String firstKey1 = new Integer(108).toString();
7944cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        String firstKey2 = new Integer(109).toString();
7945cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
7946cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        keySet = navigableMap_startExcluded_endExcluded.navigableKeySet();
7947cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(firstKey1, keySet.last());
7948cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
7949cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        keySet = navigableMap_startExcluded_endIncluded.navigableKeySet();
7950cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(firstKey2, keySet.last());
7951cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
7952cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        keySet = navigableMap_startIncluded_endExcluded.navigableKeySet();
7953cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(firstKey1, keySet.last());
7954cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
7955cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        keySet = navigableMap_startIncluded_endIncluded.navigableKeySet();
7956cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(firstKey2, keySet.last());
7957cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
7958cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
7959cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_AscendingSubMapKeySet_comparator() {
7960cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        NavigableSet keySet;
7961cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        keySet = navigableMap_startExcluded_endExcluded.navigableKeySet();
7962cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNull(keySet.comparator());
7963cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
7964cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        keySet = navigableMap_startExcluded_endIncluded.navigableKeySet();
7965cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNull(keySet.comparator());
7966cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
7967cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        keySet = navigableMap_startIncluded_endExcluded.navigableKeySet();
7968cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNull(keySet.comparator());
7969cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
7970cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        keySet = navigableMap_startIncluded_endIncluded.navigableKeySet();
7971cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNull(keySet.comparator());
7972cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
7973cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        String endKey = new Integer(2).toString();
7974cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        keySet = tm.headMap(endKey, true).navigableKeySet();
7975cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNull(keySet.comparator());
7976cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
7977cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
7978cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_AscendingSubMapKeySet_pollFirst_startExcluded_endExcluded() {
7979cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        NavigableSet keySet = navigableMap_startExcluded_endExcluded
7980cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .navigableKeySet();
7981cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Iterator iterator = keySet.iterator();
7982cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(8, keySet.size());
7983cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int value = 101; value < 109; value++) {
7984cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(new Integer(value).toString(), keySet.pollFirst());
7985cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
7986cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(0, keySet.size());
7987cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNull(keySet.pollFirst());
7988cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
7989cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
7990cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_AscendingSubMapKeySet_pollFirst_startExcluded_endIncluded() {
7991cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        NavigableSet keySet = navigableMap_startExcluded_endIncluded
7992cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .navigableKeySet();
7993cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Iterator iterator = keySet.iterator();
7994cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(9, keySet.size());
7995cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int value = 101; value < 110; value++) {
7996cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(new Integer(value).toString(), keySet.pollFirst());
7997cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
7998cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(0, keySet.size());
7999cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNull(keySet.pollFirst());
8000cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
8001cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
8002cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_AscendingSubMapKeySet_pollFirst_startIncluded_endExcluded() {
8003cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        NavigableSet keySet = navigableMap_startIncluded_endExcluded
8004cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .navigableKeySet();
8005cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Iterator iterator = keySet.iterator();
8006cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(9, keySet.size());
8007cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int value = 100; value < 109; value++) {
8008cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(new Integer(value).toString(), keySet.pollFirst());
8009cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
8010cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(0, keySet.size());
8011cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNull(keySet.pollFirst());
8012cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
8013cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
8014cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_AscendingSubMapKeySet_pollFirst_startIncluded_endIncluded() {
8015cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        NavigableSet keySet = navigableMap_startIncluded_endIncluded
8016cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .navigableKeySet();
8017cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Iterator iterator = keySet.iterator();
8018cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(10, keySet.size());
8019cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int value = 100; value < 110; value++) {
8020cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(new Integer(value).toString(), keySet.pollFirst());
8021cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
8022cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(0, keySet.size());
8023cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNull(keySet.pollFirst());
8024cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
8025cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
8026cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_AscendingSubMapKeySet_pollFirst() {
8027cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        String endKey = new Integer(2).toString();
8028cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        NavigableSet keySet = tm.headMap(endKey, true).navigableKeySet();
8029cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(new Integer(0).toString(), keySet.pollFirst());
8030cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
8031cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        keySet = tm.tailMap(endKey, true).navigableKeySet();
8032cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(new Integer(2).toString(), keySet.pollFirst());
8033cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
8034cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
8035cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_AscendingSubMapKeySet_pollLast_startExcluded_endExcluded() {
8036cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        NavigableSet keySet = navigableMap_startExcluded_endExcluded
8037cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .navigableKeySet();
8038cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Iterator iterator = keySet.iterator();
8039cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(8, keySet.size());
8040cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int value = 108; value > 100; value--) {
8041cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(new Integer(value).toString(), keySet.pollLast());
8042cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
8043cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(0, keySet.size());
8044cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNull(keySet.pollLast());
8045cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
8046cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
8047cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_AscendingSubMapKeySet_pollLast_startExcluded_endIncluded() {
8048cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        NavigableSet keySet = navigableMap_startExcluded_endIncluded
8049cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .navigableKeySet();
8050cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Iterator iterator = keySet.iterator();
8051cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(9, keySet.size());
8052cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int value = 109; value > 100; value--) {
8053cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(new Integer(value).toString(), keySet.pollLast());
8054cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
8055cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(0, keySet.size());
8056cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNull(keySet.pollLast());
8057cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
8058cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
8059cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_AscendingSubMapKeySet_pollLast_startIncluded_endExcluded() {
8060cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        NavigableSet keySet = navigableMap_startIncluded_endExcluded
8061cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .navigableKeySet();
8062cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Iterator iterator = keySet.iterator();
8063cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(9, keySet.size());
8064cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int value = 108; value > 99; value--) {
8065cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(new Integer(value).toString(), keySet.pollLast());
8066cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
8067cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(0, keySet.size());
8068cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNull(keySet.pollLast());
8069cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
8070cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
8071cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_AscendingSubMapKeySet_pollLast_startIncluded_endIncluded() {
8072cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        NavigableSet keySet = navigableMap_startIncluded_endIncluded
8073cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .navigableKeySet();
8074cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Iterator iterator = keySet.iterator();
8075cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(10, keySet.size());
8076cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int value = 109; value > 99; value--) {
8077cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(new Integer(value).toString(), keySet.pollLast());
8078cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
8079cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(0, keySet.size());
8080cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNull(keySet.pollLast());
8081cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
8082cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
8083cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_AscendingSubMapKeySet_pollLast() {
8084cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        String endKey = new Integer(2).toString();
8085cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        NavigableSet keySet = tm.headMap(endKey, true).navigableKeySet();
8086cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(new Integer(2).toString(), keySet.pollLast());
8087cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
8088cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        keySet = tm.tailMap(endKey, true).navigableKeySet();
8089cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(new Integer(999).toString(), keySet.pollLast());
8090cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
8091cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
8092cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_AscendingSubMapKeySet_descendingIterator() {
8093cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        NavigableSet keySet;
8094cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Iterator iterator;
8095cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
8096cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        keySet = navigableMap_startExcluded_endExcluded.navigableKeySet();
8097cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        iterator = keySet.descendingIterator();
8098cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int value = 108; value > 100; value--) {
8099cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertTrue(iterator.hasNext());
8100cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(new Integer(value).toString(), iterator.next());
8101cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
8102cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(iterator.hasNext());
8103cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
8104cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            iterator.next();
8105cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw NoSuchElementException");
8106cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (NoSuchElementException e) {
8107cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
8108cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
8109cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
8110cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        keySet = navigableMap_startExcluded_endIncluded.navigableKeySet();
8111cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        iterator = keySet.descendingIterator();
8112cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int value = 109; value > 100; value--) {
8113cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertTrue(iterator.hasNext());
8114cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(new Integer(value).toString(), iterator.next());
8115cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
8116cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(iterator.hasNext());
8117cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
8118cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            iterator.next();
8119cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw NoSuchElementException");
8120cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (NoSuchElementException e) {
8121cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
8122cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
8123cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
8124cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        keySet = navigableMap_startIncluded_endExcluded.navigableKeySet();
8125cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        iterator = keySet.descendingIterator();
8126cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int value = 108; value > 99; value--) {
8127cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertTrue(iterator.hasNext());
8128cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(new Integer(value).toString(), iterator.next());
8129cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
8130cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(iterator.hasNext());
8131cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
8132cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            iterator.next();
8133cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw NoSuchElementException");
8134cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (NoSuchElementException e) {
8135cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
8136cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
8137cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
8138cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        keySet = navigableMap_startIncluded_endIncluded.navigableKeySet();
8139cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        iterator = keySet.descendingIterator();
8140cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int value = 109; value > 99; value--) {
8141cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertTrue(iterator.hasNext());
8142cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(new Integer(value).toString(), iterator.next());
8143cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
8144cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(iterator.hasNext());
8145cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
8146cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            iterator.next();
8147cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw NoSuchElementException");
8148cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (NoSuchElementException e) {
8149cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
8150cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
8151cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
8152cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        String endKey = new Integer(2).toString();
8153cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        keySet = tm.headMap(endKey, true).navigableKeySet();
8154cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        iterator = keySet.descendingIterator();
8155cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(new Integer(2).toString(), iterator.next());
8156cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(new Integer(199).toString(), iterator.next());
8157cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
8158cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
8159cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_AscendingSubMapKeySet_descendingSet() {
8160cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        NavigableSet keySet, descendingSet;
8161cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Iterator iterator;
8162cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
8163cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        keySet = navigableMap_startExcluded_endExcluded.navigableKeySet()
8164cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .descendingSet();
8165cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        descendingSet = keySet.descendingSet();
8166cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        iterator = descendingSet.iterator();
8167cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int value = 101; value < 109; value++) {
8168cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertTrue(iterator.hasNext());
8169cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(new Integer(value).toString(), iterator.next());
8170cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
8171cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(iterator.hasNext());
8172cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
8173cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            iterator.next();
8174cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw NoSuchElementException");
8175cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (NoSuchElementException e) {
8176cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
8177cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
8178cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
8179cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        keySet = navigableMap_startExcluded_endIncluded.navigableKeySet()
8180cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .descendingSet();
8181cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        descendingSet = keySet.descendingSet();
8182cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        iterator = descendingSet.iterator();
8183cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int value = 101; value < 110; value++) {
8184cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertTrue(iterator.hasNext());
8185cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(new Integer(value).toString(), iterator.next());
8186cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
8187cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(iterator.hasNext());
8188cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
8189cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            iterator.next();
8190cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw NoSuchElementException");
8191cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (NoSuchElementException e) {
8192cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
8193cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
8194cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
8195cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        keySet = navigableMap_startIncluded_endExcluded.navigableKeySet()
8196cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .descendingSet();
8197cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        descendingSet = keySet.descendingSet();
8198cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        iterator = descendingSet.iterator();
8199cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int value = 100; value < 109; value++) {
8200cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertTrue(iterator.hasNext());
8201cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(new Integer(value).toString(), iterator.next());
8202cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
8203cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(iterator.hasNext());
8204cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
8205cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            iterator.next();
8206cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw NoSuchElementException");
8207cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (NoSuchElementException e) {
8208cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
8209cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
8210cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
8211cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        keySet = navigableMap_startIncluded_endIncluded.navigableKeySet()
8212cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .descendingSet();
8213cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        descendingSet = keySet.descendingSet();
8214cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        iterator = descendingSet.iterator();
8215cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int value = 100; value < 110; value++) {
8216cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertTrue(iterator.hasNext());
8217cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(new Integer(value).toString(), iterator.next());
8218cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
8219cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(iterator.hasNext());
8220cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
8221cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            iterator.next();
8222cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw NoSuchElementException");
8223cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (NoSuchElementException e) {
8224cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
8225cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
8226cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
8227cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        String endKey = new Integer(1).toString();
8228cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        keySet = tm.headMap(endKey, true).navigableKeySet();
8229cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        descendingSet = keySet.descendingSet();
8230cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        iterator = descendingSet.iterator();
8231cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(new Integer(1).toString(), iterator.next());
8232cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(new Integer(0).toString(), iterator.next());
8233cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
8234cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
8235cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_AscendingSubMapKeySet_headSet() {
8236cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        NavigableSet keySet;
8237cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        SortedSet headSet;
8238cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        String endKey, key;
8239cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Iterator iterator;
8240cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
8241cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        keySet = navigableMap_startExcluded_endExcluded.navigableKeySet();
8242cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        endKey = new Integer(99).toString();
8243cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
8244cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            keySet.headSet(endKey);
8245cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
8246cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
8247cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
8248cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
8249cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
8250cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            keySet.headSet(endKey, false);
8251cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
8252cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
8253cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
8254cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
8255cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
8256cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            keySet.headSet(endKey, true);
8257cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
8258cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
8259cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
8260cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
8261cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
8262cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        endKey = new Integer(100).toString();
8263cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
8264e22b1d53d200616e59483cdbf0df0796583b1007Narayan Kamath            keySet.headSet(endKey, false);
8265e22b1d53d200616e59483cdbf0df0796583b1007Narayan Kamath            fail("should throw IllegalArgumentException");
8266e22b1d53d200616e59483cdbf0df0796583b1007Narayan Kamath        } catch (IllegalArgumentException e) {
8267e22b1d53d200616e59483cdbf0df0796583b1007Narayan Kamath            // Expected
8268e22b1d53d200616e59483cdbf0df0796583b1007Narayan Kamath        }
8269e22b1d53d200616e59483cdbf0df0796583b1007Narayan Kamath
8270e22b1d53d200616e59483cdbf0df0796583b1007Narayan Kamath        try {
8271e22b1d53d200616e59483cdbf0df0796583b1007Narayan Kamath            keySet.headSet(endKey);
8272e22b1d53d200616e59483cdbf0df0796583b1007Narayan Kamath            fail("should throw IllegalArgumentException");
8273e22b1d53d200616e59483cdbf0df0796583b1007Narayan Kamath        } catch (IllegalArgumentException e) {
8274e22b1d53d200616e59483cdbf0df0796583b1007Narayan Kamath            // Expected
8275e22b1d53d200616e59483cdbf0df0796583b1007Narayan Kamath        }
8276e22b1d53d200616e59483cdbf0df0796583b1007Narayan Kamath
8277e22b1d53d200616e59483cdbf0df0796583b1007Narayan Kamath        try {
8278e22b1d53d200616e59483cdbf0df0796583b1007Narayan Kamath            keySet.headSet(endKey, true);
8279cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
8280cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
8281cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
8282cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
8283cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
8284cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        endKey = new Integer(101).toString();
8285cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(0, keySet.headSet(endKey).size());
8286cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(0, keySet.headSet(endKey, false).size());
8287cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(1, keySet.headSet(endKey, true).size());
8288cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
8289cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int i = 102; i < 109; i++) {
8290cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            endKey = new Integer(i).toString();
8291cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            headSet = keySet.headSet(endKey);
8292cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            iterator = headSet.iterator();
8293cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            int j;
8294cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            for (j = 101; iterator.hasNext(); j++) {
8295cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                key = (String) iterator.next();
8296cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                assertEquals(new Integer(j).toString(), key);
8297cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
8298cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(i, j);
8299cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
8300cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            headSet = keySet.headSet(endKey, false);
8301cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            iterator = headSet.iterator();
8302cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            for (j = 101; iterator.hasNext(); j++) {
8303cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                key = (String) iterator.next();
8304cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                assertEquals(new Integer(j).toString(), key);
8305cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
8306cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(i, j);
8307cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
8308cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            headSet = keySet.headSet(endKey, true);
8309cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            iterator = headSet.iterator();
8310cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            for (j = 101; iterator.hasNext(); j++) {
8311cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                key = (String) iterator.next();
8312cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                assertEquals(new Integer(j).toString(), key);
8313cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
8314cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(i + 1, j);
8315cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
8316cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
8317cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        endKey = new Integer(109).toString();
8318cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        headSet = keySet.headSet(endKey);
8319cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        iterator = headSet.iterator();
8320cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        int index;
8321cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (index = 101; iterator.hasNext(); index++) {
8322cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            key = (String) iterator.next();
8323cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(new Integer(index).toString(), key);
8324cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
8325cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(109, index);
8326cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
8327cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        headSet = keySet.headSet(endKey, false);
8328cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        iterator = headSet.iterator();
8329cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (index = 101; iterator.hasNext(); index++) {
8330cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            key = (String) iterator.next();
8331cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(new Integer(index).toString(), key);
8332cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
8333cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(109, index);
8334cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
8335cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
8336cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            keySet.headSet(endKey, true);
8337cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
8338cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
8339cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
8340cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
8341cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
8342cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        endKey = new Integer(110).toString();
8343cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
8344cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            keySet.headSet(endKey);
8345cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
8346cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
8347cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
8348cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
8349cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
8350cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            keySet.headSet(endKey, true);
8351cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
8352cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
8353cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
8354cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
8355cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
8356cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            keySet.headSet(endKey, false);
8357cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
8358cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
8359cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
8360cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
8361cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
8362cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        keySet = navigableMap_startExcluded_endIncluded.navigableKeySet();
8363cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        endKey = new Integer(99).toString();
8364cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
8365cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            keySet.headSet(endKey);
8366cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
8367cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
8368cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
8369cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
8370cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
8371cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            keySet.headSet(endKey, true);
8372cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
8373cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
8374cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
8375cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
8376cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
8377cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            keySet.headSet(endKey, false);
8378cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
8379cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
8380cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
8381cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
8382cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
8383cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        endKey = new Integer(100).toString();
8384e22b1d53d200616e59483cdbf0df0796583b1007Narayan Kamath        try {
8385e22b1d53d200616e59483cdbf0df0796583b1007Narayan Kamath            keySet.headSet(endKey);
8386e22b1d53d200616e59483cdbf0df0796583b1007Narayan Kamath            fail("should throw IllegalArgumentException");
8387e22b1d53d200616e59483cdbf0df0796583b1007Narayan Kamath        } catch (IllegalArgumentException e) {
8388e22b1d53d200616e59483cdbf0df0796583b1007Narayan Kamath            // Expected
8389e22b1d53d200616e59483cdbf0df0796583b1007Narayan Kamath        }
8390e22b1d53d200616e59483cdbf0df0796583b1007Narayan Kamath
8391e22b1d53d200616e59483cdbf0df0796583b1007Narayan Kamath        try {
8392e22b1d53d200616e59483cdbf0df0796583b1007Narayan Kamath            keySet.headSet(endKey, false);
8393e22b1d53d200616e59483cdbf0df0796583b1007Narayan Kamath            fail("should throw IllegalArgumentException");
8394e22b1d53d200616e59483cdbf0df0796583b1007Narayan Kamath        } catch (IllegalArgumentException e) {
8395e22b1d53d200616e59483cdbf0df0796583b1007Narayan Kamath            // Expected
8396e22b1d53d200616e59483cdbf0df0796583b1007Narayan Kamath        }
8397e22b1d53d200616e59483cdbf0df0796583b1007Narayan Kamath
8398cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
8399cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            keySet.headSet(endKey, true);
8400cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
8401cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
8402cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
8403cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
8404cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
8405cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        endKey = new Integer(101).toString();
8406cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(0, keySet.headSet(endKey).size());
8407cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(0, keySet.headSet(endKey).size());
8408cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(1, keySet.headSet(endKey, true).size());
8409cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
8410cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int i = 102; i < 109; i++) {
8411cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            endKey = new Integer(i).toString();
8412cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
8413cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            headSet = keySet.headSet(endKey);
8414cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            iterator = headSet.iterator();
8415cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            int j;
8416cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            for (j = 101; iterator.hasNext(); j++) {
8417cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                key = (String) iterator.next();
8418cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                assertEquals(new Integer(j).toString(), key);
8419cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
8420cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(i, j);
8421cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
8422cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            headSet = keySet.headSet(endKey, false);
8423cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            iterator = headSet.iterator();
8424cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            for (j = 101; iterator.hasNext(); j++) {
8425cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                key = (String) iterator.next();
8426cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                assertEquals(new Integer(j).toString(), key);
8427cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
8428cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(i, j);
8429cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
8430cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            headSet = keySet.headSet(endKey, true);
8431cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            iterator = headSet.iterator();
8432cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            for (j = 101; iterator.hasNext(); j++) {
8433cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                key = (String) iterator.next();
8434cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                assertEquals(new Integer(j).toString(), key);
8435cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
8436cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(i + 1, j);
8437cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
8438cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
8439cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        endKey = new Integer(109).toString();
8440cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        headSet = keySet.headSet(endKey);
8441cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        iterator = headSet.iterator();
8442cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (index = 101; iterator.hasNext(); index++) {
8443cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            key = (String) iterator.next();
8444cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(new Integer(index).toString(), key);
8445cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
8446cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(109, index);
8447cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
8448cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        headSet = keySet.headSet(endKey, false);
8449cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        iterator = headSet.iterator();
8450cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (index = 101; iterator.hasNext(); index++) {
8451cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            key = (String) iterator.next();
8452cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(new Integer(index).toString(), key);
8453cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
8454cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(109, index);
8455cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
8456cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        headSet = keySet.headSet(endKey, true);
8457cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        iterator = headSet.iterator();
8458cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (index = 101; iterator.hasNext(); index++) {
8459cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            key = (String) iterator.next();
8460cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(new Integer(index).toString(), key);
8461cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
8462cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(110, index);
8463cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
8464cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        endKey = new Integer(110).toString();
8465cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
8466cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            keySet.headSet(endKey);
8467cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
8468cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
8469cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
8470cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
8471cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
8472cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            keySet.headSet(endKey, false);
8473cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
8474cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
8475cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
8476cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
8477cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
8478cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            keySet.headSet(endKey, true);
8479cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
8480cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
8481cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
8482cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
8483cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
8484cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        keySet = navigableMap_startIncluded_endExcluded.navigableKeySet();
8485cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        endKey = new Integer(99).toString();
8486cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
8487cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            keySet.headSet(endKey);
8488cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
8489cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
8490cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
8491cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
8492cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
8493cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            keySet.headSet(endKey, false);
8494cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
8495cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
8496cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
8497cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
8498cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
8499cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            keySet.headSet(endKey, true);
8500cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
8501cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
8502cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
8503cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
8504cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
8505cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        endKey = new Integer(100).toString();
8506cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(0, keySet.headSet(endKey).size());
8507cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(0, keySet.headSet(endKey, false).size());
8508cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(1, keySet.headSet(endKey, true).size());
8509cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
8510cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        endKey = new Integer(101).toString();
8511cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        headSet = keySet.headSet(endKey);
8512cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        iterator = headSet.iterator();
8513cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (index = 100; iterator.hasNext(); index++) {
8514cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            key = (String) iterator.next();
8515cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(new Integer(index).toString(), key);
8516cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
8517cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(101, index);
8518cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
8519cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        headSet = keySet.headSet(endKey, false);
8520cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        iterator = headSet.iterator();
8521cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (index = 100; iterator.hasNext(); index++) {
8522cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            key = (String) iterator.next();
8523cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(new Integer(index).toString(), key);
8524cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
8525cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(101, index);
8526cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
8527cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        headSet = keySet.headSet(endKey, true);
8528cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        iterator = headSet.iterator();
8529cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (index = 100; iterator.hasNext(); index++) {
8530cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            key = (String) iterator.next();
8531cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(new Integer(index).toString(), key);
8532cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
8533cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(102, index);
8534cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
8535cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int i = 102; i < 109; i++) {
8536cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            endKey = new Integer(i).toString();
8537cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
8538cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            headSet = keySet.headSet(endKey);
8539cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            iterator = headSet.iterator();
8540cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            int j;
8541cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            for (j = 100; iterator.hasNext(); j++) {
8542cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                key = (String) iterator.next();
8543cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                assertEquals(new Integer(j).toString(), key);
8544cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
8545cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(i, j);
8546cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
8547cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            headSet = keySet.headSet(endKey, false);
8548cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            iterator = headSet.iterator();
8549cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            for (j = 100; iterator.hasNext(); j++) {
8550cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                key = (String) iterator.next();
8551cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                assertEquals(new Integer(j).toString(), key);
8552cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
8553cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(i, j);
8554cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
8555cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            headSet = keySet.headSet(endKey, true);
8556cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            iterator = headSet.iterator();
8557cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            for (j = 100; iterator.hasNext(); j++) {
8558cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                key = (String) iterator.next();
8559cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                assertEquals(new Integer(j).toString(), key);
8560cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
8561cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(i + 1, j);
8562cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
8563cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
8564cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        endKey = new Integer(109).toString();
8565cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        headSet = keySet.headSet(endKey);
8566cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        iterator = headSet.iterator();
8567cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (index = 100; iterator.hasNext(); index++) {
8568cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            key = (String) iterator.next();
8569cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(new Integer(index).toString(), key);
8570cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
8571cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(109, index);
8572cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
8573cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        headSet = keySet.headSet(endKey, false);
8574cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        iterator = headSet.iterator();
8575cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (index = 100; iterator.hasNext(); index++) {
8576cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            key = (String) iterator.next();
8577cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(new Integer(index).toString(), key);
8578cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
8579cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(109, index);
8580cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
8581cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
8582cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            keySet.headSet(endKey, true);
8583cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
8584cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
8585cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
8586cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
8587cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
8588cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        endKey = new Integer(110).toString();
8589cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
8590cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            keySet.headSet(endKey);
8591cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
8592cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
8593cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
8594cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
8595cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
8596cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
8597cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            keySet.headSet(endKey, false);
8598cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
8599cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
8600cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
8601cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
8602cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
8603cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
8604cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            keySet.headSet(endKey, true);
8605cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
8606cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
8607cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
8608cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
8609cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
8610cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        keySet = navigableMap_startIncluded_endIncluded.navigableKeySet();
8611cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        endKey = new Integer(99).toString();
8612cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
8613cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            keySet.headSet(endKey);
8614cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
8615cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
8616cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
8617cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
8618cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
8619cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            keySet.headSet(endKey, false);
8620cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
8621cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
8622cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
8623cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
8624cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
8625cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            keySet.headSet(endKey, true);
8626cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
8627cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
8628cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
8629cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
8630cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
8631cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        endKey = new Integer(100).toString();
8632cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(0, keySet.headSet(endKey).size());
8633cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(0, keySet.headSet(endKey, false).size());
8634cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(1, keySet.headSet(endKey, true).size());
8635cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
8636cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        endKey = new Integer(101).toString();
8637cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        headSet = keySet.headSet(endKey);
8638cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        iterator = headSet.iterator();
8639cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (index = 100; iterator.hasNext(); index++) {
8640cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            key = (String) iterator.next();
8641cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(new Integer(index).toString(), key);
8642cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
8643cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(101, index);
8644cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
8645cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        headSet = keySet.headSet(endKey, false);
8646cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        iterator = headSet.iterator();
8647cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (index = 100; iterator.hasNext(); index++) {
8648cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            key = (String) iterator.next();
8649cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(new Integer(index).toString(), key);
8650cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
8651cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(101, index);
8652cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
8653cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        headSet = keySet.headSet(endKey, true);
8654cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        iterator = headSet.iterator();
8655cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (index = 100; iterator.hasNext(); index++) {
8656cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            key = (String) iterator.next();
8657cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(new Integer(index).toString(), key);
8658cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
8659cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(102, index);
8660cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
8661cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int i = 102; i < 109; i++) {
8662cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            endKey = new Integer(i).toString();
8663cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
8664cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            headSet = keySet.headSet(endKey);
8665cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            iterator = headSet.iterator();
8666cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            int j;
8667cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            for (j = 100; iterator.hasNext(); j++) {
8668cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                key = (String) iterator.next();
8669cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                assertEquals(new Integer(j).toString(), key);
8670cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
8671cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(i, j);
8672cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
8673cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            headSet = keySet.headSet(endKey, false);
8674cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            iterator = headSet.iterator();
8675cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            for (j = 100; iterator.hasNext(); j++) {
8676cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                key = (String) iterator.next();
8677cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                assertEquals(new Integer(j).toString(), key);
8678cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
8679cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(i, j);
8680cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
8681cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            headSet = keySet.headSet(endKey, true);
8682cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            iterator = headSet.iterator();
8683cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            for (j = 100; iterator.hasNext(); j++) {
8684cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                key = (String) iterator.next();
8685cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                assertEquals(new Integer(j).toString(), key);
8686cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
8687cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(i + 1, j);
8688cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
8689cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
8690cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        endKey = new Integer(109).toString();
8691cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        headSet = keySet.headSet(endKey);
8692cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        iterator = headSet.iterator();
8693cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (index = 100; iterator.hasNext(); index++) {
8694cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            key = (String) iterator.next();
8695cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(new Integer(index).toString(), key);
8696cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
8697cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(109, index);
8698cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
8699cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        headSet = keySet.headSet(endKey, false);
8700cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        iterator = headSet.iterator();
8701cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (index = 100; iterator.hasNext(); index++) {
8702cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            key = (String) iterator.next();
8703cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(new Integer(index).toString(), key);
8704cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
8705cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(109, index);
8706cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
8707cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        headSet = keySet.headSet(endKey, true);
8708cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        iterator = headSet.iterator();
8709cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (index = 100; iterator.hasNext(); index++) {
8710cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            key = (String) iterator.next();
8711cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(new Integer(index).toString(), key);
8712cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
8713cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(110, index);
8714cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
8715cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        endKey = new Integer(110).toString();
8716cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
8717cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            keySet.headSet(endKey);
8718cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
8719cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
8720cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
8721cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
8722cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
8723cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            keySet.headSet(endKey, false);
8724cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
8725cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
8726cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
8727cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
8728cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
8729cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            keySet.headSet(endKey, true);
8730cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
8731cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
8732cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
8733cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
8734cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
8735cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = new Integer(1).toString();
8736cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        keySet = tm.headMap(key, true).navigableKeySet();
8737cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        iterator = keySet.iterator();
8738cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        iterator.next();
8739cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        endKey = (String) iterator.next();
8740cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        headSet = keySet.headSet(endKey, false);
8741cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(1, headSet.size());
8742cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Iterator headSetIterator = headSet.iterator();
8743cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(new Integer(0).toString(), headSetIterator.next());
8744cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(headSetIterator.hasNext());
8745cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
8746cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            headSetIterator.next();
8747cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw NoSuchElementException");
8748cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (NoSuchElementException e) {
8749cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
8750cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
8751cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
8752cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            keySet.headSet(null, false);
8753cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw NPE");
8754cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (NullPointerException e) {
8755cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
8756cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
8757cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
8758cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        headSet = keySet.headSet(endKey, true);
8759cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(2, headSet.size());
8760cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        headSetIterator = headSet.iterator();
8761cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(new Integer(0).toString(), headSetIterator.next());
8762cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(new Integer(1).toString(), headSetIterator.next());
8763cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(headSetIterator.hasNext());
8764cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
8765cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            headSetIterator.next();
8766cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw NoSuchElementException");
8767cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (NoSuchElementException e) {
8768cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
8769cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
8770cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
8771cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            keySet.headSet(null, false);
8772cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw NPE");
8773cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (NullPointerException e) {
8774cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
8775cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
8776cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
8777cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // With Comparator
8778cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        keySet = ((NavigableMap) subMap_startExcluded_endExcluded_comparator)
8779cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .navigableKeySet();
8780cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        endKey = new Integer(99).toString();
8781cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
8782cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            keySet.headSet(endKey);
8783cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
8784cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
8785cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
8786cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
8787cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
8788cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            keySet.headSet(endKey, false);
8789cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
8790cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
8791cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
8792cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
8793cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
8794cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            keySet.headSet(endKey, true);
8795cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
8796cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
8797cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
8798cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
8799cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
8800cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        endKey = new Integer(100).toString();
8801e22b1d53d200616e59483cdbf0df0796583b1007Narayan Kamath        try {
8802e22b1d53d200616e59483cdbf0df0796583b1007Narayan Kamath            keySet.headSet(endKey).size();
8803e22b1d53d200616e59483cdbf0df0796583b1007Narayan Kamath            fail("should throw IllegalArgumentException");
8804e22b1d53d200616e59483cdbf0df0796583b1007Narayan Kamath        } catch (IllegalArgumentException e) {
8805e22b1d53d200616e59483cdbf0df0796583b1007Narayan Kamath            // Expected
8806e22b1d53d200616e59483cdbf0df0796583b1007Narayan Kamath        }
8807e22b1d53d200616e59483cdbf0df0796583b1007Narayan Kamath
8808e22b1d53d200616e59483cdbf0df0796583b1007Narayan Kamath        try {
8809e22b1d53d200616e59483cdbf0df0796583b1007Narayan Kamath            keySet.headSet(endKey, false).size();
8810e22b1d53d200616e59483cdbf0df0796583b1007Narayan Kamath            fail("should throw IllegalArgumentException");
8811e22b1d53d200616e59483cdbf0df0796583b1007Narayan Kamath        } catch (IllegalArgumentException e) {
8812e22b1d53d200616e59483cdbf0df0796583b1007Narayan Kamath            // Expected
8813e22b1d53d200616e59483cdbf0df0796583b1007Narayan Kamath        }
8814e22b1d53d200616e59483cdbf0df0796583b1007Narayan Kamath
8815cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
8816cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            keySet.headSet(endKey, true).size();
8817cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
8818cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
8819cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
8820cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
8821cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
8822cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        endKey = new Integer(101).toString();
8823cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(0, keySet.headSet(endKey).size());
8824cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(0, keySet.headSet(endKey, false).size());
8825cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(1, keySet.headSet(endKey, true).size());
8826cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
8827cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int i = 102; i < 109; i++) {
8828cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            endKey = new Integer(i).toString();
8829cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            headSet = keySet.headSet(endKey);
8830cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            iterator = headSet.iterator();
8831cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            int j;
8832cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            for (j = 101; iterator.hasNext(); j++) {
8833cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                key = (String) iterator.next();
8834cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                assertEquals(new Integer(j).toString(), key);
8835cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
8836cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(i, j);
8837cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
8838cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            headSet = keySet.headSet(endKey, false);
8839cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            iterator = headSet.iterator();
8840cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            for (j = 101; iterator.hasNext(); j++) {
8841cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                key = (String) iterator.next();
8842cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                assertEquals(new Integer(j).toString(), key);
8843cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
8844cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(i, j);
8845cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
8846cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            headSet = keySet.headSet(endKey, true);
8847cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            iterator = headSet.iterator();
8848cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            for (j = 101; iterator.hasNext(); j++) {
8849cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                key = (String) iterator.next();
8850cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                assertEquals(new Integer(j).toString(), key);
8851cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
8852cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(i + 1, j);
8853cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
8854cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
8855cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        endKey = new Integer(109).toString();
8856cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        headSet = keySet.headSet(endKey);
8857cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        iterator = headSet.iterator();
8858cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (index = 101; iterator.hasNext(); index++) {
8859cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            key = (String) iterator.next();
8860cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(new Integer(index).toString(), key);
8861cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
8862cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(109, index);
8863cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
8864cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        headSet = keySet.headSet(endKey, false);
8865cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        iterator = headSet.iterator();
8866cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (index = 101; iterator.hasNext(); index++) {
8867cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            key = (String) iterator.next();
8868cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(new Integer(index).toString(), key);
8869cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
8870cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(109, index);
8871cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
8872cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
8873cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            keySet.headSet(endKey, true);
8874cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
8875cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
8876cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
8877cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
8878cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
8879cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        endKey = new Integer(110).toString();
8880cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
8881cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            keySet.headSet(endKey);
8882cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
8883cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
8884cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
8885cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
8886cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
8887cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            keySet.headSet(endKey, true);
8888cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
8889cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
8890cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
8891cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
8892cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
8893cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            keySet.headSet(endKey, false);
8894cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
8895cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
8896cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
8897cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
8898cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
8899cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        keySet = ((NavigableMap) subMap_startExcluded_endIncluded_comparator)
8900cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .navigableKeySet();
8901cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        endKey = new Integer(99).toString();
8902cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
8903cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            keySet.headSet(endKey);
8904cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
8905cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
8906cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
8907cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
8908cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
8909cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            keySet.headSet(endKey, true);
8910cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
8911cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
8912cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
8913cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
8914cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
8915cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            keySet.headSet(endKey, false);
8916cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
8917cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
8918cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
8919cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
8920cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
8921cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        endKey = new Integer(100).toString();
8922e22b1d53d200616e59483cdbf0df0796583b1007Narayan Kamath        try {
8923e22b1d53d200616e59483cdbf0df0796583b1007Narayan Kamath            keySet.headSet(endKey);
8924e22b1d53d200616e59483cdbf0df0796583b1007Narayan Kamath            fail("should throw IllegalArgumentException");
8925e22b1d53d200616e59483cdbf0df0796583b1007Narayan Kamath        } catch (IllegalArgumentException e) {
8926e22b1d53d200616e59483cdbf0df0796583b1007Narayan Kamath            // Expected
8927e22b1d53d200616e59483cdbf0df0796583b1007Narayan Kamath        }
8928e22b1d53d200616e59483cdbf0df0796583b1007Narayan Kamath
8929e22b1d53d200616e59483cdbf0df0796583b1007Narayan Kamath        try {
8930e22b1d53d200616e59483cdbf0df0796583b1007Narayan Kamath            keySet.headSet(endKey, false);
8931e22b1d53d200616e59483cdbf0df0796583b1007Narayan Kamath            fail("should throw IllegalArgumentException");
8932e22b1d53d200616e59483cdbf0df0796583b1007Narayan Kamath        } catch (IllegalArgumentException e) {
8933e22b1d53d200616e59483cdbf0df0796583b1007Narayan Kamath            // Expected
8934e22b1d53d200616e59483cdbf0df0796583b1007Narayan Kamath        }
8935e22b1d53d200616e59483cdbf0df0796583b1007Narayan Kamath
8936cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
8937cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            keySet.headSet(endKey, true);
8938cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
8939cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
8940cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
8941cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
8942cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
8943cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        endKey = new Integer(101).toString();
8944cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(0, keySet.headSet(endKey).size());
8945cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(0, keySet.headSet(endKey).size());
8946cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(1, keySet.headSet(endKey, true).size());
8947cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
8948cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int i = 102; i < 109; i++) {
8949cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            endKey = new Integer(i).toString();
8950cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
8951cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            headSet = keySet.headSet(endKey);
8952cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            iterator = headSet.iterator();
8953cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            int j;
8954cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            for (j = 101; iterator.hasNext(); j++) {
8955cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                key = (String) iterator.next();
8956cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                assertEquals(new Integer(j).toString(), key);
8957cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
8958cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(i, j);
8959cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
8960cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            headSet = keySet.headSet(endKey, false);
8961cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            iterator = headSet.iterator();
8962cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            for (j = 101; iterator.hasNext(); j++) {
8963cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                key = (String) iterator.next();
8964cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                assertEquals(new Integer(j).toString(), key);
8965cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
8966cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(i, j);
8967cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
8968cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            headSet = keySet.headSet(endKey, true);
8969cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            iterator = headSet.iterator();
8970cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            for (j = 101; iterator.hasNext(); j++) {
8971cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                key = (String) iterator.next();
8972cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                assertEquals(new Integer(j).toString(), key);
8973cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
8974cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(i + 1, j);
8975cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
8976cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
8977cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        endKey = new Integer(109).toString();
8978cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        headSet = keySet.headSet(endKey);
8979cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        iterator = headSet.iterator();
8980cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (index = 101; iterator.hasNext(); index++) {
8981cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            key = (String) iterator.next();
8982cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(new Integer(index).toString(), key);
8983cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
8984cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(109, index);
8985cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
8986cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        headSet = keySet.headSet(endKey, false);
8987cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        iterator = headSet.iterator();
8988cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (index = 101; iterator.hasNext(); index++) {
8989cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            key = (String) iterator.next();
8990cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(new Integer(index).toString(), key);
8991cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
8992cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(109, index);
8993cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
8994cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        headSet = keySet.headSet(endKey, true);
8995cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        iterator = headSet.iterator();
8996cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (index = 101; iterator.hasNext(); index++) {
8997cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            key = (String) iterator.next();
8998cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(new Integer(index).toString(), key);
8999cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
9000cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(110, index);
9001cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
9002cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        endKey = new Integer(110).toString();
9003cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
9004cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            keySet.headSet(endKey);
9005cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
9006cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
9007cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
9008cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
9009cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
9010cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            keySet.headSet(endKey, false);
9011cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
9012cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
9013cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
9014cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
9015cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
9016cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            keySet.headSet(endKey, true);
9017cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
9018cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
9019cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
9020cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
9021cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
9022cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        keySet = ((NavigableMap) subMap_startIncluded_endExcluded_comparator)
9023cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .navigableKeySet();
9024cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        endKey = new Integer(99).toString();
9025cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
9026cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            keySet.headSet(endKey);
9027cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
9028cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
9029cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
9030cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
9031cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
9032cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            keySet.headSet(endKey, false);
9033cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
9034cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
9035cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
9036cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
9037cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
9038cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            keySet.headSet(endKey, true);
9039cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
9040cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
9041cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
9042cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
9043cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
9044cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        endKey = new Integer(100).toString();
9045cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(0, keySet.headSet(endKey).size());
9046cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(0, keySet.headSet(endKey, false).size());
9047cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(1, keySet.headSet(endKey, true).size());
9048cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
9049cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        endKey = new Integer(101).toString();
9050cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        headSet = keySet.headSet(endKey);
9051cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        iterator = headSet.iterator();
9052cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (index = 100; iterator.hasNext(); index++) {
9053cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            key = (String) iterator.next();
9054cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(new Integer(index).toString(), key);
9055cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
9056cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(101, index);
9057cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
9058cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        headSet = keySet.headSet(endKey, false);
9059cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        iterator = headSet.iterator();
9060cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (index = 100; iterator.hasNext(); index++) {
9061cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            key = (String) iterator.next();
9062cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(new Integer(index).toString(), key);
9063cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
9064cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(101, index);
9065cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
9066cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        headSet = keySet.headSet(endKey, true);
9067cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        iterator = headSet.iterator();
9068cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (index = 100; iterator.hasNext(); index++) {
9069cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            key = (String) iterator.next();
9070cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(new Integer(index).toString(), key);
9071cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
9072cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(102, index);
9073cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
9074cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int i = 102; i < 109; i++) {
9075cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            endKey = new Integer(i).toString();
9076cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
9077cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            headSet = keySet.headSet(endKey);
9078cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            iterator = headSet.iterator();
9079cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            int j;
9080cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            for (j = 100; iterator.hasNext(); j++) {
9081cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                key = (String) iterator.next();
9082cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                assertEquals(new Integer(j).toString(), key);
9083cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
9084cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(i, j);
9085cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
9086cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            headSet = keySet.headSet(endKey, false);
9087cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            iterator = headSet.iterator();
9088cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            for (j = 100; iterator.hasNext(); j++) {
9089cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                key = (String) iterator.next();
9090cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                assertEquals(new Integer(j).toString(), key);
9091cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
9092cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(i, j);
9093cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
9094cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            headSet = keySet.headSet(endKey, true);
9095cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            iterator = headSet.iterator();
9096cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            for (j = 100; iterator.hasNext(); j++) {
9097cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                key = (String) iterator.next();
9098cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                assertEquals(new Integer(j).toString(), key);
9099cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
9100cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(i + 1, j);
9101cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
9102cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
9103cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        endKey = new Integer(109).toString();
9104cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        headSet = keySet.headSet(endKey);
9105cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        iterator = headSet.iterator();
9106cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (index = 100; iterator.hasNext(); index++) {
9107cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            key = (String) iterator.next();
9108cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(new Integer(index).toString(), key);
9109cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
9110cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(109, index);
9111cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
9112cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        headSet = keySet.headSet(endKey, false);
9113cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        iterator = headSet.iterator();
9114cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (index = 100; iterator.hasNext(); index++) {
9115cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            key = (String) iterator.next();
9116cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(new Integer(index).toString(), key);
9117cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
9118cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(109, index);
9119cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
9120cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
9121cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            keySet.headSet(endKey, true);
9122cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
9123cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
9124cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
9125cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
9126cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
9127cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        endKey = new Integer(110).toString();
9128cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
9129cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            keySet.headSet(endKey);
9130cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
9131cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
9132cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
9133cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
9134cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
9135cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
9136cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            keySet.headSet(endKey, false);
9137cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
9138cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
9139cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
9140cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
9141cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
9142cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
9143cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            keySet.headSet(endKey, true);
9144cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
9145cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
9146cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
9147cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
9148cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
9149cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        keySet = ((NavigableMap) subMap_startIncluded_endIncluded_comparator)
9150cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .navigableKeySet();
9151cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        endKey = new Integer(99).toString();
9152cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
9153cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            keySet.headSet(endKey);
9154cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
9155cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
9156cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
9157cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
9158cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
9159cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            keySet.headSet(endKey, false);
9160cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
9161cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
9162cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
9163cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
9164cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
9165cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            keySet.headSet(endKey, true);
9166cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
9167cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
9168cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
9169cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
9170cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
9171cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        endKey = new Integer(100).toString();
9172cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(0, keySet.headSet(endKey).size());
9173cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(0, keySet.headSet(endKey, false).size());
9174cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(1, keySet.headSet(endKey, true).size());
9175cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
9176cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        endKey = new Integer(101).toString();
9177cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        headSet = keySet.headSet(endKey);
9178cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        iterator = headSet.iterator();
9179cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (index = 100; iterator.hasNext(); index++) {
9180cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            key = (String) iterator.next();
9181cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(new Integer(index).toString(), key);
9182cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
9183cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(101, index);
9184cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
9185cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        headSet = keySet.headSet(endKey, false);
9186cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        iterator = headSet.iterator();
9187cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (index = 100; iterator.hasNext(); index++) {
9188cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            key = (String) iterator.next();
9189cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(new Integer(index).toString(), key);
9190cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
9191cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(101, index);
9192cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
9193cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        headSet = keySet.headSet(endKey, true);
9194cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        iterator = headSet.iterator();
9195cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (index = 100; iterator.hasNext(); index++) {
9196cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            key = (String) iterator.next();
9197cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(new Integer(index).toString(), key);
9198cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
9199cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(102, index);
9200cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
9201cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int i = 102; i < 109; i++) {
9202cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            endKey = new Integer(i).toString();
9203cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
9204cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            headSet = keySet.headSet(endKey);
9205cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            iterator = headSet.iterator();
9206cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            int j;
9207cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            for (j = 100; iterator.hasNext(); j++) {
9208cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                key = (String) iterator.next();
9209cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                assertEquals(new Integer(j).toString(), key);
9210cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
9211cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(i, j);
9212cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
9213cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            headSet = keySet.headSet(endKey, false);
9214cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            iterator = headSet.iterator();
9215cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            for (j = 100; iterator.hasNext(); j++) {
9216cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                key = (String) iterator.next();
9217cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                assertEquals(new Integer(j).toString(), key);
9218cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
9219cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(i, j);
9220cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
9221cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            headSet = keySet.headSet(endKey, true);
9222cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            iterator = headSet.iterator();
9223cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            for (j = 100; iterator.hasNext(); j++) {
9224cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                key = (String) iterator.next();
9225cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                assertEquals(new Integer(j).toString(), key);
9226cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
9227cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(i + 1, j);
9228cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
9229cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
9230cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        endKey = new Integer(109).toString();
9231cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        headSet = keySet.headSet(endKey);
9232cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        iterator = headSet.iterator();
9233cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (index = 100; iterator.hasNext(); index++) {
9234cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            key = (String) iterator.next();
9235cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(new Integer(index).toString(), key);
9236cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
9237cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(109, index);
9238cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
9239cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        headSet = keySet.headSet(endKey, false);
9240cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        iterator = headSet.iterator();
9241cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (index = 100; iterator.hasNext(); index++) {
9242cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            key = (String) iterator.next();
9243cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(new Integer(index).toString(), key);
9244cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
9245cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(109, index);
9246cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
9247cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        headSet = keySet.headSet(endKey, true);
9248cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        iterator = headSet.iterator();
9249cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (index = 100; iterator.hasNext(); index++) {
9250cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            key = (String) iterator.next();
9251cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(new Integer(index).toString(), key);
9252cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
9253cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(110, index);
9254cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
9255cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        endKey = new Integer(110).toString();
9256cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
9257cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            keySet.headSet(endKey);
9258cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
9259cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
9260cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
9261cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
9262cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
9263cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            keySet.headSet(endKey, false);
9264cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
9265cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
9266cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
9267cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
9268cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
9269cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            keySet.headSet(endKey, true);
9270cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
9271cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
9272cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
9273cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
9274cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
9275cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = new Integer(1).toString();
9276cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        keySet = tm.headMap(key, true).navigableKeySet();
9277cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        iterator = keySet.iterator();
9278cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        iterator.next();
9279cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        endKey = (String) iterator.next();
9280cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        headSet = keySet.headSet(endKey, false);
9281cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(1, headSet.size());
9282cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        headSetIterator = headSet.iterator();
9283cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(new Integer(0).toString(), headSetIterator.next());
9284cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(headSetIterator.hasNext());
9285cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
9286cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            headSetIterator.next();
9287cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw NoSuchElementException");
9288cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (NoSuchElementException e) {
9289cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
9290cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
9291cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
9292cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            keySet.headSet(null, false);
9293cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw NPE");
9294cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (NullPointerException e) {
9295cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
9296cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
9297cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
9298cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        headSet = keySet.headSet(endKey, true);
9299cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(2, headSet.size());
9300cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        headSetIterator = headSet.iterator();
9301cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(new Integer(0).toString(), headSetIterator.next());
9302cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(new Integer(1).toString(), headSetIterator.next());
9303cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(headSetIterator.hasNext());
9304cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
9305cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            headSetIterator.next();
9306cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw NoSuchElementException");
9307cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (NoSuchElementException e) {
9308cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
9309cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
9310cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
9311cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            keySet.headSet(null, false);
9312cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw NPE");
9313cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (NullPointerException e) {
9314cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
9315cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
9316cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
9317cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
9318cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
9319cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_AscendingSubMapKeySet_remove() {
9320cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        TreeMap tm_rm = new TreeMap(tm);
9321cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        SortedMap subMap_startExcluded_endExcluded_rm = tm_rm.subMap(
9322cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                objArray[100].toString(), false, objArray[109].toString(),
9323cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                false);
9324cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNull(subMap_startExcluded_endExcluded_rm.remove("0"));
9325cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
9326cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            subMap_startExcluded_endExcluded_rm.remove(null);
9327cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw NPE");
9328cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (Exception e) {
9329cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
9330cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
9331cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int i = 101; i < 108; i++) {
9332cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertNotNull(subMap_startExcluded_endExcluded_rm
9333cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    .remove(new Integer(i).toString()));
9334cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
9335cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
9336cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
9337cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_AscendingSubMapKeySet_tailSet() {
9338cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        NavigableSet keySet;
9339cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        SortedSet tailSet;
9340cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        String startKey, key;
9341cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Iterator iterator;
9342cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
9343cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        keySet = navigableMap_startExcluded_endExcluded.navigableKeySet();
9344cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        startKey = new Integer(99).toString();
9345cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
9346cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            keySet.tailSet(startKey);
9347cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
9348cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
9349cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
9350cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
9351cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
9352cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
9353cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            keySet.tailSet(startKey, true);
9354cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
9355cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
9356cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
9357cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
9358cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
9359cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
9360cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            keySet.tailSet(startKey, false);
9361cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
9362cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
9363cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
9364cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
9365cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
9366cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        startKey = new Integer(100).toString();
9367cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
9368cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            keySet.tailSet(startKey);
9369cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
9370cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
9371cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
9372cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
9373cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
9374cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            keySet.tailSet(startKey, true);
9375cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
9376cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
9377cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
9378cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
9379cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        int index;
9380cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        tailSet = keySet.tailSet(startKey, false);
9381cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        iterator = tailSet.iterator();
9382cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (index = 101; index < 109; index++) {
9383cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            key = (String) iterator.next();
9384cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(new Integer(index).toString(), key);
9385cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
9386cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
9387cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        startKey = new Integer(101).toString();
9388cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        tailSet = keySet.tailSet(startKey);
9389cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        iterator = tailSet.iterator();
9390cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (index = 101; iterator.hasNext(); index++) {
9391cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            key = (String) iterator.next();
9392cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(new Integer(index).toString(), key);
9393cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
9394cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(109, index);
9395cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
9396cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        tailSet = keySet.tailSet(startKey, true);
9397cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        iterator = tailSet.iterator();
9398cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (index = 101; iterator.hasNext(); index++) {
9399cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            key = (String) iterator.next();
9400cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(new Integer(index).toString(), key);
9401cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
9402cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(109, index);
9403cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
9404cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        tailSet = keySet.tailSet(startKey, false);
9405cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        iterator = tailSet.iterator();
9406cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (index = 101; iterator.hasNext(); index++) {
9407cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            key = (String) iterator.next();
9408cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(new Integer(index + 1).toString(), key);
9409cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
9410cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(108, index);
9411cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
9412cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int i = 102; i < 109; i++) {
9413cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            startKey = new Integer(i).toString();
9414cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
9415cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            tailSet = keySet.tailSet(startKey);
9416cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            iterator = tailSet.iterator();
9417cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            int j;
9418cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            for (j = i; iterator.hasNext(); j++) {
9419cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                key = (String) iterator.next();
9420cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                assertEquals(new Integer(j).toString(), key);
9421cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
9422cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(109, j);
9423cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
9424cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            tailSet = keySet.tailSet(startKey, true);
9425cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            iterator = tailSet.iterator();
9426cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            for (j = i; iterator.hasNext(); j++) {
9427cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                key = (String) iterator.next();
9428cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                assertEquals(new Integer(j).toString(), key);
9429cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
9430cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(109, j);
9431cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
9432cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            tailSet = keySet.tailSet(startKey, false);
9433cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            iterator = tailSet.iterator();
9434cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            for (j = i; iterator.hasNext(); j++) {
9435cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                key = (String) iterator.next();
9436cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                assertEquals(new Integer(j + 1).toString(), key);
9437cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
9438cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(108, j);
9439cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
9440cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
9441cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        startKey = new Integer(109).toString();
9442cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
9443cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            keySet.tailSet(startKey);
9444cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
9445cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
9446cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
9447cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
9448cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
9449cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            keySet.tailSet(startKey, true);
9450cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
9451cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
9452cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
9453cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
9454e22b1d53d200616e59483cdbf0df0796583b1007Narayan Kamath        try {
9455e22b1d53d200616e59483cdbf0df0796583b1007Narayan Kamath            keySet.tailSet(startKey, false);
9456e22b1d53d200616e59483cdbf0df0796583b1007Narayan Kamath            fail("should throw IllegalArgumentException");
9457e22b1d53d200616e59483cdbf0df0796583b1007Narayan Kamath        } catch (IllegalArgumentException e) {
9458e22b1d53d200616e59483cdbf0df0796583b1007Narayan Kamath            // Expected
9459cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
9460cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
9461cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        startKey = new Integer(110).toString();
9462cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
9463cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            keySet.tailSet(startKey);
9464cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
9465cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
9466cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
9467cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
9468cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
9469cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            keySet.tailSet(startKey, true);
9470cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
9471cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
9472cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
9473cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
9474cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
9475cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            keySet.tailSet(startKey, false);
9476cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
9477cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
9478cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
9479cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
9480cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
9481cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        keySet = navigableMap_startExcluded_endIncluded.navigableKeySet();
9482cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        startKey = new Integer(99).toString();
9483cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
9484cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            keySet.tailSet(startKey);
9485cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
9486cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
9487cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
9488cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
9489cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
9490cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            keySet.tailSet(startKey, true);
9491cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
9492cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
9493cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
9494cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
9495cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
9496cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            keySet.tailSet(startKey, false);
9497cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
9498cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
9499cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
9500cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
9501cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
9502cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        startKey = new Integer(100).toString();
9503cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
9504cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            keySet.tailSet(startKey);
9505cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
9506cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
9507cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
9508cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
9509cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
9510cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            keySet.tailSet(startKey, true);
9511cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
9512cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
9513cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
9514cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
9515cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
9516cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        tailSet = keySet.tailSet(startKey, false);
9517cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        iterator = tailSet.iterator();
9518cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (index = 100; iterator.hasNext(); index++) {
9519cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            key = (String) iterator.next();
9520cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(new Integer(index + 1).toString(), key);
9521cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
9522cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(109, index);
9523cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
9524cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int i = 102; i < 109; i++) {
9525cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            startKey = new Integer(i).toString();
9526cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
9527cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            tailSet = keySet.tailSet(startKey);
9528cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            iterator = tailSet.iterator();
9529cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            int j;
9530cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            for (j = i; iterator.hasNext(); j++) {
9531cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                key = (String) iterator.next();
9532cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                assertEquals(new Integer(j).toString(), key);
9533cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
9534cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(110, j);
9535cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
9536cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            tailSet = keySet.tailSet(startKey, true);
9537cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            iterator = tailSet.iterator();
9538cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            for (j = i; iterator.hasNext(); j++) {
9539cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                key = (String) iterator.next();
9540cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                assertEquals(new Integer(j).toString(), key);
9541cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
9542cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(110, j);
9543cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
9544cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            tailSet = keySet.tailSet(startKey, false);
9545cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            iterator = tailSet.iterator();
9546cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            for (j = i; iterator.hasNext(); j++) {
9547cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                key = (String) iterator.next();
9548cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                assertEquals(new Integer(j + 1).toString(), key);
9549cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
9550cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(109, j);
9551cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
9552cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
9553cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        startKey = new Integer(109).toString();
9554cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        tailSet = keySet.tailSet(startKey);
9555cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        iterator = tailSet.iterator();
9556cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (index = 109; iterator.hasNext(); index++) {
9557cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            key = (String) iterator.next();
9558cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(new Integer(index).toString(), key);
9559cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
9560cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(110, index);
9561cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
9562cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        tailSet = keySet.tailSet(startKey, true);
9563cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        iterator = tailSet.iterator();
9564cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (index = 109; iterator.hasNext(); index++) {
9565cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            key = (String) iterator.next();
9566cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(new Integer(index).toString(), key);
9567cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
9568cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(110, index);
9569cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
9570cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        tailSet = keySet.tailSet(startKey, false);
9571cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        iterator = tailSet.iterator();
9572cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (index = 109; iterator.hasNext(); index++) {
9573cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            key = (String) iterator.next();
9574cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(new Integer(index + 1).toString(), key);
9575cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
9576cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(109, index);
9577cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
9578cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        startKey = new Integer(110).toString();
9579cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
9580cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            keySet.tailSet(startKey);
9581cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
9582cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
9583cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
9584cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
9585cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
9586cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            keySet.tailSet(startKey, true);
9587cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
9588cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
9589cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
9590cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
9591cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
9592cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            keySet.tailSet(startKey, false);
9593cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
9594cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
9595cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
9596cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
9597cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
9598cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        keySet = navigableMap_startIncluded_endExcluded.navigableKeySet();
9599cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        startKey = new Integer(99).toString();
9600cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
9601cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            keySet.tailSet(startKey);
9602cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
9603cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
9604cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
9605cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
9606cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
9607cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            keySet.tailSet(startKey, true);
9608cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
9609cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
9610cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
9611cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
9612cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
9613cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            keySet.tailSet(startKey, false);
9614cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
9615cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
9616cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
9617cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
9618cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
9619cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        startKey = new Integer(100).toString();
9620cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        tailSet = keySet.tailSet(startKey);
9621cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        iterator = tailSet.iterator();
9622cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (index = 100; iterator.hasNext(); index++) {
9623cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            key = (String) iterator.next();
9624cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(new Integer(index).toString(), key);
9625cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
9626cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(109, index);
9627cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
9628cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        tailSet = keySet.tailSet(startKey, true);
9629cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        iterator = tailSet.iterator();
9630cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (index = 100; iterator.hasNext(); index++) {
9631cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            key = (String) iterator.next();
9632cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(new Integer(index).toString(), key);
9633cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
9634cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(109, index);
9635cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
9636cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        tailSet = keySet.tailSet(startKey, false);
9637cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        iterator = tailSet.iterator();
9638cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (index = 100; iterator.hasNext(); index++) {
9639cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            key = (String) iterator.next();
9640cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(new Integer(index + 1).toString(), key);
9641cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
9642cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(108, index);
9643cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
9644cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        startKey = new Integer(101).toString();
9645cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        tailSet = keySet.tailSet(startKey);
9646cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        iterator = tailSet.iterator();
9647cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (index = 101; iterator.hasNext(); index++) {
9648cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            key = (String) iterator.next();
9649cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(new Integer(index).toString(), key);
9650cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
9651cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(109, index);
9652cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
9653cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        tailSet = keySet.tailSet(startKey, true);
9654cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        iterator = tailSet.iterator();
9655cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (index = 101; iterator.hasNext(); index++) {
9656cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            key = (String) iterator.next();
9657cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(new Integer(index).toString(), key);
9658cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
9659cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(109, index);
9660cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
9661cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        tailSet = keySet.tailSet(startKey, false);
9662cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        iterator = tailSet.iterator();
9663cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (index = 101; iterator.hasNext(); index++) {
9664cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            key = (String) iterator.next();
9665cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(new Integer(index + 1).toString(), key);
9666cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
9667cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(108, index);
9668cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
9669cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int i = 102; i < 109; i++) {
9670cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            startKey = new Integer(i).toString();
9671cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
9672cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            tailSet = keySet.tailSet(startKey);
9673cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            iterator = tailSet.iterator();
9674cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            int j;
9675cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            for (j = i; iterator.hasNext(); j++) {
9676cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                key = (String) iterator.next();
9677cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                assertEquals(new Integer(j).toString(), key);
9678cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
9679cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(109, j);
9680cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
9681cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            tailSet = keySet.tailSet(startKey, true);
9682cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            iterator = tailSet.iterator();
9683cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            for (j = i; iterator.hasNext(); j++) {
9684cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                key = (String) iterator.next();
9685cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                assertEquals(new Integer(j).toString(), key);
9686cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
9687cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(109, j);
9688cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
9689cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            tailSet = keySet.tailSet(startKey, false);
9690cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            iterator = tailSet.iterator();
9691cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            for (j = i; iterator.hasNext(); j++) {
9692cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                key = (String) iterator.next();
9693cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                assertEquals(new Integer(j + 1).toString(), key);
9694cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
9695cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(108, j);
9696cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
9697cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
9698cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        startKey = new Integer(109).toString();
9699cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
9700cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            keySet.tailSet(startKey);
9701cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
9702cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
9703cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
9704cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
9705cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
9706cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            keySet.tailSet(startKey, true);
9707cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
9708cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
9709cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
9710cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
9711e22b1d53d200616e59483cdbf0df0796583b1007Narayan Kamath        try {
9712e22b1d53d200616e59483cdbf0df0796583b1007Narayan Kamath            keySet.tailSet(startKey, false);
9713e22b1d53d200616e59483cdbf0df0796583b1007Narayan Kamath            fail("should throw IllegalArgumentException");
9714e22b1d53d200616e59483cdbf0df0796583b1007Narayan Kamath        } catch (IllegalArgumentException e) {
9715e22b1d53d200616e59483cdbf0df0796583b1007Narayan Kamath            // Expected
9716cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
9717cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
9718cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        startKey = new Integer(110).toString();
9719cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
9720cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            keySet.tailSet(startKey);
9721cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
9722cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
9723cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
9724cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
9725cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
9726cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            keySet.tailSet(startKey, true);
9727cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
9728cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
9729cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
9730cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
9731cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
9732cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            keySet.tailSet(startKey, false);
9733cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
9734cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
9735cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
9736cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
9737cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
9738cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        keySet = navigableMap_startIncluded_endIncluded.navigableKeySet();
9739cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        startKey = new Integer(99).toString();
9740cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
9741cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            keySet.tailSet(startKey);
9742cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
9743cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
9744cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
9745cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
9746cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
9747cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            keySet.tailSet(startKey, true);
9748cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
9749cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
9750cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
9751cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
9752cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
9753cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            keySet.tailSet(startKey, false);
9754cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
9755cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
9756cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
9757cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
9758cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        startKey = new Integer(100).toString();
9759cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        tailSet = keySet.tailSet(startKey);
9760cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        iterator = tailSet.iterator();
9761cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (index = 100; iterator.hasNext(); index++) {
9762cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            key = (String) iterator.next();
9763cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(new Integer(index).toString(), key);
9764cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
9765cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(110, index);
9766cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
9767cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        tailSet = keySet.tailSet(startKey, true);
9768cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        iterator = tailSet.iterator();
9769cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (index = 100; iterator.hasNext(); index++) {
9770cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            key = (String) iterator.next();
9771cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(new Integer(index).toString(), key);
9772cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
9773cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(110, index);
9774cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
9775cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        tailSet = keySet.tailSet(startKey, false);
9776cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        iterator = tailSet.iterator();
9777cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (index = 100; iterator.hasNext(); index++) {
9778cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            key = (String) iterator.next();
9779cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(new Integer(index + 1).toString(), key);
9780cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
9781cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(109, index);
9782cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
9783cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        startKey = new Integer(101).toString();
9784cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        tailSet = keySet.tailSet(startKey);
9785cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        iterator = tailSet.iterator();
9786cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (index = 101; iterator.hasNext(); index++) {
9787cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            key = (String) iterator.next();
9788cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(new Integer(index).toString(), key);
9789cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
9790cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(110, index);
9791cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
9792cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        tailSet = keySet.tailSet(startKey, true);
9793cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        iterator = tailSet.iterator();
9794cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (index = 101; iterator.hasNext(); index++) {
9795cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            key = (String) iterator.next();
9796cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(new Integer(index).toString(), key);
9797cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
9798cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(110, index);
9799cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
9800cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        tailSet = keySet.tailSet(startKey, false);
9801cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        iterator = tailSet.iterator();
9802cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (index = 101; iterator.hasNext(); index++) {
9803cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            key = (String) iterator.next();
9804cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(new Integer(index + 1).toString(), key);
9805cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
9806cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(109, index);
9807cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
9808cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int i = 102; i < 109; i++) {
9809cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            startKey = new Integer(i).toString();
9810cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
9811cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            tailSet = keySet.tailSet(startKey);
9812cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            iterator = tailSet.iterator();
9813cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            int j;
9814cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            for (j = i; iterator.hasNext(); j++) {
9815cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                key = (String) iterator.next();
9816cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                assertEquals(new Integer(j).toString(), key);
9817cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
9818cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(110, j);
9819cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
9820cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            tailSet = keySet.tailSet(startKey, true);
9821cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            iterator = tailSet.iterator();
9822cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            for (j = i; iterator.hasNext(); j++) {
9823cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                key = (String) iterator.next();
9824cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                assertEquals(new Integer(j).toString(), key);
9825cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
9826cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(110, j);
9827cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
9828cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            tailSet = keySet.tailSet(startKey, false);
9829cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            iterator = tailSet.iterator();
9830cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            for (j = i; iterator.hasNext(); j++) {
9831cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                key = (String) iterator.next();
9832cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                assertEquals(new Integer(j + 1).toString(), key);
9833cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
9834cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(109, j);
9835cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
9836cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
9837cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        startKey = new Integer(109).toString();
9838cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        tailSet = keySet.tailSet(startKey);
9839cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        iterator = tailSet.iterator();
9840cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (index = 109; iterator.hasNext(); index++) {
9841cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            key = (String) iterator.next();
9842cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(new Integer(index).toString(), key);
9843cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
9844cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(110, index);
9845cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
9846cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        tailSet = keySet.tailSet(startKey, true);
9847cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        iterator = tailSet.iterator();
9848cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (index = 109; iterator.hasNext(); index++) {
9849cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            key = (String) iterator.next();
9850cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(new Integer(index).toString(), key);
9851cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
9852cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(110, index);
9853cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
9854cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        tailSet = keySet.tailSet(startKey, false);
9855cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        iterator = tailSet.iterator();
9856cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (index = 109; iterator.hasNext(); index++) {
9857cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            key = (String) iterator.next();
9858cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(new Integer(index + 1).toString(), key);
9859cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
9860cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(109, index);
9861cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
9862cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        startKey = new Integer(110).toString();
9863cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
9864cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            keySet.tailSet(startKey);
9865cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
9866cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
9867cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
9868cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
9869cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
9870cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            keySet.tailSet(startKey, true);
9871cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
9872cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
9873cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
9874cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
9875cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
9876cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            keySet.tailSet(startKey, false);
9877cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
9878cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
9879cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
9880cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
9881cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
9882cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        String endKey = new Integer(1).toString();
9883cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        keySet = tm.headMap(endKey, true).navigableKeySet();
9884cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        iterator = keySet.iterator();
9885cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        iterator.next();
9886cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        startKey = (String) iterator.next();
9887cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        tailSet = keySet.tailSet(startKey);
9888cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(1, tailSet.size());
9889cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Iterator tailSetIterator = tailSet.iterator();
9890cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(endKey, tailSetIterator.next());
9891cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
9892cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            tailSetIterator.next();
9893cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw NoSuchElementException");
9894cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (NoSuchElementException e) {
9895cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
9896cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
9897cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
9898cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            keySet.tailSet(null);
9899cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw NPE");
9900cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (NullPointerException e) {
9901cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
9902cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
9903cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
9904cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        tailSet = keySet.tailSet(startKey, true);
9905cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(1, tailSet.size());
9906cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        tailSetIterator = tailSet.iterator();
9907cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(endKey, tailSetIterator.next());
9908cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
9909cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        tailSet = keySet.tailSet(startKey, false);
9910cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(0, tailSet.size());
9911cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        tailSetIterator = tailSet.iterator();
9912cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
9913cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            tailSetIterator.next();
9914cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw NoSuchElementException");
9915cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (NoSuchElementException e) {
9916cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
9917cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
9918cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
9919cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            keySet.tailSet(null, false);
9920cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw NPE");
9921cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (NullPointerException e) {
9922cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
9923cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
9924cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
9925cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            keySet.tailSet(null, true);
9926cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw NPE");
9927cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (NullPointerException e) {
9928cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
9929cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
9930cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
9931cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // With Comparator
9932cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        keySet = ((NavigableMap) subMap_startExcluded_endExcluded_comparator)
9933cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .navigableKeySet();
9934cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        startKey = new Integer(99).toString();
9935cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
9936cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            keySet.tailSet(startKey);
9937cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
9938cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
9939cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
9940cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
9941cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
9942cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
9943cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            keySet.tailSet(startKey, true);
9944cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
9945cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
9946cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
9947cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
9948cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
9949cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
9950cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            keySet.tailSet(startKey, false);
9951cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
9952cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
9953cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
9954cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
9955cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
9956cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        startKey = new Integer(100).toString();
9957cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
9958cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            keySet.tailSet(startKey);
9959cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
9960cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
9961cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
9962cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
9963cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
9964cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            keySet.tailSet(startKey, true);
9965cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
9966cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
9967cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
9968cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
9969cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        tailSet = keySet.tailSet(startKey, false);
9970cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        iterator = tailSet.iterator();
9971cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (index = 101; index < 109; index++) {
9972cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            key = (String) iterator.next();
9973cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(new Integer(index).toString(), key);
9974cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
9975cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
9976cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        startKey = new Integer(101).toString();
9977cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        tailSet = keySet.tailSet(startKey);
9978cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        iterator = tailSet.iterator();
9979cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (index = 101; iterator.hasNext(); index++) {
9980cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            key = (String) iterator.next();
9981cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(new Integer(index).toString(), key);
9982cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
9983cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(109, index);
9984cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
9985cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        tailSet = keySet.tailSet(startKey, true);
9986cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        iterator = tailSet.iterator();
9987cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (index = 101; iterator.hasNext(); index++) {
9988cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            key = (String) iterator.next();
9989cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(new Integer(index).toString(), key);
9990cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
9991cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(109, index);
9992cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
9993cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        tailSet = keySet.tailSet(startKey, false);
9994cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        iterator = tailSet.iterator();
9995cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (index = 101; iterator.hasNext(); index++) {
9996cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            key = (String) iterator.next();
9997cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(new Integer(index + 1).toString(), key);
9998cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
9999cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(108, index);
10000cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
10001cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int i = 102; i < 109; i++) {
10002cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            startKey = new Integer(i).toString();
10003cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
10004cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            tailSet = keySet.tailSet(startKey);
10005cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            iterator = tailSet.iterator();
10006cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            int j;
10007cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            for (j = i; iterator.hasNext(); j++) {
10008cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                key = (String) iterator.next();
10009cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                assertEquals(new Integer(j).toString(), key);
10010cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
10011cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(109, j);
10012cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
10013cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            tailSet = keySet.tailSet(startKey, true);
10014cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            iterator = tailSet.iterator();
10015cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            for (j = i; iterator.hasNext(); j++) {
10016cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                key = (String) iterator.next();
10017cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                assertEquals(new Integer(j).toString(), key);
10018cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
10019cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(109, j);
10020cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
10021cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            tailSet = keySet.tailSet(startKey, false);
10022cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            iterator = tailSet.iterator();
10023cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            for (j = i; iterator.hasNext(); j++) {
10024cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                key = (String) iterator.next();
10025cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                assertEquals(new Integer(j + 1).toString(), key);
10026cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
10027cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(108, j);
10028cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
10029cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
10030cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        startKey = new Integer(109).toString();
10031cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
10032cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            keySet.tailSet(startKey);
10033cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
10034cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
10035cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
10036cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
10037cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
10038cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            keySet.tailSet(startKey, true);
10039cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
10040cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
10041cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
10042cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
10043e22b1d53d200616e59483cdbf0df0796583b1007Narayan Kamath        try {
10044e22b1d53d200616e59483cdbf0df0796583b1007Narayan Kamath            keySet.tailSet(startKey, false);
10045e22b1d53d200616e59483cdbf0df0796583b1007Narayan Kamath            fail("should throw IllegalArgumentException");
10046e22b1d53d200616e59483cdbf0df0796583b1007Narayan Kamath        } catch (IllegalArgumentException e) {
10047e22b1d53d200616e59483cdbf0df0796583b1007Narayan Kamath            // Expected
10048cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
10049cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
10050cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        startKey = new Integer(110).toString();
10051cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
10052cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            keySet.tailSet(startKey);
10053cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
10054cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
10055cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
10056cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
10057cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
10058cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            keySet.tailSet(startKey, true);
10059cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
10060cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
10061cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
10062cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
10063cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
10064cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            keySet.tailSet(startKey, false);
10065cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
10066cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
10067cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
10068cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
10069cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
10070cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        keySet = navigableMap_startExcluded_endIncluded.navigableKeySet();
10071cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        startKey = new Integer(99).toString();
10072cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
10073cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            keySet.tailSet(startKey);
10074cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
10075cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
10076cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
10077cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
10078cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
10079cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            keySet.tailSet(startKey, true);
10080cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
10081cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
10082cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
10083cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
10084cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
10085cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            keySet.tailSet(startKey, false);
10086cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
10087cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
10088cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
10089cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
10090cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
10091cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        startKey = new Integer(100).toString();
10092cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
10093cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            keySet.tailSet(startKey);
10094cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
10095cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
10096cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
10097cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
10098cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
10099cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            keySet.tailSet(startKey, true);
10100cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
10101cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
10102cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
10103cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
10104cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
10105cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        tailSet = keySet.tailSet(startKey, false);
10106cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        iterator = tailSet.iterator();
10107cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (index = 100; iterator.hasNext(); index++) {
10108cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            key = (String) iterator.next();
10109cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(new Integer(index + 1).toString(), key);
10110cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
10111cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(109, index);
10112cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
10113cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int i = 102; i < 109; i++) {
10114cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            startKey = new Integer(i).toString();
10115cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
10116cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            tailSet = keySet.tailSet(startKey);
10117cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            iterator = tailSet.iterator();
10118cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            int j;
10119cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            for (j = i; iterator.hasNext(); j++) {
10120cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                key = (String) iterator.next();
10121cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                assertEquals(new Integer(j).toString(), key);
10122cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
10123cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(110, j);
10124cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
10125cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            tailSet = keySet.tailSet(startKey, true);
10126cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            iterator = tailSet.iterator();
10127cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            for (j = i; iterator.hasNext(); j++) {
10128cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                key = (String) iterator.next();
10129cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                assertEquals(new Integer(j).toString(), key);
10130cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
10131cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(110, j);
10132cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
10133cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            tailSet = keySet.tailSet(startKey, false);
10134cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            iterator = tailSet.iterator();
10135cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            for (j = i; iterator.hasNext(); j++) {
10136cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                key = (String) iterator.next();
10137cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                assertEquals(new Integer(j + 1).toString(), key);
10138cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
10139cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(109, j);
10140cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
10141cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
10142cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        startKey = new Integer(109).toString();
10143cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        tailSet = keySet.tailSet(startKey);
10144cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        iterator = tailSet.iterator();
10145cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (index = 109; iterator.hasNext(); index++) {
10146cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            key = (String) iterator.next();
10147cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(new Integer(index).toString(), key);
10148cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
10149cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(110, index);
10150cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
10151cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        tailSet = keySet.tailSet(startKey, true);
10152cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        iterator = tailSet.iterator();
10153cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (index = 109; iterator.hasNext(); index++) {
10154cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            key = (String) iterator.next();
10155cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(new Integer(index).toString(), key);
10156cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
10157cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(110, index);
10158cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
10159cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        tailSet = keySet.tailSet(startKey, false);
10160cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        iterator = tailSet.iterator();
10161cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (index = 109; iterator.hasNext(); index++) {
10162cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            key = (String) iterator.next();
10163cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(new Integer(index + 1).toString(), key);
10164cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
10165cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(109, index);
10166cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
10167cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        startKey = new Integer(110).toString();
10168cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
10169cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            keySet.tailSet(startKey);
10170cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
10171cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
10172cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
10173cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
10174cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
10175cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            keySet.tailSet(startKey, true);
10176cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
10177cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
10178cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
10179cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
10180cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
10181cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            keySet.tailSet(startKey, false);
10182cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
10183cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
10184cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
10185cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
10186cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
10187cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
10188cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_AscendingSubMapKeySet_subSet() {
10189cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        NavigableSet keySet;
10190cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        SortedSet subSet;
10191cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        String startKey, endKey, key;
10192cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Iterator startIterator, endIterator, subSetIterator;
10193cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
10194cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        keySet = navigableMap_startExcluded_endExcluded.navigableKeySet();
10195cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        startIterator = keySet.iterator();
10196cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        while (startIterator.hasNext()) {
10197cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            startKey = (String) startIterator.next();
10198cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            endIterator = keySet.iterator();
10199cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            while (endIterator.hasNext()) {
10200cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                endKey = (String) endIterator.next();
10201cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                int startIndex = Integer.valueOf(startKey);
10202cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                int endIndex = Integer.valueOf(endKey);
10203cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                if (startIndex > endIndex) {
10204cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    try {
10205cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        keySet.subSet(startKey, endKey);
10206cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        fail("should throw IllegalArgumentException");
10207cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    } catch (IllegalArgumentException e) {
10208cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        // Expected
10209cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    }
10210cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
10211cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    try {
10212cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        keySet.subSet(startKey, false, endKey, false);
10213cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        fail("shoudl throw IllegalArgumentException");
10214cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    } catch (IllegalArgumentException e) {
10215cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        // Expected
10216cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    }
10217cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
10218cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    try {
10219cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        keySet.subSet(startKey, false, endKey, true);
10220cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        fail("shoudl throw IllegalArgumentException");
10221cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    } catch (IllegalArgumentException e) {
10222cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        // Expected
10223cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    }
10224cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
10225cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    try {
10226cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        keySet.subSet(startKey, true, endKey, false);
10227cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        fail("shoudl throw IllegalArgumentException");
10228cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    } catch (IllegalArgumentException e) {
10229cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        // Expected
10230cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    }
10231cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
10232cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    try {
10233cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        keySet.subSet(startKey, true, endKey, true);
10234cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        fail("shoudl throw IllegalArgumentException");
10235cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    } catch (IllegalArgumentException e) {
10236cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        // Expected
10237cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    }
10238cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                } else {
10239cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    subSet = keySet.subSet(startKey, endKey);
10240cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    subSetIterator = subSet.iterator();
10241cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    for (int index = startIndex; subSetIterator.hasNext(); index++) {
10242cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        assertEquals(new Integer(index).toString(),
10243cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                                subSetIterator.next());
10244cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    }
10245cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
10246cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    subSet = keySet.subSet(startKey, false, endKey, false);
10247cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    subSetIterator = subSet.iterator();
10248cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    for (int index = startIndex + 1; subSetIterator.hasNext(); index++) {
10249cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        assertEquals(new Integer(index).toString(),
10250cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                                subSetIterator.next());
10251cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    }
10252cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
10253cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    subSet = keySet.subSet(startKey, false, endKey, true);
10254cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    subSetIterator = subSet.iterator();
10255cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    for (int index = startIndex + 1; subSetIterator.hasNext(); index++) {
10256cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        assertEquals(new Integer(index).toString(),
10257cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                                subSetIterator.next());
10258cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    }
10259cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
10260cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    subSet = keySet.subSet(startKey, true, endKey, false);
10261cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    subSetIterator = subSet.iterator();
10262cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    for (int index = startIndex; subSetIterator.hasNext(); index++) {
10263cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        assertEquals(new Integer(index).toString(),
10264cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                                subSetIterator.next());
10265cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    }
10266cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
10267cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    subSet = keySet.subSet(startKey, true, endKey, true);
10268cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    subSetIterator = subSet.iterator();
10269cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    for (int index = startIndex; subSetIterator.hasNext(); index++) {
10270cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        assertEquals(new Integer(index).toString(),
10271cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                                subSetIterator.next());
10272cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    }
10273cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                }
10274cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
10275cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
10276cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
10277cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = new Integer(1).toString();
10278cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        keySet = tm.headMap(key, true).navigableKeySet();
10279cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Iterator iterator = keySet.iterator();
10280cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        startKey = (String) iterator.next();
10281cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        endKey = (String) iterator.next();
10282cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
10283cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        subSet = keySet.subSet(startKey, endKey);
10284cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(1, subSet.size());
10285cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        subSetIterator = subSet.iterator();
10286cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(new Integer(0).toString(), subSetIterator.next());
10287cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
10288cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            subSetIterator.next();
10289cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw NoSuchElementException");
10290cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (NoSuchElementException e) {
10291cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
10292cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
10293cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
10294cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        subSet = keySet.subSet(startKey, false, endKey, false);
10295cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(0, subSet.size());
10296cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
10297cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        subSet = keySet.subSet(startKey, false, endKey, true);
10298cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(1, subSet.size());
10299cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        subSetIterator = subSet.iterator();
10300cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(new Integer(1).toString(), subSetIterator.next());
10301cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
10302cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            subSetIterator.next();
10303cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw NoSuchElementException");
10304cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (NoSuchElementException e) {
10305cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
10306cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
10307cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
10308cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        subSet = keySet.subSet(startKey, true, endKey, false);
10309cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(1, subSet.size());
10310cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        subSetIterator = subSet.iterator();
10311cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(new Integer(0).toString(), subSetIterator.next());
10312cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
10313cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            subSetIterator.next();
10314cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw NoSuchElementException");
10315cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (NoSuchElementException e) {
10316cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
10317cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
10318cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
10319cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        subSet = keySet.subSet(startKey, true, endKey, true);
10320cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(2, subSet.size());
10321cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        subSetIterator = subSet.iterator();
10322cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(new Integer(0).toString(), subSetIterator.next());
10323cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(new Integer(1).toString(), subSetIterator.next());
10324cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
10325cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            subSetIterator.next();
10326cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw NoSuchElementException");
10327cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (NoSuchElementException e) {
10328cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
10329cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
10330cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
10331cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
10332cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            keySet.subSet(null, null);
10333cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw NPE");
10334cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (NullPointerException e) {
10335cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
10336cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
10337cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
10338cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
10339cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            keySet.subSet(null, false, null, false);
10340cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw NPE");
10341cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (NullPointerException e) {
10342cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
10343cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
10344cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
10345cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
10346cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            keySet.subSet(null, false, null, true);
10347cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw NPE");
10348cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (NullPointerException e) {
10349cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
10350cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
10351cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
10352cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
10353cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            keySet.subSet(null, true, null, false);
10354cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw NPE");
10355cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (NullPointerException e) {
10356cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
10357cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
10358cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
10359cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
10360cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            keySet.subSet(null, true, null, true);
10361cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw NPE");
10362cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (NullPointerException e) {
10363cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
10364cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
10365cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
10366cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
10367cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            keySet.subSet(null, endKey);
10368cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw NPE");
10369cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (NullPointerException e) {
10370cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
10371cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
10372cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
10373cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
10374cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            keySet.subSet(null, false, endKey, false);
10375cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw NPE");
10376cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (NullPointerException e) {
10377cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
10378cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
10379cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
10380cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
10381cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            keySet.subSet(null, false, endKey, true);
10382cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw NPE");
10383cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (NullPointerException e) {
10384cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
10385cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
10386cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
10387cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
10388cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            keySet.subSet(null, true, endKey, false);
10389cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw NPE");
10390cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (NullPointerException e) {
10391cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
10392cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
10393cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
10394cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
10395cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            keySet.subSet(null, true, endKey, true);
10396cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw NPE");
10397cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (NullPointerException e) {
10398cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
10399cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
10400cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
10401cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
10402cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            keySet.subSet(startKey, null);
10403cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw NPE");
10404cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (NullPointerException e) {
10405cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
10406cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
10407cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
10408cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
10409cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            keySet.subSet(startKey, false, null, false);
10410cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw NPE");
10411cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (NullPointerException e) {
10412cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
10413cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
10414cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
10415cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
10416cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            keySet.subSet(startKey, false, null, true);
10417cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw NPE");
10418cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (NullPointerException e) {
10419cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
10420cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
10421cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
10422cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
10423cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            keySet.subSet(startKey, true, null, false);
10424cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw NPE");
10425cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (NullPointerException e) {
10426cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
10427cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
10428cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
10429cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
10430cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            keySet.subSet(startKey, true, null, true);
10431cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw NPE");
10432cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (NullPointerException e) {
10433cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
10434cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
10435cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
10436cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // With Comparator
10437cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        keySet = ((NavigableMap) subMap_startExcluded_endExcluded_comparator)
10438cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .navigableKeySet();
10439cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        startIterator = keySet.iterator();
10440cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        while (startIterator.hasNext()) {
10441cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            startKey = (String) startIterator.next();
10442cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            endIterator = keySet.iterator();
10443cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            while (endIterator.hasNext()) {
10444cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                endKey = (String) endIterator.next();
10445cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                int startIndex = Integer.valueOf(startKey);
10446cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                int endIndex = Integer.valueOf(endKey);
10447cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                if (startIndex > endIndex) {
10448cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    try {
10449cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        keySet.subSet(startKey, endKey);
10450cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        fail("should throw IllegalArgumentException");
10451cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    } catch (IllegalArgumentException e) {
10452cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        // Expected
10453cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    }
10454cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
10455cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    try {
10456cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        keySet.subSet(startKey, false, endKey, false);
10457cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        fail("shoudl throw IllegalArgumentException");
10458cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    } catch (IllegalArgumentException e) {
10459cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        // Expected
10460cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    }
10461cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
10462cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    try {
10463cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        keySet.subSet(startKey, false, endKey, true);
10464cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        fail("shoudl throw IllegalArgumentException");
10465cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    } catch (IllegalArgumentException e) {
10466cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        // Expected
10467cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    }
10468cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
10469cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    try {
10470cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        keySet.subSet(startKey, true, endKey, false);
10471cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        fail("shoudl throw IllegalArgumentException");
10472cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    } catch (IllegalArgumentException e) {
10473cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        // Expected
10474cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    }
10475cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
10476cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    try {
10477cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        keySet.subSet(startKey, true, endKey, true);
10478cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        fail("shoudl throw IllegalArgumentException");
10479cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    } catch (IllegalArgumentException e) {
10480cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        // Expected
10481cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    }
10482cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                } else {
10483cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    subSet = keySet.subSet(startKey, endKey);
10484cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    subSetIterator = subSet.iterator();
10485cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    for (int index = startIndex; subSetIterator.hasNext(); index++) {
10486cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        assertEquals(new Integer(index).toString(),
10487cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                                subSetIterator.next());
10488cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    }
10489cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
10490cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    subSet = keySet.subSet(startKey, false, endKey, false);
10491cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    subSetIterator = subSet.iterator();
10492cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    for (int index = startIndex + 1; subSetIterator.hasNext(); index++) {
10493cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        assertEquals(new Integer(index).toString(),
10494cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                                subSetIterator.next());
10495cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    }
10496cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
10497cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    subSet = keySet.subSet(startKey, false, endKey, true);
10498cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    subSetIterator = subSet.iterator();
10499cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    for (int index = startIndex + 1; subSetIterator.hasNext(); index++) {
10500cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        assertEquals(new Integer(index).toString(),
10501cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                                subSetIterator.next());
10502cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    }
10503cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
10504cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    subSet = keySet.subSet(startKey, true, endKey, false);
10505cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    subSetIterator = subSet.iterator();
10506cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    for (int index = startIndex; subSetIterator.hasNext(); index++) {
10507cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        assertEquals(new Integer(index).toString(),
10508cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                                subSetIterator.next());
10509cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    }
10510cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
10511cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    subSet = keySet.subSet(startKey, true, endKey, true);
10512cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    subSetIterator = subSet.iterator();
10513cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    for (int index = startIndex; subSetIterator.hasNext(); index++) {
10514cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        assertEquals(new Integer(index).toString(),
10515cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                                subSetIterator.next());
10516cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    }
10517cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                }
10518cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
10519cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
10520cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
10521cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = new Integer(1).toString();
10522cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        keySet = tm.headMap(key, true).navigableKeySet();
10523cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        iterator = keySet.iterator();
10524cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        startKey = (String) iterator.next();
10525cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        endKey = (String) iterator.next();
10526cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
10527cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        subSet = keySet.subSet(startKey, endKey);
10528cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(1, subSet.size());
10529cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        subSetIterator = subSet.iterator();
10530cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(new Integer(0).toString(), subSetIterator.next());
10531cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
10532cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            subSetIterator.next();
10533cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw NoSuchElementException");
10534cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (NoSuchElementException e) {
10535cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
10536cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
10537cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
10538cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        subSet = keySet.subSet(startKey, false, endKey, false);
10539cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(0, subSet.size());
10540cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
10541cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        subSet = keySet.subSet(startKey, false, endKey, true);
10542cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(1, subSet.size());
10543cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        subSetIterator = subSet.iterator();
10544cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(new Integer(1).toString(), subSetIterator.next());
10545cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
10546cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            subSetIterator.next();
10547cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw NoSuchElementException");
10548cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (NoSuchElementException e) {
10549cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
10550cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
10551cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
10552cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        subSet = keySet.subSet(startKey, true, endKey, false);
10553cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(1, subSet.size());
10554cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        subSetIterator = subSet.iterator();
10555cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(new Integer(0).toString(), subSetIterator.next());
10556cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
10557cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            subSetIterator.next();
10558cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw NoSuchElementException");
10559cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (NoSuchElementException e) {
10560cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
10561cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
10562cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
10563cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        subSet = keySet.subSet(startKey, true, endKey, true);
10564cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(2, subSet.size());
10565cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        subSetIterator = subSet.iterator();
10566cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(new Integer(0).toString(), subSetIterator.next());
10567cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(new Integer(1).toString(), subSetIterator.next());
10568cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
10569cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            subSetIterator.next();
10570cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw NoSuchElementException");
10571cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (NoSuchElementException e) {
10572cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
10573cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
10574cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
10575cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
10576cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            keySet.subSet(null, null);
10577cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw NPE");
10578cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (NullPointerException e) {
10579cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
10580cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
10581cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
10582cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
10583cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            keySet.subSet(null, false, null, false);
10584cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw NPE");
10585cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (NullPointerException e) {
10586cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
10587cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
10588cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
10589cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
10590cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            keySet.subSet(null, false, null, true);
10591cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw NPE");
10592cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (NullPointerException e) {
10593cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
10594cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
10595cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
10596cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
10597cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            keySet.subSet(null, true, null, false);
10598cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw NPE");
10599cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (NullPointerException e) {
10600cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
10601cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
10602cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
10603cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
10604cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            keySet.subSet(null, true, null, true);
10605cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw NPE");
10606cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (NullPointerException e) {
10607cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
10608cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
10609cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
10610cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
10611cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            keySet.subSet(null, endKey);
10612cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw NPE");
10613cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (NullPointerException e) {
10614cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
10615cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
10616cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
10617cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
10618cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            keySet.subSet(null, false, endKey, false);
10619cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw NPE");
10620cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (NullPointerException e) {
10621cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
10622cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
10623cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
10624cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
10625cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            keySet.subSet(null, false, endKey, true);
10626cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw NPE");
10627cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (NullPointerException e) {
10628cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
10629cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
10630cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
10631cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
10632cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            keySet.subSet(null, true, endKey, false);
10633cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw NPE");
10634cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (NullPointerException e) {
10635cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
10636cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
10637cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
10638cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
10639cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            keySet.subSet(null, true, endKey, true);
10640cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw NPE");
10641cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (NullPointerException e) {
10642cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
10643cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
10644cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
10645cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
10646cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            keySet.subSet(startKey, null);
10647cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw NPE");
10648cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (NullPointerException e) {
10649cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
10650cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
10651cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
10652cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
10653cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            keySet.subSet(startKey, false, null, false);
10654cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw NPE");
10655cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (NullPointerException e) {
10656cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
10657cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
10658cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
10659cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
10660cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            keySet.subSet(startKey, false, null, true);
10661cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw NPE");
10662cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (NullPointerException e) {
10663cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
10664cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
10665cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
10666cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
10667cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            keySet.subSet(startKey, true, null, false);
10668cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw NPE");
10669cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (NullPointerException e) {
10670cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
10671cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
10672cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
10673cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
10674cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            keySet.subSet(startKey, true, null, true);
10675cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw NPE");
10676cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (NullPointerException e) {
10677cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
10678cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
10679cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
10680cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
10681cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
10682cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_AscendingSubMapKeySet_lower() {
10683cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        NavigableSet keySet;
10684cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Iterator iterator;
10685cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        String key, lowerKey;
10686cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        int value, lowerValue;
10687cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
10688cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        keySet = navigableMap_startExcluded_endExcluded.navigableKeySet();
10689cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        iterator = keySet.iterator();
10690cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        while (iterator.hasNext()) {
10691cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            key = (String) iterator.next();
10692cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            value = Integer.valueOf(key);
10693cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            lowerKey = (String) keySet.lower(key);
10694cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            if (value > 101) {
10695cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                lowerValue = Integer.valueOf(lowerKey);
10696cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                assertEquals(value - 1, lowerValue);
10697cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            } else {
10698cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                assertNull(lowerKey);
10699cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
10700cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
10701cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
10702cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        keySet = navigableMap_startExcluded_endIncluded.navigableKeySet();
10703cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        iterator = keySet.iterator();
10704cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        while (iterator.hasNext()) {
10705cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            key = (String) iterator.next();
10706cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            value = Integer.valueOf(key);
10707cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            lowerKey = (String) keySet.lower(key);
10708cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            if (value > 101) {
10709cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                lowerValue = Integer.valueOf(lowerKey);
10710cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                assertEquals(value - 1, lowerValue);
10711cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            } else {
10712cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                assertNull(lowerKey);
10713cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
10714cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
10715cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
10716cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        keySet = navigableMap_startIncluded_endExcluded.navigableKeySet();
10717cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        iterator = keySet.iterator();
10718cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        while (iterator.hasNext()) {
10719cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            key = (String) iterator.next();
10720cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            value = Integer.valueOf(key);
10721cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            lowerKey = (String) keySet.lower(key);
10722cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            if (value > 100) {
10723cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                lowerValue = Integer.valueOf(lowerKey);
10724cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                assertEquals(value - 1, lowerValue);
10725cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            } else {
10726cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                assertNull(lowerKey);
10727cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
10728cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
10729cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
10730cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        keySet = navigableMap_startIncluded_endIncluded.navigableKeySet();
10731cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        iterator = keySet.iterator();
10732cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        while (iterator.hasNext()) {
10733cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            key = (String) iterator.next();
10734cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            value = Integer.valueOf(key);
10735cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            lowerKey = (String) keySet.lower(key);
10736cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            if (value > 100) {
10737cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                lowerValue = Integer.valueOf(lowerKey);
10738cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                assertEquals(value - 1, lowerValue);
10739cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            } else {
10740cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                assertNull(lowerKey);
10741cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
10742cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
10743cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
10744cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = new Integer(2).toString();
10745cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        keySet = tm.headMap(key, true).navigableKeySet();
10746cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        iterator = keySet.iterator();
10747cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        iterator.next();// 0
10748cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        String expectedLowerKey = (String) iterator.next();// 1
10749cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(expectedLowerKey, keySet.lower(iterator.next()));
10750cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
10751cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
10752cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            keySet.lower(null);
10753cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw NPE");
10754cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (NullPointerException e) {
10755cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
10756cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
10757cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
10758cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = new Integer(0).toString();
10759cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        keySet = tm.headMap(key, true).navigableKeySet();
10760cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNull(keySet.lower(key));
10761cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
10762cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = new Integer(0).toString();
10763cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        keySet = tm.headMap(key, false).navigableKeySet();
10764cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNull(keySet.lower(key));
10765cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
10766cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = new Integer(999).toString();
10767cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        keySet = tm.headMap(key, true).navigableKeySet();
10768cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNotNull(keySet.lower(key));
10769cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
10770cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = new Integer(999).toString();
10771cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        keySet = tm.headMap(key, false).navigableKeySet();
10772cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNotNull(keySet.lower(key));
10773cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
10774cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
10775cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_AscendingSubMapKeySet_higher() {
10776cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        NavigableSet keySet;
10777cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Iterator iterator;
10778cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        String key, lowerKey;
10779cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        int value, lowerValue;
10780cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
10781cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        keySet = navigableMap_startExcluded_endExcluded.navigableKeySet();
10782cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        iterator = keySet.iterator();
10783cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        while (iterator.hasNext()) {
10784cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            key = (String) iterator.next();
10785cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            value = Integer.valueOf(key);
10786cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            lowerKey = (String) keySet.higher(key);
10787cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            if (value < 108) {
10788cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                lowerValue = Integer.valueOf(lowerKey);
10789cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                assertEquals(value + 1, lowerValue);
10790cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            } else {
10791cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                assertNull(lowerKey);
10792cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
10793cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
10794cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
10795cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        keySet = navigableMap_startExcluded_endIncluded.navigableKeySet();
10796cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        iterator = keySet.iterator();
10797cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        while (iterator.hasNext()) {
10798cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            key = (String) iterator.next();
10799cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            value = Integer.valueOf(key);
10800cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            lowerKey = (String) keySet.higher(key);
10801cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            if (value < 109) {
10802cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                lowerValue = Integer.valueOf(lowerKey);
10803cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                assertEquals(value + 1, lowerValue);
10804cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            } else {
10805cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                assertNull(lowerKey);
10806cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
10807cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
10808cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
10809cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        keySet = navigableMap_startIncluded_endExcluded.navigableKeySet();
10810cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        iterator = keySet.iterator();
10811cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        while (iterator.hasNext()) {
10812cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            key = (String) iterator.next();
10813cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            value = Integer.valueOf(key);
10814cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            lowerKey = (String) keySet.higher(key);
10815cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            if (value < 108) {
10816cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                lowerValue = Integer.valueOf(lowerKey);
10817cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                assertEquals(value + 1, lowerValue);
10818cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            } else {
10819cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                assertNull(lowerKey);
10820cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
10821cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
10822cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
10823cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        keySet = navigableMap_startIncluded_endIncluded.navigableKeySet();
10824cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        iterator = keySet.iterator();
10825cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        while (iterator.hasNext()) {
10826cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            key = (String) iterator.next();
10827cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            value = Integer.valueOf(key);
10828cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            lowerKey = (String) keySet.higher(key);
10829cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            if (value < 109) {
10830cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                lowerValue = Integer.valueOf(lowerKey);
10831cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                assertEquals(value + 1, lowerValue);
10832cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            } else {
10833cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                assertNull(lowerKey);
10834cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
10835cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
10836cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
10837cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = new Integer(2).toString();
10838cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        keySet = tm.headMap(key, true).navigableKeySet();
10839cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        iterator = keySet.iterator();
10840cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        iterator.next();// 0
10841cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        iterator.next();// 1
10842cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        lowerKey = (String) keySet.higher(iterator.next());
10843cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        String expectedLowerKey = (String) iterator.next();
10844cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(expectedLowerKey, lowerKey);
10845cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
10846cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
10847cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            keySet.higher(null);
10848cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw NPE");
10849cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (NullPointerException e) {
10850cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
10851cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
10852cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
10853cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = new Integer(0).toString();
10854cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        keySet = tm.headMap(key, true).navigableKeySet();
10855cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNull(keySet.higher(key));
10856cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
10857cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = new Integer(0).toString();
10858cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        keySet = tm.headMap(key, false).navigableKeySet();
10859cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNull(keySet.higher(key));
10860cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
10861cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = new Integer(999).toString();
10862cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        keySet = tm.headMap(key, true).navigableKeySet();
10863cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNull(keySet.higher(key));
10864cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
10865cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = new Integer(999).toString();
10866cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        keySet = tm.headMap(key, false).navigableKeySet();
10867cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNull(keySet.higher(key));
10868cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
10869cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
10870cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_AscendingSubMapKeySet_ceiling() {
10871cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        NavigableSet keySet;
10872cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        String key;
10873cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        String[] keyArray;
10874cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
10875cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        keySet = navigableMap_startExcluded_endExcluded.navigableKeySet();
10876cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        keyArray = (String[]) keySet.toArray(new String[keySet.size()]);
10877cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int i = 0, j = 101; i < keyArray.length; i++) {
10878cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            key = (String) keySet.ceiling(keyArray[i]);
10879cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(new Integer(i + j).toString(), key);
10880cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
10881cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
10882cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        keySet = navigableMap_startExcluded_endIncluded.navigableKeySet();
10883cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        keyArray = (String[]) keySet.toArray(new String[keySet.size()]);
10884cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int i = 0, j = 101; i < keyArray.length; i++) {
10885cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            key = (String) keySet.ceiling(keyArray[i]);
10886cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(new Integer(i + j).toString(), key);
10887cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
10888cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
10889cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        keySet = navigableMap_startIncluded_endExcluded.navigableKeySet();
10890cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        keyArray = (String[]) keySet.toArray(new String[keySet.size()]);
10891cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int i = 0, j = 100; i < keyArray.length; i++) {
10892cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            key = (String) keySet.ceiling(keyArray[i]);
10893cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(new Integer(i + j).toString(), key);
10894cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
10895cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
10896cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        keySet = navigableMap_startIncluded_endIncluded.navigableKeySet();
10897cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        keyArray = (String[]) keySet.toArray(new String[keySet.size()]);
10898cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int i = 0, j = 100; i < keyArray.length; i++) {
10899cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            key = (String) keySet.ceiling(keyArray[i]);
10900cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(new Integer(i + j).toString(), key);
10901cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
10902cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
10903cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = new Integer(2).toString();
10904cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        keySet = tm.headMap(key, true).navigableKeySet();
10905cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Iterator iterator = keySet.iterator();
10906cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        iterator.next();
10907cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(new Integer(1).toString(), keySet.ceiling(iterator.next()));
10908cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
10909cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
10910cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            keySet.ceiling(null);
10911cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw NPE");
10912cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (NullPointerException e) {
10913cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
10914cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
10915cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
10916cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = new Integer(0).toString();
10917cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        keySet = tm.headMap(key, true).navigableKeySet();
10918cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(key, keySet.ceiling(key));
10919cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
10920cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = new Integer(0).toString();
10921cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        keySet = tm.headMap(key, false).navigableKeySet();
10922cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNull(keySet.higher(key));
10923cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
10924cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = new Integer(999).toString();
10925cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        keySet = tm.headMap(key, true).navigableKeySet();
10926cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNull(keySet.higher(key));
10927cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
10928cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = new Integer(999).toString();
10929cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        keySet = tm.headMap(key, false).navigableKeySet();
10930cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNull(keySet.higher(key));
10931cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
10932cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
10933cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_AscendingSubMapKeySet_floor() {
10934cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        NavigableSet keySet;
10935cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        String key;
10936cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        String[] keyArray;
10937cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
10938cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        keySet = navigableMap_startExcluded_endExcluded.navigableKeySet();
10939cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        keyArray = (String[]) keySet.toArray(new String[keySet.size()]);
10940cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int i = 0, j = 101; i < keyArray.length; i++) {
10941cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            key = (String) keySet.floor(keyArray[i]);
10942cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(new Integer(i + j).toString(), key);
10943cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
10944cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
10945cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        keySet = navigableMap_startExcluded_endIncluded.navigableKeySet();
10946cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        keyArray = (String[]) keySet.toArray(new String[keySet.size()]);
10947cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int i = 0, j = 101; i < keyArray.length; i++) {
10948cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            key = (String) keySet.floor(keyArray[i]);
10949cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(new Integer(i + j).toString(), key);
10950cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
10951cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
10952cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        keySet = navigableMap_startIncluded_endExcluded.navigableKeySet();
10953cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        keyArray = (String[]) keySet.toArray(new String[keySet.size()]);
10954cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int i = 0, j = 100; i < keyArray.length; i++) {
10955cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            key = (String) keySet.floor(keyArray[i]);
10956cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(new Integer(i + j).toString(), key);
10957cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
10958cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
10959cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        keySet = navigableMap_startIncluded_endIncluded.navigableKeySet();
10960cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        keyArray = (String[]) keySet.toArray(new String[keySet.size()]);
10961cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int i = 0, j = 100; i < keyArray.length; i++) {
10962cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            key = (String) keySet.floor(keyArray[i]);
10963cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(new Integer(i + j).toString(), key);
10964cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
10965cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
10966cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = new Integer(2).toString();
10967cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        keySet = tm.headMap(key, true).navigableKeySet();
10968cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Iterator iterator = keySet.iterator();
10969cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        iterator.next();
10970cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(new Integer(1).toString(), keySet.floor(iterator.next()));
10971cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
10972cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
10973cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            keySet.floor(null);
10974cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw NPE");
10975cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (NullPointerException e) {
10976cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
10977cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
10978cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
10979cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = new Integer(0).toString();
10980cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        keySet = tm.headMap(key, true).navigableKeySet();
10981cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(key, keySet.floor(key));
10982cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
10983cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = new Integer(0).toString();
10984cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        keySet = tm.headMap(key, false).navigableKeySet();
10985cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNull(keySet.floor(key));
10986cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
10987cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = new Integer(999).toString();
10988cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        keySet = tm.headMap(key, true).navigableKeySet();
10989cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(key, keySet.floor(key));
10990cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
10991cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = new Integer(999).toString();
10992cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        keySet = tm.headMap(key, false).navigableKeySet();
10993cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(new Integer(998).toString(), keySet.floor(key));
10994cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
10995cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
10996cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_BoundedEntryIterator_next() {
10997cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Iterator iterator = subMap_default.entrySet().iterator();
10998cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(iterator.hasNext());
10999cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int i = 100; iterator.hasNext(); i++) {
11000cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(i, ((Entry) iterator.next()).getValue());
11001cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
11002cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
11003cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
11004cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            iterator.next();
11005cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw java.util.NoSuchElementException");
11006cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (NoSuchElementException e) {
11007cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
11008cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
11009cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
11010cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
11011cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
11012cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_BoundedKeyIterator_next() {
11013cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Iterator iterator = subMap_default.keySet().iterator();
11014cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(iterator.hasNext());
11015cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int i = 100; iterator.hasNext(); i++) {
11016cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(new Integer(i).toString(), iterator.next());
11017cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
11018cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
11019cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
11020cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            iterator.next();
11021cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw java.util.NoSuchElementException");
11022cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (NoSuchElementException e) {
11023cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
11024cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
11025cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
11026cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
11027cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_BoundedValueIterator_next() {
11028cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        String startKey = new Integer(101).toString();
11029cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        String endKey = new Integer(108).toString();
11030cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
11031cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Collection values = tm.subMap(startKey, endKey).values();
11032cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Iterator iter = values.iterator();
11033cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int i = 101; i < 108; i++) {
11034cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(i, iter.next());
11035cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
11036cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
11037cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            iter.next();
11038cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw java.util.NoSuchElementException");
11039cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (Exception e) {
11040cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
11041cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
11042cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
11043cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
11044cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /*
11045cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * SubMapEntrySet
11046cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
11047cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_SubMapEntrySet_Constructor() {
11048cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
11049cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
11050cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_SubMapEntrySet_contains() {
11051cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // covered in test_SubMapEntrySet_remove
11052cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
11053cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
11054cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_SubMapEntrySet_iterator() {
11055cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Set entrySet = subMap_default.entrySet();
11056cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Iterator iterator;
11057cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Entry entry;
11058cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Integer value = new Integer(100);
11059cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (iterator = entrySet.iterator(); iterator.hasNext(); value++) {
11060cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            entry = (Entry) iterator.next();
11061cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(value.toString(), entry.getKey());
11062cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(value, entry.getValue());
11063cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
11064cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(109, value.intValue());
11065cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
11066cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            iterator.next();
11067cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw NoSuchElementException");
11068cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (NoSuchElementException e) {
11069cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
11070cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
11071cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
11072cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        entrySet = subMap_startExcluded_endExcluded.entrySet();
11073cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        value = new Integer(101);
11074cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (iterator = entrySet.iterator(); iterator.hasNext(); value++) {
11075cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            entry = (Entry) iterator.next();
11076cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(value.toString(), entry.getKey());
11077cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(value, entry.getValue());
11078cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
11079cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(109, value.intValue());
11080cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
11081cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            iterator.next();
11082cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw NoSuchElementException");
11083cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (NoSuchElementException e) {
11084cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
11085cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
11086cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
11087cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        entrySet = subMap_startExcluded_endIncluded.entrySet();
11088cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        value = new Integer(101);
11089cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (iterator = entrySet.iterator(); iterator.hasNext(); value++) {
11090cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            entry = (Entry) iterator.next();
11091cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(value.toString(), entry.getKey());
11092cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(value, entry.getValue());
11093cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
11094cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(110, value.intValue());
11095cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
11096cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            iterator.next();
11097cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw NoSuchElementException");
11098cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (NoSuchElementException e) {
11099cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
11100cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
11101cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
11102cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        entrySet = subMap_startIncluded_endExcluded.entrySet();
11103cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        value = new Integer(100);
11104cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (iterator = entrySet.iterator(); iterator.hasNext(); value++) {
11105cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            entry = (Entry) iterator.next();
11106cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(value.toString(), entry.getKey());
11107cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(value, entry.getValue());
11108cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
11109cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(109, value.intValue());
11110cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
11111cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            iterator.next();
11112cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw NoSuchElementException");
11113cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (NoSuchElementException e) {
11114cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
11115cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
11116cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
11117cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        entrySet = subMap_startIncluded_endIncluded.entrySet();
11118cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        value = new Integer(100);
11119cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (iterator = entrySet.iterator(); iterator.hasNext(); value++) {
11120cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            entry = (Entry) iterator.next();
11121cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(value.toString(), entry.getKey());
11122cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(value, entry.getValue());
11123cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
11124cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(110, value.intValue());
11125cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
11126cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            iterator.next();
11127cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw NoSuchElementException");
11128cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (NoSuchElementException e) {
11129cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
11130cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
11131cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
11132cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        String startKey = new Integer(-1).toString();
11133cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        String endKey = new Integer(0).toString();
11134cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        SortedMap subMap = tm.subMap(startKey, endKey);
11135cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        entrySet = subMap.entrySet();
11136cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        iterator = entrySet.iterator();
11137cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
11138cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            iterator.next();
11139cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw NoSuchElementException");
11140cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (NoSuchElementException e) {
11141cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
11142cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
11143cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
11144cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        endKey = new Integer(1).toString();
11145cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        subMap = tm.subMap(startKey, endKey);
11146cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        entrySet = subMap.entrySet();
11147cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        iterator = entrySet.iterator();
11148cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(0, ((Entry) iterator.next()).getValue());
11149cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
11150cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            iterator.next();
11151cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw NoSuchElementException");
11152cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (NoSuchElementException e) {
11153cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
11154cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
11155cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
11156cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        endKey = new Integer(2000).toString();
11157cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        subMap = tm.subMap(startKey, endKey);
11158cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        entrySet = subMap.entrySet();
11159cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        iterator = entrySet.iterator();
11160cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int i = 0; i < subMap.size(); i++) {
11161cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            iterator.next();
11162cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
11163cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
11164cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            iterator.next();
11165cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw NoSuchElementException");
11166cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (NoSuchElementException e) {
11167cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
11168cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
11169cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
11170cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        startKey = new Integer(9).toString();
11171cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        endKey = new Integer(100).toString();
11172cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
11173cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            tm.subMap(startKey, endKey);
11174cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
11175cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
11176cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
11177cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
11178cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
11179cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // With Comparator
11180cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        entrySet = subMap_default_comparator.entrySet();
11181cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        value = new Integer(100);
11182cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (iterator = entrySet.iterator(); iterator.hasNext(); value++) {
11183cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            entry = (Entry) iterator.next();
11184cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(value.toString(), entry.getKey());
11185cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(value, entry.getValue());
11186cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
11187cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(109, value.intValue());
11188cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
11189cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            iterator.next();
11190cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw NoSuchElementException");
11191cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (NoSuchElementException e) {
11192cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
11193cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
11194cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
11195cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        entrySet = subMap_startExcluded_endExcluded_comparator.entrySet();
11196cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        value = new Integer(101);
11197cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (iterator = entrySet.iterator(); iterator.hasNext(); value++) {
11198cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            entry = (Entry) iterator.next();
11199cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(value.toString(), entry.getKey());
11200cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(value, entry.getValue());
11201cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
11202cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(109, value.intValue());
11203cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
11204cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            iterator.next();
11205cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw NoSuchElementException");
11206cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (NoSuchElementException e) {
11207cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
11208cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
11209cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
11210cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        entrySet = subMap_startExcluded_endIncluded_comparator.entrySet();
11211cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        value = new Integer(101);
11212cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (iterator = entrySet.iterator(); iterator.hasNext(); value++) {
11213cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            entry = (Entry) iterator.next();
11214cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(value.toString(), entry.getKey());
11215cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(value, entry.getValue());
11216cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
11217cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(110, value.intValue());
11218cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
11219cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            iterator.next();
11220cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw NoSuchElementException");
11221cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (NoSuchElementException e) {
11222cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
11223cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
11224cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
11225cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        entrySet = subMap_startIncluded_endExcluded_comparator.entrySet();
11226cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        value = new Integer(100);
11227cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (iterator = entrySet.iterator(); iterator.hasNext(); value++) {
11228cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            entry = (Entry) iterator.next();
11229cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(value.toString(), entry.getKey());
11230cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(value, entry.getValue());
11231cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
11232cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(109, value.intValue());
11233cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
11234cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            iterator.next();
11235cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw NoSuchElementException");
11236cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (NoSuchElementException e) {
11237cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
11238cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
11239cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
11240cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        entrySet = subMap_startIncluded_endIncluded_comparator.entrySet();
11241cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        value = new Integer(100);
11242cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (iterator = entrySet.iterator(); iterator.hasNext(); value++) {
11243cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            entry = (Entry) iterator.next();
11244cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(value.toString(), entry.getKey());
11245cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(value, entry.getValue());
11246cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
11247cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(110, value.intValue());
11248cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
11249cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            iterator.next();
11250cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw NoSuchElementException");
11251cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (NoSuchElementException e) {
11252cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
11253cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
11254cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
11255cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
11256cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_SubMapEntrySet_remove() {
11257cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Set entrySet = subMap_default.entrySet();
11258cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(entrySet.remove(null));
11259cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        int size = entrySet.size();
11260cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int i = 0; i < size; i++) {
11261cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            Iterator iterator = entrySet.iterator();
11262cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertTrue(entrySet.remove(iterator.next()));
11263cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
11264cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
11265cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        entrySet = subMap_startExcluded_endExcluded.entrySet();
11266cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(entrySet.remove(null));
11267cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        size = entrySet.size();
11268cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int i = 0; i < size; i++) {
11269cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            Iterator iterator = entrySet.iterator();
11270cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertTrue(entrySet.remove(iterator.next()));
11271cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
11272cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
11273cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        entrySet = subMap_startExcluded_endIncluded.entrySet();
11274cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(entrySet.remove(null));
11275cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        size = entrySet.size();
11276cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int i = 0; i < size; i++) {
11277cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            Iterator iterator = entrySet.iterator();
11278cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertTrue(entrySet.remove(iterator.next()));
11279cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
11280cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
11281cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        entrySet = subMap_startIncluded_endExcluded.entrySet();
11282cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(entrySet.remove(null));
11283cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        size = entrySet.size();
11284cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int i = 0; i < size; i++) {
11285cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            Iterator iterator = entrySet.iterator();
11286cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertTrue(entrySet.remove(iterator.next()));
11287cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
11288cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
11289cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        entrySet = subMap_startIncluded_endIncluded.entrySet();
11290cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(entrySet.remove(null));
11291cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        size = entrySet.size();
11292cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int i = 0; i < size; i++) {
11293cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            Iterator iterator = entrySet.iterator();
11294cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertTrue(entrySet.remove(iterator.next()));
11295cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
11296cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
11297cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
11298cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_SubMapEntrySet_isEmpty() {
11299cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(subMap_default.entrySet().isEmpty());
11300cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(subMap_startExcluded_endExcluded.entrySet().isEmpty());
11301cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(subMap_startExcluded_endIncluded.entrySet().isEmpty());
11302cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(subMap_startIncluded_endExcluded.entrySet().isEmpty());
11303cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(subMap_startIncluded_endIncluded.entrySet().isEmpty());
11304cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
11305cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        String startKey = new Integer(0).toString();
11306cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        String endKey = startKey;
11307cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        SortedMap subMap = tm.subMap(startKey, endKey);
11308cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(subMap.entrySet().isEmpty());
11309cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
11310cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        startKey = new Integer(-1).toString();
11311cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        subMap = tm.subMap(startKey, endKey);
11312cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(subMap.entrySet().isEmpty());
11313cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
11314cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        endKey = new Integer(1).toString();
11315cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        subMap = tm.subMap(startKey, endKey);
11316cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(subMap.entrySet().isEmpty());
11317cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
11318cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
11319cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_SubMapEntrySet_size() {
11320cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(9, subMap_default.entrySet().size());
11321cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(8, subMap_startExcluded_endExcluded.entrySet().size());
11322cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(9, subMap_startExcluded_endIncluded.entrySet().size());
11323cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(9, subMap_startIncluded_endExcluded.entrySet().size());
11324cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(10, subMap_startIncluded_endIncluded.entrySet().size());
11325cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
11326cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        String startKey = new Integer(0).toString();
11327cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        String endKey = new Integer(2).toString();
11328cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        SortedMap subMap = tm.subMap(startKey, endKey);
11329cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(112, subMap.entrySet().size());
11330cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
11331cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        startKey = new Integer(0).toString();
11332cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        endKey = startKey;
11333cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        subMap = tm.subMap(startKey, endKey);
11334cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(0, subMap.entrySet().size());
11335cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
11336cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        startKey = new Integer(-1).toString();
11337cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        endKey = startKey;
11338cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        subMap = tm.subMap(startKey, endKey);
11339cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(0, subMap.entrySet().size());
11340cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
11341cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        endKey = new Integer(1).toString();
11342cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        subMap = tm.subMap(startKey, endKey);
11343cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(1, subMap.entrySet().size());
11344cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
11345cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        startKey = new Integer(999).toString();
11346cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        endKey = startKey;
11347cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        subMap = tm.subMap(startKey, endKey);
11348cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(0, subMap.entrySet().size());
11349cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
11350cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
11351cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /*
11352cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * SubMapKeySet
11353cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
11354cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_SubMapKeySet_Constructor() {
11355cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // covered in other test
11356cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
11357cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
11358cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_SubMapKeySet_iterator() {
11359cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Set keySet = subMap_default.keySet();
11360cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Iterator iterator = keySet.iterator();
11361cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int i = 0; i < keySet.size(); i++) {
11362cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(new Integer(100 + i).toString(), iterator.next());
11363cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
11364cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(iterator.hasNext());
11365cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
11366cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            iterator.next();
11367cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw NoSuchElementException");
11368cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (NoSuchElementException e) {
11369cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
11370cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
11371cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
11372cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        keySet = subMap_startExcluded_endExcluded.keySet();
11373cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        iterator = keySet.iterator();
11374cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int i = 0; i < keySet.size(); i++) {
11375cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(new Integer(101 + i).toString(), iterator.next());
11376cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
11377cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(iterator.hasNext());
11378cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
11379cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            iterator.next();
11380cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw NoSuchElementException");
11381cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (NoSuchElementException e) {
11382cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
11383cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
11384cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
11385cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        keySet = subMap_startExcluded_endIncluded.keySet();
11386cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        iterator = keySet.iterator();
11387cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int i = 0; i < keySet.size(); i++) {
11388cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(new Integer(101 + i).toString(), iterator.next());
11389cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
11390cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(iterator.hasNext());
11391cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
11392cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            iterator.next();
11393cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw NoSuchElementException");
11394cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (NoSuchElementException e) {
11395cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
11396cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
11397cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
11398cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        keySet = subMap_startIncluded_endExcluded.keySet();
11399cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        iterator = keySet.iterator();
11400cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int i = 0; i < keySet.size(); i++) {
11401cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(new Integer(100 + i).toString(), iterator.next());
11402cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
11403cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(iterator.hasNext());
11404cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
11405cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            iterator.next();
11406cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw NoSuchElementException");
11407cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (NoSuchElementException e) {
11408cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
11409cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
11410cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
11411cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        keySet = subMap_startIncluded_endIncluded.keySet();
11412cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        iterator = keySet.iterator();
11413cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int i = 0; i < keySet.size(); i++) {
11414cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(new Integer(100 + i).toString(), iterator.next());
11415cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
11416cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(iterator.hasNext());
11417cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
11418cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            iterator.next();
11419cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw NoSuchElementException");
11420cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (NoSuchElementException e) {
11421cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
11422cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
11423cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
11424cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // With Comparator
11425cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        keySet = subMap_default_comparator.keySet();
11426cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        iterator = keySet.iterator();
11427cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int i = 0; i < keySet.size(); i++) {
11428cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(new Integer(100 + i).toString(), iterator.next());
11429cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
11430cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(iterator.hasNext());
11431cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
11432cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            iterator.next();
11433cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw NoSuchElementException");
11434cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (NoSuchElementException e) {
11435cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
11436cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
11437cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
11438cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        keySet = subMap_startExcluded_endExcluded_comparator.keySet();
11439cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        iterator = keySet.iterator();
11440cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int i = 0; i < keySet.size(); i++) {
11441cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(new Integer(101 + i).toString(), iterator.next());
11442cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
11443cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(iterator.hasNext());
11444cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
11445cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            iterator.next();
11446cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw NoSuchElementException");
11447cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (NoSuchElementException e) {
11448cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
11449cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
11450cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
11451cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        keySet = subMap_startExcluded_endIncluded_comparator.keySet();
11452cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        iterator = keySet.iterator();
11453cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int i = 0; i < keySet.size(); i++) {
11454cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(new Integer(101 + i).toString(), iterator.next());
11455cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
11456cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(iterator.hasNext());
11457cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
11458cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            iterator.next();
11459cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw NoSuchElementException");
11460cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (NoSuchElementException e) {
11461cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
11462cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
11463cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
11464cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        keySet = subMap_startIncluded_endExcluded_comparator.keySet();
11465cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        iterator = keySet.iterator();
11466cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int i = 0; i < keySet.size(); i++) {
11467cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(new Integer(100 + i).toString(), iterator.next());
11468cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
11469cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(iterator.hasNext());
11470cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
11471cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            iterator.next();
11472cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw NoSuchElementException");
11473cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (NoSuchElementException e) {
11474cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
11475cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
11476cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
11477cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        keySet = subMap_startIncluded_endIncluded_comparator.keySet();
11478cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        iterator = keySet.iterator();
11479cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int i = 0; i < keySet.size(); i++) {
11480cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(new Integer(100 + i).toString(), iterator.next());
11481cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
11482cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(iterator.hasNext());
11483cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
11484cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            iterator.next();
11485cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw NoSuchElementException");
11486cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (NoSuchElementException e) {
11487cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
11488cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
11489cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
11490cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
11491cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_SubMapKeySet_isEmpty() {
11492cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(subMap_default.keySet().isEmpty());
11493cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(subMap_startExcluded_endExcluded.keySet().isEmpty());
11494cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(subMap_startExcluded_endIncluded.keySet().isEmpty());
11495cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(subMap_startIncluded_endExcluded.keySet().isEmpty());
11496cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(subMap_startIncluded_endIncluded.keySet().isEmpty());
11497cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
11498cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        String startKey = new Integer(0).toString();
11499cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        String endKey = startKey;
11500cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        SortedMap subMap = tm.subMap(startKey, endKey);
11501cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(subMap.keySet().isEmpty());
11502cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
11503cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        startKey = new Integer(999).toString();
11504cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        endKey = startKey;
11505cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        subMap = tm.subMap(startKey, endKey);
11506cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(subMap.keySet().isEmpty());
11507cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
11508cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        startKey = new Integer(-1).toString();
11509cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        endKey = new Integer(1).toString();
11510cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        subMap = tm.subMap(startKey, endKey);
11511cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(subMap.keySet().isEmpty());
11512cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
11513cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        endKey = new Integer(0).toString();
11514cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        subMap = tm.subMap(startKey, endKey);
11515cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(subMap.keySet().isEmpty());
11516cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
11517cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
11518cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_SubMapKeySet_contains() {
11519cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Set keySet = subMap_default.keySet();
11520cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
11521cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            keySet.contains(null);
11522cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw NullPointerException");
11523cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (NullPointerException e) {
11524cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
11525cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
11526cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        String key = new Integer(-1).toString();
11527cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(keySet.contains(key));
11528cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = new Integer(99).toString();
11529cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(keySet.contains(key));
11530cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = new Integer(100).toString();
11531cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(keySet.contains(key));
11532cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int i = 101; i < 109; i++) {
11533cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            key = new Integer(i).toString();
11534cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertTrue(keySet.contains(key));
11535cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
11536cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = new Integer(109).toString();
11537cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(keySet.contains(key));
11538cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = new Integer(110).toString();
11539cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(keySet.contains(key));
11540cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = new Integer(1001).toString();
11541cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(keySet.contains(key));
11542cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
11543cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        keySet = subMap_startExcluded_endExcluded.keySet();
11544cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
11545cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            keySet.contains(null);
11546cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw NullPointerException");
11547cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (NullPointerException e) {
11548cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
11549cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
11550cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = new Integer(-1).toString();
11551cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(keySet.contains(key));
11552cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = new Integer(99).toString();
11553cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(keySet.contains(key));
11554cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = new Integer(100).toString();
11555cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(keySet.contains(key));
11556cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int i = 101; i < 109; i++) {
11557cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            key = new Integer(i).toString();
11558cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertTrue(keySet.contains(key));
11559cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
11560cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = new Integer(109).toString();
11561cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(keySet.contains(key));
11562cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = new Integer(110).toString();
11563cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(keySet.contains(key));
11564cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = new Integer(1001).toString();
11565cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(keySet.contains(key));
11566cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
11567cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        keySet = subMap_startExcluded_endIncluded.keySet();
11568cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
11569cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            keySet.contains(null);
11570cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw NullPointerException");
11571cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (NullPointerException e) {
11572cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
11573cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
11574cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = new Integer(-1).toString();
11575cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(keySet.contains(key));
11576cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = new Integer(99).toString();
11577cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(keySet.contains(key));
11578cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = new Integer(100).toString();
11579cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(keySet.contains(key));
11580cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int i = 101; i < 109; i++) {
11581cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            key = new Integer(i).toString();
11582cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertTrue(keySet.contains(key));
11583cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
11584cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = new Integer(109).toString();
11585cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(keySet.contains(key));
11586cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = new Integer(110).toString();
11587cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(keySet.contains(key));
11588cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = new Integer(1001).toString();
11589cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(keySet.contains(key));
11590cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
11591cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        keySet = subMap_startIncluded_endExcluded.keySet();
11592cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
11593cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            keySet.contains(null);
11594cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw NullPointerException");
11595cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (NullPointerException e) {
11596cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
11597cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
11598cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = new Integer(-1).toString();
11599cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(keySet.contains(key));
11600cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = new Integer(99).toString();
11601cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(keySet.contains(key));
11602cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = new Integer(100).toString();
11603cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(keySet.contains(key));
11604cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int i = 101; i < 109; i++) {
11605cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            key = new Integer(i).toString();
11606cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertTrue(keySet.contains(key));
11607cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
11608cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = new Integer(109).toString();
11609cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(keySet.contains(key));
11610cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = new Integer(110).toString();
11611cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(keySet.contains(key));
11612cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = new Integer(1001).toString();
11613cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(keySet.contains(key));
11614cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
11615cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        keySet = subMap_startIncluded_endIncluded.keySet();
11616cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
11617cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            keySet.contains(null);
11618cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw NullPointerException");
11619cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (NullPointerException e) {
11620cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
11621cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
11622cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = new Integer(-1).toString();
11623cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(keySet.contains(key));
11624cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = new Integer(99).toString();
11625cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(keySet.contains(key));
11626cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = new Integer(100).toString();
11627cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(keySet.contains(key));
11628cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int i = 101; i < 109; i++) {
11629cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            key = new Integer(i).toString();
11630cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertTrue(keySet.contains(key));
11631cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
11632cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = new Integer(109).toString();
11633cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(keySet.contains(key));
11634cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = new Integer(110).toString();
11635cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(keySet.contains(key));
11636cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        key = new Integer(1001).toString();
11637cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(keySet.contains(key));
11638cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
11639cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
11640cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_SubMapKeySet_size() {
11641cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(9, subMap_default.keySet().size());
11642cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(8, subMap_startExcluded_endExcluded.keySet().size());
11643cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(9, subMap_startExcluded_endIncluded.keySet().size());
11644cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(9, subMap_startIncluded_endExcluded.keySet().size());
11645cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(10, subMap_startIncluded_endIncluded.keySet().size());
11646cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
11647cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        String startKey = new Integer(0).toString();
11648cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        String endKey = new Integer(2).toString();
11649cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        SortedMap subMap = tm.subMap(startKey, endKey);
11650cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(112, subMap.keySet().size());
11651cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
11652cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        startKey = new Integer(0).toString();
11653cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        endKey = startKey;
11654cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        subMap = tm.subMap(startKey, endKey);
11655cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(0, subMap.keySet().size());
11656cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
11657cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        startKey = new Integer(-1).toString();
11658cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        endKey = startKey;
11659cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        subMap = tm.subMap(startKey, endKey);
11660cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(0, subMap.keySet().size());
11661cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
11662cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        endKey = new Integer(1).toString();
11663cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        subMap = tm.subMap(startKey, endKey);
11664cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(1, subMap.keySet().size());
11665cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
11666cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        startKey = new Integer(999).toString();
11667cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        endKey = startKey;
11668cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        subMap = tm.subMap(startKey, endKey);
11669cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(0, subMap.keySet().size());
11670cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
11671cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
11672cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_SubMapKeySet_remove() {
11673cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Set keySet = subMap_default.keySet();
11674cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
11675cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            keySet.remove(null);
11676cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw NullPointerException");
11677cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (NullPointerException e) {
11678cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
11679cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
11680cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        int size = keySet.size();
11681cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int i = 0; i < size; i++) {
11682cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            Iterator iterator = keySet.iterator();
11683cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertTrue(keySet.remove(iterator.next()));
11684cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
11685cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
11686cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        keySet = subMap_startExcluded_endExcluded.keySet();
11687cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
11688cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            keySet.remove(null);
11689cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw NullPointerException");
11690cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (NullPointerException e) {
11691cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
11692cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
11693cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        size = keySet.size();
11694cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int i = 0; i < size; i++) {
11695cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            Iterator iterator = keySet.iterator();
11696cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertTrue(keySet.remove(iterator.next()));
11697cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
11698cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
11699cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        keySet = subMap_startExcluded_endIncluded.keySet();
11700cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
11701cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            keySet.remove(null);
11702cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw NullPointerException");
11703cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (NullPointerException e) {
11704cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
11705cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
11706cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        size = keySet.size();
11707cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int i = 0; i < size; i++) {
11708cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            Iterator iterator = keySet.iterator();
11709cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertTrue(keySet.remove(iterator.next()));
11710cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
11711cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
11712cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        keySet = subMap_startIncluded_endExcluded.keySet();
11713cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
11714cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            keySet.remove(null);
11715cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw NullPointerException");
11716cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (NullPointerException e) {
11717cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
11718cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
11719cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        size = keySet.size();
11720cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int i = 0; i < size; i++) {
11721cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            Iterator iterator = keySet.iterator();
11722cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertTrue(keySet.remove(iterator.next()));
11723cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
11724cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
11725cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        keySet = subMap_startIncluded_endIncluded.keySet();
11726cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
11727cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            keySet.remove(null);
11728cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw NullPointerException");
11729cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (NullPointerException e) {
11730cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
11731cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
11732cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        size = keySet.size();
11733cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int i = 0; i < size; i++) {
11734cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            Iterator iterator = keySet.iterator();
11735cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertTrue(keySet.remove(iterator.next()));
11736cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
11737cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
11738cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
11739cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /*
11740cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * AscendingSubMapEntrySet
11741cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
11742cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
11743cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_AscendingSubMapEntrySet_comparator() {
11744cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Set entrySet;
11745cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        NavigableSet ascendingSubMapEntrySet;
11746cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
11747cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        entrySet = navigableMap_startExcluded_endExcluded.entrySet();
11748cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        if (entrySet instanceof NavigableSet) {
11749cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            ascendingSubMapEntrySet = (NavigableSet) entrySet;
11750cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertNull(ascendingSubMapEntrySet.comparator());
11751cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
11752cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
11753cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        entrySet = navigableMap_startExcluded_endIncluded.entrySet();
11754cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        if (entrySet instanceof NavigableSet) {
11755cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            ascendingSubMapEntrySet = (NavigableSet) entrySet;
11756cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertNull(ascendingSubMapEntrySet.comparator());
11757cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
11758cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
11759cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        entrySet = navigableMap_startIncluded_endExcluded.entrySet();
11760cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        if (entrySet instanceof NavigableSet) {
11761cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            ascendingSubMapEntrySet = (NavigableSet) entrySet;
11762cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertNull(ascendingSubMapEntrySet.comparator());
11763cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
11764cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
11765cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        entrySet = navigableMap_startIncluded_endIncluded.entrySet();
11766cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        if (entrySet instanceof NavigableSet) {
11767cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            ascendingSubMapEntrySet = (NavigableSet) entrySet;
11768cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertNull(ascendingSubMapEntrySet.comparator());
11769cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
11770cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
11771cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
11772cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_AscendingSubMapEntrySet_descendingSet() {
11773cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Set entrySet;
11774cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        NavigableSet ascendingSubMapEntrySet, descendingSet;
11775cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Entry entry;
11776cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        int value;
11777cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Iterator iterator;
11778cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
11779cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        entrySet = navigableMap_startExcluded_endExcluded.entrySet();
11780cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        if (entrySet instanceof NavigableSet) {
11781cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            ascendingSubMapEntrySet = (NavigableSet) entrySet;
11782cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            descendingSet = ascendingSubMapEntrySet.descendingSet();
11783cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            iterator = descendingSet.iterator();
11784cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertTrue(iterator.hasNext());
11785cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            for (value = 108; iterator.hasNext(); value--) {
11786cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                entry = (Entry) iterator.next();
11787cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                assertEquals(value, entry.getValue());
11788cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
11789cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(100, value);
11790cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
11791cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
11792cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        entrySet = navigableMap_startExcluded_endIncluded.entrySet();
11793cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        if (entrySet instanceof NavigableSet) {
11794cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            ascendingSubMapEntrySet = (NavigableSet) entrySet;
11795cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            descendingSet = ascendingSubMapEntrySet.descendingSet();
11796cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            iterator = descendingSet.iterator();
11797cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertTrue(iterator.hasNext());
11798cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            for (value = 109; iterator.hasNext(); value--) {
11799cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                entry = (Entry) iterator.next();
11800cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                assertEquals(value, entry.getValue());
11801cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
11802cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(100, value);
11803cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
11804cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
11805cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        entrySet = navigableMap_startIncluded_endExcluded.entrySet();
11806cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        if (entrySet instanceof NavigableSet) {
11807cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            ascendingSubMapEntrySet = (NavigableSet) entrySet;
11808cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            descendingSet = ascendingSubMapEntrySet.descendingSet();
11809cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            iterator = descendingSet.iterator();
11810cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertTrue(iterator.hasNext());
11811cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            for (value = 108; iterator.hasNext(); value--) {
11812cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                entry = (Entry) iterator.next();
11813cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                assertEquals(value, entry.getValue());
11814cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
11815cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(99, value);
11816cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
11817cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
11818cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        entrySet = navigableMap_startIncluded_endIncluded.entrySet();
11819cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        if (entrySet instanceof NavigableSet) {
11820cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            ascendingSubMapEntrySet = (NavigableSet) entrySet;
11821cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            descendingSet = ascendingSubMapEntrySet.descendingSet();
11822cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            iterator = descendingSet.iterator();
11823cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertTrue(iterator.hasNext());
11824cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            for (value = 109; iterator.hasNext(); value--) {
11825cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                entry = (Entry) iterator.next();
11826cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                assertEquals(value, entry.getValue());
11827cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
11828cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(99, value);
11829cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
11830cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
11831cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
11832cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_AscendingSubMapEntrySet_descendingIterator() {
11833cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Set entrySet;
11834cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        NavigableSet ascendingSubMapEntrySet;
11835cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Iterator iterator;
11836cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Entry entry;
11837cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        int value;
11838cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
11839cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        entrySet = navigableMap_startExcluded_endExcluded.entrySet();
11840cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        if (entrySet instanceof NavigableSet) {
11841cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            ascendingSubMapEntrySet = (NavigableSet) entrySet;
11842cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            iterator = ascendingSubMapEntrySet.descendingIterator();
11843cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertTrue(iterator.hasNext());
11844cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            for (value = 108; iterator.hasNext(); value--) {
11845cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                entry = (Entry) iterator.next();
11846cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                assertEquals(value, entry.getValue());
11847cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
11848cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(100, value);
11849cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
11850cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
11851cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        entrySet = navigableMap_startExcluded_endIncluded.entrySet();
11852cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        if (entrySet instanceof NavigableSet) {
11853cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            ascendingSubMapEntrySet = (NavigableSet) entrySet;
11854cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            iterator = ascendingSubMapEntrySet.descendingIterator();
11855cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertTrue(iterator.hasNext());
11856cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            for (value = 109; iterator.hasNext(); value--) {
11857cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                entry = (Entry) iterator.next();
11858cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                assertEquals(value, entry.getValue());
11859cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
11860cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(100, value);
11861cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
11862cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
11863cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        entrySet = navigableMap_startIncluded_endExcluded.entrySet();
11864cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        if (entrySet instanceof NavigableSet) {
11865cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            ascendingSubMapEntrySet = (NavigableSet) entrySet;
11866cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            iterator = ascendingSubMapEntrySet.descendingIterator();
11867cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertTrue(iterator.hasNext());
11868cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            for (value = 108; iterator.hasNext(); value--) {
11869cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                entry = (Entry) iterator.next();
11870cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                assertEquals(value, entry.getValue());
11871cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
11872cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(99, value);
11873cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
11874cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
11875cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        entrySet = navigableMap_startIncluded_endIncluded.entrySet();
11876cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        if (entrySet instanceof NavigableSet) {
11877cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            ascendingSubMapEntrySet = (NavigableSet) entrySet;
11878cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            iterator = ascendingSubMapEntrySet.descendingIterator();
11879cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertTrue(iterator.hasNext());
11880cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            for (value = 109; iterator.hasNext(); value--) {
11881cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                entry = (Entry) iterator.next();
11882cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                assertEquals(value, entry.getValue());
11883cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
11884cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(99, value);
11885cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
11886cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
11887cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        String startKey = new Integer(2).toString();
11888cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        entrySet = tm.headMap(startKey, true).entrySet();
11889cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        if (entrySet instanceof NavigableSet) {
11890cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            ascendingSubMapEntrySet = (NavigableSet) entrySet;
11891cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            iterator = ascendingSubMapEntrySet.descendingIterator();
11892cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertTrue(iterator.hasNext());
11893cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(2, ((Entry) iterator.next()).getValue());
11894cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
11895cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
11896cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
11897cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_AscendingSubMapEntrySet_pollFirst_startExcluded_endExcluded() {
11898cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Set entrySet = navigableMap_startExcluded_endExcluded.entrySet();
11899cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        if (entrySet instanceof NavigableSet) {
11900cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            NavigableSet ascendingSubMapEntrySet = (NavigableSet) entrySet;
11901cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            for (int value = 101; value < 109; value++) {
11902cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                Entry entry = (Entry) ascendingSubMapEntrySet.pollFirst();
11903cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                assertEquals(value, entry.getValue());
11904cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
11905cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertTrue(ascendingSubMapEntrySet.isEmpty());
11906cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // should return null if the set is empty.
11907cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertNull(ascendingSubMapEntrySet.pollFirst());
11908cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
11909cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
11910cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
11911cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_AscendingSubMapEntrySet_pollFirst_startExcluded_endIncluded() {
11912cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Set entrySet = navigableMap_startExcluded_endIncluded.entrySet();
11913cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        if (entrySet instanceof NavigableSet) {
11914cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            NavigableSet ascendingSubMapEntrySet = (NavigableSet) entrySet;
11915cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            for (int value = 101; value < 110; value++) {
11916cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                Entry entry = (Entry) ascendingSubMapEntrySet.pollFirst();
11917cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                assertEquals(value, entry.getValue());
11918cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
11919cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertTrue(ascendingSubMapEntrySet.isEmpty());
11920cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // should return null if the set is empty.
11921cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertNull(ascendingSubMapEntrySet.pollFirst());
11922cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
11923cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
11924cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
11925cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_AscendingSubMapEntrySet_pollFirst_startIncluded_endExcluded() {
11926cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Set entrySet = navigableMap_startIncluded_endExcluded.entrySet();
11927cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        if (entrySet instanceof NavigableSet) {
11928cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            NavigableSet ascendingSubMapEntrySet = (NavigableSet) entrySet;
11929cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            for (int value = 100; value < 109; value++) {
11930cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                Entry entry = (Entry) ascendingSubMapEntrySet.pollFirst();
11931cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                assertEquals(value, entry.getValue());
11932cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
11933cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertTrue(ascendingSubMapEntrySet.isEmpty());
11934cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // should return null if the set is empty.
11935cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertNull(ascendingSubMapEntrySet.pollFirst());
11936cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
11937cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
11938cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
11939cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_AscendingSubMapEntrySet_pollFirst_startIncluded_endIncluded() {
11940cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Set entrySet = navigableMap_startIncluded_endIncluded.entrySet();
11941cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        if (entrySet instanceof NavigableSet) {
11942cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            NavigableSet ascendingSubMapEntrySet = (NavigableSet) entrySet;
11943cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            for (int value = 100; value < 110; value++) {
11944cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                Entry entry = (Entry) ascendingSubMapEntrySet.pollFirst();
11945cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                assertEquals(value, entry.getValue());
11946cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
11947cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertTrue(ascendingSubMapEntrySet.isEmpty());
11948cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // should return null if the set is empty.
11949cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertNull(ascendingSubMapEntrySet.pollFirst());
11950cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
11951cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
11952cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
11953cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_AscendingSubMapEntrySet_pollLast_startExcluded_endExcluded() {
11954cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Set entrySet = navigableMap_startExcluded_endExcluded.entrySet();
11955cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        if (entrySet instanceof NavigableSet) {
11956cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            NavigableSet ascendingSubMapEntrySet = (NavigableSet) entrySet;
11957cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            for (int value = 108; value > 100; value--) {
11958cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                Entry entry = (Entry) ascendingSubMapEntrySet.pollLast();
11959cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                assertEquals(value, entry.getValue());
11960cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
11961cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertTrue(ascendingSubMapEntrySet.isEmpty());
11962cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // should return null if the set is empty
11963cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertNull(ascendingSubMapEntrySet.pollLast());
11964cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
11965cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
11966cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // NavigableMap ascendingSubMap = tm.headMap("2", true);
11967cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // Set entrySet = ascendingSubMap.entrySet();
11968cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // Object last;
11969cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // if (entrySet instanceof NavigableSet) {
11970cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // last = ((NavigableSet) entrySet).pollLast();
11971cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // assertEquals("2=2", last.toString());
11972cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // }
11973cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        //
11974cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // ascendingSubMap = tm.tailMap("2", true);
11975cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // entrySet = ascendingSubMap.entrySet();
11976cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // if (entrySet instanceof NavigableSet) {
11977cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // last = ((NavigableSet) entrySet).pollLast();
11978cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // assertEquals("999=999", last.toString());
11979cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // }
11980cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
11981cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
11982cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_AscendingSubMapEntrySet_pollLast_startExcluded_endIncluded() {
11983cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Set entrySet = navigableMap_startExcluded_endIncluded.entrySet();
11984cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        if (entrySet instanceof NavigableSet) {
11985cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            NavigableSet ascendingSubMapEntrySet = (NavigableSet) entrySet;
11986cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            for (int value = 109; value > 100; value--) {
11987cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                Entry entry = (Entry) ascendingSubMapEntrySet.pollLast();
11988cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                assertEquals(value, entry.getValue());
11989cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
11990cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertTrue(ascendingSubMapEntrySet.isEmpty());
11991cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // should return null if the set is empty
11992cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertNull(ascendingSubMapEntrySet.pollLast());
11993cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
11994cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
11995cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
11996cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_AscendingSubMapEntrySet_pollLast_startIncluded_endExcluded() {
11997cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Set entrySet = navigableMap_startIncluded_endExcluded.entrySet();
11998cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        if (entrySet instanceof NavigableSet) {
11999cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            NavigableSet ascendingSubMapEntrySet = (NavigableSet) entrySet;
12000cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            for (int value = 108; value > 99; value--) {
12001cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                Entry entry = (Entry) ascendingSubMapEntrySet.pollLast();
12002cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                assertEquals(value, entry.getValue());
12003cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
12004cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertTrue(ascendingSubMapEntrySet.isEmpty());
12005cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // should return null if the set is empty
12006cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertNull(ascendingSubMapEntrySet.pollLast());
12007cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
12008cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
12009cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
12010cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_AscendingSubMapEntrySet_pollLast_startIncluded_endIncluded() {
12011cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Set entrySet = navigableMap_startIncluded_endIncluded.entrySet();
12012cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        if (entrySet instanceof NavigableSet) {
12013cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            NavigableSet ascendingSubMapEntrySet = (NavigableSet) entrySet;
12014cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            for (int value = 109; value > 99; value--) {
12015cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                Entry entry = (Entry) ascendingSubMapEntrySet.pollLast();
12016cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                assertEquals(value, entry.getValue());
12017cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
12018cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertTrue(ascendingSubMapEntrySet.isEmpty());
12019cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // should return null if the set is empty
12020cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertNull(ascendingSubMapEntrySet.pollLast());
12021cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
12022cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
12023cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
12024cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_AscendingSubMapEntrySet_headSet() {
12025cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Set entrySet, headSet;
12026cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        NavigableSet ascendingSubMapEntrySet;
12027cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Iterator iterator, headSetIterator;
12028cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Entry entry;
12029cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        int value;
12030cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
12031cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        entrySet = navigableMap_startExcluded_endExcluded.entrySet();
12032cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        if (entrySet instanceof NavigableSet) {
12033cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            ascendingSubMapEntrySet = (NavigableSet) entrySet;
12034cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            iterator = ascendingSubMapEntrySet.iterator();
12035cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            while (iterator.hasNext()) {
12036cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                entry = (Entry) iterator.next();
12037cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                headSet = ascendingSubMapEntrySet.headSet(entry);
12038cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                headSetIterator = headSet.iterator();
12039cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                for (value = 101; headSetIterator.hasNext(); value++) {
12040cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    assertEquals(value, ((Entry) headSetIterator.next())
12041cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                            .getValue());
12042cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                }
12043cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                assertEquals(entry.getValue(), value);
12044cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                try {
12045cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    headSetIterator.next();
12046cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    fail("should throw NoSuchElementException");
12047cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                } catch (NoSuchElementException e) {
12048cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    // Expected
12049cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                }
12050cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
12051cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                headSet = ascendingSubMapEntrySet.headSet(entry, false);
12052cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                headSetIterator = headSet.iterator();
12053cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                for (value = 101; headSetIterator.hasNext(); value++) {
12054cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    assertEquals(value, ((Entry) headSetIterator.next())
12055cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                            .getValue());
12056cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                }
12057cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                assertEquals(entry.getValue(), value);
12058cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                try {
12059cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    headSetIterator.next();
12060cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    fail("should throw NoSuchElementException");
12061cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                } catch (NoSuchElementException e) {
12062cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    // Expected
12063cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                }
12064cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
12065cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                headSet = ascendingSubMapEntrySet.headSet(entry, true);
12066cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                headSetIterator = headSet.iterator();
12067cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                for (value = 101; headSetIterator.hasNext(); value++) {
12068cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    assertEquals(value, ((Entry) headSetIterator.next())
12069cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                            .getValue());
12070cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                }
12071cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                assertEquals(entry.getValue(), value - 1);
12072cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                try {
12073cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    headSetIterator.next();
12074cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    fail("should throw NoSuchElementException");
12075cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                } catch (NoSuchElementException e) {
12076cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    // Expected
12077cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                }
12078cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
12079cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
12080cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
12081cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        entrySet = navigableMap_startExcluded_endIncluded.entrySet();
12082cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        if (entrySet instanceof NavigableSet) {
12083cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            ascendingSubMapEntrySet = (NavigableSet) entrySet;
12084cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            iterator = ascendingSubMapEntrySet.iterator();
12085cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            while (iterator.hasNext()) {
12086cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                entry = (Entry) iterator.next();
12087cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                headSet = ascendingSubMapEntrySet.headSet(entry);
12088cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                headSetIterator = headSet.iterator();
12089cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                for (value = 101; headSetIterator.hasNext(); value++) {
12090cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    assertEquals(value, ((Entry) headSetIterator.next())
12091cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                            .getValue());
12092cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                }
12093cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                assertEquals(entry.getValue(), value);
12094cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                try {
12095cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    headSetIterator.next();
12096cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    fail("should throw NoSuchElementException");
12097cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                } catch (NoSuchElementException e) {
12098cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    // Expected
12099cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                }
12100cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
12101cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                headSet = ascendingSubMapEntrySet.headSet(entry, false);
12102cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                headSetIterator = headSet.iterator();
12103cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                for (value = 101; headSetIterator.hasNext(); value++) {
12104cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    assertEquals(value, ((Entry) headSetIterator.next())
12105cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                            .getValue());
12106cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                }
12107cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                assertEquals(entry.getValue(), value);
12108cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                try {
12109cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    headSetIterator.next();
12110cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    fail("should throw NoSuchElementException");
12111cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                } catch (NoSuchElementException e) {
12112cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    // Expected
12113cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                }
12114cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
12115cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                headSet = ascendingSubMapEntrySet.headSet(entry, true);
12116cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                headSetIterator = headSet.iterator();
12117cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                for (value = 101; headSetIterator.hasNext(); value++) {
12118cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    assertEquals(value, ((Entry) headSetIterator.next())
12119cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                            .getValue());
12120cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                }
12121cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                assertEquals(entry.getValue(), value - 1);
12122cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                try {
12123cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    headSetIterator.next();
12124cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    fail("should throw NoSuchElementException");
12125cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                } catch (NoSuchElementException e) {
12126cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    // Expected
12127cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                }
12128cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
12129cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
12130cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
12131cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        entrySet = navigableMap_startIncluded_endExcluded.entrySet();
12132cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        if (entrySet instanceof NavigableSet) {
12133cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            ascendingSubMapEntrySet = (NavigableSet) entrySet;
12134cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            iterator = ascendingSubMapEntrySet.iterator();
12135cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            while (iterator.hasNext()) {
12136cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                entry = (Entry) iterator.next();
12137cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                headSet = ascendingSubMapEntrySet.headSet(entry);
12138cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                headSetIterator = headSet.iterator();
12139cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                for (value = 100; headSetIterator.hasNext(); value++) {
12140cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    assertEquals(value, ((Entry) headSetIterator.next())
12141cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                            .getValue());
12142cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                }
12143cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                assertEquals(entry.getValue(), value);
12144cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                try {
12145cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    headSetIterator.next();
12146cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    fail("should throw NoSuchElementException");
12147cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                } catch (NoSuchElementException e) {
12148cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    // Expected
12149cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                }
12150cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
12151cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                headSet = ascendingSubMapEntrySet.headSet(entry, false);
12152cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                headSetIterator = headSet.iterator();
12153cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                for (value = 100; headSetIterator.hasNext(); value++) {
12154cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    assertEquals(value, ((Entry) headSetIterator.next())
12155cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                            .getValue());
12156cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                }
12157cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                assertEquals(entry.getValue(), value);
12158cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                try {
12159cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    headSetIterator.next();
12160cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    fail("should throw NoSuchElementException");
12161cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                } catch (NoSuchElementException e) {
12162cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    // Expected
12163cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                }
12164cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
12165cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                headSet = ascendingSubMapEntrySet.headSet(entry, true);
12166cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                headSetIterator = headSet.iterator();
12167cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                for (value = 100; headSetIterator.hasNext(); value++) {
12168cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    assertEquals(value, ((Entry) headSetIterator.next())
12169cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                            .getValue());
12170cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                }
12171cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                assertEquals(entry.getValue(), value - 1);
12172cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                try {
12173cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    headSetIterator.next();
12174cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    fail("should throw NoSuchElementException");
12175cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                } catch (NoSuchElementException e) {
12176cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    // Expected
12177cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                }
12178cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
12179cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
12180cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
12181cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        entrySet = navigableMap_startIncluded_endIncluded.entrySet();
12182cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        if (entrySet instanceof NavigableSet) {
12183cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            ascendingSubMapEntrySet = (NavigableSet) entrySet;
12184cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            iterator = ascendingSubMapEntrySet.iterator();
12185cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            while (iterator.hasNext()) {
12186cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                entry = (Entry) iterator.next();
12187cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                headSet = ascendingSubMapEntrySet.headSet(entry);
12188cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                headSetIterator = headSet.iterator();
12189cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                for (value = 100; headSetIterator.hasNext(); value++) {
12190cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    assertEquals(value, ((Entry) headSetIterator.next())
12191cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                            .getValue());
12192cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                }
12193cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                assertEquals(entry.getValue(), value);
12194cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                try {
12195cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    headSetIterator.next();
12196cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    fail("should throw NoSuchElementException");
12197cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                } catch (NoSuchElementException e) {
12198cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    // Expected
12199cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                }
12200cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
12201cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                headSet = ascendingSubMapEntrySet.headSet(entry, false);
12202cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                headSetIterator = headSet.iterator();
12203cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                for (value = 100; headSetIterator.hasNext(); value++) {
12204cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    assertEquals(value, ((Entry) headSetIterator.next())
12205cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                            .getValue());
12206cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                }
12207cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                assertEquals(entry.getValue(), value);
12208cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                try {
12209cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    headSetIterator.next();
12210cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    fail("should throw NoSuchElementException");
12211cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                } catch (NoSuchElementException e) {
12212cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    // Expected
12213cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                }
12214cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
12215cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                headSet = ascendingSubMapEntrySet.headSet(entry, true);
12216cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                headSetIterator = headSet.iterator();
12217cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                for (value = 100; headSetIterator.hasNext(); value++) {
12218cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    assertEquals(value, ((Entry) headSetIterator.next())
12219cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                            .getValue());
12220cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                }
12221cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                assertEquals(entry.getValue(), value - 1);
12222cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                try {
12223cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    headSetIterator.next();
12224cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    fail("should throw NoSuchElementException");
12225cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                } catch (NoSuchElementException e) {
12226cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    // Expected
12227cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                }
12228cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
12229cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
12230cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
12231cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // NavigableMap ascendingSubMap = tm.headMap("1", true);
12232cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // entrySet = ascendingSubMap.entrySet();
12233cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // if (entrySet instanceof SortedSet) {
12234cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // Iterator it = entrySet.iterator();
12235cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // it.next();
12236cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // Object end = it.next();// 1=1
12237cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // Set headSet = ((NavigableSet) entrySet).headSet(end);// inclusive
12238cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // // false
12239cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // assertEquals(1, headSet.size());
12240cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // }
12241cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
12242cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
12243cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_AscendingSubMapEntrySet_tailSet() {
12244cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Set entrySet, tailSet;
12245cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        NavigableSet ascendingSubMapEntrySet;
12246cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Iterator iterator, tailSetIterator;
12247cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Entry entry;
12248cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        int value;
12249cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
12250cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        entrySet = navigableMap_startExcluded_endExcluded.entrySet();
12251cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        if (entrySet instanceof NavigableSet) {
12252cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            ascendingSubMapEntrySet = (NavigableSet) entrySet;
12253cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            iterator = entrySet.iterator();
12254cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            while (iterator.hasNext()) {
12255cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                entry = (Entry) iterator.next();
12256cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                tailSet = ascendingSubMapEntrySet.tailSet(entry);
12257cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                tailSetIterator = tailSet.iterator();
12258cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                for (value = (Integer) entry.getValue() + 1; tailSetIterator
12259cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        .hasNext(); value++) {
12260cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    assertEquals(value, ((Entry) tailSetIterator.next())
12261cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                            .getValue());
12262cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                }
12263cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                assertEquals(109, value);
12264cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                try {
12265cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    tailSetIterator.next();
12266cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    fail("should throw NoSuchElementException");
12267cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                } catch (NoSuchElementException e) {
12268cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    // Expected
12269cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                }
12270cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
12271cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                tailSet = ascendingSubMapEntrySet.tailSet(entry, false);
12272cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                tailSetIterator = tailSet.iterator();
12273cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                for (value = (Integer) entry.getValue() + 1; tailSetIterator
12274cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        .hasNext(); value++) {
12275cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    assertEquals(value, ((Entry) tailSetIterator.next())
12276cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                            .getValue());
12277cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                }
12278cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                assertEquals(109, value);
12279cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                try {
12280cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    tailSetIterator.next();
12281cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    fail("should throw NoSuchElementException");
12282cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                } catch (NoSuchElementException e) {
12283cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    // Expected
12284cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                }
12285cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
12286cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                tailSet = ascendingSubMapEntrySet.tailSet(entry, true);
12287cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                tailSetIterator = tailSet.iterator();
12288cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                for (value = (Integer) entry.getValue(); tailSetIterator
12289cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        .hasNext(); value++) {
12290cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    assertEquals(value, ((Entry) tailSetIterator.next())
12291cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                            .getValue());
12292cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                }
12293cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                assertEquals(109, value);
12294cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                try {
12295cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    tailSetIterator.next();
12296cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    fail("should throw NoSuchElementException");
12297cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                } catch (NoSuchElementException e) {
12298cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    // Expected
12299cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                }
12300cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
12301cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
12302cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
12303cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        entrySet = navigableMap_startExcluded_endIncluded.entrySet();
12304cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        if (entrySet instanceof NavigableSet) {
12305cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            ascendingSubMapEntrySet = (NavigableSet) entrySet;
12306cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            iterator = entrySet.iterator();
12307cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            while (iterator.hasNext()) {
12308cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                entry = (Entry) iterator.next();
12309cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                tailSet = ascendingSubMapEntrySet.tailSet(entry);
12310cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                tailSetIterator = tailSet.iterator();
12311cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                for (value = (Integer) entry.getValue() + 1; tailSetIterator
12312cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        .hasNext(); value++) {
12313cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    assertEquals(value, ((Entry) tailSetIterator.next())
12314cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                            .getValue());
12315cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                }
12316cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                assertEquals(110, value);
12317cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                try {
12318cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    tailSetIterator.next();
12319cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    fail("should throw NoSuchElementException");
12320cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                } catch (NoSuchElementException e) {
12321cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    // Expected
12322cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                }
12323cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
12324cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                tailSet = ascendingSubMapEntrySet.tailSet(entry, false);
12325cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                tailSetIterator = tailSet.iterator();
12326cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                for (value = (Integer) entry.getValue() + 1; tailSetIterator
12327cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        .hasNext(); value++) {
12328cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    assertEquals(value, ((Entry) tailSetIterator.next())
12329cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                            .getValue());
12330cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                }
12331cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                assertEquals(110, value);
12332cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                try {
12333cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    tailSetIterator.next();
12334cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    fail("should throw NoSuchElementException");
12335cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                } catch (NoSuchElementException e) {
12336cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    // Expected
12337cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                }
12338cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
12339cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                tailSet = ascendingSubMapEntrySet.tailSet(entry, true);
12340cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                tailSetIterator = tailSet.iterator();
12341cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                for (value = (Integer) entry.getValue(); tailSetIterator
12342cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        .hasNext(); value++) {
12343cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    assertEquals(value, ((Entry) tailSetIterator.next())
12344cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                            .getValue());
12345cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                }
12346cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                assertEquals(110, value);
12347cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                try {
12348cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    tailSetIterator.next();
12349cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    fail("should throw NoSuchElementException");
12350cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                } catch (NoSuchElementException e) {
12351cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    // Expected
12352cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                }
12353cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
12354cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
12355cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
12356cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        entrySet = navigableMap_startIncluded_endExcluded.entrySet();
12357cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        if (entrySet instanceof NavigableSet) {
12358cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            ascendingSubMapEntrySet = (NavigableSet) entrySet;
12359cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            iterator = entrySet.iterator();
12360cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            while (iterator.hasNext()) {
12361cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                entry = (Entry) iterator.next();
12362cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                tailSet = ascendingSubMapEntrySet.tailSet(entry);
12363cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                tailSetIterator = tailSet.iterator();
12364cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                for (value = (Integer) entry.getValue() + 1; tailSetIterator
12365cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        .hasNext(); value++) {
12366cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    assertEquals(value, ((Entry) tailSetIterator.next())
12367cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                            .getValue());
12368cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                }
12369cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                assertEquals(109, value);
12370cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                try {
12371cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    tailSetIterator.next();
12372cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    fail("should throw NoSuchElementException");
12373cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                } catch (NoSuchElementException e) {
12374cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    // Expected
12375cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                }
12376cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
12377cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                tailSet = ascendingSubMapEntrySet.tailSet(entry, false);
12378cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                tailSetIterator = tailSet.iterator();
12379cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                for (value = (Integer) entry.getValue() + 1; tailSetIterator
12380cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        .hasNext(); value++) {
12381cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    assertEquals(value, ((Entry) tailSetIterator.next())
12382cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                            .getValue());
12383cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                }
12384cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                assertEquals(109, value);
12385cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                try {
12386cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    tailSetIterator.next();
12387cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    fail("should throw NoSuchElementException");
12388cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                } catch (NoSuchElementException e) {
12389cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    // Expected
12390cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                }
12391cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
12392cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                tailSet = ascendingSubMapEntrySet.tailSet(entry, true);
12393cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                tailSetIterator = tailSet.iterator();
12394cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                for (value = (Integer) entry.getValue(); tailSetIterator
12395cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        .hasNext(); value++) {
12396cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    assertEquals(value, ((Entry) tailSetIterator.next())
12397cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                            .getValue());
12398cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                }
12399cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                assertEquals(109, value);
12400cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                try {
12401cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    tailSetIterator.next();
12402cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    fail("should throw NoSuchElementException");
12403cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                } catch (NoSuchElementException e) {
12404cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    // Expected
12405cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                }
12406cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
12407cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
12408cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
12409cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        entrySet = navigableMap_startIncluded_endIncluded.entrySet();
12410cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        if (entrySet instanceof NavigableSet) {
12411cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            ascendingSubMapEntrySet = (NavigableSet) entrySet;
12412cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            iterator = entrySet.iterator();
12413cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            while (iterator.hasNext()) {
12414cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                entry = (Entry) iterator.next();
12415cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                tailSet = ascendingSubMapEntrySet.tailSet(entry);
12416cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                tailSetIterator = tailSet.iterator();
12417cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                for (value = (Integer) entry.getValue() + 1; tailSetIterator
12418cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        .hasNext(); value++) {
12419cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    assertEquals(value, ((Entry) tailSetIterator.next())
12420cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                            .getValue());
12421cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                }
12422cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                assertEquals(110, value);
12423cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                try {
12424cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    tailSetIterator.next();
12425cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    fail("should throw NoSuchElementException");
12426cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                } catch (NoSuchElementException e) {
12427cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    // Expected
12428cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                }
12429cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
12430cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                tailSet = ascendingSubMapEntrySet.tailSet(entry, false);
12431cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                tailSetIterator = tailSet.iterator();
12432cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                for (value = (Integer) entry.getValue() + 1; tailSetIterator
12433cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        .hasNext(); value++) {
12434cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    assertEquals(value, ((Entry) tailSetIterator.next())
12435cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                            .getValue());
12436cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                }
12437cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                assertEquals(110, value);
12438cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                try {
12439cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    tailSetIterator.next();
12440cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    fail("should throw NoSuchElementException");
12441cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                } catch (NoSuchElementException e) {
12442cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    // Expected
12443cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                }
12444cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
12445cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                tailSet = ascendingSubMapEntrySet.tailSet(entry, true);
12446cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                tailSetIterator = tailSet.iterator();
12447cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                for (value = (Integer) entry.getValue(); tailSetIterator
12448cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        .hasNext(); value++) {
12449cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    assertEquals(value, ((Entry) tailSetIterator.next())
12450cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                            .getValue());
12451cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                }
12452cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                assertEquals(110, value);
12453cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                try {
12454cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    tailSetIterator.next();
12455cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    fail("should throw NoSuchElementException");
12456cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                } catch (NoSuchElementException e) {
12457cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    // Expected
12458cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                }
12459cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
12460cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
12461cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
12462cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // NavigableMap ascendingSubMap = tm.headMap("1", true);
12463cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // Set entrySet = ascendingSubMap.entrySet();
12464cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // if (entrySet instanceof NavigableSet) {
12465cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // Iterator it = entrySet.iterator();
12466cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // Object start = it.next();// 0=0
12467cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // Set tailSet = ((NavigableSet) entrySet).tailSet(start);// default
12468cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // // inclusive
12469cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // // false
12470cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // assertEquals(1, tailSet.size());
12471cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // }
12472cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
12473cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
12474cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_AscendingSubMapEntrySet_subSet() {
12475cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Set entrySet, subSet;
12476cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        NavigableSet ascendingSubMapEntrySet;
12477cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
12478cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        entrySet = navigableMap_startExcluded_endExcluded.entrySet();
12479cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        if (entrySet instanceof NavigableSet) {
12480cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            ascendingSubMapEntrySet = (NavigableSet) entrySet;
12481cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            Iterator iteratorStart = ascendingSubMapEntrySet.iterator();
12482cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            while (iteratorStart.hasNext()) {
12483cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                Entry startEntry = (Entry) iteratorStart.next();
12484cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                Iterator iteratorEnd = ascendingSubMapEntrySet.iterator();
12485cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                while (iteratorEnd.hasNext()) {
12486cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    Entry endEntry = (Entry) iteratorEnd.next();
12487cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    int startIndex = (Integer) startEntry.getValue();
12488cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    int endIndex = (Integer) endEntry.getValue();
12489cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    if (startIndex > endIndex) {
12490cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        try {
12491cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                            ascendingSubMapEntrySet
12492cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                                    .subSet(startEntry, endEntry);
12493cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                            fail("should throw IllegalArgumentException");
12494cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        } catch (IllegalArgumentException e) {
12495cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                            // Expected
12496cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        }
12497cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
12498cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        try {
12499cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                            ascendingSubMapEntrySet.subSet(startEntry, false,
12500cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                                    endEntry, false);
12501cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                            fail("should throw IllegalArgumentException");
12502cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        } catch (IllegalArgumentException e) {
12503cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                            // Expected
12504cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        }
12505cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
12506cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        try {
12507cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                            ascendingSubMapEntrySet.subSet(startEntry, false,
12508cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                                    endEntry, true);
12509cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                            fail("should throw IllegalArgumentException");
12510cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        } catch (IllegalArgumentException e) {
12511cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                            // Expected
12512cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        }
12513cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
12514cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        try {
12515cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                            ascendingSubMapEntrySet.subSet(startEntry, true,
12516cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                                    endEntry, false);
12517cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                            fail("should throw IllegalArgumentException");
12518cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        } catch (IllegalArgumentException e) {
12519cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                            // Expected
12520cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        }
12521cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
12522cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        try {
12523cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                            ascendingSubMapEntrySet.subSet(startEntry, true,
12524cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                                    endEntry, true);
12525cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                            fail("should throw IllegalArgumentException");
12526cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        } catch (IllegalArgumentException e) {
12527cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                            // Expected
12528cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        }
12529cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    } else {
12530cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        subSet = ascendingSubMapEntrySet.subSet(startEntry,
12531cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                                endEntry);
12532cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        Iterator subSetIterator = subSet.iterator();
12533cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        for (int index = startIndex + 1; subSetIterator
12534cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                                .hasNext(); index++) {
12535cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                            assertEquals(index, ((Entry) subSetIterator.next())
12536cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                                    .getValue());
12537cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        }
12538cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
12539cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        subSet = ascendingSubMapEntrySet.subSet(startEntry,
12540cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                                false, endEntry, false);
12541cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        subSetIterator = subSet.iterator();
12542cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        for (int index = startIndex + 1; subSetIterator
12543cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                                .hasNext(); index++) {
12544cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                            assertEquals(index, ((Entry) subSetIterator.next())
12545cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                                    .getValue());
12546cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        }
12547cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
12548cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        subSet = ascendingSubMapEntrySet.subSet(startEntry,
12549cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                                false, endEntry, true);
12550cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        subSetIterator = subSet.iterator();
12551cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        for (int index = startIndex + 1; subSetIterator
12552cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                                .hasNext(); index++) {
12553cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                            assertEquals(index, ((Entry) subSetIterator.next())
12554cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                                    .getValue());
12555cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        }
12556cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
12557cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        subSet = ascendingSubMapEntrySet.subSet(startEntry,
12558cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                                true, endEntry, false);
12559cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        subSetIterator = subSet.iterator();
12560cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        for (int index = startIndex; subSetIterator.hasNext(); index++) {
12561cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                            assertEquals(index, ((Entry) subSetIterator.next())
12562cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                                    .getValue());
12563cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        }
12564cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
12565cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        subSet = ascendingSubMapEntrySet.subSet(startEntry,
12566cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                                true, endEntry, true);
12567cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        subSetIterator = subSet.iterator();
12568cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        for (int index = startIndex; subSetIterator.hasNext(); index++) {
12569cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                            assertEquals(index, ((Entry) subSetIterator.next())
12570cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                                    .getValue());
12571cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        }
12572cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    }
12573cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                }
12574cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
12575cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
12576cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
12577cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        String endKey = new Integer(2).toString();
12578cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        entrySet = tm.headMap(endKey, true).entrySet();
12579cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        if (entrySet instanceof NavigableSet) {
12580cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            ascendingSubMapEntrySet = (NavigableSet) entrySet;
12581cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            Iterator iterator = entrySet.iterator();
12582cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            Object startEntry = iterator.next();
12583cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            iterator.next();
12584cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            Object endEntry = iterator.next();
12585cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            subSet = ascendingSubMapEntrySet.subSet(startEntry, endEntry);
12586cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(1, subSet.size());
12587cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
12588cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            subSet = ascendingSubMapEntrySet.subSet(startEntry, false,
12589cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    endEntry, false);
12590cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(1, subSet.size());
12591cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
12592cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            subSet = ascendingSubMapEntrySet.subSet(startEntry, false,
12593cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    endEntry, true);
12594cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(2, subSet.size());
12595cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
12596cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            subSet = ascendingSubMapEntrySet.subSet(startEntry, true, endEntry,
12597cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    false);
12598cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(2, subSet.size());
12599cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
12600cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            subSet = ascendingSubMapEntrySet.subSet(startEntry, true, endEntry,
12601cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    true);
12602cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(3, subSet.size());
12603cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
12604cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
12605cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
12606cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_AscendingSubMapEntrySet_lower() {
12607cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Set entrySet;
12608cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        NavigableSet ascendingSubMapEntrySet;
12609cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Iterator iterator;
12610cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Entry entry, lowerEntry;
12611cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        int value;
12612cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
12613cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        entrySet = navigableMap_startExcluded_endExcluded.entrySet();
12614cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        if (entrySet instanceof NavigableSet) {
12615cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            ascendingSubMapEntrySet = (NavigableSet) entrySet;
12616cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            iterator = ascendingSubMapEntrySet.iterator();
12617cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            while (iterator.hasNext()) {
12618cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                entry = (Entry) iterator.next();
12619cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                lowerEntry = (Entry) ascendingSubMapEntrySet.lower(entry);
12620cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                value = (Integer) entry.getValue();
12621cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                if (value > 101) {
12622cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    assertEquals(value - 1, lowerEntry.getValue());
12623cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                } else {
12624cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    assertNull(lowerEntry);
12625cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                }
12626cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
12627cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
12628cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
12629cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        entrySet = navigableMap_startExcluded_endIncluded.entrySet();
12630cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        if (entrySet instanceof NavigableSet) {
12631cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            ascendingSubMapEntrySet = (NavigableSet) entrySet;
12632cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            iterator = ascendingSubMapEntrySet.iterator();
12633cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            while (iterator.hasNext()) {
12634cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                entry = (Entry) iterator.next();
12635cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                lowerEntry = (Entry) ascendingSubMapEntrySet.lower(entry);
12636cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                value = (Integer) entry.getValue();
12637cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                if (value > 101) {
12638cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    assertEquals(value - 1, lowerEntry.getValue());
12639cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                } else {
12640cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    assertNull(lowerEntry);
12641cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                }
12642cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
12643cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
12644cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
12645cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        entrySet = navigableMap_startIncluded_endExcluded.entrySet();
12646cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        if (entrySet instanceof NavigableSet) {
12647cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            ascendingSubMapEntrySet = (NavigableSet) entrySet;
12648cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            iterator = ascendingSubMapEntrySet.iterator();
12649cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            while (iterator.hasNext()) {
12650cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                entry = (Entry) iterator.next();
12651cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                lowerEntry = (Entry) ascendingSubMapEntrySet.lower(entry);
12652cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                value = (Integer) entry.getValue();
12653cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                if (value > 100) {
12654cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    assertEquals(value - 1, lowerEntry.getValue());
12655cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                } else {
12656cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    assertNull(lowerEntry);
12657cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                }
12658cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
12659cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
12660cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
12661cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        entrySet = navigableMap_startIncluded_endIncluded.entrySet();
12662cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        if (entrySet instanceof NavigableSet) {
12663cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            ascendingSubMapEntrySet = (NavigableSet) entrySet;
12664cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            iterator = ascendingSubMapEntrySet.iterator();
12665cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            while (iterator.hasNext()) {
12666cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                entry = (Entry) iterator.next();
12667cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                lowerEntry = (Entry) ascendingSubMapEntrySet.lower(entry);
12668cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                value = (Integer) entry.getValue();
12669cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                if (value > 100) {
12670cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    assertEquals(value - 1, lowerEntry.getValue());
12671cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                } else {
12672cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    assertNull(lowerEntry);
12673cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                }
12674cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
12675cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
12676cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
12677cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        String endKey = new Integer(2).toString();
12678cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        entrySet = tm.headMap(endKey, true).entrySet();
12679cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        if (entrySet instanceof NavigableSet) {
12680cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            ascendingSubMapEntrySet = (NavigableSet) entrySet;
12681cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            iterator = entrySet.iterator();
12682cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            Entry expectedEntry = (Entry) iterator.next();
12683cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            entry = (Entry) iterator.next();
12684cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(expectedEntry, ascendingSubMapEntrySet.lower(entry));
12685cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
12686cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
12687cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // With Comparator
12688cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
12689cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        entrySet = subMap_startExcluded_endExcluded_comparator.entrySet();
12690cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        if (entrySet instanceof NavigableSet) {
12691cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            ascendingSubMapEntrySet = (NavigableSet) entrySet;
12692cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            iterator = ascendingSubMapEntrySet.iterator();
12693cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            while (iterator.hasNext()) {
12694cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                entry = (Entry) iterator.next();
12695cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                lowerEntry = (Entry) ascendingSubMapEntrySet.lower(entry);
12696cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                value = (Integer) entry.getValue();
12697cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                if (value > 101) {
12698cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    assertEquals(value - 1, lowerEntry.getValue());
12699cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                } else {
12700cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    assertNull(lowerEntry);
12701cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                }
12702cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
12703cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
12704cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
12705cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        entrySet = subMap_startExcluded_endIncluded_comparator.entrySet();
12706cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        if (entrySet instanceof NavigableSet) {
12707cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            ascendingSubMapEntrySet = (NavigableSet) entrySet;
12708cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            iterator = ascendingSubMapEntrySet.iterator();
12709cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            while (iterator.hasNext()) {
12710cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                entry = (Entry) iterator.next();
12711cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                lowerEntry = (Entry) ascendingSubMapEntrySet.lower(entry);
12712cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                value = (Integer) entry.getValue();
12713cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                if (value > 101) {
12714cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    assertEquals(value - 1, lowerEntry.getValue());
12715cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                } else {
12716cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    assertNull(lowerEntry);
12717cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                }
12718cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
12719cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
12720cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
12721cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        entrySet = subMap_startIncluded_endExcluded_comparator.entrySet();
12722cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        if (entrySet instanceof NavigableSet) {
12723cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            ascendingSubMapEntrySet = (NavigableSet) entrySet;
12724cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            iterator = ascendingSubMapEntrySet.iterator();
12725cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            while (iterator.hasNext()) {
12726cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                entry = (Entry) iterator.next();
12727cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                lowerEntry = (Entry) ascendingSubMapEntrySet.lower(entry);
12728cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                value = (Integer) entry.getValue();
12729cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                if (value > 100) {
12730cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    assertEquals(value - 1, lowerEntry.getValue());
12731cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                } else {
12732cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    assertNull(lowerEntry);
12733cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                }
12734cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
12735cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
12736cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
12737cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        entrySet = subMap_startIncluded_endIncluded_comparator.entrySet();
12738cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        if (entrySet instanceof NavigableSet) {
12739cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            ascendingSubMapEntrySet = (NavigableSet) entrySet;
12740cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            iterator = ascendingSubMapEntrySet.iterator();
12741cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            while (iterator.hasNext()) {
12742cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                entry = (Entry) iterator.next();
12743cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                lowerEntry = (Entry) ascendingSubMapEntrySet.lower(entry);
12744cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                value = (Integer) entry.getValue();
12745cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                if (value > 100) {
12746cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    assertEquals(value - 1, lowerEntry.getValue());
12747cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                } else {
12748cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    assertNull(lowerEntry);
12749cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                }
12750cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
12751cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
12752cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
12753cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
12754cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_AscendingSubMapEntrySet_higher() {
12755cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Set entrySet;
12756cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        NavigableSet ascendingSubMapEntrySet;
12757cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Iterator iterator;
12758cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Entry entry, lowerEntry;
12759cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        int value;
12760cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
12761cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        entrySet = navigableMap_startExcluded_endExcluded.entrySet();
12762cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        if (entrySet instanceof NavigableSet) {
12763cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            ascendingSubMapEntrySet = (NavigableSet) entrySet;
12764cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            iterator = ascendingSubMapEntrySet.iterator();
12765cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            while (iterator.hasNext()) {
12766cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                entry = (Entry) iterator.next();
12767cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                lowerEntry = (Entry) ascendingSubMapEntrySet.higher(entry);
12768cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                value = (Integer) entry.getValue();
12769cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                if (value < 108) {
12770cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    assertEquals(value + 1, lowerEntry.getValue());
12771cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                } else {
12772cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    assertNull(lowerEntry);
12773cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                }
12774cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
12775cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
12776cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
12777cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        entrySet = navigableMap_startExcluded_endIncluded.entrySet();
12778cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        if (entrySet instanceof NavigableSet) {
12779cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            ascendingSubMapEntrySet = (NavigableSet) entrySet;
12780cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            iterator = ascendingSubMapEntrySet.iterator();
12781cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            while (iterator.hasNext()) {
12782cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                entry = (Entry) iterator.next();
12783cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                lowerEntry = (Entry) ascendingSubMapEntrySet.higher(entry);
12784cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                value = (Integer) entry.getValue();
12785cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                if (value < 109) {
12786cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    assertEquals(value + 1, lowerEntry.getValue());
12787cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                } else {
12788cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    assertNull(lowerEntry);
12789cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                }
12790cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
12791cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
12792cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
12793cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        entrySet = navigableMap_startIncluded_endExcluded.entrySet();
12794cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        if (entrySet instanceof NavigableSet) {
12795cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            ascendingSubMapEntrySet = (NavigableSet) entrySet;
12796cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            iterator = ascendingSubMapEntrySet.iterator();
12797cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            while (iterator.hasNext()) {
12798cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                entry = (Entry) iterator.next();
12799cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                lowerEntry = (Entry) ascendingSubMapEntrySet.higher(entry);
12800cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                value = (Integer) entry.getValue();
12801cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                if (value < 108) {
12802cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    assertEquals(value + 1, lowerEntry.getValue());
12803cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                } else {
12804cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    assertNull(lowerEntry);
12805cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                }
12806cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
12807cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
12808cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
12809cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        entrySet = navigableMap_startIncluded_endIncluded.entrySet();
12810cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        if (entrySet instanceof NavigableSet) {
12811cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            ascendingSubMapEntrySet = (NavigableSet) entrySet;
12812cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            iterator = ascendingSubMapEntrySet.iterator();
12813cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            while (iterator.hasNext()) {
12814cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                entry = (Entry) iterator.next();
12815cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                lowerEntry = (Entry) ascendingSubMapEntrySet.higher(entry);
12816cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                value = (Integer) entry.getValue();
12817cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                if (value < 109) {
12818cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    assertEquals(value + 1, lowerEntry.getValue());
12819cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                } else {
12820cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    assertNull(lowerEntry);
12821cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                }
12822cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
12823cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
12824cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
12825cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        String endKey = new Integer(2).toString();
12826cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        entrySet = tm.headMap(endKey, true).entrySet();
12827cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        if (entrySet instanceof NavigableSet) {
12828cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            ascendingSubMapEntrySet = (NavigableSet) entrySet;
12829cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            iterator = entrySet.iterator();
12830cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            entry = (Entry) iterator.next();
12831cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            Entry expectedEntry = (Entry) iterator.next();
12832cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(expectedEntry, ascendingSubMapEntrySet.higher(entry));
12833cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
12834cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
12835cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // With Comparator
12836cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        entrySet = subMap_startExcluded_endExcluded_comparator.entrySet();
12837cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        if (entrySet instanceof NavigableSet) {
12838cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            ascendingSubMapEntrySet = (NavigableSet) entrySet;
12839cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            iterator = ascendingSubMapEntrySet.iterator();
12840cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            while (iterator.hasNext()) {
12841cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                entry = (Entry) iterator.next();
12842cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                lowerEntry = (Entry) ascendingSubMapEntrySet.higher(entry);
12843cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                value = (Integer) entry.getValue();
12844cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                if (value < 108) {
12845cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    assertEquals(value + 1, lowerEntry.getValue());
12846cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                } else {
12847cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    assertNull(lowerEntry);
12848cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                }
12849cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
12850cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
12851cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
12852cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        entrySet = subMap_startExcluded_endIncluded_comparator.entrySet();
12853cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        if (entrySet instanceof NavigableSet) {
12854cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            ascendingSubMapEntrySet = (NavigableSet) entrySet;
12855cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            iterator = ascendingSubMapEntrySet.iterator();
12856cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            while (iterator.hasNext()) {
12857cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                entry = (Entry) iterator.next();
12858cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                lowerEntry = (Entry) ascendingSubMapEntrySet.higher(entry);
12859cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                value = (Integer) entry.getValue();
12860cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                if (value < 109) {
12861cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    assertEquals(value + 1, lowerEntry.getValue());
12862cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                } else {
12863cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    assertNull(lowerEntry);
12864cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                }
12865cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
12866cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
12867cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
12868cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        entrySet = subMap_startIncluded_endExcluded_comparator.entrySet();
12869cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        if (entrySet instanceof NavigableSet) {
12870cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            ascendingSubMapEntrySet = (NavigableSet) entrySet;
12871cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            iterator = ascendingSubMapEntrySet.iterator();
12872cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            while (iterator.hasNext()) {
12873cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                entry = (Entry) iterator.next();
12874cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                lowerEntry = (Entry) ascendingSubMapEntrySet.higher(entry);
12875cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                value = (Integer) entry.getValue();
12876cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                if (value < 108) {
12877cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    assertEquals(value + 1, lowerEntry.getValue());
12878cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                } else {
12879cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    assertNull(lowerEntry);
12880cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                }
12881cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
12882cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
12883cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
12884cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        entrySet = subMap_startIncluded_endIncluded_comparator.entrySet();
12885cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        if (entrySet instanceof NavigableSet) {
12886cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            ascendingSubMapEntrySet = (NavigableSet) entrySet;
12887cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            iterator = ascendingSubMapEntrySet.iterator();
12888cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            while (iterator.hasNext()) {
12889cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                entry = (Entry) iterator.next();
12890cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                lowerEntry = (Entry) ascendingSubMapEntrySet.higher(entry);
12891cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                value = (Integer) entry.getValue();
12892cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                if (value < 109) {
12893cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    assertEquals(value + 1, lowerEntry.getValue());
12894cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                } else {
12895cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    assertNull(lowerEntry);
12896cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                }
12897cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
12898cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
12899cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
12900cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
12901cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_AscendingSubMapEntrySet_ceiling() {
12902cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Set entrySet;
12903cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        NavigableSet ascendingSubMapEntrySet;
12904cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Iterator iterator;
12905cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
12906cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Set entrySet_beyondBound;
12907cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Iterator iterator_beyondBound;
12908cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Entry beyondBoundEntry;
12909cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
12910cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Entry entry, lowerEntry;
12911cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        int value = 0;
12912cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
12913cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        entrySet = navigableMap_startExcluded_endExcluded.entrySet();
12914cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        if (entrySet instanceof NavigableSet) {
12915cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            ascendingSubMapEntrySet = (NavigableSet) entrySet;
12916cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            try {
12917cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                ascendingSubMapEntrySet.ceiling(null);
12918cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                fail("should throw NullPointerException");
12919cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            } catch (NullPointerException e) {
12920cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                // Expected
12921cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
12922cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
12923cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            iterator = ascendingSubMapEntrySet.iterator();
12924cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            while (iterator.hasNext()) {
12925cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                entry = (Entry) iterator.next();
12926cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                lowerEntry = (Entry) ascendingSubMapEntrySet.ceiling(entry);
12927cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                value = (Integer) entry.getValue();
12928cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                assertEquals(value, lowerEntry.getValue());
12929cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
12930cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(108, value);
12931cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
12932cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
12933cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
12934cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        entrySet = navigableMap_startExcluded_endIncluded.entrySet();
12935cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        if (entrySet instanceof NavigableSet) {
12936cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            ascendingSubMapEntrySet = (NavigableSet) entrySet;
12937cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            try {
12938cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                ascendingSubMapEntrySet.ceiling(null);
12939cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                fail("should throw NullPointerException");
12940cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            } catch (NullPointerException e) {
12941cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                // Expected
12942cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
12943cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
12944cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            iterator = ascendingSubMapEntrySet.iterator();
12945cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            while (iterator.hasNext()) {
12946cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                entry = (Entry) iterator.next();
12947cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                lowerEntry = (Entry) ascendingSubMapEntrySet.ceiling(entry);
12948cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                value = (Integer) entry.getValue();
12949cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                assertEquals(value, lowerEntry.getValue());
12950cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
12951cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(109, value);
12952cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
12953cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
12954cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        entrySet = navigableMap_startIncluded_endExcluded.entrySet();
12955cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        if (entrySet instanceof NavigableSet) {
12956cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            ascendingSubMapEntrySet = (NavigableSet) entrySet;
12957cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            try {
12958cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                ascendingSubMapEntrySet.ceiling(null);
12959cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                fail("should throw NullPointerException");
12960cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            } catch (NullPointerException e) {
12961cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                // Expected
12962cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
12963cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
12964cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            iterator = ascendingSubMapEntrySet.iterator();
12965cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            while (iterator.hasNext()) {
12966cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                entry = (Entry) iterator.next();
12967cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                lowerEntry = (Entry) ascendingSubMapEntrySet.ceiling(entry);
12968cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                value = (Integer) entry.getValue();
12969cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                assertEquals(value, lowerEntry.getValue());
12970cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
12971cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(108, value);
12972cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
12973cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
12974cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        entrySet = navigableMap_startIncluded_endIncluded.entrySet();
12975cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        if (entrySet instanceof NavigableSet) {
12976cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            ascendingSubMapEntrySet = (NavigableSet) entrySet;
12977cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            try {
12978cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                ascendingSubMapEntrySet.ceiling(null);
12979cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                fail("should throw NullPointerException");
12980cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            } catch (NullPointerException e) {
12981cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                // Expected
12982cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
12983cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
12984cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            iterator = ascendingSubMapEntrySet.iterator();
12985cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            while (iterator.hasNext()) {
12986cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                entry = (Entry) iterator.next();
12987cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                lowerEntry = (Entry) ascendingSubMapEntrySet.ceiling(entry);
12988cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                value = (Integer) entry.getValue();
12989cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                assertEquals(value, lowerEntry.getValue());
12990cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
12991cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(109, value);
12992cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
12993cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
12994cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // With Comparator
12995cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        entrySet = subMap_startIncluded_endIncluded_comparator.entrySet();
12996cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        if (entrySet instanceof NavigableSet) {
12997cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            ascendingSubMapEntrySet = (NavigableSet) entrySet;
12998cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            try {
12999cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                ascendingSubMapEntrySet.ceiling(null);
13000cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                fail("should throw NullPointerException");
13001cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            } catch (NullPointerException e) {
13002cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                // Expected
13003cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
13004cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
13005cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            iterator = ascendingSubMapEntrySet.iterator();
13006cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            while (iterator.hasNext()) {
13007cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                entry = (Entry) iterator.next();
13008cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                lowerEntry = (Entry) ascendingSubMapEntrySet.ceiling(entry);
13009cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                value = (Integer) entry.getValue();
13010cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                assertEquals(value, lowerEntry.getValue());
13011cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
13012cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(109, value);
13013cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
13014cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
13015cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        entrySet = subMap_startIncluded_endExcluded_comparator.entrySet();
13016cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        if (entrySet instanceof NavigableSet) {
13017cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            ascendingSubMapEntrySet = (NavigableSet) entrySet;
13018cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            try {
13019cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                ascendingSubMapEntrySet.ceiling(null);
13020cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                fail("should throw NullPointerException");
13021cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            } catch (NullPointerException e) {
13022cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                // Expected
13023cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
13024cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
13025cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            iterator = ascendingSubMapEntrySet.iterator();
13026cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            while (iterator.hasNext()) {
13027cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                entry = (Entry) iterator.next();
13028cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                lowerEntry = (Entry) ascendingSubMapEntrySet.ceiling(entry);
13029cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                value = (Integer) entry.getValue();
13030cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                assertEquals(value, lowerEntry.getValue());
13031cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
13032cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(108, value);
13033cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
13034cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
13035cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        entrySet = subMap_startExcluded_endIncluded_comparator.entrySet();
13036cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        if (entrySet instanceof NavigableSet) {
13037cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            ascendingSubMapEntrySet = (NavigableSet) entrySet;
13038cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            try {
13039cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                ascendingSubMapEntrySet.ceiling(null);
13040cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                fail("should throw NullPointerException");
13041cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            } catch (NullPointerException e) {
13042cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                // Expected
13043cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
13044cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
13045cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            iterator = ascendingSubMapEntrySet.iterator();
13046cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            while (iterator.hasNext()) {
13047cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                entry = (Entry) iterator.next();
13048cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                lowerEntry = (Entry) ascendingSubMapEntrySet.ceiling(entry);
13049cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                value = (Integer) entry.getValue();
13050cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                assertEquals(value, lowerEntry.getValue());
13051cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
13052cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(109, value);
13053cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
13054cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
13055cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        entrySet = subMap_startExcluded_endExcluded_comparator.entrySet();
13056cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        if (entrySet instanceof NavigableSet) {
13057cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            ascendingSubMapEntrySet = (NavigableSet) entrySet;
13058cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            try {
13059cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                ascendingSubMapEntrySet.ceiling(null);
13060cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                fail("should throw NullPointerException");
13061cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            } catch (NullPointerException e) {
13062cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                // Expected
13063cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
13064cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
13065cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            iterator = ascendingSubMapEntrySet.iterator();
13066cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            while (iterator.hasNext()) {
13067cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                entry = (Entry) iterator.next();
13068cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                lowerEntry = (Entry) ascendingSubMapEntrySet.ceiling(entry);
13069cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                value = (Integer) entry.getValue();
13070cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                assertEquals(value, lowerEntry.getValue());
13071cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
13072cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(108, value);
13073cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
13074cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
13075cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
13076cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_AscendingSubMapEntrySet_floor() {
13077cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Set entrySet;
13078cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        NavigableSet ascendingSubMapEntrySet;
13079cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Iterator iterator;
13080cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Entry entry, floorEntry;
13081cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        int value;
13082cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
13083cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        entrySet = navigableMap_startExcluded_endExcluded.entrySet();
13084cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        if (entrySet instanceof NavigableSet) {
13085cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            ascendingSubMapEntrySet = (NavigableSet) entrySet;
13086cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            try {
13087cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                ascendingSubMapEntrySet.floor(null);
13088cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                fail("should throw NullPointerException");
13089cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            } catch (NullPointerException e) {
13090cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                // Expected
13091cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
13092cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
13093cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            iterator = ascendingSubMapEntrySet.iterator();
13094cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            for (int i = 101; i < 109; i++) {
13095cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                entry = (Entry) iterator.next();
13096cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                floorEntry = (Entry) ascendingSubMapEntrySet.floor(entry);
13097cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                assertEquals(entry.getValue(), floorEntry.getValue());
13098cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
13099cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertFalse(iterator.hasNext());
13100cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
13101cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
13102cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        entrySet = navigableMap_startExcluded_endIncluded.entrySet();
13103cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        if (entrySet instanceof NavigableSet) {
13104cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            ascendingSubMapEntrySet = (NavigableSet) entrySet;
13105cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            try {
13106cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                ascendingSubMapEntrySet.floor(null);
13107cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                fail("should throw NullPointerException");
13108cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            } catch (NullPointerException e) {
13109cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                // Expected
13110cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
13111cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
13112cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            iterator = ascendingSubMapEntrySet.iterator();
13113cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            for (int i = 101; i < 110; i++) {
13114cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                entry = (Entry) iterator.next();
13115cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                floorEntry = (Entry) ascendingSubMapEntrySet.floor(entry);
13116cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                assertEquals(entry.getValue(), floorEntry.getValue());
13117cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
13118cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertFalse(iterator.hasNext());
13119cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
13120cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
13121cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        entrySet = navigableMap_startIncluded_endExcluded.entrySet();
13122cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        if (entrySet instanceof NavigableSet) {
13123cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            ascendingSubMapEntrySet = (NavigableSet) entrySet;
13124cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            try {
13125cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                ascendingSubMapEntrySet.floor(null);
13126cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                fail("should throw NullPointerException");
13127cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            } catch (NullPointerException e) {
13128cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                // Expected
13129cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
13130cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
13131cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            iterator = ascendingSubMapEntrySet.iterator();
13132cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            for (int i = 100; i < 109; i++) {
13133cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                entry = (Entry) iterator.next();
13134cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                floorEntry = (Entry) ascendingSubMapEntrySet.floor(entry);
13135cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                assertEquals(entry.getValue(), floorEntry.getValue());
13136cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
13137cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertFalse(iterator.hasNext());
13138cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
13139cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
13140cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        entrySet = navigableMap_startIncluded_endIncluded.entrySet();
13141cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        if (entrySet instanceof NavigableSet) {
13142cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            ascendingSubMapEntrySet = (NavigableSet) entrySet;
13143cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            try {
13144cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                ascendingSubMapEntrySet.floor(null);
13145cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                fail("should throw NullPointerException");
13146cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            } catch (NullPointerException e) {
13147cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                // Expected
13148cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
13149cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
13150cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            iterator = ascendingSubMapEntrySet.iterator();
13151cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            for (int i = 100; i < 110; i++) {
13152cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                entry = (Entry) iterator.next();
13153cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                floorEntry = (Entry) ascendingSubMapEntrySet.floor(entry);
13154cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                assertEquals(entry.getValue(), floorEntry.getValue());
13155cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
13156cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertFalse(iterator.hasNext());
13157cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
13158cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
13159cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // With Comparator
13160cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        entrySet = subMap_startExcluded_endExcluded_comparator.entrySet();
13161cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        if (entrySet instanceof NavigableSet) {
13162cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            ascendingSubMapEntrySet = (NavigableSet) entrySet;
13163cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            try {
13164cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                ascendingSubMapEntrySet.floor(null);
13165cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                fail("should throw NullPointerException");
13166cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            } catch (NullPointerException e) {
13167cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                // Expected
13168cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
13169cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
13170cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            iterator = ascendingSubMapEntrySet.iterator();
13171cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            for (int i = 101; i < 109; i++) {
13172cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                entry = (Entry) iterator.next();
13173cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                floorEntry = (Entry) ascendingSubMapEntrySet.floor(entry);
13174cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                assertEquals(entry.getValue(), floorEntry.getValue());
13175cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
13176cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertFalse(iterator.hasNext());
13177cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
13178cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
13179cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        entrySet = subMap_startExcluded_endIncluded_comparator.entrySet();
13180cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        if (entrySet instanceof NavigableSet) {
13181cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            ascendingSubMapEntrySet = (NavigableSet) entrySet;
13182cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            try {
13183cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                ascendingSubMapEntrySet.floor(null);
13184cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                fail("should throw NullPointerException");
13185cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            } catch (NullPointerException e) {
13186cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                // Expected
13187cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
13188cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
13189cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            iterator = ascendingSubMapEntrySet.iterator();
13190cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            for (int i = 101; i < 110; i++) {
13191cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                entry = (Entry) iterator.next();
13192cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                floorEntry = (Entry) ascendingSubMapEntrySet.floor(entry);
13193cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                assertEquals(entry.getValue(), floorEntry.getValue());
13194cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
13195cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertFalse(iterator.hasNext());
13196cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
13197cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
13198cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        entrySet = subMap_startIncluded_endExcluded_comparator.entrySet();
13199cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        if (entrySet instanceof NavigableSet) {
13200cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            ascendingSubMapEntrySet = (NavigableSet) entrySet;
13201cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            try {
13202cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                ascendingSubMapEntrySet.floor(null);
13203cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                fail("should throw NullPointerException");
13204cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            } catch (NullPointerException e) {
13205cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                // Expected
13206cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
13207cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
13208cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            iterator = ascendingSubMapEntrySet.iterator();
13209cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            for (int i = 100; i < 109; i++) {
13210cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                entry = (Entry) iterator.next();
13211cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                floorEntry = (Entry) ascendingSubMapEntrySet.floor(entry);
13212cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                assertEquals(entry.getValue(), floorEntry.getValue());
13213cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
13214cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertFalse(iterator.hasNext());
13215cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
13216cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
13217cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        entrySet = subMap_startIncluded_endIncluded.entrySet();
13218cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        if (entrySet instanceof NavigableSet) {
13219cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            ascendingSubMapEntrySet = (NavigableSet) entrySet;
13220cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            try {
13221cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                ascendingSubMapEntrySet.floor(null);
13222cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                fail("should throw NullPointerException");
13223cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            } catch (NullPointerException e) {
13224cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                // Expected
13225cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
13226cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
13227cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            iterator = ascendingSubMapEntrySet.iterator();
13228cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            for (int i = 100; i < 110; i++) {
13229cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                entry = (Entry) iterator.next();
13230cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                floorEntry = (Entry) ascendingSubMapEntrySet.floor(entry);
13231cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                assertEquals(entry.getValue(), floorEntry.getValue());
13232cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
13233cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertFalse(iterator.hasNext());
13234cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
13235cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
13236cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
13237cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    @Override
13238cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    protected void setUp() {
13239cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        tm = new TreeMap();
13240cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        tm_comparator = new TreeMap(new MockComparator());
13241cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int i = 0; i < objArray.length; i++) {
13242cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            Object x = objArray[i] = new Integer(i);
13243cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            tm.put(x.toString(), x);
13244cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            tm_comparator.put(x.toString(), x);
13245cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
13246cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
13247cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        subMap_default = tm.subMap(objArray[100].toString(), objArray[109]
13248cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .toString());
13249cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        subMap_startExcluded_endExcluded = tm.subMap(objArray[100].toString(),
13250cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                false, objArray[109].toString(), false);
13251cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        subMap_startExcluded_endIncluded = tm.subMap(objArray[100].toString(),
13252cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                false, objArray[109].toString(), true);
13253cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        subMap_startIncluded_endExcluded = tm.subMap(objArray[100].toString(),
13254cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                true, objArray[109].toString(), false);
13255cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        subMap_startIncluded_endIncluded = tm.subMap(objArray[100].toString(),
13256cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                true, objArray[109].toString(), true);
13257cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
13258cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        subMap_default_beforeStart_100 = tm.subMap(objArray[0].toString(),
13259cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                objArray[1].toString());
13260cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
13261cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        subMap_default_afterEnd_109 = tm.subMap(objArray[110].toString(),
13262cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                objArray[119].toString());
13263cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
13264cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(subMap_startExcluded_endExcluded instanceof NavigableMap);
13265cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(subMap_startExcluded_endIncluded instanceof NavigableMap);
13266cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(subMap_startIncluded_endExcluded instanceof NavigableMap);
13267cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(subMap_startIncluded_endIncluded instanceof NavigableMap);
13268cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
13269cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        navigableMap_startExcluded_endExcluded = (NavigableMap) subMap_startExcluded_endExcluded;
13270cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        navigableMap_startExcluded_endIncluded = (NavigableMap) subMap_startExcluded_endIncluded;
13271cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        navigableMap_startIncluded_endExcluded = (NavigableMap) subMap_startIncluded_endExcluded;
13272cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        navigableMap_startIncluded_endIncluded = (NavigableMap) subMap_startIncluded_endIncluded;
13273cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
13274cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        subMap_default_comparator = tm_comparator.subMap(objArray[100]
13275cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .toString(), objArray[109].toString());
13276cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        subMap_startExcluded_endExcluded_comparator = tm_comparator.subMap(
13277cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                objArray[100].toString(), false, objArray[109].toString(),
13278cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                false);
13279cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
13280cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        subMap_startExcluded_endIncluded_comparator = tm_comparator
13281cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .subMap(objArray[100].toString(), false, objArray[109]
13282cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        .toString(), true);
13283cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        subMap_startIncluded_endExcluded_comparator = tm_comparator
13284cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .subMap(objArray[100].toString(), true, objArray[109]
13285cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        .toString(), false);
13286cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        subMap_startIncluded_endIncluded_comparator = tm_comparator.subMap(
13287cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                objArray[100].toString(), true, objArray[109].toString(), true);
13288cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
13289cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
13290cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    @Override
13291cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    protected void tearDown() {
13292cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        tm = null;
13293cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        tm_comparator = null;
13294cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
13295cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        subMap_default = null;
13296cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        subMap_startExcluded_endExcluded = null;
13297cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        subMap_startExcluded_endIncluded = null;
13298cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        subMap_startIncluded_endExcluded = null;
13299cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        subMap_startIncluded_endIncluded = null;
13300cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
13301cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        subMap_default_beforeStart_100 = null;
13302cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        subMap_default_afterEnd_109 = null;
13303cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
13304cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        subMap_default_comparator = null;
13305cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        subMap_startExcluded_endExcluded_comparator = null;
13306cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        subMap_startExcluded_endIncluded_comparator = null;
13307cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        subMap_startIncluded_endExcluded_comparator = null;
13308cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        subMap_startIncluded_endIncluded_comparator = null;
13309cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
13310cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
13311cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_lower_null() throws Exception {
13312cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        NavigableMap map = tm.subMap(objArray[100].toString(), true,
13313cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                objArray[100].toString(), false);
13314cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNull(map.ceilingKey(objArray[100].toString()));
13315cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNull(map.floorKey(objArray[100].toString()));
13316cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNull(map.lowerKey(objArray[100].toString()));
13317cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNull(map.higherKey(objArray[100].toString()));
13318cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNull(map.ceilingKey(objArray[111].toString()));
13319cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNull(map.floorKey(objArray[111].toString()));
13320cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNull(map.lowerKey(objArray[111].toString()));
13321cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNull(map.higherKey(objArray[111].toString()));
13322cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNull(map.ceilingKey(objArray[1].toString()));
13323cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNull(map.floorKey(objArray[1].toString()));
13324cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNull(map.lowerKey(objArray[1].toString()));
13325cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNull(map.higherKey(objArray[1].toString()));
13326cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        map = map.descendingMap();
13327cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNull(map.ceilingKey(objArray[100].toString()));
13328cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNull(map.floorKey(objArray[100].toString()));
13329cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNull(map.lowerKey(objArray[100].toString()));
13330cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNull(map.higherKey(objArray[100].toString()));
13331cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNull(map.ceilingKey(objArray[111].toString()));
13332cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNull(map.floorKey(objArray[111].toString()));
13333cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNull(map.lowerKey(objArray[111].toString()));
13334cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNull(map.higherKey(objArray[111].toString()));
13335cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNull(map.ceilingKey(objArray[1].toString()));
13336cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNull(map.floorKey(objArray[1].toString()));
13337cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNull(map.lowerKey(objArray[1].toString()));
13338cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNull(map.higherKey(objArray[1].toString()));
13339cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
13340cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
13341cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_lower_tail() throws Exception {
13342cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        NavigableMap map = tm.subMap(objArray[102].toString(), true,
13343cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                objArray[103].toString(), false);
13344cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(map.containsKey(objArray[102].toString()));
13345cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(map.containsKey(objArray[101].toString()));
13346cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(map.containsKey(objArray[103].toString()));
13347cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(map.containsKey(objArray[104].toString()));
13348cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        map = map.descendingMap();
13349cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(map.containsKey(objArray[102].toString()));
13350cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(map.containsKey(objArray[101].toString()));
13351cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(map.containsKey(objArray[103].toString()));
13352cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(map.containsKey(objArray[104].toString()));
13353cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        map = tm.subMap(objArray[102].toString(), true, objArray[102]
13354cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .toString(), false);
13355cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(map.containsKey(objArray[102].toString()));
13356cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(map.containsKey(objArray[101].toString()));
13357cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(map.containsKey(objArray[103].toString()));
13358cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(map.containsKey(objArray[104].toString()));
13359cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        map = map.descendingMap();
13360cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(map.containsKey(objArray[102].toString()));
13361cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(map.containsKey(objArray[101].toString()));
13362cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(map.containsKey(objArray[103].toString()));
13363cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(map.containsKey(objArray[104].toString()));
13364cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
13365cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
13366cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_contains_null() throws Exception {
13367cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        NavigableMap map = tm.subMap(objArray[100].toString(), true,
13368cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                objArray[100].toString(), false);
13369cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(map.containsKey(objArray[100].toString()));
13370cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(map.containsKey(objArray[10].toString()));
13371cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(map.containsKey(objArray[101].toString()));
13372cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(map.containsKey(objArray[102].toString()));
13373cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(map.containsKey(objArray[1].toString()));
13374cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        map = map.descendingMap();
13375cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(map.containsKey(objArray[100].toString()));
13376cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(map.containsKey(objArray[10].toString()));
13377cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(map.containsKey(objArray[101].toString()));
13378cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(map.containsKey(objArray[102].toString()));
13379cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(map.containsKey(objArray[1].toString()));
13380cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
13381cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
13382cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_contains() throws Exception {
13383cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        NavigableMap map = tm.subMap(objArray[102].toString(), true,
13384cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                objArray[103].toString(), false);
13385cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(map.containsKey(objArray[100].toString()));
13386cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(map.containsKey(objArray[104].toString()));
13387cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(map.containsKey(objArray[101].toString()));
13388cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(map.containsKey(objArray[102].toString()));
13389cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        map = map.descendingMap();
13390cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(map.containsKey(objArray[100].toString()));
13391cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(map.containsKey(objArray[104].toString()));
13392cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(map.containsKey(objArray[101].toString()));
13393cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(map.containsKey(objArray[102].toString()));
13394cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
13395cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
13396cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_size() throws Exception {
13397cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        NavigableMap map = tm.subMap(objArray[102].toString(), true,
13398cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                objArray[103].toString(), false);
13399cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(0, map.headMap(objArray[102].toString(), false).size());
13400cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(1, map.headMap(objArray[102].toString(), true).size());
13401cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
13402cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(1, map.headMap(objArray[103].toString(), true).size());
13403cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IAE");
13404cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
13405cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
13406cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(1, map.headMap(objArray[103].toString(), false).size());
13407cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(1, map.tailMap(objArray[102].toString(), true).size());
13408cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(0, map.tailMap(objArray[102].toString(), false).size());
13409cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(map.headMap(objArray[103].toString(), false).containsKey(
13410cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                objArray[102].toString()));
13411cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
13412cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertTrue(map.headMap(objArray[103].toString(), true).containsKey(
13413cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    objArray[102].toString()));
13414cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IAE");
13415cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
13416cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
13417cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(map.headMap(objArray[102].toString(), false).containsKey(
13418cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                objArray[102].toString()));
13419cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(map.headMap(objArray[102].toString(), true).containsKey(
13420cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                objArray[102].toString()));
13421cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(map.tailMap(objArray[102].toString(), true).containsKey(
13422cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                objArray[102].toString()));
13423cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(map.tailMap(objArray[102].toString(), true).containsKey(
13424cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                objArray[103].toString()));
13425cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
13426cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(0, map.tailMap(objArray[101].toString()).size());
13427cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IAE");
13428cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
13429cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
13430cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        map = map.descendingMap();
13431cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
13432cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            map = map.subMap(objArray[103].toString(), true, objArray[102]
13433cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    .toString(), true);
13434cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IAE");
13435cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
13436cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
13437cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        map = map.subMap(objArray[102].toString(), true, objArray[102]
13438cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .toString(), true);
13439cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(1, map.headMap(objArray[102].toString(), true).size());
13440cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(0, map.headMap(objArray[102].toString(), false).size());
13441cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
13442cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(0, map.headMap(objArray[103].toString(), true).size());
13443cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IAE");
13444cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
13445cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
13446cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
13447cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(1, map.tailMap(objArray[102].toString(), true).size());
13448cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
13449cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertFalse(map.headMap(objArray[103].toString(), true)
13450cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    .containsKey(objArray[102].toString()));
13451cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IAE");
13452cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
13453cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
13454cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(map.headMap(objArray[102].toString(), true).containsKey(
13455cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                objArray[102].toString()));
13456cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(map.headMap(objArray[102].toString(), false).containsKey(
13457cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                objArray[102].toString()));
13458cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(map.tailMap(objArray[102].toString(), true).containsKey(
13459cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                objArray[102].toString()));
13460cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(map.tailMap(objArray[102].toString(), true).containsKey(
13461cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                objArray[103].toString()));
13462cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
13463cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(0, map.tailMap(objArray[101].toString()).size());
13464cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IAE");
13465cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
13466cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
13467cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
13468cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
13469cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_lower() throws Exception {
13470cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        NavigableMap map = tm.subMap(objArray[102].toString(), true,
13471cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                objArray[103].toString(), false);
13472cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(objArray[102].toString(), map.higherKey(objArray[101]
13473cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .toString()));
13474cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(null, map.higherKey(objArray[102].toString()));
13475cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(null, map.higherKey(objArray[103].toString()));
13476cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(null, map.higherKey(objArray[104].toString()));
13477cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(objArray[102].toString(), map.ceilingKey(objArray[101]
13478cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .toString()));
13479cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(objArray[102].toString(), map.ceilingKey(objArray[102]
13480cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .toString()));
13481cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(null, map.ceilingKey(objArray[103].toString()));
13482cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(null, map.ceilingKey(objArray[104].toString()));
13483cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(null, map.lowerKey(objArray[101].toString()));
13484cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(null, map.lowerKey(objArray[102].toString()));
13485cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(objArray[102].toString(), map.lowerKey(objArray[103]
13486cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .toString()));
13487cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(objArray[102].toString(), map.lowerKey(objArray[104]
13488cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .toString()));
13489cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(null, map.floorKey(objArray[101].toString()));
13490cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(objArray[102].toString(), map.floorKey(objArray[102]
13491cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .toString()));
13492cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(objArray[102].toString(), map.floorKey(objArray[103]
13493cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .toString()));
13494cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(objArray[102].toString(), map.floorKey(objArray[104]
13495cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .toString()));
13496cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        map = map.descendingMap();
13497cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(null, map.higherKey(objArray[101].toString()));
13498cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(null, map.higherKey(objArray[102].toString()));
13499cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(objArray[102].toString(), map.higherKey(objArray[103]
13500cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .toString()));
13501cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(objArray[102].toString(), map.higherKey(objArray[104]
13502cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .toString()));
13503cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(null, map.ceilingKey(objArray[101].toString()));
13504cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(objArray[102].toString(), map.ceilingKey(objArray[102]
13505cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .toString()));
13506cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(objArray[102].toString(), map.ceilingKey(objArray[103]
13507cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .toString()));
13508cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(objArray[102].toString(), map.ceilingKey(objArray[104]
13509cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .toString()));
13510cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(objArray[102].toString(), map.lowerKey(objArray[101]
13511cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .toString()));
13512cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(null, map.lowerKey(objArray[102].toString()));
13513cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(null, map.lowerKey(objArray[103].toString()));
13514cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(null, map.lowerKey(objArray[104].toString()));
13515cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(objArray[102].toString(), map.floorKey(objArray[101]
13516cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .toString()));
13517cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(objArray[102].toString(), map.floorKey(objArray[102]
13518cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .toString()));
13519cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(null, map.floorKey(objArray[103].toString()));
13520cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(null, map.floorKey(objArray[104].toString()));
13521cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
13522cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
13523cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_lowerkey() throws Exception {
13524cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
13525cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            tm.subMap(objArray[100].toString(), true, objArray[100].toString(),
13526cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    false).descendingMap().firstKey();
13527cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw NoSuchElementException");
13528cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (Exception e) {
13529cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // expected
13530cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
13531cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
13532cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            tm.subMap(objArray[100].toString(), true, objArray[100].toString(),
13533cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    false).descendingMap().lastKey();
13534cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw NoSuchElementException");
13535cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (Exception e) {
13536cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // expected
13537cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
13538cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
13539cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            tm.subMap(objArray[100].toString(), true, objArray[100].toString(),
13540cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    false).firstKey();
13541cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw NoSuchElementException");
13542cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (Exception e) {
13543cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // expected
13544cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
13545cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
13546cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            tm.subMap(objArray[100].toString(), true, objArray[100].toString(),
13547cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    false).lastKey();
13548cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw NoSuchElementException");
13549cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (Exception e) {
13550cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // expected
13551cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
13552cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
13553cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
13554cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
13555cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_headMap() throws Exception {
13556cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        TreeMap tree = new TreeMap();
13557cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        tree.put(new Integer(0), null);
13558cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        tree.put(new Integer(1), null);
13559cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Map submap = tree.subMap(tree.firstKey(), tree.lastKey());
13560cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        tree.remove(tree.lastKey());
13561cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(submap, tree);
13562cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
13563cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
13564cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void testname() throws Exception {
13565cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        TreeMap nullTree = new TreeMap(new Comparator() {
13566cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            public int compare(Object o1, Object o2) {
13567cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                if (o1 == null) {
13568cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    return o2 == null ? 0 : -1;
13569cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                }
13570cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                return ((String) o1).compareTo((String) o2);
13571cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
13572cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        });
13573cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        nullTree.put(new String("One"), 1);
13574cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        nullTree.put(new String("Two"), 2);
13575cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        nullTree.put(new String("Three"), 3);
13576cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        nullTree.put(new String("Four"), 4);
13577cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        nullTree.put(null, 0);
13578cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        nullTree.subMap(null, "two").size();
13579cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
13580cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
13581cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath}
13582