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