1adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project/*
2adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *  Licensed to the Apache Software Foundation (ASF) under one or more
3adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *  contributor license agreements.  See the NOTICE file distributed with
4adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *  this work for additional information regarding copyright ownership.
5adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *  The ASF licenses this file to You under the Apache License, Version 2.0
6adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *  (the "License"); you may not use this file except in compliance with
7adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *  the License.  You may obtain a copy of the License at
8adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *
9adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *     http://www.apache.org/licenses/LICENSE-2.0
10adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *
11adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *  Unless required by applicable law or agreed to in writing, software
12adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *  distributed under the License is distributed on an "AS IS" BASIS,
13adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *  See the License for the specific language governing permissions and
15adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *  limitations under the License.
16adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */
17adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
184557728efb66c455a52b7669a8eefef7a9e54854Jesse Wilsonpackage libcore.java.util;
19adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
20adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.io.Serializable;
21adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.text.CollationKey;
22adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.text.Collator;
234557728efb66c455a52b7669a8eefef7a9e54854Jesse Wilsonimport java.util.Collection;
244557728efb66c455a52b7669a8eefef7a9e54854Jesse Wilsonimport java.util.Comparator;
254557728efb66c455a52b7669a8eefef7a9e54854Jesse Wilsonimport java.util.HashMap;
264557728efb66c455a52b7669a8eefef7a9e54854Jesse Wilsonimport java.util.Map;
274557728efb66c455a52b7669a8eefef7a9e54854Jesse Wilsonimport java.util.NoSuchElementException;
284557728efb66c455a52b7669a8eefef7a9e54854Jesse Wilsonimport java.util.Set;
294557728efb66c455a52b7669a8eefef7a9e54854Jesse Wilsonimport java.util.SortedMap;
304557728efb66c455a52b7669a8eefef7a9e54854Jesse Wilsonimport java.util.TreeMap;
31adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport tests.support.Support_MapTest2;
32adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
3314816f17144d90174628ee82dc616d4b9c921149Jesse Wilsonpublic class OldTreeMapTest extends junit.framework.TestCase {
34adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
35adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public static class ReversedComparator implements Comparator {
36adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public int compare(Object o1, Object o2) {
37adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            return -(((Comparable) o1).compareTo(o2));
38adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
39adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
40adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public boolean equals(Object o1, Object o2) {
41adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            return (((Comparable) o1).compareTo(o2)) == 0;
42adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
43adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
44adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
45adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    // Regression for Harmony-1026
46adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public static class MockComparator<T extends Comparable<T>> implements
47adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            Comparator<T>, Serializable {
48adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
49adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public int compare(T o1, T o2) {
50adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            if (o1 == o2) {
51adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                return 0;
52adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            }
53adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            if (null == o1 || null == o2) {
54adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                return -1;
55adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            }
56adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            T c1 = o1;
57adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            T c2 = o2;
58adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            return c1.compareTo(c2);
59adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
60adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
61adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
62adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    // Regression for Harmony-1161
63adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    class MockComparatorNullTolerable implements Comparator<String> {
64adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
65adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public int compare(String o1, String o2) {
66adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            if (o1 == o2) {
67adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                return 0;
68adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            }
69adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            if (null == o1) {
70adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                return -1;
71adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            }
72f5597e626ecf7949d249dea08c1a2964d890ec11Jesse Wilson            if (null == o2) {
73f5597e626ecf7949d249dea08c1a2964d890ec11Jesse Wilson                return 1;
74f5597e626ecf7949d249dea08c1a2964d890ec11Jesse Wilson            }
75adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            return o1.compareTo(o2);
76adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
77adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
78adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
79adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    TreeMap tm;
80adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
81adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    Object objArray[] = new Object[1000];
82adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
83adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void test_Constructor() {
84adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // Test for method java.util.TreeMap()
85adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        new Support_MapTest2(new TreeMap()).runTest();
86adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
87adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertTrue("New treeMap non-empty", new TreeMap().isEmpty());
88adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
89adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
90adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void test_ConstructorLjava_util_Comparator() {
91adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // Test for method java.util.TreeMap(java.util.Comparator)
92adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Comparator comp = new ReversedComparator();
93adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        TreeMap reversedTreeMap = new TreeMap(comp);
94adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertTrue("TreeMap answered incorrect comparator", reversedTreeMap
95adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                .comparator() == comp);
96adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        reversedTreeMap.put(new Integer(1).toString(), new Integer(1));
97adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        reversedTreeMap.put(new Integer(2).toString(), new Integer(2));
98adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertTrue("TreeMap does not use comparator (firstKey was incorrect)",
99adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                reversedTreeMap.firstKey().equals(new Integer(2).toString()));
100adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertTrue("TreeMap does not use comparator (lastKey was incorrect)",
101adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                reversedTreeMap.lastKey().equals(new Integer(1).toString()));
102adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
103adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
104adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
105adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void test_ConstructorLjava_util_Map() {
106adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // Test for method java.util.TreeMap(java.util.Map)
107adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        TreeMap myTreeMap = new TreeMap(new HashMap(tm));
108adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertTrue("Map is incorrect size", myTreeMap.size() == objArray.length);
109adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        for (Object element : objArray) {
110adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            assertTrue("Map has incorrect mappings", myTreeMap.get(
111adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    element.toString()).equals(element));
112adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
113f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
114adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        HashMap hm = new HashMap();
115adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        hm.put(new Integer(1), "one");
116adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        hm.put("one", new Integer(1));
117f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
118adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
119adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            new TreeMap(hm);
120adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("ClassCastException expected");
121adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (ClassCastException e) {
122adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            //expected
123adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
124f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
125adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
126adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            new TreeMap((Map)null);
127adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("NullPointerException expected");
128adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (NullPointerException e) {
129adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            //expected
130adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
131adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
132adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
133adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void test_ConstructorLjava_util_SortedMap() {
134adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // Test for method java.util.TreeMap(java.util.SortedMap)
135adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Comparator comp = new ReversedComparator();
136adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        TreeMap reversedTreeMap = new TreeMap(comp);
137adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        reversedTreeMap.put(new Integer(1).toString(), new Integer(1));
138adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        reversedTreeMap.put(new Integer(2).toString(), new Integer(2));
139adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        TreeMap anotherTreeMap = new TreeMap(reversedTreeMap);
140adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertTrue("New tree map does not answer correct comparator",
141adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                anotherTreeMap.comparator() == comp);
142adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertTrue("TreeMap does not use comparator (firstKey was incorrect)",
143adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                anotherTreeMap.firstKey().equals(new Integer(2).toString()));
144adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertTrue("TreeMap does not use comparator (lastKey was incorrect)",
145adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                anotherTreeMap.lastKey().equals(new Integer(1).toString()));
146f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
147adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
148adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            new TreeMap((SortedMap)null);
149adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("NullPointerException expected");
150adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (NullPointerException e) {
151adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            //expected
152adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
153adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
154adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
155adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void test_containsKeyLjava_lang_Object() {
156adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // Test for method boolean
157adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // java.util.TreeMap.containsKey(java.lang.Object)
158adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertTrue("Returned false for valid key", tm.containsKey("95"));
159adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertTrue("Returned true for invalid key", !tm.containsKey("XXXXX"));
160f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
161adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
162adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            tm.containsKey(new Double(3.14));
163adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("ClassCastException expected");
164adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (ClassCastException e) {
165adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            //expected
166adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
167f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
168adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
169adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            tm.containsKey(null);
170adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("NullPointerException expected");
171adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (NullPointerException e) {
172adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            //expected
173adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
174adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
175adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
176adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void test_firstKey() {
177adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // Test for method java.lang.Object java.util.TreeMap.firstKey()
178adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals("Returned incorrect first key", "0", tm.firstKey());
179adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        tm = new TreeMap();
180adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
181adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            tm.firstKey();
182adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("NoSuchElementException expected");
183adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (NoSuchElementException e) {
184adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            //expected
185adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
186adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
187adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
188adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void test_getLjava_lang_Object() {
189adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // Test for method java.lang.Object
190adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // java.util.TreeMap.get(java.lang.Object)
191adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Object o = new Object();
192adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        tm.put("Hello", o);
193adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertTrue("Failed to get mapping", tm.get("Hello") == o);
194f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
195adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
196adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            tm.get(new Double(3.14));
197adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("ClassCastException expected");
198adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (ClassCastException e) {
199adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            //expected
200adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
201f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
202adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
203adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            tm.get(null);
204adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("NullPointerException expected");
205adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (NullPointerException e) {
206adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            //expected
207adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
208adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
209adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
210adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void test_headMapLjava_lang_Object() {
211adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // Test for method java.util.SortedMap
212adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // java.util.TreeMap.headMap(java.lang.Object)
213adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Map head = tm.headMap("100");
214adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals("Returned map of incorrect size", 3, head.size());
215adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertTrue("Returned incorrect elements", head.containsKey("0")
216adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                && head.containsValue(new Integer("1"))
217adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                && head.containsKey("10"));
218adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        SortedMap sort = tm.headMap("100");
219adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
220adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            sort.headMap("50");
221adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("IllegalArgumentException expected");
222adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (IllegalArgumentException e) {
223adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            //expected
224adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
225f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
226adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
227adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            tm.headMap(this);
228adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("ClassCastException expected");
229adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (ClassCastException e) {
230adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            //expected
231adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
232f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
233adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
234adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            tm.headMap(null);
235adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("NullPointerException expected");
236adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (NullPointerException e) {
237adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            //expected
238adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
239adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
240adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // Regression for Harmony-1026
241adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        TreeMap<Integer, Double> map = new TreeMap<Integer, Double>(
242adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                new MockComparator());
243adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        map.put(1, 2.1);
244adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        map.put(2, 3.1);
245adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        map.put(3, 4.5);
246adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        map.put(7, 21.3);
247adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        map.put(null, null);
248adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
249adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        SortedMap<Integer, Double> smap = map.headMap(null);
250adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals(0, smap.size());
251adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
252adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Set<Integer> keySet = smap.keySet();
253adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals(0, keySet.size());
254adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
255adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Set<Map.Entry<Integer, Double>> entrySet = smap.entrySet();
256adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals(0, entrySet.size());
257adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
258adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Collection<Double> valueCollection = smap.values();
259adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals(0, valueCollection.size());
260adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
261adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // Regression for Harmony-1066
262adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertTrue(head instanceof Serializable);
263adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
264adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // Regression for ill-behaved collator
265adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Collator c = new Collator() {
266adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            @Override
267adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            public int compare(String o1, String o2) {
268adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                if (o1 == null) {
269adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    return 0;
270adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                }
271adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                return o1.compareTo(o2);
272adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            }
273adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
274adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            @Override
275adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            public CollationKey getCollationKey(String string) {
276adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                return null;
277adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            }
278adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
279adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            @Override
280adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            public int hashCode() {
281adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                return 0;
282adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            }
283adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        };
284adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
285adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        TreeMap<String, String> treemap = new TreeMap<String, String>(c);
286adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals(0, treemap.headMap(null).size());
287adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
288adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
289adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void test_lastKey() {
290adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // Test for method java.lang.Object java.util.TreeMap.lastKey()
291adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertTrue("Returned incorrect last key", tm.lastKey().equals(
292adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                objArray[objArray.length - 1].toString()));
293adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        tm = new TreeMap();
294adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
295adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            tm.lastKey();
296adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("NoSuchElementException expected");
297adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (NoSuchElementException e) {
298adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            //expected
299adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
300adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
301adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
302adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void test_putLjava_lang_ObjectLjava_lang_Object() {
303adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // Test for method java.lang.Object
304adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // java.util.TreeMap.put(java.lang.Object, java.lang.Object)
305adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Object o = new Object();
306adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        tm.put("Hello", o);
307adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertTrue("Failed to put mapping", tm.get("Hello") == o);
308f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
309adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
310adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            tm.put(null, "null");
311adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("NullPointerException expected");
312adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (NullPointerException e) {
313adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            //expected
314adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
315adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
316adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // regression for Harmony-780
317adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        tm = new TreeMap();
318adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
31914816f17144d90174628ee82dc616d4b9c921149Jesse Wilson            assertNull(tm.put(new Object(), new Object()));
320adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            tm.put(new Integer(1), new Object());
321adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("should throw ClassCastException");
322adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (ClassCastException e) {
323adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            // expected
324adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
325adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
326adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        tm = new TreeMap();
327adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertNull(tm.put(new Integer(1), new Object()));
328b20f6c940d94322397dfdaec2bc1bda866cc01f2Jesse Wilson    }
329adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
330b20f6c940d94322397dfdaec2bc1bda866cc01f2Jesse Wilson     /**
331b20f6c940d94322397dfdaec2bc1bda866cc01f2Jesse Wilson      * Android's TreeMap requires every element to be comparable, even if
332b20f6c940d94322397dfdaec2bc1bda866cc01f2Jesse Wilson      * there's no other element to compare it to. This is more strict than the
333b20f6c940d94322397dfdaec2bc1bda866cc01f2Jesse Wilson      * RI. See Harmony-2474.
334b20f6c940d94322397dfdaec2bc1bda866cc01f2Jesse Wilson      */
335b20f6c940d94322397dfdaec2bc1bda866cc01f2Jesse Wilson    public void testRemoveNonComparableFromEmptyMap() {
336adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        tm = new TreeMap();
337b20f6c940d94322397dfdaec2bc1bda866cc01f2Jesse Wilson        try {
338b20f6c940d94322397dfdaec2bc1bda866cc01f2Jesse Wilson            tm.remove(new Object()); // succeeds on RI
339b20f6c940d94322397dfdaec2bc1bda866cc01f2Jesse Wilson        } catch (ClassCastException expected) {
340b20f6c940d94322397dfdaec2bc1bda866cc01f2Jesse Wilson            // expected on libcore only
341b20f6c940d94322397dfdaec2bc1bda866cc01f2Jesse Wilson        }
342adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
343adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
344adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void test_putAllLjava_util_Map() {
345adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // Test for method void java.util.TreeMap.putAll(java.util.Map)
346adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        TreeMap x = new TreeMap();
347adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        x.putAll(tm);
348adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertTrue("Map incorrect size after put", x.size() == tm.size());
349adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        for (Object element : objArray) {
350adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            assertTrue("Failed to put all elements", x.get(element.toString())
351adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    .equals(element));
352adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
353adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        x = new TreeMap();
354adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        x.put(new Integer(1), "one");
355adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        x.put(new Integer(2), "two");
356f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
357adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
358adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            tm.putAll(x);
359adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("ClassCastException expected");
360adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (ClassCastException e) {
361adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            //expected
362adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
363f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
364adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
365adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            tm.putAll(null);
366adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("NullPointerException expected");
367adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (NullPointerException e) {
368adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            //expected
369adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
370adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
371adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
372adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void test_removeLjava_lang_Object() {
373adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // Test for method java.lang.Object
374adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // java.util.TreeMap.remove(java.lang.Object)
375adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        tm.remove("990");
376adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertTrue("Failed to remove mapping", !tm.containsKey("990"));
377f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
378adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
379adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            tm.remove(new Double(3.14));
380adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("ClassCastException expected");
381adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (ClassCastException e) {
382adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            //expected
383adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
384f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
385adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
386adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            tm.remove(null);
387adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("NullPointerException expected");
388adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (NullPointerException e) {
389adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            //expected
390adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
391adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
392adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
393adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void test_subMapLjava_lang_ObjectLjava_lang_Object() {
394adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // Test for method java.util.SortedMap
395adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // java.util.TreeMap.subMap(java.lang.Object, java.lang.Object)
396adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        SortedMap subMap = tm.subMap(objArray[100].toString(), objArray[109]
397adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                .toString());
398adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals("subMap is of incorrect size", 9, subMap.size());
399adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        for (int counter = 100; counter < 109; counter++) {
400adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            assertTrue("SubMap contains incorrect elements", subMap.get(
401adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    objArray[counter].toString()).equals(objArray[counter]));
402adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
403adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
404adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
405adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            tm.subMap(objArray[9].toString(), objArray[1].toString());
406adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("end key less than start key should throw IllegalArgumentException");
407adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (IllegalArgumentException e) {
408adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            // Expected
409adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
410adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
411adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // Regression for Harmony-1161
412adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        TreeMap<String, String> treeMapWithNull = new TreeMap<String, String>(
413adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                new MockComparatorNullTolerable());
414f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes        treeMapWithNull.put("key1", "value1");
415f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes        treeMapWithNull.put(null, "value2");
416adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        SortedMap<String, String> subMapWithNull = treeMapWithNull.subMap(null,
417f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes                "key1");
418f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes        assertEquals("Size of subMap should be 1:", 1, subMapWithNull.size());
419adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
420adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // Regression test for typo in lastKey method
421adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        SortedMap<String, String> map = new TreeMap<String, String>();
422f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes        map.put("1", "one");
423f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes        map.put("2", "two");
424f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes        map.put("3", "three");
425adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals("3", map.lastKey());
426f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes        SortedMap<String, String> sub = map.subMap("1", "3");
427f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes        assertEquals("2", sub.lastKey());
428f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
429adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
430adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            tm.subMap(this, this);
431adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("ClassCastException expected");
432adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (ClassCastException e) {
433adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            //expected
434adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
435f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
436adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
437adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            tm.subMap(objArray[9].toString(), null);
438adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("NullPointerException expected");
439adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (NullPointerException e) {
440adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            //expected
441adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
442f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
443adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
444adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            tm.subMap(null, objArray[9].toString());
445adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("NullPointerException expected");
446adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (NullPointerException e) {
447adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            //expected
448adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
449adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
450adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
451adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void test_tailMapLjava_lang_Object() {
452adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // Test for method java.util.SortedMap
453adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // java.util.TreeMap.tailMap(java.lang.Object)
454adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Map tail = tm.tailMap(objArray[900].toString());
455adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertTrue("Returned map of incorrect size : " + tail.size(), tail
456adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                .size() == (objArray.length - 900) + 9);
457adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        for (int i = 900; i < objArray.length; i++) {
458adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            assertTrue("Map contains incorrect entries", tail
459adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    .containsValue(objArray[i]));
460adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
461f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
462adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        SortedMap sort = tm.tailMap("99");
463adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
464adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
465adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            sort.tailMap("101");
466adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("IllegalArgumentException expected");
467adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (IllegalArgumentException e) {
468adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            //expected
469adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
470f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
471adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
472adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            tm.tailMap(this);
473adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("ClassCastException expected");
474adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (ClassCastException e) {
475adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            //expected
476adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
477f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
478adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
479adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            tm.tailMap(null);
480adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("NullPointerException expected");
481adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (NullPointerException e) {
482adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            //expected
483adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
484adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
485adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // Regression for Harmony-1066
486adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertTrue(tail instanceof Serializable);
487adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
488adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
489adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Sets up the fixture, for example, open a network connection. This method
490adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * is called before a test is executed.
491adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
492adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    @Override
493adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    protected void setUp() {
494adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        tm = new TreeMap();
495adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        for (int i = 0; i < objArray.length; i++) {
496adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            Object x = objArray[i] = new Integer(i);
497adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            tm.put(x.toString(), x);
498adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
499adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
500adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
501adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project}
502