1adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project/* 2adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Licensed to the Apache Software Foundation (ASF) under one or more 3adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * contributor license agreements. See the NOTICE file distributed with 4adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * this work for additional information regarding copyright ownership. 5adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * The ASF licenses this file to You under the Apache License, Version 2.0 6adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * (the "License"); you may not use this file except in compliance with 7adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * the License. You may obtain a copy of the License at 8adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * 9adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 10adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * 11adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Unless required by applicable law or agreed to in writing, software 12adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, 13adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * See the License for the specific language governing permissions and 15adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * limitations under the License. 16adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 17adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 18ab762bb740405d0fefcccf4a0899a234f995be13Narayan Kamathpackage org.apache.harmony.tests.java.util; 19adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 204c89023ef86f29fa9add7db2574f2169fe842577Narayan Kamathimport java.util.ArrayList; 21adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.util.Arrays; 2260796efea3a74e02aea384b8eb56103ea21b880bPrzemyslaw Szczepaniakimport java.util.ConcurrentModificationException; 234c89023ef86f29fa9add7db2574f2169fe842577Narayan Kamathimport java.util.HashMap; 24adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.util.HashSet; 25adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.util.Iterator; 264c89023ef86f29fa9add7db2574f2169fe842577Narayan Kamathimport java.util.List; 27adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.util.Set; 28adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.io.ObjectOutputStream; 29adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.io.ByteArrayOutputStream; 30adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.io.IOException; 31adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.io.Serializable; 32adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.lang.reflect.Method; 33adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.lang.reflect.InvocationTargetException; 344c89023ef86f29fa9add7db2574f2169fe842577Narayan Kamathimport java.util.Spliterator; 35adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 364c89023ef86f29fa9add7db2574f2169fe842577Narayan Kamathimport libcore.java.util.SpliteratorTester; 37adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport org.apache.harmony.testframework.serialization.SerializationTest; 38adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 39adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectpublic class HashSetTest extends junit.framework.TestCase { 40adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 41adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project HashSet hs; 42adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 43740cbf1565815f08d9fb3a0a8d4a581cdc0d2a9dJorg Pleumann Object[] objArray; 44f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 45adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 46229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom * java.util.HashSet#HashSet() 47adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 48adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_Constructor() { 49adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // Test for method java.util.HashSet() 50adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project HashSet hs2 = new HashSet(); 51adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals("Created incorrect HashSet", 0, hs2.size()); 52adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 53adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 54adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 55229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom * java.util.HashSet#HashSet(int) 56adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 57adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_ConstructorI() { 58adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // Test for method java.util.HashSet(int) 59adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project HashSet hs2 = new HashSet(5); 60adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals("Created incorrect HashSet", 0, hs2.size()); 61adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 62adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project new HashSet(-1); 63adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (IllegalArgumentException e) { 64adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return; 65adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 66adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail( 67adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project "Failed to throw IllegalArgumentException for capacity < 0"); 68adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 69adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 70adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 71229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom * java.util.HashSet#HashSet(int, float) 72adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 73adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_ConstructorIF() { 74adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // Test for method java.util.HashSet(int, float) 75adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project HashSet hs2 = new HashSet(5, (float) 0.5); 76adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals("Created incorrect HashSet", 0, hs2.size()); 77adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 78adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project new HashSet(0, 0); 79adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (IllegalArgumentException e) { 80adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return; 81adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 82adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail( 83adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project "Failed to throw IllegalArgumentException for initial load factor <= 0"); 84adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 85adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 86adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 87229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom * java.util.HashSet#HashSet(java.util.Collection) 88adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 89adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_ConstructorLjava_util_Collection() { 90adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // Test for method java.util.HashSet(java.util.Collection) 91adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project HashSet hs2 = new HashSet(Arrays.asList(objArray)); 92adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project for (int counter = 0; counter < objArray.length; counter++) 93adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("HashSet does not contain correct elements", hs 94adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .contains(objArray[counter])); 95adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("HashSet created from collection incorrect size", 96adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project hs2.size() == objArray.length); 97f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 98adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 99adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project new HashSet(null); 100adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("NullPointerException expected"); 101adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (NullPointerException e) { 102adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project //expected 103adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 104adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 105adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 106adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 107229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom * java.util.HashSet#add(java.lang.Object) 108adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 109adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_addLjava_lang_Object() { 110adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // Test for method boolean java.util.HashSet.add(java.lang.Object) 111adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project int size = hs.size(); 112adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project hs.add(new Integer(8)); 113adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("Added element already contained by set", hs.size() == size); 114adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project hs.add(new Integer(-9)); 115adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("Failed to increment set size after add", 116adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project hs.size() == size + 1); 117adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("Failed to add element to set", hs.contains(new Integer(-9))); 118adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 119adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 120adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 121229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom * java.util.HashSet#clear() 122adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 123adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_clear() { 124adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // Test for method void java.util.HashSet.clear() 125adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Set orgSet = (Set) hs.clone(); 126adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project hs.clear(); 127adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Iterator i = orgSet.iterator(); 128adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals("Returned non-zero size after clear", 0, hs.size()); 129adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project while (i.hasNext()) 130adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("Failed to clear set", !hs.contains(i.next())); 131adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 132adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 133adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 134229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom * java.util.HashSet#clone() 135adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 136adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_clone() { 137adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // Test for method java.lang.Object java.util.HashSet.clone() 138adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project HashSet hs2 = (HashSet) hs.clone(); 139adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("clone returned an equivalent HashSet", hs != hs2); 140adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("clone did not return an equal HashSet", hs.equals(hs2)); 141adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 142adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 143adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 144229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom * java.util.HashSet#contains(java.lang.Object) 145adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 146adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_containsLjava_lang_Object() { 147adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // Test for method boolean java.util.HashSet.contains(java.lang.Object) 148adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("Returned false for valid object", hs.contains(objArray[90])); 149adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("Returned true for invalid Object", !hs 150adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .contains(new Object())); 151adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 152adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project HashSet s = new HashSet(); 153adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project s.add(null); 154adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("Cannot handle null", s.contains(null)); 155adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 156adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 157adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 158229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom * java.util.HashSet#isEmpty() 159adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 160adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_isEmpty() { 161adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // Test for method boolean java.util.HashSet.isEmpty() 162adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("Empty set returned false", new HashSet().isEmpty()); 163adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("Non-empty set returned true", !hs.isEmpty()); 164adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 165adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 166adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 167229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom * java.util.HashSet#iterator() 168adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 169adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_iterator() { 170adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // Test for method java.util.Iterator java.util.HashSet.iterator() 171adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Iterator i = hs.iterator(); 172adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project int x = 0; 173adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project while (i.hasNext()) { 174adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("Failed to iterate over all elements", hs.contains(i 175adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .next())); 176adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ++x; 177adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 178adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("Returned iteration of incorrect size", hs.size() == x); 179adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 180adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project HashSet s = new HashSet(); 181adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project s.add(null); 182adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertNull("Cannot handle null", s.iterator().next()); 183adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 184adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 185adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 186229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom * java.util.HashSet#remove(java.lang.Object) 187adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 188adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_removeLjava_lang_Object() { 189adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // Test for method boolean java.util.HashSet.remove(java.lang.Object) 190adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project int size = hs.size(); 191adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project hs.remove(new Integer(98)); 192adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("Failed to remove element", !hs.contains(new Integer(98))); 193adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("Failed to decrement set size", hs.size() == size - 1); 194adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 195adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project HashSet s = new HashSet(); 196adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project s.add(null); 197adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("Cannot handle null", s.remove(null)); 198adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertFalse(hs.remove(new Integer(-98))); 199adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 200adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 201adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 202229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom * java.util.HashSet#size() 203adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 204adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_size() { 205adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // Test for method int java.util.HashSet.size() 206adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("Returned incorrect size", hs.size() == (objArray.length + 1)); 207adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project hs.clear(); 208adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals("Cleared set returned non-zero size", 0, hs.size()); 209adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 210f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 211adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 212229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom * java.util.HashSet#SerializationTest 213adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 214adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_Serialization() throws Exception{ 215adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project HashSet<String> hs = new HashSet<String>(); 216adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project hs.add("hello"); 217adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project hs.add("world"); 218adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project SerializationTest.verifySelf(hs, comparator); 219adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project SerializationTest.verifyGolden(this, hs, comparator); 220adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 221adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 22244973ad1b6b55b8afa2aba3abad8166e31e772d5Kenny Root /* 22344973ad1b6b55b8afa2aba3abad8166e31e772d5Kenny Root * Bug 26294011 22444973ad1b6b55b8afa2aba3abad8166e31e772d5Kenny Root */ 22544973ad1b6b55b8afa2aba3abad8166e31e772d5Kenny Root public void test_empty_clone() throws Exception { 22644973ad1b6b55b8afa2aba3abad8166e31e772d5Kenny Root HashSet<Integer> emptyHs = new HashSet<Integer>(); 22744973ad1b6b55b8afa2aba3abad8166e31e772d5Kenny Root HashSet<Integer> cloned = (HashSet) emptyHs.clone(); 22844973ad1b6b55b8afa2aba3abad8166e31e772d5Kenny Root cloned.add(new Integer(8)); 22944973ad1b6b55b8afa2aba3abad8166e31e772d5Kenny Root } 23044973ad1b6b55b8afa2aba3abad8166e31e772d5Kenny Root 23160796efea3a74e02aea384b8eb56103ea21b880bPrzemyslaw Szczepaniak public void test_forEach() throws Exception { 23260796efea3a74e02aea384b8eb56103ea21b880bPrzemyslaw Szczepaniak HashSet<Integer> hs = new HashSet<>(); 23360796efea3a74e02aea384b8eb56103ea21b880bPrzemyslaw Szczepaniak hs.add(0); 23460796efea3a74e02aea384b8eb56103ea21b880bPrzemyslaw Szczepaniak hs.add(1); 23560796efea3a74e02aea384b8eb56103ea21b880bPrzemyslaw Szczepaniak hs.add(2); 23660796efea3a74e02aea384b8eb56103ea21b880bPrzemyslaw Szczepaniak 23760796efea3a74e02aea384b8eb56103ea21b880bPrzemyslaw Szczepaniak HashSet<Integer> output = new HashSet<>(); 23860796efea3a74e02aea384b8eb56103ea21b880bPrzemyslaw Szczepaniak hs.forEach(k -> output.add(k)); 23960796efea3a74e02aea384b8eb56103ea21b880bPrzemyslaw Szczepaniak 24060796efea3a74e02aea384b8eb56103ea21b880bPrzemyslaw Szczepaniak assertEquals(hs, output); 24160796efea3a74e02aea384b8eb56103ea21b880bPrzemyslaw Szczepaniak } 24260796efea3a74e02aea384b8eb56103ea21b880bPrzemyslaw Szczepaniak 24360796efea3a74e02aea384b8eb56103ea21b880bPrzemyslaw Szczepaniak public void test_forEach_NPE() throws Exception { 24460796efea3a74e02aea384b8eb56103ea21b880bPrzemyslaw Szczepaniak HashSet<String> set = new HashSet<>(); 24560796efea3a74e02aea384b8eb56103ea21b880bPrzemyslaw Szczepaniak try { 24660796efea3a74e02aea384b8eb56103ea21b880bPrzemyslaw Szczepaniak set.forEach(null); 24760796efea3a74e02aea384b8eb56103ea21b880bPrzemyslaw Szczepaniak fail(); 24860796efea3a74e02aea384b8eb56103ea21b880bPrzemyslaw Szczepaniak } catch(NullPointerException expected) {} 24960796efea3a74e02aea384b8eb56103ea21b880bPrzemyslaw Szczepaniak } 25060796efea3a74e02aea384b8eb56103ea21b880bPrzemyslaw Szczepaniak 25160796efea3a74e02aea384b8eb56103ea21b880bPrzemyslaw Szczepaniak public void test_forEach_CME() throws Exception { 25260796efea3a74e02aea384b8eb56103ea21b880bPrzemyslaw Szczepaniak HashSet<String> set = new HashSet<>(); 25360796efea3a74e02aea384b8eb56103ea21b880bPrzemyslaw Szczepaniak set.add("one"); 25460796efea3a74e02aea384b8eb56103ea21b880bPrzemyslaw Szczepaniak set.add("two"); 25560796efea3a74e02aea384b8eb56103ea21b880bPrzemyslaw Szczepaniak try { 25660796efea3a74e02aea384b8eb56103ea21b880bPrzemyslaw Szczepaniak set.forEach(new java.util.function.Consumer<String>() { 25760796efea3a74e02aea384b8eb56103ea21b880bPrzemyslaw Szczepaniak @Override 25860796efea3a74e02aea384b8eb56103ea21b880bPrzemyslaw Szczepaniak public void accept(String k) {set.add("foo");} 25960796efea3a74e02aea384b8eb56103ea21b880bPrzemyslaw Szczepaniak }); 26060796efea3a74e02aea384b8eb56103ea21b880bPrzemyslaw Szczepaniak fail(); 26160796efea3a74e02aea384b8eb56103ea21b880bPrzemyslaw Szczepaniak } catch(ConcurrentModificationException expected) {} 26260796efea3a74e02aea384b8eb56103ea21b880bPrzemyslaw Szczepaniak } 26360796efea3a74e02aea384b8eb56103ea21b880bPrzemyslaw Szczepaniak 2644c89023ef86f29fa9add7db2574f2169fe842577Narayan Kamath public void test_spliterator() throws Exception { 2654c89023ef86f29fa9add7db2574f2169fe842577Narayan Kamath HashSet<String> hashSet = new HashSet<>(); 2664c89023ef86f29fa9add7db2574f2169fe842577Narayan Kamath List<String> keys = Arrays.asList( 2674c89023ef86f29fa9add7db2574f2169fe842577Narayan Kamath "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p"); 2684c89023ef86f29fa9add7db2574f2169fe842577Narayan Kamath hashSet.addAll(keys); 2694c89023ef86f29fa9add7db2574f2169fe842577Narayan Kamath 2704c89023ef86f29fa9add7db2574f2169fe842577Narayan Kamath ArrayList<String> expectedKeys = new ArrayList<>(keys); 2714c89023ef86f29fa9add7db2574f2169fe842577Narayan Kamath SpliteratorTester.runBasicIterationTests_unordered(hashSet.spliterator(), expectedKeys, 2724c89023ef86f29fa9add7db2574f2169fe842577Narayan Kamath String::compareTo); 2734c89023ef86f29fa9add7db2574f2169fe842577Narayan Kamath SpliteratorTester.runBasicSplitTests(hashSet, expectedKeys); 2744c89023ef86f29fa9add7db2574f2169fe842577Narayan Kamath SpliteratorTester.testSpliteratorNPE(hashSet.spliterator()); 2754c89023ef86f29fa9add7db2574f2169fe842577Narayan Kamath 2764c89023ef86f29fa9add7db2574f2169fe842577Narayan Kamath assertTrue(hashSet.spliterator().hasCharacteristics(Spliterator.DISTINCT)); 2774c89023ef86f29fa9add7db2574f2169fe842577Narayan Kamath SpliteratorTester.runDistinctTests(keys); 2784c89023ef86f29fa9add7db2574f2169fe842577Narayan Kamath } 2794c89023ef86f29fa9add7db2574f2169fe842577Narayan Kamath 280adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 281adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Sets up the fixture, for example, open a network connection. This method 282adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * is called before a test is executed. 283adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 284adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project protected void setUp() { 285740cbf1565815f08d9fb3a0a8d4a581cdc0d2a9dJorg Pleumann objArray = new Object[1000]; 286740cbf1565815f08d9fb3a0a8d4a581cdc0d2a9dJorg Pleumann for (int i = 0; i < objArray.length; i++) { 287740cbf1565815f08d9fb3a0a8d4a581cdc0d2a9dJorg Pleumann objArray[i] = new Integer(i); 288740cbf1565815f08d9fb3a0a8d4a581cdc0d2a9dJorg Pleumann } 289740cbf1565815f08d9fb3a0a8d4a581cdc0d2a9dJorg Pleumann 290adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project hs = new HashSet(); 291740cbf1565815f08d9fb3a0a8d4a581cdc0d2a9dJorg Pleumann for (int i = 0; i < objArray.length; i++) { 292adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project hs.add(objArray[i]); 293740cbf1565815f08d9fb3a0a8d4a581cdc0d2a9dJorg Pleumann } 294f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 295adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project hs.add(null); 296adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 297adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 298adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 299adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Tears down the fixture, for example, close a network connection. This 300adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * method is called after a test is executed. 301adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 302adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project protected void tearDown() { 303740cbf1565815f08d9fb3a0a8d4a581cdc0d2a9dJorg Pleumann hs = null; 304740cbf1565815f08d9fb3a0a8d4a581cdc0d2a9dJorg Pleumann objArray = null; 305adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 306f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 307f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes private static final SerializationTest.SerializableAssert comparator = new 308adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project SerializationTest.SerializableAssert() { 309adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void assertDeserialized(Serializable initial, Serializable deserialized) { 310adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project HashSet<String> initialHs = (HashSet<String>) initial; 311adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project HashSet<String> deseriaHs = (HashSet<String>) deserialized; 312adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals("should be equal", initialHs.size(), deseriaHs.size()); 313adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals("should be equal", initialHs, deseriaHs); 314adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 315f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 316adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project }; 317adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project} 318