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