1e3cd663de1c5fa4651500289e6df9150667e2db9Jesse Wilson/* 2e3cd663de1c5fa4651500289e6df9150667e2db9Jesse Wilson * Copyright (C) 2011 Google Inc. 3e3cd663de1c5fa4651500289e6df9150667e2db9Jesse Wilson * 4e3cd663de1c5fa4651500289e6df9150667e2db9Jesse Wilson * Licensed under the Apache License, Version 2.0 (the "License"); 5e3cd663de1c5fa4651500289e6df9150667e2db9Jesse Wilson * you may not use this file except in compliance with the License. 6e3cd663de1c5fa4651500289e6df9150667e2db9Jesse Wilson * You may obtain a copy of the License at 7e3cd663de1c5fa4651500289e6df9150667e2db9Jesse Wilson * 8e3cd663de1c5fa4651500289e6df9150667e2db9Jesse Wilson * http://www.apache.org/licenses/LICENSE-2.0 9e3cd663de1c5fa4651500289e6df9150667e2db9Jesse Wilson * 10e3cd663de1c5fa4651500289e6df9150667e2db9Jesse Wilson * Unless required by applicable law or agreed to in writing, software 11e3cd663de1c5fa4651500289e6df9150667e2db9Jesse Wilson * distributed under the License is distributed on an "AS IS" BASIS, 12e3cd663de1c5fa4651500289e6df9150667e2db9Jesse Wilson * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13e3cd663de1c5fa4651500289e6df9150667e2db9Jesse Wilson * See the License for the specific language governing permissions and 14e3cd663de1c5fa4651500289e6df9150667e2db9Jesse Wilson * limitations under the License. 15e3cd663de1c5fa4651500289e6df9150667e2db9Jesse Wilson */ 16e3cd663de1c5fa4651500289e6df9150667e2db9Jesse Wilson 17e3cd663de1c5fa4651500289e6df9150667e2db9Jesse Wilsonpackage libcore.java.util; 18e3cd663de1c5fa4651500289e6df9150667e2db9Jesse Wilson 19e3cd663de1c5fa4651500289e6df9150667e2db9Jesse Wilsonimport java.io.Serializable; 20e3cd663de1c5fa4651500289e6df9150667e2db9Jesse Wilsonimport java.util.Collections; 21e3cd663de1c5fa4651500289e6df9150667e2db9Jesse Wilsonimport java.util.Enumeration; 22e3cd663de1c5fa4651500289e6df9150667e2db9Jesse Wilsonimport java.util.Iterator; 23e3cd663de1c5fa4651500289e6df9150667e2db9Jesse Wilsonimport java.util.ListIterator; 24e3cd663de1c5fa4651500289e6df9150667e2db9Jesse Wilsonimport java.util.NoSuchElementException; 25e3cd663de1c5fa4651500289e6df9150667e2db9Jesse Wilsonimport junit.framework.TestCase; 26e3cd663de1c5fa4651500289e6df9150667e2db9Jesse Wilson 27e3cd663de1c5fa4651500289e6df9150667e2db9Jesse Wilsonpublic final class CollectionsTest extends TestCase { 28e3cd663de1c5fa4651500289e6df9150667e2db9Jesse Wilson 29e3cd663de1c5fa4651500289e6df9150667e2db9Jesse Wilson public void testEmptyEnumeration() { 30e3cd663de1c5fa4651500289e6df9150667e2db9Jesse Wilson Enumeration<Object> e = Collections.emptyEnumeration(); 31e3cd663de1c5fa4651500289e6df9150667e2db9Jesse Wilson assertFalse(e instanceof Serializable); 32e3cd663de1c5fa4651500289e6df9150667e2db9Jesse Wilson assertFalse(e.hasMoreElements()); 33e3cd663de1c5fa4651500289e6df9150667e2db9Jesse Wilson try { 34e3cd663de1c5fa4651500289e6df9150667e2db9Jesse Wilson e.nextElement(); 35e3cd663de1c5fa4651500289e6df9150667e2db9Jesse Wilson fail(); 36e3cd663de1c5fa4651500289e6df9150667e2db9Jesse Wilson } catch (NoSuchElementException expected) { 37e3cd663de1c5fa4651500289e6df9150667e2db9Jesse Wilson } 38e3cd663de1c5fa4651500289e6df9150667e2db9Jesse Wilson } 39e3cd663de1c5fa4651500289e6df9150667e2db9Jesse Wilson 40e3cd663de1c5fa4651500289e6df9150667e2db9Jesse Wilson public void testEmptyIterator() { 41e3cd663de1c5fa4651500289e6df9150667e2db9Jesse Wilson testEmptyIterator(Collections.emptyIterator()); 42e3cd663de1c5fa4651500289e6df9150667e2db9Jesse Wilson testEmptyIterator(Collections.emptyList().iterator()); 43e3cd663de1c5fa4651500289e6df9150667e2db9Jesse Wilson testEmptyIterator(Collections.emptySet().iterator()); 44e3cd663de1c5fa4651500289e6df9150667e2db9Jesse Wilson testEmptyIterator(Collections.emptyMap().keySet().iterator()); 45e3cd663de1c5fa4651500289e6df9150667e2db9Jesse Wilson testEmptyIterator(Collections.emptyMap().entrySet().iterator()); 46e3cd663de1c5fa4651500289e6df9150667e2db9Jesse Wilson testEmptyIterator(Collections.emptyMap().values().iterator()); 47e3cd663de1c5fa4651500289e6df9150667e2db9Jesse Wilson } 48e3cd663de1c5fa4651500289e6df9150667e2db9Jesse Wilson 49e3cd663de1c5fa4651500289e6df9150667e2db9Jesse Wilson private void testEmptyIterator(Iterator<?> i) { 50e3cd663de1c5fa4651500289e6df9150667e2db9Jesse Wilson assertFalse(i instanceof Serializable); 51e3cd663de1c5fa4651500289e6df9150667e2db9Jesse Wilson assertFalse(i.hasNext()); 52e3cd663de1c5fa4651500289e6df9150667e2db9Jesse Wilson try { 53e3cd663de1c5fa4651500289e6df9150667e2db9Jesse Wilson i.next(); 54e3cd663de1c5fa4651500289e6df9150667e2db9Jesse Wilson fail(); 55e3cd663de1c5fa4651500289e6df9150667e2db9Jesse Wilson } catch (NoSuchElementException expected) { 56e3cd663de1c5fa4651500289e6df9150667e2db9Jesse Wilson } 57e3cd663de1c5fa4651500289e6df9150667e2db9Jesse Wilson try { 58e3cd663de1c5fa4651500289e6df9150667e2db9Jesse Wilson i.remove(); 59e3cd663de1c5fa4651500289e6df9150667e2db9Jesse Wilson fail(); 60e3cd663de1c5fa4651500289e6df9150667e2db9Jesse Wilson } catch (IllegalStateException expected) { 61e3cd663de1c5fa4651500289e6df9150667e2db9Jesse Wilson } 62e3cd663de1c5fa4651500289e6df9150667e2db9Jesse Wilson } 63e3cd663de1c5fa4651500289e6df9150667e2db9Jesse Wilson 64e3cd663de1c5fa4651500289e6df9150667e2db9Jesse Wilson public void testEmptyListIterator() { 65e3cd663de1c5fa4651500289e6df9150667e2db9Jesse Wilson testEmptyListIterator(Collections.emptyListIterator()); 66e3cd663de1c5fa4651500289e6df9150667e2db9Jesse Wilson testEmptyListIterator(Collections.emptyList().listIterator()); 67e3cd663de1c5fa4651500289e6df9150667e2db9Jesse Wilson testEmptyListIterator(Collections.emptyList().listIterator(0)); 68e3cd663de1c5fa4651500289e6df9150667e2db9Jesse Wilson } 69e3cd663de1c5fa4651500289e6df9150667e2db9Jesse Wilson 70e3cd663de1c5fa4651500289e6df9150667e2db9Jesse Wilson private void testEmptyListIterator(ListIterator<?> i) { 71e3cd663de1c5fa4651500289e6df9150667e2db9Jesse Wilson assertFalse(i instanceof Serializable); 72e3cd663de1c5fa4651500289e6df9150667e2db9Jesse Wilson assertFalse(i.hasNext()); 73e3cd663de1c5fa4651500289e6df9150667e2db9Jesse Wilson assertFalse(i.hasPrevious()); 74e3cd663de1c5fa4651500289e6df9150667e2db9Jesse Wilson assertEquals(0, i.nextIndex()); 75e3cd663de1c5fa4651500289e6df9150667e2db9Jesse Wilson try { 76e3cd663de1c5fa4651500289e6df9150667e2db9Jesse Wilson i.next(); 77e3cd663de1c5fa4651500289e6df9150667e2db9Jesse Wilson fail(); 78e3cd663de1c5fa4651500289e6df9150667e2db9Jesse Wilson } catch (NoSuchElementException expected) { 79e3cd663de1c5fa4651500289e6df9150667e2db9Jesse Wilson } 80e3cd663de1c5fa4651500289e6df9150667e2db9Jesse Wilson assertEquals(-1, i.previousIndex()); 81e3cd663de1c5fa4651500289e6df9150667e2db9Jesse Wilson try { 82e3cd663de1c5fa4651500289e6df9150667e2db9Jesse Wilson i.previous(); 83e3cd663de1c5fa4651500289e6df9150667e2db9Jesse Wilson fail(); 84e3cd663de1c5fa4651500289e6df9150667e2db9Jesse Wilson } catch (NoSuchElementException expected) { 85e3cd663de1c5fa4651500289e6df9150667e2db9Jesse Wilson } 86e3cd663de1c5fa4651500289e6df9150667e2db9Jesse Wilson try { 87e3cd663de1c5fa4651500289e6df9150667e2db9Jesse Wilson i.add(null); 88e3cd663de1c5fa4651500289e6df9150667e2db9Jesse Wilson fail(); 89e3cd663de1c5fa4651500289e6df9150667e2db9Jesse Wilson } catch (UnsupportedOperationException expected) { 90e3cd663de1c5fa4651500289e6df9150667e2db9Jesse Wilson } 91e3cd663de1c5fa4651500289e6df9150667e2db9Jesse Wilson try { 92e3cd663de1c5fa4651500289e6df9150667e2db9Jesse Wilson i.remove(); 93e3cd663de1c5fa4651500289e6df9150667e2db9Jesse Wilson fail(); 94e3cd663de1c5fa4651500289e6df9150667e2db9Jesse Wilson } catch (IllegalStateException expected) { 95e3cd663de1c5fa4651500289e6df9150667e2db9Jesse Wilson } 96e3cd663de1c5fa4651500289e6df9150667e2db9Jesse Wilson } 97e3cd663de1c5fa4651500289e6df9150667e2db9Jesse Wilson} 98