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 */ 17ab762bb740405d0fefcccf4a0899a234f995be13Narayan Kamathpackage org.apache.harmony.tests.java.util; 18adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 194c89023ef86f29fa9add7db2574f2169fe842577Narayan Kamathimport java.util.ArrayDeque; 20adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.util.ArrayList; 21adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.util.Arrays; 22adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.util.Collection; 23ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamathimport java.util.ConcurrentModificationException; 24adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.util.HashSet; 25adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.util.Iterator; 26adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.util.List; 27adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.util.Set; 284c89023ef86f29fa9add7db2574f2169fe842577Narayan Kamathimport java.util.Spliterator; 29adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.util.Vector; 30adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 314c89023ef86f29fa9add7db2574f2169fe842577Narayan Kamathimport libcore.java.util.SpliteratorTester; 32adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport tests.support.Support_ListTest; 333984cdba314a0f7b0587000dec99ff26fd9bcbb5Narayan Kamathimport libcore.java.util.ForEachRemainingTester; 34adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 355c35c7ebda68cc39b6bdee20f678a150336ebd1dYi Kongimport static libcore.java.util.RemoveIfTester.*; 365c35c7ebda68cc39b6bdee20f678a150336ebd1dYi Kong 37adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectpublic class ArrayListTest extends junit.framework.TestCase { 38adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 39adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project List alist; 40adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 41740cbf1565815f08d9fb3a0a8d4a581cdc0d2a9dJorg Pleumann Object[] objArray; 427de2d41b95fc968b0ccc530c28d66f003ff9ab2aJoshua Bloch 43adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 44229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom * java.util.ArrayList#ArrayList() 45adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 46adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_Constructor() { 47adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // Test for method java.util.ArrayList() 48adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project new Support_ListTest("", alist).runTest(); 49adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 50adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ArrayList subList = new ArrayList(); 51adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project for (int i = -50; i < 150; i++) 52adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project subList.add(new Integer(i)); 53adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project new Support_ListTest("", subList.subList(50, 150)).runTest(); 54adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 55adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 56adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 57229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom * java.util.ArrayList#ArrayList(int) 58adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 59adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_ConstructorI() { 60adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // Test for method java.util.ArrayList(int) 61adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ArrayList al = new ArrayList(5); 62adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals("Incorrect arrayList created", 0, al.size()); 637de2d41b95fc968b0ccc530c28d66f003ff9ab2aJoshua Bloch 64ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath al = new ArrayList(0); 65ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath assertEquals("Incorrect arrayList created", 0, al.size()); 66ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath 67adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 68ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath new ArrayList(-1); 69adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("IllegalArgumentException expected"); 70ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath } catch (IllegalArgumentException expected) { 71adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 72adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 73adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 74adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 75229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom * java.util.ArrayList#ArrayList(java.util.Collection) 76adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 77adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_ConstructorLjava_util_Collection() { 78adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // Test for method java.util.ArrayList(java.util.Collection) 79adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ArrayList al = new ArrayList(Arrays.asList(objArray)); 80adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("arrayList created from collection has incorrect size", al 81adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .size() == objArray.length); 82adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project for (int counter = 0; counter < objArray.length; counter++) 83adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue( 84adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project "arrayList created from collection has incorrect elements", 85adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project al.get(counter) == objArray[counter]); 86adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 87adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project new ArrayList(null); 88adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("NullPointerException expected"); 89adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (NullPointerException e) { 90adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project //expected 91adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 92adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 93adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 94adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 95ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath public void testConstructorWithConcurrentCollection() { 96ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath Collection<String> collection = shrinksOnSize("A", "B", "C", "D"); 97ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath ArrayList<String> list = new ArrayList<String>(collection); 98ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath assertFalse(list.contains(null)); 99ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath } 100ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath 101adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 102229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom * java.util.ArrayList#add(int, java.lang.Object) 103adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 104adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_addILjava_lang_Object() { 105adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // Test for method void java.util.ArrayList.add(int, java.lang.Object) 106adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Object o; 107adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project alist.add(50, o = new Object()); 108adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("Failed to add Object", alist.get(50) == o); 109adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("Failed to fix up list after insert", 110adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project alist.get(51) == objArray[50] 111adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project && (alist.get(52) == objArray[51])); 112adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Object oldItem = alist.get(25); 113adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project alist.add(25, null); 114adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertNull("Should have returned null", alist.get(25)); 115adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("Should have returned the old item from slot 25", alist 116adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .get(26) == oldItem); 1177de2d41b95fc968b0ccc530c28d66f003ff9ab2aJoshua Bloch 118ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath alist.add(0, o = new Object()); 119ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath assertEquals("Failed to add Object", alist.get(0), o); 120ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath assertEquals(alist.get(1), objArray[0]); 121ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath assertEquals(alist.get(2), objArray[1]); 122ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath 123ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath oldItem = alist.get(0); 124ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath alist.add(0, null); 125ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath assertNull("Should have returned null", alist.get(0)); 126ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath assertEquals("Should have returned the old item from slot 0", alist 127ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath .get(1), oldItem); 128ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath 129ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath try { 130ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath alist.add(-1, new Object()); 131ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath fail("Should throw IndexOutOfBoundsException"); 132ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath } catch (IndexOutOfBoundsException e) { 133ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath // Expected 134ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath assertNotNull(e.getMessage()); 135ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath } 136ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath 137adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 138adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project alist.add(-1, null); 139ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath fail("Should throw IndexOutOfBoundsException"); 140adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (IndexOutOfBoundsException e) { 141ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath // Expected 142ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath assertNotNull(e.getMessage()); 143ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath } 144ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath 145ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath try { 146ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath alist.add(alist.size() + 1, new Object()); 147ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath fail("Should throw IndexOutOfBoundsException"); 148ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath } catch (IndexOutOfBoundsException e) { 149ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath // Expected 150ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath assertNotNull(e.getMessage()); 151adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 1527de2d41b95fc968b0ccc530c28d66f003ff9ab2aJoshua Bloch 153adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 154adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project alist.add(alist.size() + 1, null); 155ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath fail("Should throw IndexOutOfBoundsException"); 156adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (IndexOutOfBoundsException e) { 157ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath // Expected 158ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath assertNotNull(e.getMessage()); 159adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 160adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 161adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 162adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 163ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath * java.util.ArrayList#add(int, java.lang.Object) 164ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath */ 165ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath public void test_addILjava_lang_Object_2() { 166ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath Object o = new Object(); 167ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath int size = alist.size(); 168ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath alist.add(size, o); 169ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath assertEquals("Failed to add Object", alist.get(size), o); 170ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath assertEquals(alist.get(size - 2), objArray[size - 2]); 171ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath assertEquals(alist.get(size - 1), objArray[size - 1]); 172ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath 173ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath alist.remove(size); 174ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath 175ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath size = alist.size(); 176ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath alist.add(size, null); 177ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath assertNull("Should have returned null", alist.get(size)); 178ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath assertEquals(alist.get(size - 2), objArray[size - 2]); 179ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath assertEquals(alist.get(size - 1), objArray[size - 1]); 180ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath } 181ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath 182ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath /** 183229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom * java.util.ArrayList#add(java.lang.Object) 184adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 185adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_addLjava_lang_Object() { 186adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // Test for method boolean java.util.ArrayList.add(java.lang.Object) 187adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Object o = new Object(); 188adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project alist.add(o); 189adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("Failed to add Object", alist.get(alist.size() - 1) == o); 190adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project alist.add(null); 191adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertNull("Failed to add null", alist.get(alist.size() - 1)); 192adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 193adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 194adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 195229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom * java.util.ArrayList#addAll(int, java.util.Collection) 196adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 197adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_addAllILjava_util_Collection() { 198adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // Test for method boolean java.util.ArrayList.addAll(int, 199adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // java.util.Collection) 200adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project alist.addAll(50, alist); 201adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals("Returned incorrect size after adding to existing list", 202adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 200, alist.size()); 203adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project for (int i = 0; i < 50; i++) 204adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("Manipulated elements < index", 205adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project alist.get(i) == objArray[i]); 206adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project for (int i = 0; i >= 50 && (i < 150); i++) 207adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("Failed to ad elements properly", 208adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project alist.get(i) == objArray[i - 50]); 209adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project for (int i = 0; i >= 150 && (i < 200); i++) 210adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("Failed to ad elements properly", 211adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project alist.get(i) == objArray[i - 100]); 212adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ArrayList listWithNulls = new ArrayList(); 213adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project listWithNulls.add(null); 214adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project listWithNulls.add(null); 215adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project listWithNulls.add("yoink"); 216adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project listWithNulls.add("kazoo"); 217adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project listWithNulls.add(null); 218adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project alist.addAll(100, listWithNulls); 219adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("Incorrect size: " + alist.size(), alist.size() == 205); 220adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertNull("Item at slot 100 should be null", alist.get(100)); 221adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertNull("Item at slot 101 should be null", alist.get(101)); 222ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath assertEquals("Item at slot 102 should be 'yoink'", "yoink", alist 223ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath .get(102)); 224ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath assertEquals("Item at slot 103 should be 'kazoo'", "kazoo", alist 225ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath .get(103)); 226adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertNull("Item at slot 104 should be null", alist.get(104)); 227adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project alist.addAll(205, listWithNulls); 228adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("Incorrect size2: " + alist.size(), alist.size() == 210); 229ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath } 230adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 231ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath /** 232ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath * java.util.ArrayList#addAll(int, java.util.Collection) 233ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath */ 234ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath @SuppressWarnings("unchecked") 235ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath public void test_addAllILjava_util_Collection_2() { 236ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath // Regression for HARMONY-467 237ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath ArrayList obj = new ArrayList(); 238adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 239ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath obj.addAll((int) -1, (Collection) null); 240adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("IndexOutOfBoundsException expected"); 241adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (IndexOutOfBoundsException e) { 242ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath // Expected 243ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath assertNotNull(e.getMessage()); 244ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath } 245ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath 246ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath // Regression for HARMONY-5705 247ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath String[] data = new String[] { "1", "2", "3", "4", "5", "6", "7", "8" }; 248ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath ArrayList list1 = new ArrayList(); 249ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath ArrayList list2 = new ArrayList(); 250ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath for (String d : data) { 251ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath list1.add(d); 252ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath list2.add(d); 253ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath list2.add(d); 254ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath } 255ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath while (list1.size() > 0) 256ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath list1.remove(0); 257ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath list1.addAll(list2); 258ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath assertTrue("The object list is not the same as original list", list1 259ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath .containsAll(list2) 260ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath && list2.containsAll(list1)); 261ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath 262ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath obj = new ArrayList(); 263ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath for (int i = 0; i < 100; i++) { 264ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath if (list1.size() > 0) { 265ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath obj.removeAll(list1); 266ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath obj.addAll(list1); 267ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath } 268ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath } 269ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath assertTrue("The object list is not the same as original list", obj 270ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath .containsAll(list1) 271ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath && list1.containsAll(obj)); 272ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath 273ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath // Regression for Harmony-5799 274ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath list1 = new ArrayList(); 275ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath list2 = new ArrayList(); 276ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath int location = 2; 277ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath 278ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath String[] strings = { "0", "1", "2", "3", "4", "5", "6" }; 279ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath int[] integers = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }; 280ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath for (int i = 0; i < 7; i++) { 281ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath list1.add(strings[i]); 282ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath } 283ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath for (int i = 0; i < 10; i++) { 284ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath list2.add(integers[i]); 285adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 286ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath list1.remove(location); 287ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath list1.addAll(location, list2); 288adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 289ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath // Inserted elements should be equal to integers array 290ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath for (int i = 0; i < integers.length; i++) { 291ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath assertEquals(integers[i], list1.get(location + i)); 292ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath } 293ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath // Elements after inserted location should 294ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath // be equals to related elements in strings array 295ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath for (int i = location + 1; i < strings.length; i++) { 296ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath assertEquals(strings[i], list1.get(i + integers.length - 1)); 297ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath } 298ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath } 299ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath 300ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath /** 301ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath * java.util.ArrayList#addAll(int, java.util.Collection) 302ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath */ 303ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath public void test_addAllILjava_util_Collection_3() { 304ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath ArrayList obj = new ArrayList(); 305ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath obj.addAll(0, obj); 306ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath obj.addAll(obj.size(), obj); 307adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 308ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath obj.addAll(-1, obj); 309ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath fail("Should throw IndexOutOfBoundsException"); 310adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (IndexOutOfBoundsException e) { 311ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath // Expected 312ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath assertNotNull(e.getMessage()); 313adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 314adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 315adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 316ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath obj.addAll(obj.size() + 1, obj); 317ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath fail("Should throw IndexOutOfBoundsException"); 318ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath } catch (IndexOutOfBoundsException e) { 319ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath // Expected 320ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath assertNotNull(e.getMessage()); 321ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath } 322ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath 323ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath try { 324ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath obj.addAll(0, null); 325ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath fail("Should throw NullPointerException"); 326adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (NullPointerException e) { 327ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath // Excepted 328ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath } 329ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath 330ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath try { 331ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath obj.addAll(obj.size() + 1, null); 332ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath fail("Should throw IndexOutOfBoundsException"); 333ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath } catch (IndexOutOfBoundsException e) { 334ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath // Expected 335ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath assertNotNull(e.getMessage()); 336ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath } 337ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath 338ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath try { 339ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath obj.addAll((int) -1, (Collection) null); 340ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath fail("IndexOutOfBoundsException expected"); 341ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath } catch (IndexOutOfBoundsException e) { 342ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath // Expected 343ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath assertNotNull(e.getMessage()); 344adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 345adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 346adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 3477de2d41b95fc968b0ccc530c28d66f003ff9ab2aJoshua Bloch// BEGIN android-removed 3487de2d41b95fc968b0ccc530c28d66f003ff9ab2aJoshua Bloch// The spec does not mandate that IndexOutOfBoundsException be thrown in 3497de2d41b95fc968b0ccc530c28d66f003ff9ab2aJoshua Bloch// preference to NullPointerException when the caller desserves both. 3507de2d41b95fc968b0ccc530c28d66f003ff9ab2aJoshua Bloch// 3517de2d41b95fc968b0ccc530c28d66f003ff9ab2aJoshua Bloch// /** 352229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom// * java.util.ArrayList#addAll(int, java.util.Collection) 3537de2d41b95fc968b0ccc530c28d66f003ff9ab2aJoshua Bloch// */ 3547de2d41b95fc968b0ccc530c28d66f003ff9ab2aJoshua Bloch// public void test_addAllILjava_util_Collection_2() { 3557de2d41b95fc968b0ccc530c28d66f003ff9ab2aJoshua Bloch// // Regression for HARMONY-467 3567de2d41b95fc968b0ccc530c28d66f003ff9ab2aJoshua Bloch// ArrayList obj = new ArrayList(); 3577de2d41b95fc968b0ccc530c28d66f003ff9ab2aJoshua Bloch// try { 3587de2d41b95fc968b0ccc530c28d66f003ff9ab2aJoshua Bloch// obj.addAll((int) -1, (Collection) null); 3597de2d41b95fc968b0ccc530c28d66f003ff9ab2aJoshua Bloch// fail("IndexOutOfBoundsException expected"); 3607de2d41b95fc968b0ccc530c28d66f003ff9ab2aJoshua Bloch// } catch (IndexOutOfBoundsException e) { 3617de2d41b95fc968b0ccc530c28d66f003ff9ab2aJoshua Bloch// } 3627de2d41b95fc968b0ccc530c28d66f003ff9ab2aJoshua Bloch// } 3637de2d41b95fc968b0ccc530c28d66f003ff9ab2aJoshua Bloch// END android-removed 364adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 365adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 366229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom * java.util.ArrayList#addAll(java.util.Collection) 367adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 368adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_addAllLjava_util_Collection() { 369adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // Test for method boolean 370adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // java.util.ArrayList.addAll(java.util.Collection) 371adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project List l = new ArrayList(); 372adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project l.addAll(alist); 373adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project for (int i = 0; i < alist.size(); i++) 374adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("Failed to add elements properly", l.get(i).equals( 375adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project alist.get(i))); 376adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project alist.addAll(alist); 377adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals("Returned incorrect size after adding to existing list", 378adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 200, alist.size()); 379adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project for (int i = 0; i < 100; i++) { 380ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath assertTrue("Added to list in incorrect order", alist.get(i).equals( 381ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath l.get(i))); 382adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("Failed to add to existing list", alist.get(i + 100) 383adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .equals(l.get(i))); 384adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 385adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Set setWithNulls = new HashSet(); 386adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project setWithNulls.add(null); 387adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project setWithNulls.add(null); 388adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project setWithNulls.add("yoink"); 389adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project setWithNulls.add("kazoo"); 390adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project setWithNulls.add(null); 391adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project alist.addAll(100, setWithNulls); 392adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Iterator i = setWithNulls.iterator(); 393adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("Item at slot 100 is wrong: " + alist.get(100), alist 394adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .get(100) == i.next()); 395adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("Item at slot 101 is wrong: " + alist.get(101), alist 396adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .get(101) == i.next()); 397adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("Item at slot 103 is wrong: " + alist.get(102), alist 398adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .get(102) == i.next()); 3997de2d41b95fc968b0ccc530c28d66f003ff9ab2aJoshua Bloch 400ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath try { 401ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath alist.addAll(null); 402ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath fail("Should throw NullPointerException"); 403ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath } catch (NullPointerException e) { 404ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath // Excepted 405ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath } 4067de2d41b95fc968b0ccc530c28d66f003ff9ab2aJoshua Bloch 407adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // Regression test for Harmony-3481 408adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ArrayList<Integer> originalList = new ArrayList<Integer>(12); 409adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project for (int j = 0; j < 12; j++) { 410adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project originalList.add(j); 411adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 4127de2d41b95fc968b0ccc530c28d66f003ff9ab2aJoshua Bloch 413adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project originalList.remove(0); 414adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project originalList.remove(0); 4157de2d41b95fc968b0ccc530c28d66f003ff9ab2aJoshua Bloch 416adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ArrayList<Integer> additionalList = new ArrayList<Integer>(11); 417adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project for (int j = 0; j < 11; j++) { 418adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project additionalList.add(j); 419adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 420adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue(originalList.addAll(additionalList)); 421adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals(21, originalList.size()); 422adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 423ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath } 424ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath 425ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath public void test_ArrayList_addAll_scenario1() { 426ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath ArrayList arrayListA = new ArrayList(); 427ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath arrayListA.add(1); 428ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath ArrayList arrayListB = new ArrayList(); 429ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath arrayListB.add(1); 430ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath arrayListA.addAll(1, arrayListB); 431ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath int size = arrayListA.size(); 432ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath assertEquals(2, size); 433ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath for (int index = 0; index < size; index++) { 434ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath assertEquals(1, arrayListA.get(index)); 435ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath } 436ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath } 437ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath 438ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath public void test_ArrayList_addAll_scenario2() { 439ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath ArrayList arrayList = new ArrayList(); 440ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath arrayList.add(1); 441ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath arrayList.addAll(1, arrayList); 442ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath int size = arrayList.size(); 443ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath assertEquals(2, size); 444ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath for (int index = 0; index < size; index++) { 445ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath assertEquals(1, arrayList.get(index)); 446adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 447adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 448adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 449ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath // Regression test for HARMONY-5839 450ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath public void testaddAllHarmony5839() { 451ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath Collection coll = Arrays.asList(new String[] { "1", "2" }); 452ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath List list = new ArrayList(); 453ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath list.add("a"); 454ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath list.add(0, "b"); 455ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath list.add(0, "c"); 456ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath list.add(0, "d"); 457ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath list.add(0, "e"); 458ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath list.add(0, "f"); 459ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath list.add(0, "g"); 460ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath list.add(0, "h"); 461ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath list.add(0, "i"); 462ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath 463ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath list.addAll(6, coll); 464ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath 465ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath assertEquals(11, list.size()); 466ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath assertFalse(list.contains(null)); 467ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath } 468ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath 469adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 470229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom * java.util.ArrayList#clear() 471adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 472adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_clear() { 473adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // Test for method void java.util.ArrayList.clear() 474adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project alist.clear(); 475adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals("List did not clear", 0, alist.size()); 476adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project alist.add(null); 477adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project alist.add(null); 478adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project alist.add(null); 479adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project alist.add("bam"); 480adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project alist.clear(); 481adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals("List with nulls did not clear", 0, alist.size()); 482adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /* 483adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * for (int i = 0; i < alist.size(); i++) assertNull("Failed to clear 484adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * list", alist.get(i)); 485adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 486adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 487adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 488adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 489adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 490229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom * java.util.ArrayList#clone() 491adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 492adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_clone() { 493adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // Test for method java.lang.Object java.util.ArrayList.clone() 494adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ArrayList x = (ArrayList) (((ArrayList) (alist)).clone()); 495adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("Cloned list was inequal to original", x.equals(alist)); 496adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project for (int i = 0; i < alist.size(); i++) 497adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("Cloned list contains incorrect elements", 498adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project alist.get(i) == x.get(i)); 499adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 500adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project alist.add(null); 501adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project alist.add(25, null); 502adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project x = (ArrayList) (((ArrayList) (alist)).clone()); 503adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("nulls test - Cloned list was inequal to original", x 504adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .equals(alist)); 505adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project for (int i = 0; i < alist.size(); i++) 506adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("nulls test - Cloned list contains incorrect elements", 507adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project alist.get(i) == x.get(i)); 508adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 509adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 510adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 511adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 512229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom * java.util.ArrayList#contains(java.lang.Object) 513adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 514adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_containsLjava_lang_Object() { 515adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // Test for method boolean 516adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // java.util.ArrayList.contains(java.lang.Object) 517adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("Returned false for valid element", alist 518adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .contains(objArray[99])); 519adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("Returned false for equal element", alist 520adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .contains(new Integer(8))); 521adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("Returned true for invalid element", !alist 522adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .contains(new Object())); 523adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("Returned true for null but should have returned false", 524adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project !alist.contains(null)); 525adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project alist.add(null); 526adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("Returned false for null but should have returned true", 527adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project alist.contains(null)); 528adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 529adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 530adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 531229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom * java.util.ArrayList#ensureCapacity(int) 532adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 533ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath public void test_ensureCapacityI() throws Exception { 534adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // Test for method void java.util.ArrayList.ensureCapacity(int) 535adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // TODO : There is no good way to test this as it only really impacts on 536adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // the private implementation. 537adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 538adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Object testObject = new Object(); 539adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project int capacity = 20; 540adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ArrayList al = new ArrayList(capacity); 541adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project int i; 542adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project for (i = 0; i < capacity / 2; i++) { 543adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project al.add(i, new Object()); 544adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 545adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project al.add(i, testObject); 546adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project int location = al.indexOf(testObject); 547ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath al.ensureCapacity(capacity); 548ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath assertTrue("EnsureCapacity moved objects around in array1.", 549ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath location == al.indexOf(testObject)); 550ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath al.remove(0); 551ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath al.ensureCapacity(capacity); 552ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath assertTrue("EnsureCapacity moved objects around in array2.", 553ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath --location == al.indexOf(testObject)); 554ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath al.ensureCapacity(capacity + 2); 555ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath assertTrue("EnsureCapacity did not change location.", location == al 556ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath .indexOf(testObject)); 557ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath 558ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath ArrayList<String> list = new ArrayList<String>(1); 559ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath list.add("hello"); 560ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath list.ensureCapacity(Integer.MIN_VALUE); 561adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 562adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 563adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 564229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom * java.util.ArrayList#get(int) 565adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 566adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_getI() { 567adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // Test for method java.lang.Object java.util.ArrayList.get(int) 568adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("Returned incorrect element", alist.get(22) == objArray[22]); 569adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 570adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project alist.get(8765); 571adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("Failed to throw expected exception for index > size"); 572adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (IndexOutOfBoundsException e) { 573ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath // Expected 574ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath assertNotNull(e.getMessage()); 575adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 576adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 577adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 578adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 579229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom * java.util.ArrayList#indexOf(java.lang.Object) 580adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 581adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_indexOfLjava_lang_Object() { 582adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // Test for method int java.util.ArrayList.indexOf(java.lang.Object) 583ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath assertEquals("Returned incorrect index", 87, alist 584ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath .indexOf(objArray[87])); 585adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals("Returned index for invalid Object", -1, alist 586adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .indexOf(new Object())); 587adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project alist.add(25, null); 588adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project alist.add(50, null); 589adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("Wrong indexOf for null. Wanted 25 got: " 590adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project + alist.indexOf(null), alist.indexOf(null) == 25); 591adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 592adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 593adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 594229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom * java.util.ArrayList#isEmpty() 595adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 596adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_isEmpty() { 597adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // Test for method boolean java.util.ArrayList.isEmpty() 598adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("isEmpty returned false for new list", new ArrayList() 599adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .isEmpty()); 600adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("Returned true for existing list with elements", !alist 601adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .isEmpty()); 602adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 603adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 604adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 605229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom * java.util.ArrayList#lastIndexOf(java.lang.Object) 606adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 607adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_lastIndexOfLjava_lang_Object() { 608adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // Test for method int java.util.ArrayList.lastIndexOf(java.lang.Object) 609adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project alist.add(new Integer(99)); 610ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath assertEquals("Returned incorrect index", 100, alist 611ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath .lastIndexOf(objArray[99])); 612adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals("Returned index for invalid Object", -1, alist 613adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .lastIndexOf(new Object())); 614adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project alist.add(25, null); 615adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project alist.add(50, null); 616adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("Wrong lastIndexOf for null. Wanted 50 got: " 617adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project + alist.lastIndexOf(null), alist.lastIndexOf(null) == 50); 618adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 619adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 620adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 621ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath * {@link java.util.ArrayList#removeRange(int, int)} 622ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath */ 623ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath public void test_removeRange() { 624ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath MockArrayList mylist = new MockArrayList(); 625ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath mylist.removeRange(0, 0); 626ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath 627ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath try { 628ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath mylist.removeRange(0, 1); 629ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath fail("Should throw IndexOutOfBoundsException"); 630ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath } catch (IndexOutOfBoundsException e) { 631ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath // Expected 632ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath assertNotNull(e.getMessage()); 633ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath } 634ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath 635ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath int[] data = { 1, 2, 3 }; 636ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath for (int i = 0; i < data.length; i++) { 637ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath mylist.add(i, data[i]); 638ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath } 639ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath 640ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath mylist.removeRange(0, 1); 641ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath assertEquals(data[1], mylist.get(0)); 642ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath assertEquals(data[2], mylist.get(1)); 643ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath 644ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath try { 645ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath mylist.removeRange(-1, 1); 646ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath fail("Should throw IndexOutOfBoundsException"); 647ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath } catch (IndexOutOfBoundsException e) { 648ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath // Expected 649ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath assertNotNull(e.getMessage()); 650ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath } 651ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath 652ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath try { 653ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath mylist.removeRange(0, -1); 654ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath fail("Should throw IndexOutOfBoundsException"); 655ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath } catch (IndexOutOfBoundsException e) { 656ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath // Expected 657ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath assertNotNull(e.getMessage()); 658ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath } 659ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath 660ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath try { 661ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath mylist.removeRange(1, 0); 662ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath fail("Should throw IndexOutOfBoundsException"); 663ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath } catch (IndexOutOfBoundsException e) { 664ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath // Expected 665ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath assertNotNull(e.getMessage()); 666ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath } 667ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath 668ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath try { 669ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath mylist.removeRange(2, 1); 670ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath fail("Should throw IndexOutOfBoundsException"); 671ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath } catch (IndexOutOfBoundsException e) { 672ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath // Expected 673ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath assertNotNull(e.getMessage()); 674ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath } 675ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath } 676ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath 677ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath /** 678229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom * java.util.ArrayList#remove(int) 679adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 680adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_removeI() { 681adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // Test for method java.lang.Object java.util.ArrayList.remove(int) 682adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project alist.remove(10); 683ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath assertEquals("Failed to remove element", -1, alist 684ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath .indexOf(objArray[10])); 685adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 686adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project alist.remove(999); 687adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("Failed to throw exception when index out of range"); 688adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (IndexOutOfBoundsException e) { 689ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath // Expected 690ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath assertNotNull(e.getMessage()); 691adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 692adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 693adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ArrayList myList = (ArrayList) (((ArrayList) (alist)).clone()); 694adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project alist.add(25, null); 695adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project alist.add(50, null); 696adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project alist.remove(50); 697adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project alist.remove(25); 698adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("Removing nulls did not work", alist.equals(myList)); 699adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 700adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project List list = new ArrayList(Arrays.asList(new String[] { "a", "b", "c", 701adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project "d", "e", "f", "g" })); 702adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("Removed wrong element 1", list.remove(0) == "a"); 703adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("Removed wrong element 2", list.remove(4) == "f"); 704adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project String[] result = new String[5]; 705adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project list.toArray(result); 706adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("Removed wrong element 3", Arrays.equals(result, 707adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project new String[] { "b", "c", "d", "e", "g" })); 708adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 709adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project List l = new ArrayList(0); 710adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project l.add(new Object()); 711adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project l.add(new Object()); 712adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project l.remove(0); 713adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project l.remove(0); 714adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 715adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project l.remove(-1); 716adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("-1 should cause exception"); 717adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (IndexOutOfBoundsException e) { 718ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath // Expected 719ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath assertNotNull(e.getMessage()); 720adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 721adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 722adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project l.remove(0); 723adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("0 should case exception"); 724adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (IndexOutOfBoundsException e) { 725ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath // Expected 726ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath assertNotNull(e.getMessage()); 727adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 728adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 729adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 730adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 731229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom * java.util.ArrayList#set(int, java.lang.Object) 732adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 733adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_setILjava_lang_Object() { 734adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // Test for method java.lang.Object java.util.ArrayList.set(int, 735adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // java.lang.Object) 736adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Object obj; 737adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project alist.set(65, obj = new Object()); 738adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("Failed to set object", alist.get(65) == obj); 739adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project alist.set(50, null); 740adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertNull("Setting to null did not work", alist.get(50)); 741adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("Setting increased the list's size to: " + alist.size(), 742adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project alist.size() == 100); 743adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 744ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath obj = new Object(); 745ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath alist.set(0, obj); 746ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath assertTrue("Failed to set object", alist.get(0) == obj); 747ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath 748ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath try { 749ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath alist.set(-1, obj); 750ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath fail("Should throw IndexOutOfBoundsException"); 751ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath } catch (IndexOutOfBoundsException e) { 752ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath // Expected 753ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath assertNotNull(e.getMessage()); 754ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath } 755ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath 756ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath try { 757ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath alist.set(alist.size(), obj); 758ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath fail("Should throw IndexOutOfBoundsException"); 759ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath } catch (IndexOutOfBoundsException e) { 760ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath // Expected 761ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath assertNotNull(e.getMessage()); 762ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath } 763ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath 764adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 765adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project alist.set(-1, null); 766ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath fail("Should throw IndexOutOfBoundsException"); 767adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (IndexOutOfBoundsException e) { 768ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath // Expected 769ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath assertNotNull(e.getMessage()); 770adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 771adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 772adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 773ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath alist.set(alist.size(), null); 774ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath fail("Should throw IndexOutOfBoundsException"); 775adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (IndexOutOfBoundsException e) { 776ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath // Expected 777ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath assertNotNull(e.getMessage()); 778adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 779adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 780adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 781adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 782229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom * java.util.ArrayList#size() 783adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 784adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_size() { 785adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // Test for method int java.util.ArrayList.size() 786ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath assertEquals("Returned incorrect size for exiting list", 100, alist 787ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath .size()); 788adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals("Returned incorrect size for new list", 0, new ArrayList() 789adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .size()); 790adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 791adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 792adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 793ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath * java.util.AbstractCollection#toString() 794ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath */ 795ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath public void test_toString() { 796ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath ArrayList l = new ArrayList(1); 797ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath l.add(l); 798ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath String result = l.toString(); 799ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath assertTrue("should contain self ref", result.indexOf("(this") > -1); 800ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath } 801ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath 802ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath /** 803229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom * java.util.ArrayList#toArray() 804adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 805adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_toArray() { 806adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // Test for method java.lang.Object [] java.util.ArrayList.toArray() 807adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project alist.set(25, null); 808adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project alist.set(75, null); 809adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Object[] obj = alist.toArray(); 810adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals("Returned array of incorrect size", objArray.length, 811adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project obj.length); 812adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 813adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project for (int i = 0; i < obj.length; i++) { 814adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project if ((i == 25) || (i == 75)) 815adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertNull("Should be null at: " + i + " but instead got: " 816adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project + obj[i], obj[i]); 817adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project else 818adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("Returned incorrect array: " + i, 819adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project obj[i] == objArray[i]); 820adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 821adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 822adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 823adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 824adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 825229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom * java.util.ArrayList#toArray(java.lang.Object[]) 826adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 827adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_toArray$Ljava_lang_Object() { 828adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // Test for method java.lang.Object [] 829adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // java.util.ArrayList.toArray(java.lang.Object []) 830adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project alist.set(25, null); 831adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project alist.set(75, null); 832adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Integer[] argArray = new Integer[100]; 833adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Object[] retArray; 834adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project retArray = alist.toArray(argArray); 835adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("Returned different array than passed", retArray == argArray); 836adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project argArray = new Integer[1000]; 837adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project retArray = alist.toArray(argArray); 838adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertNull("Failed to set first extra element to null", argArray[alist 839adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .size()]); 840adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project for (int i = 0; i < 100; i++) { 841adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project if ((i == 25) || (i == 75)) 842adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertNull("Should be null: " + i, retArray[i]); 843adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project else 844adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("Returned incorrect array: " + i, 845adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project retArray[i] == objArray[i]); 846adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 8477de2d41b95fc968b0ccc530c28d66f003ff9ab2aJoshua Bloch 848adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project String[] strArray = new String[100]; 849adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 850adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project alist.toArray(strArray); 851adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("ArrayStoreException expected"); 852adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (ArrayStoreException e) { 853adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project //expected 854adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 855adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 856adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 857adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 858229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom * java.util.ArrayList#trimToSize() 859adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 860ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath public void test_trimToSize() { 861adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // Test for method void java.util.ArrayList.trimToSize() 862adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project for (int i = 99; i > 24; i--) 863adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project alist.remove(i); 864adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ((ArrayList) alist).trimToSize(); 865adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals("Returned incorrect size after trim", 25, alist.size()); 866adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project for (int i = 0; i < alist.size(); i++) 867adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("Trimmed list contained incorrect elements", alist 868adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .get(i) == objArray[i]); 869adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Vector v = new Vector(); 870adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project v.add("a"); 871adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ArrayList al = new ArrayList(v); 872ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath al.add("b"); 873adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Iterator it = al.iterator(); 874adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project al.trimToSize(); 875adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 876adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project it.next(); 877adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("should throw a ConcurrentModificationException"); 878adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (ConcurrentModificationException ioobe) { 879adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // expected 880adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 881adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 882adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 883adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_trimToSize_02() { 884adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ArrayList list = new ArrayList(Arrays.asList(new String[] { "a", "b", "c", 885adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project "d", "e", "f", "g" })); 886adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project list.remove("a"); 887adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project list.remove("f"); 888adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project list.trimToSize(); 889adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 890adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 891adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_addAll() { 892adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ArrayList list = new ArrayList(); 893adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project list.add("one"); 894adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project list.add("two"); 895adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals(2, list.size()); 896adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 897adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project list.remove(0); 898adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals(1, list.size()); 8997de2d41b95fc968b0ccc530c28d66f003ff9ab2aJoshua Bloch 900adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ArrayList collection = new ArrayList(); 901adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project collection.add("1"); 902adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project collection.add("2"); 903adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project collection.add("3"); 904adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals(3, collection.size()); 9057de2d41b95fc968b0ccc530c28d66f003ff9ab2aJoshua Bloch 906adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project list.addAll(0, collection); 907adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals(4, list.size()); 9087de2d41b95fc968b0ccc530c28d66f003ff9ab2aJoshua Bloch 909adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project list.remove(0); 910adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project list.remove(0); 911adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals(2, list.size()); 912adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 913adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project collection.add("4"); 914adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project collection.add("5"); 915adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project collection.add("6"); 916adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project collection.add("7"); 917adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project collection.add("8"); 918adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project collection.add("9"); 919adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project collection.add("10"); 920adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project collection.add("11"); 921adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project collection.add("12"); 9227de2d41b95fc968b0ccc530c28d66f003ff9ab2aJoshua Bloch 923adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals(12, collection.size()); 9247de2d41b95fc968b0ccc530c28d66f003ff9ab2aJoshua Bloch 925adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project list.addAll(0, collection); 926adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals(14, list.size()); 927adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 9287de2d41b95fc968b0ccc530c28d66f003ff9ab2aJoshua Bloch 929adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_removeLjava_lang_Object() { 930adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project List list = new ArrayList(Arrays.asList(new String[] { "a", "b", "c", 931adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project "d", "e", "f", "g" })); 932adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("Removed wrong element 1", list.remove("a")); 933adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("Removed wrong element 2", list.remove("f")); 934adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project String[] result = new String[5]; 935adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project list.toArray(result); 936adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("Removed wrong element 3", Arrays.equals(result, 937adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project new String[] { "b", "c", "d", "e", "g" })); 938adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 939adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 940ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath public void testAddAllWithConcurrentCollection() { 941ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath ArrayList<String> list = new ArrayList<String>(); 942ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath list.addAll(shrinksOnSize("A", "B", "C", "D")); 943ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath assertFalse(list.contains(null)); 944ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath } 945ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath 946ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath public void testAddAllAtPositionWithConcurrentCollection() { 947ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath ArrayList<String> list = new ArrayList<String>( 948ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath Arrays.asList("A", "B", "C", "D")); 949ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath 950ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath list.addAll(3, shrinksOnSize("E", "F", "G", "H")); 951ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath assertFalse(list.contains(null)); 952ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath } 953ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath 954ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath public void test_override_size() throws Exception { 955ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath ArrayList testlist = new MockArrayList(); 956ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath // though size is overriden, it should passed without exception 957ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath testlist.add("test_0"); 958ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath testlist.add("test_1"); 959ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath testlist.add("test_2"); 960ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath testlist.add(1, "test_3"); 961ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath testlist.get(1); 962ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath testlist.remove(2); 963ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath testlist.set(1, "test_4"); 964ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath } 965ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath 966ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath public class MockArrayList extends ArrayList { 967ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath public int size() { 968ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath return 0; 969adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 970adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 971adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void removeRange(int begin, int end) { 972adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project super.removeRange(begin, end); 973adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 974adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 975adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 976adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_removeRangeII() { 977ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath MockArrayList mal = new MockArrayList(); 978adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project mal.add("a"); 979adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project mal.add("b"); 980adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project mal.add("c"); 981adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project mal.add("d"); 982adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project mal.add("e"); 983adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project mal.add("f"); 984adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project mal.add("g"); 985adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project mal.add("h"); 9867de2d41b95fc968b0ccc530c28d66f003ff9ab2aJoshua Bloch 987adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project mal.removeRange(2, 4); 988adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 989adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project String[] result = new String[6]; 990adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project mal.toArray(result); 991adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("Removed wrong element 3", Arrays.equals(result, 992adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project new String[] { "a", "b", "e", "f", "g", "h"})); 993adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 994adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 995ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath public static class ArrayListExtend extends ArrayList { 996ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath 997ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath private int size = 0; 998ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath 999ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath public ArrayListExtend() { 1000ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath super(10); 1001ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath } 1002ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath 1003ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath public boolean add(Object o) { 1004ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath size++; 1005ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath return super.add(o); 1006ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath } 1007ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath 1008ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath public int size() { 1009ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath return size; 1010ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath } 1011ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath } 1012ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath 1013ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath public void test_subclassing() { 1014ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath ArrayListExtend a = new ArrayListExtend(); 1015ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath /* 1016ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath * Regression test for subclasses that override size() (which used to 1017ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath * cause an exception when growing 'a'). 1018ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath */ 1019ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath for (int i = 0; i < 100; i++) { 1020ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath a.add(new Object()); 1021ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath } 1022ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath } 1023ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath 1024b10b2a3ab693cfd6156d06ffe4e00ce69b9c9194Narayan Kamath // http://b/25867131 et al. 1025b10b2a3ab693cfd6156d06ffe4e00ce69b9c9194Narayan Kamath public void testIteratorAddAfterCompleteIteration() { 1026887ab3fe607c582e10e33b3d631401d7a791aaedNarayan Kamath ArrayList<String> strings = new ArrayList<>(); 1027b10b2a3ab693cfd6156d06ffe4e00ce69b9c9194Narayan Kamath strings.add("string1"); 1028b10b2a3ab693cfd6156d06ffe4e00ce69b9c9194Narayan Kamath Iterator<String> it = strings.iterator(); 1029b10b2a3ab693cfd6156d06ffe4e00ce69b9c9194Narayan Kamath assertTrue(it.hasNext()); 1030b10b2a3ab693cfd6156d06ffe4e00ce69b9c9194Narayan Kamath assertEquals("string1", it.next()); 1031b10b2a3ab693cfd6156d06ffe4e00ce69b9c9194Narayan Kamath assertFalse(it.hasNext()); 1032b10b2a3ab693cfd6156d06ffe4e00ce69b9c9194Narayan Kamath strings.add("string2"); 1033b10b2a3ab693cfd6156d06ffe4e00ce69b9c9194Narayan Kamath // The value of hasNext() must not flap between true and false. If we returned "true" 1034b10b2a3ab693cfd6156d06ffe4e00ce69b9c9194Narayan Kamath // here, we'd fail with a CME on the next call to next() anyway. 1035b10b2a3ab693cfd6156d06ffe4e00ce69b9c9194Narayan Kamath assertFalse(it.hasNext()); 1036b10b2a3ab693cfd6156d06ffe4e00ce69b9c9194Narayan Kamath } 1037b10b2a3ab693cfd6156d06ffe4e00ce69b9c9194Narayan Kamath 1038b10b2a3ab693cfd6156d06ffe4e00ce69b9c9194Narayan Kamath public void testHasNextAfterRemoval() { 1039b10b2a3ab693cfd6156d06ffe4e00ce69b9c9194Narayan Kamath ArrayList<String> strings = new ArrayList<>(); 1040b10b2a3ab693cfd6156d06ffe4e00ce69b9c9194Narayan Kamath strings.add("string1"); 1041b10b2a3ab693cfd6156d06ffe4e00ce69b9c9194Narayan Kamath Iterator<String> it = strings.iterator(); 1042b10b2a3ab693cfd6156d06ffe4e00ce69b9c9194Narayan Kamath it.next(); 1043b10b2a3ab693cfd6156d06ffe4e00ce69b9c9194Narayan Kamath it.remove(); 1044b10b2a3ab693cfd6156d06ffe4e00ce69b9c9194Narayan Kamath assertFalse(it.hasNext()); 1045b10b2a3ab693cfd6156d06ffe4e00ce69b9c9194Narayan Kamath 1046b10b2a3ab693cfd6156d06ffe4e00ce69b9c9194Narayan Kamath strings = new ArrayList<>(); 1047b10b2a3ab693cfd6156d06ffe4e00ce69b9c9194Narayan Kamath strings.add("string1"); 1048b10b2a3ab693cfd6156d06ffe4e00ce69b9c9194Narayan Kamath strings.add("string2"); 1049b10b2a3ab693cfd6156d06ffe4e00ce69b9c9194Narayan Kamath it = strings.iterator(); 1050b10b2a3ab693cfd6156d06ffe4e00ce69b9c9194Narayan Kamath it.next(); 1051b10b2a3ab693cfd6156d06ffe4e00ce69b9c9194Narayan Kamath it.remove(); 1052b10b2a3ab693cfd6156d06ffe4e00ce69b9c9194Narayan Kamath assertTrue(it.hasNext()); 1053b10b2a3ab693cfd6156d06ffe4e00ce69b9c9194Narayan Kamath assertEquals("string2", it.next()); 1054b10b2a3ab693cfd6156d06ffe4e00ce69b9c9194Narayan Kamath } 1055b10b2a3ab693cfd6156d06ffe4e00ce69b9c9194Narayan Kamath 1056887ab3fe607c582e10e33b3d631401d7a791aaedNarayan Kamath // http://b/27430229 1057887ab3fe607c582e10e33b3d631401d7a791aaedNarayan Kamath public void testRemoveAllDuringIteration() { 1058887ab3fe607c582e10e33b3d631401d7a791aaedNarayan Kamath ArrayList<String> list = new ArrayList<>(); 1059887ab3fe607c582e10e33b3d631401d7a791aaedNarayan Kamath list.add("food"); 1060887ab3fe607c582e10e33b3d631401d7a791aaedNarayan Kamath Iterator<String> iterator = list.iterator(); 1061887ab3fe607c582e10e33b3d631401d7a791aaedNarayan Kamath iterator.next(); 1062887ab3fe607c582e10e33b3d631401d7a791aaedNarayan Kamath list.clear(); 1063887ab3fe607c582e10e33b3d631401d7a791aaedNarayan Kamath assertFalse(iterator.hasNext()); 1064887ab3fe607c582e10e33b3d631401d7a791aaedNarayan Kamath } 1065887ab3fe607c582e10e33b3d631401d7a791aaedNarayan Kamath 106660796efea3a74e02aea384b8eb56103ea21b880bPrzemyslaw Szczepaniak public void test_forEach() throws Exception { 106760796efea3a74e02aea384b8eb56103ea21b880bPrzemyslaw Szczepaniak ArrayList<Integer> list = new ArrayList<>(); 106860796efea3a74e02aea384b8eb56103ea21b880bPrzemyslaw Szczepaniak list.add(0); 106960796efea3a74e02aea384b8eb56103ea21b880bPrzemyslaw Szczepaniak list.add(1); 107060796efea3a74e02aea384b8eb56103ea21b880bPrzemyslaw Szczepaniak list.add(2); 107160796efea3a74e02aea384b8eb56103ea21b880bPrzemyslaw Szczepaniak 107260796efea3a74e02aea384b8eb56103ea21b880bPrzemyslaw Szczepaniak ArrayList<Integer> output = new ArrayList<>(); 107360796efea3a74e02aea384b8eb56103ea21b880bPrzemyslaw Szczepaniak list.forEach(k -> output.add(k)); 107460796efea3a74e02aea384b8eb56103ea21b880bPrzemyslaw Szczepaniak 107560796efea3a74e02aea384b8eb56103ea21b880bPrzemyslaw Szczepaniak assertEquals(list, output); 107660796efea3a74e02aea384b8eb56103ea21b880bPrzemyslaw Szczepaniak } 107760796efea3a74e02aea384b8eb56103ea21b880bPrzemyslaw Szczepaniak 107860796efea3a74e02aea384b8eb56103ea21b880bPrzemyslaw Szczepaniak public void test_forEach_NPE() throws Exception { 107960796efea3a74e02aea384b8eb56103ea21b880bPrzemyslaw Szczepaniak ArrayList<Integer> list = new ArrayList<>(); 108060796efea3a74e02aea384b8eb56103ea21b880bPrzemyslaw Szczepaniak try { 108160796efea3a74e02aea384b8eb56103ea21b880bPrzemyslaw Szczepaniak list.forEach(null); 108260796efea3a74e02aea384b8eb56103ea21b880bPrzemyslaw Szczepaniak fail(); 108360796efea3a74e02aea384b8eb56103ea21b880bPrzemyslaw Szczepaniak } catch(NullPointerException expected) {} 108460796efea3a74e02aea384b8eb56103ea21b880bPrzemyslaw Szczepaniak } 108560796efea3a74e02aea384b8eb56103ea21b880bPrzemyslaw Szczepaniak 108660796efea3a74e02aea384b8eb56103ea21b880bPrzemyslaw Szczepaniak public void test_forEach_CME() throws Exception { 108760796efea3a74e02aea384b8eb56103ea21b880bPrzemyslaw Szczepaniak ArrayList<Integer> list = new ArrayList<>(); 108860796efea3a74e02aea384b8eb56103ea21b880bPrzemyslaw Szczepaniak list.add(1); 108960796efea3a74e02aea384b8eb56103ea21b880bPrzemyslaw Szczepaniak list.add(2); 109060796efea3a74e02aea384b8eb56103ea21b880bPrzemyslaw Szczepaniak ArrayList<Integer> processed = new ArrayList<>(); 109160796efea3a74e02aea384b8eb56103ea21b880bPrzemyslaw Szczepaniak try { 10923984cdba314a0f7b0587000dec99ff26fd9bcbb5Narayan Kamath list.forEach(t -> { processed.add(t); list.add(t); }); 109360796efea3a74e02aea384b8eb56103ea21b880bPrzemyslaw Szczepaniak fail(); 109460796efea3a74e02aea384b8eb56103ea21b880bPrzemyslaw Szczepaniak } catch(ConcurrentModificationException expected) {} 109560796efea3a74e02aea384b8eb56103ea21b880bPrzemyslaw Szczepaniak assertEquals(1, processed.size()); 109660796efea3a74e02aea384b8eb56103ea21b880bPrzemyslaw Szczepaniak } 109760796efea3a74e02aea384b8eb56103ea21b880bPrzemyslaw Szczepaniak 109860796efea3a74e02aea384b8eb56103ea21b880bPrzemyslaw Szczepaniak public void test_forEach_CME_onLastElement() throws Exception { 109960796efea3a74e02aea384b8eb56103ea21b880bPrzemyslaw Szczepaniak ArrayList<Integer> list = new ArrayList<>(); 110060796efea3a74e02aea384b8eb56103ea21b880bPrzemyslaw Szczepaniak list.add(1); 110160796efea3a74e02aea384b8eb56103ea21b880bPrzemyslaw Szczepaniak list.add(2); 110260796efea3a74e02aea384b8eb56103ea21b880bPrzemyslaw Szczepaniak list.add(3); 110360796efea3a74e02aea384b8eb56103ea21b880bPrzemyslaw Szczepaniak try { 11043984cdba314a0f7b0587000dec99ff26fd9bcbb5Narayan Kamath list.forEach(t -> { 11053984cdba314a0f7b0587000dec99ff26fd9bcbb5Narayan Kamath if (t == 3) list.add(t); 11063984cdba314a0f7b0587000dec99ff26fd9bcbb5Narayan Kamath }); 110760796efea3a74e02aea384b8eb56103ea21b880bPrzemyslaw Szczepaniak fail(); 110860796efea3a74e02aea384b8eb56103ea21b880bPrzemyslaw Szczepaniak } catch(ConcurrentModificationException expected) {} 110960796efea3a74e02aea384b8eb56103ea21b880bPrzemyslaw Szczepaniak } 11107de2d41b95fc968b0ccc530c28d66f003ff9ab2aJoshua Bloch 11113984cdba314a0f7b0587000dec99ff26fd9bcbb5Narayan Kamath public void test_forEachRemaining_iterator() throws Exception { 11123984cdba314a0f7b0587000dec99ff26fd9bcbb5Narayan Kamath ForEachRemainingTester.runTests(ArrayList.class, new String[] { "foo", "bar", "baz"}); 11133984cdba314a0f7b0587000dec99ff26fd9bcbb5Narayan Kamath ForEachRemainingTester.runTests(ArrayList.class, new String[] { "foo" }); 11143984cdba314a0f7b0587000dec99ff26fd9bcbb5Narayan Kamath } 11153984cdba314a0f7b0587000dec99ff26fd9bcbb5Narayan Kamath 11164c89023ef86f29fa9add7db2574f2169fe842577Narayan Kamath public void test_spliterator() throws Exception { 11174c89023ef86f29fa9add7db2574f2169fe842577Narayan Kamath ArrayList<Integer> testElements = new ArrayList<>( 11184c89023ef86f29fa9add7db2574f2169fe842577Narayan Kamath Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16)); 11194c89023ef86f29fa9add7db2574f2169fe842577Narayan Kamath ArrayList<Integer> list = new ArrayList<>(); 11204c89023ef86f29fa9add7db2574f2169fe842577Narayan Kamath list.addAll(testElements); 11214c89023ef86f29fa9add7db2574f2169fe842577Narayan Kamath 11224c89023ef86f29fa9add7db2574f2169fe842577Narayan Kamath SpliteratorTester.runBasicIterationTests(list.spliterator(), testElements); 11234c89023ef86f29fa9add7db2574f2169fe842577Narayan Kamath SpliteratorTester.runBasicSplitTests(list, testElements); 11244c89023ef86f29fa9add7db2574f2169fe842577Narayan Kamath SpliteratorTester.testSpliteratorNPE(list.spliterator()); 11254c89023ef86f29fa9add7db2574f2169fe842577Narayan Kamath 11264c89023ef86f29fa9add7db2574f2169fe842577Narayan Kamath assertTrue(list.spliterator().hasCharacteristics( 11274c89023ef86f29fa9add7db2574f2169fe842577Narayan Kamath Spliterator.ORDERED | Spliterator.SIZED | Spliterator.SUBSIZED)); 11284c89023ef86f29fa9add7db2574f2169fe842577Narayan Kamath 11294c89023ef86f29fa9add7db2574f2169fe842577Narayan Kamath SpliteratorTester.runOrderedTests(list); 11304c89023ef86f29fa9add7db2574f2169fe842577Narayan Kamath SpliteratorTester.runSizedTests(list, 16 /* expected size */); 11314c89023ef86f29fa9add7db2574f2169fe842577Narayan Kamath SpliteratorTester.runSubSizedTests(list, 16 /* expected size */); 11324c89023ef86f29fa9add7db2574f2169fe842577Narayan Kamath } 11334c89023ef86f29fa9add7db2574f2169fe842577Narayan Kamath 11344c89023ef86f29fa9add7db2574f2169fe842577Narayan Kamath public void test_spliterator_CME() throws Exception { 11354c89023ef86f29fa9add7db2574f2169fe842577Narayan Kamath ArrayList<Integer> list = new ArrayList<>(); 11364c89023ef86f29fa9add7db2574f2169fe842577Narayan Kamath list.add(52); 11374c89023ef86f29fa9add7db2574f2169fe842577Narayan Kamath 11384c89023ef86f29fa9add7db2574f2169fe842577Narayan Kamath Spliterator<Integer> sp = list.spliterator(); 11394c89023ef86f29fa9add7db2574f2169fe842577Narayan Kamath try { 11404c89023ef86f29fa9add7db2574f2169fe842577Narayan Kamath sp.tryAdvance(value -> list.add(value)); 11414c89023ef86f29fa9add7db2574f2169fe842577Narayan Kamath fail(); 11424c89023ef86f29fa9add7db2574f2169fe842577Narayan Kamath } catch (ConcurrentModificationException expected) { 11434c89023ef86f29fa9add7db2574f2169fe842577Narayan Kamath } 11444c89023ef86f29fa9add7db2574f2169fe842577Narayan Kamath 11453a923d039f9176b87d6ee449e9b263cf5cd902edNarayan Kamath ArrayList<Integer> list2 = new ArrayList<>(); 11463a923d039f9176b87d6ee449e9b263cf5cd902edNarayan Kamath list2.add(52); 11474c89023ef86f29fa9add7db2574f2169fe842577Narayan Kamath try { 11483a923d039f9176b87d6ee449e9b263cf5cd902edNarayan Kamath sp.forEachRemaining(value -> list2.add(value)); 11494c89023ef86f29fa9add7db2574f2169fe842577Narayan Kamath fail(); 11504c89023ef86f29fa9add7db2574f2169fe842577Narayan Kamath } catch (ConcurrentModificationException expected) { 11514c89023ef86f29fa9add7db2574f2169fe842577Narayan Kamath } 11524c89023ef86f29fa9add7db2574f2169fe842577Narayan Kamath } 11534c89023ef86f29fa9add7db2574f2169fe842577Narayan Kamath 11545c35c7ebda68cc39b6bdee20f678a150336ebd1dYi Kong public void test_removeIf() { 11555c35c7ebda68cc39b6bdee20f678a150336ebd1dYi Kong runBasicRemoveIfTests(ArrayList<Integer>::new); 11565c35c7ebda68cc39b6bdee20f678a150336ebd1dYi Kong runBasicRemoveIfTestsUnordered(ArrayList<Integer>::new); 11575c35c7ebda68cc39b6bdee20f678a150336ebd1dYi Kong runRemoveIfOnEmpty(ArrayList<Integer>::new); 11585c35c7ebda68cc39b6bdee20f678a150336ebd1dYi Kong testRemoveIfNPE(ArrayList<Integer>::new); 11595c35c7ebda68cc39b6bdee20f678a150336ebd1dYi Kong testRemoveIfCME(ArrayList<Integer>::new); 11605c35c7ebda68cc39b6bdee20f678a150336ebd1dYi Kong } 11615c35c7ebda68cc39b6bdee20f678a150336ebd1dYi Kong 1162def94956afbfc17ea65390d16d032f9b790a5dcaNarayan Kamath public void test_sublist_spliterator() { 1163def94956afbfc17ea65390d16d032f9b790a5dcaNarayan Kamath ArrayList<Integer> testElements = new ArrayList<>( 1164def94956afbfc17ea65390d16d032f9b790a5dcaNarayan Kamath Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16)); 1165def94956afbfc17ea65390d16d032f9b790a5dcaNarayan Kamath List<Integer> list = new ArrayList<>(); 1166def94956afbfc17ea65390d16d032f9b790a5dcaNarayan Kamath list.addAll(testElements); 1167def94956afbfc17ea65390d16d032f9b790a5dcaNarayan Kamath 1168def94956afbfc17ea65390d16d032f9b790a5dcaNarayan Kamath testElements = new ArrayList<Integer>(list.subList(8, 16)); 1169def94956afbfc17ea65390d16d032f9b790a5dcaNarayan Kamath list = list.subList(8, 16); 1170def94956afbfc17ea65390d16d032f9b790a5dcaNarayan Kamath 1171def94956afbfc17ea65390d16d032f9b790a5dcaNarayan Kamath SpliteratorTester.runBasicIterationTests(list.spliterator(), testElements); 1172def94956afbfc17ea65390d16d032f9b790a5dcaNarayan Kamath SpliteratorTester.runBasicSplitTests(list, testElements); 1173def94956afbfc17ea65390d16d032f9b790a5dcaNarayan Kamath SpliteratorTester.testSpliteratorNPE(list.spliterator()); 1174def94956afbfc17ea65390d16d032f9b790a5dcaNarayan Kamath 1175def94956afbfc17ea65390d16d032f9b790a5dcaNarayan Kamath assertTrue(list.spliterator().hasCharacteristics( 1176def94956afbfc17ea65390d16d032f9b790a5dcaNarayan Kamath Spliterator.ORDERED | Spliterator.SIZED | Spliterator.SUBSIZED)); 1177def94956afbfc17ea65390d16d032f9b790a5dcaNarayan Kamath 1178def94956afbfc17ea65390d16d032f9b790a5dcaNarayan Kamath SpliteratorTester.runOrderedTests(list); 1179def94956afbfc17ea65390d16d032f9b790a5dcaNarayan Kamath SpliteratorTester.runSizedTests(list, 8 /* expected size */); 1180def94956afbfc17ea65390d16d032f9b790a5dcaNarayan Kamath SpliteratorTester.runSubSizedTests(list, 8 /* expected size */); 1181def94956afbfc17ea65390d16d032f9b790a5dcaNarayan Kamath } 1182def94956afbfc17ea65390d16d032f9b790a5dcaNarayan Kamath 1183adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 1184adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Sets up the fixture, for example, open a network connection. This method 1185adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * is called before a test is executed. 1186adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 1187adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project protected void setUp() throws Exception { 1188adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project super.setUp(); 11897de2d41b95fc968b0ccc530c28d66f003ff9ab2aJoshua Bloch 1190740cbf1565815f08d9fb3a0a8d4a581cdc0d2a9dJorg Pleumann objArray = new Object[100]; 1191740cbf1565815f08d9fb3a0a8d4a581cdc0d2a9dJorg Pleumann for (int i = 0; i < objArray.length; i++) { 1192740cbf1565815f08d9fb3a0a8d4a581cdc0d2a9dJorg Pleumann objArray[i] = new Integer(i); 1193740cbf1565815f08d9fb3a0a8d4a581cdc0d2a9dJorg Pleumann } 11947de2d41b95fc968b0ccc530c28d66f003ff9ab2aJoshua Bloch 1195adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project alist = new ArrayList(); 1196740cbf1565815f08d9fb3a0a8d4a581cdc0d2a9dJorg Pleumann for (int i = 0; i < objArray.length; i++) { 1197adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project alist.add(objArray[i]); 1198740cbf1565815f08d9fb3a0a8d4a581cdc0d2a9dJorg Pleumann } 1199740cbf1565815f08d9fb3a0a8d4a581cdc0d2a9dJorg Pleumann } 12007de2d41b95fc968b0ccc530c28d66f003ff9ab2aJoshua Bloch 1201740cbf1565815f08d9fb3a0a8d4a581cdc0d2a9dJorg Pleumann @Override 1202740cbf1565815f08d9fb3a0a8d4a581cdc0d2a9dJorg Pleumann protected void tearDown() throws Exception { 1203740cbf1565815f08d9fb3a0a8d4a581cdc0d2a9dJorg Pleumann objArray = null; 1204740cbf1565815f08d9fb3a0a8d4a581cdc0d2a9dJorg Pleumann alist = null; 12057de2d41b95fc968b0ccc530c28d66f003ff9ab2aJoshua Bloch 1206740cbf1565815f08d9fb3a0a8d4a581cdc0d2a9dJorg Pleumann super.tearDown(); 1207adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 1208ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath 1209ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath /** 1210ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath * Returns a collection that emulates another thread calling remove() each 1211ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath * time the current thread calls size(). 1212ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath */ 1213ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath private <T> Collection<T> shrinksOnSize(T... elements) { 1214ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath return new HashSet<T>(Arrays.asList(elements)) { 1215ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath boolean shrink = true; 1216ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath 1217ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath @Override 1218ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath public int size() { 1219ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath int result = super.size(); 1220ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath if (shrink) { 1221ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath Iterator<T> i = iterator(); 1222ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath i.next(); 1223ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath i.remove(); 1224ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath } 1225ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath return result; 1226ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath } 1227ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath 1228ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath @Override 1229ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath public Object[] toArray() { 1230ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath shrink = false; 1231ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath return super.toArray(); 1232ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath } 1233ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath }; 1234ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath } 1235adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project} 1236