1cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath/* 2cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * Licensed to the Apache Software Foundation (ASF) under one or more 3cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * contributor license agreements. See the NOTICE file distributed with 4cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * this work for additional information regarding copyright ownership. 5cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * The ASF licenses this file to You under the Apache License, Version 2.0 6cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * (the "License"); you may not use this file except in compliance with 7cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * the License. You may obtain a copy of the License at 8cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * 9cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * http://www.apache.org/licenses/LICENSE-2.0 10cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * 11cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * Unless required by applicable law or agreed to in writing, software 12cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * distributed under the License is distributed on an "AS IS" BASIS, 13cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * See the License for the specific language governing permissions and 15cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * limitations under the License. 16cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath */ 17cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 18ab762bb740405d0fefcccf4a0899a234f995be13Narayan Kamathpackage org.apache.harmony.tests.java.util; 19cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 20cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport java.util.AbstractCollection; 21cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport java.util.Arrays; 22cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport java.util.Collection; 23cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport java.util.Iterator; 24cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport junit.framework.TestCase; 25cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 26cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathpublic class AbstractCollectionTest extends TestCase { 27cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 28cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath /** 29cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * java.util.AbstractCollection#add(java.lang.Object) 30cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath */ 31cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath public void test_addLjava_lang_Object() { 32cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath AbstractCollection<Object> ac = new AbstractCollection<Object>() { 33cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 34cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath @Override 35cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath public Iterator<Object> iterator() { 36cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath fail("iterator should not get called"); 37cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath return null; 38cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 39cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 40cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath @Override 41cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath public int size() { 42cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath fail("size should not get called"); 43cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath return 0; 44cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 45cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 46cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath }; 47cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath try { 48cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath ac.add(null); 49cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } catch (UnsupportedOperationException e) { 50cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 51cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 52cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 53cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath /** 54cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * java.util.AbstractCollection#addAll(java.util.Collection) 55cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath */ 56cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath public void test_addAllLjava_util_Collection() { 57cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath final Collection<String> fixtures = Arrays.asList("0", "1", "2"); 58cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath AbstractCollection<String> ac = new AbstractCollection<String>() { 59cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 60cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath @Override 61cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath public boolean add(String object) { 62cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertTrue(fixtures.contains(object)); 63cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath return true; 64cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 65cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 66cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath @Override 67cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath public Iterator<String> iterator() { 68cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath fail("iterator should not get called"); 69cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath return null; 70cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 71cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 72cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath @Override 73cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath public int size() { 74cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath fail("size should not get called"); 75cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath return 0; 76cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 77cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 78cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath }; 79cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertTrue(ac.addAll(fixtures)); 80cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 81cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 82cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath /** 83cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * java.util.AbstractCollection#containsAll(java.util.Collection) 84cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath */ 85cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath public void test_containsAllLjava_util_Collection() { 86cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath final Collection<String> fixtures = Arrays.asList("0", "1", "2"); 87cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath AbstractCollection<String> ac = new AbstractCollection<String>() { 88cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 89cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath @Override 90cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath public boolean contains(Object object) { 91cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertTrue(fixtures.contains(object)); 92cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath return true; 93cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 94cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 95cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath @Override 96cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath public Iterator<String> iterator() { 97cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath fail("iterator should not get called"); 98cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath return null; 99cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 100cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 101cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath @Override 102cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath public int size() { 103cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath fail("size should not get called"); 104cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath return 0; 105cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 106cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 107cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath }; 108cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertTrue(ac.containsAll(fixtures)); 109cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 110cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 111cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath /** 112cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * java.util.AbstractCollection#isEmpty() 113cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath */ 114cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath public void test_isEmpty() { 115cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath final boolean[] sizeCalled = new boolean[1]; 116cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath AbstractCollection<Object> ac = new AbstractCollection<Object>() { 117cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath @Override 118cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath public Iterator<Object> iterator() { 119cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath fail("iterator should not get called"); 120cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath return null; 121cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 122cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 123cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath @Override 124cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath public int size() { 125cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath sizeCalled[0] = true; 126cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath return 0; 127cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 128cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath }; 129cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertTrue(ac.isEmpty()); 130cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertTrue(sizeCalled[0]); 131cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 132cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 133cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath /** 134cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * java.util.AbstractCollection#removeAll(java.util.Collection) 135cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath */ 136cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath public void test_removeAllLjava_util_Collection() { 137cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath final String[] removed = new String[3]; 138cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath AbstractCollection<String> ac = new AbstractCollection<String>() { 139cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 140cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath @Override 141cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath public Iterator<String> iterator() { 142cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath return new Iterator<String>() { 143cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath String[] values = new String[] { "0", "1", "2" }; 144cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath int index; 145cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 146cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath public boolean hasNext() { 147cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath return index < values.length; 148cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 149cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 150cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath public String next() { 151cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath return values[index++]; 152cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 153cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 154cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath public void remove() { 155cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath removed[index - 1] = values[index - 1]; 156cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 157cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 158cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath }; 159cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 160cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 161cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath @Override 162cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath public int size() { 163cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath fail("size should not get called"); 164cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath return 0; 165cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 166cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 167cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath }; 168cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertTrue(ac.removeAll(Arrays.asList("0", "1", "2"))); 169cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath for (String r : removed) { 170cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath if (!"0".equals(r) && !"1".equals(r) && !"2".equals(r)) { 171cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath fail("an unexpected element was removed"); 172cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 173cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 174cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 175cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 176cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath /** 177cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * java.util.AbstractCollection#retainAll(java.util.Collection) 178cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath */ 179cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath public void test_retainAllLjava_util_Collection() { 180cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath final String[] removed = new String[1]; 181cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath AbstractCollection<String> ac = new AbstractCollection<String>() { 182cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 183cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath @Override 184cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath public Iterator<String> iterator() { 185cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath return new Iterator<String>() { 186cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath String[] values = new String[] { "0", "1", "2" }; 187cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath int index; 188cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 189cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath public boolean hasNext() { 190cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath return index < values.length; 191cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 192cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 193cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath public String next() { 194cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath return values[index++]; 195cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 196cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 197cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath public void remove() { 198cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath removed[index - 1] = values[index - 1]; 199cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 200cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 201cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath }; 202cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 203cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 204cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath @Override 205cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath public int size() { 206cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath fail("size should not get called"); 207cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath return 0; 208cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 209cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 210cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath }; 211cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertTrue(ac.retainAll(Arrays.asList("1", "2"))); 212cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertEquals("0", removed[0]); 213cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 214cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 215cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath /** 216cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * java.util.AbstractCollection#toArray() 217cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath */ 218cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath public void test_toArray() { 219cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath AbstractCollection<String> ac = new AbstractCollection<String>() { 220cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath @Override 221cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath public Iterator<String> iterator() { 222cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath return new Iterator<String>() { 223cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath String[] values = new String[] { "0", "1", "2" }; 224cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath int index; 225cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 226cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath public boolean hasNext() { 227cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath return index < values.length; 228cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 229cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 230cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath public String next() { 231cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath return values[index++]; 232cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 233cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 234cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath public void remove() { 235cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath fail("remove should not get called"); 236cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 237cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 238cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath }; 239cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 240cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 241cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath @Override 242cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath public int size() { 243cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath return 3; 244cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 245cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath }; 246cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 247cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath Object[] array = ac.toArray(); 248cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertEquals(3, array.length); 249cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath for (Object o : array) { 250cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath if (!"0".equals(o) && !"1".equals(o) && !"2".equals(o)) { 251cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath fail("an unexpected element was removed"); 252cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 253cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 254cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 255cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 256cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath /** 257cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * java.util.AbstractCollection#toArray(java.lang.Object[]) 258cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath */ 259cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath public void test_toArray$Ljava_lang_Object() { 260cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath AbstractCollection<String> ac = new AbstractCollection<String>() { 261cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath @Override 262cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath public Iterator<String> iterator() { 263cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath return new Iterator<String>() { 264cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath String[] values = new String[] { "0", "1", "2" }; 265cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath int index; 266cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 267cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath public boolean hasNext() { 268cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath return index < values.length; 269cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 270cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 271cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath public String next() { 272cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath return values[index++]; 273cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 274cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 275cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath public void remove() { 276cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath fail("remove should not get called"); 277cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 278cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 279cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath }; 280cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 281cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 282cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath @Override 283cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath public int size() { 284cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath return 3; 285cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 286cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath }; 287cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath try { 288cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath ac.toArray(null); 289cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath fail("No expected NullPointerException"); 290cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } catch (NullPointerException e) { 291cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath // expected 292cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 293cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 294cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath try { 295cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath ac.toArray(new StringBuffer[ac.size()]); 296cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath fail("No expected ArrayStoreException"); 297cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } catch (ArrayStoreException e) { 298cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath // expected 299cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 300cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 301cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath String[] a = new String[3]; 302cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertSame(a, ac.toArray(a)); 303cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 304cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath a = new String[0]; 305cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertNotSame(a, ac.toArray(a)); 306cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath a = ac.toArray(a); 307cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertEquals(3, a.length); 308cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 309cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath CharSequence[] csa = new CharSequence[3]; 310cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath ac.toArray(csa); 311cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertEquals(3, csa.length); 312cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertEquals("0", csa[0]); 313cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertEquals("1", csa[1]); 314cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertEquals("2", csa[2]); 315cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 316cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 317cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath /** 318cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * java.util.AbstractCollection#toString() 319cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath */ 320cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath public void test_toString() { 321cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath // see HARMONY-1522 322cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath // collection that returns null iterator(this is against the spec.) 323cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath AbstractCollection<?> c = new AbstractCollection<Object>() { 324cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath @Override 325cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath public int size() { 326cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath // return non-zero value to pass 'isEmpty' check 327cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath return 1; 328cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 329cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 330cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath @Override 331cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath public Iterator<Object> iterator() { 332cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath // this violates the spec. 333cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath return null; 334cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 335cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath }; 336cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 337cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath try { 338cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath // AbstractCollection.toString() doesn't verify 339cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath // whether iterator() returns null value or not 340cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath c.toString(); 341cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath fail("No expected NullPointerException"); 342cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } catch (NullPointerException e) { 343cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 344cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 345cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath} 346