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
19adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.util.AbstractSequentialList;
20adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.util.Arrays;
21adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.util.Collection;
22adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.util.Iterator;
23adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.util.LinkedList;
24adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.util.ListIterator;
25adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.util.Vector;
26adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
27adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport junit.framework.TestCase;
28adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
29adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectpublic class AbstractSequentialListTest extends TestCase {
30adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
31adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    @Override
32adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    protected void setUp() throws Exception {
33adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        super.setUp();
34adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
35adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
36adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    @Override
37adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    protected void tearDown() throws Exception {
38adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        super.tearDown();
39adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
40f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
41adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    class ASLT<E> extends AbstractSequentialList<E> {
42adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
43adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        LinkedList<E> l = new LinkedList<E>();
44adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
45adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        @Override
46adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public ListIterator<E> listIterator(int index) {
47adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            return l.listIterator(index);
48adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
49adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
50adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        @Override
51adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public int size() {
52adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            return l.size();
53adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
54adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
55f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
56adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
57229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom     * {@link java.util.AbstractSequentialList#addAll(int, java.util.Collection)}
58adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
59adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void test_addAll_ILCollection() {
60adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        AbstractSequentialList<String> al = new ASLT<String>();
61f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes        String[] someList = { "Aardvark"  ,
62f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes                              "Bear"      ,
63f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes                              "Chimpanzee",
64f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes                              "Duck"      };
65adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Collection<String> c = Arrays.asList(someList);
66adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        al.addAll(c);
67f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes        assertTrue("Should return true", al.addAll(2, c));
68adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
69f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
70adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    class Mock_unsupportedListIterator implements ListIterator {
71adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public void add(Object o) {
72adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            throw new UnsupportedOperationException();
73adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
74adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
75adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public boolean hasNext() {
76f5597e626ecf7949d249dea08c1a2964d890ec11Jesse Wilson            return true;
77adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
78adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
79adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public boolean hasPrevious() {
80adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            return false;
81adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
82adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
83adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public Object next() {
84adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            return null;
85adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
86adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
87adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public int nextIndex() {
88adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            return 0;
89adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
90adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
91adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public Object previous() {
92adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            return null;
93adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
94adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
95adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public int previousIndex() {
96adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            return 0;
97adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
98adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
99adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public void remove() {
100adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
101adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
102adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public void set(Object o) {
103adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            throw new UnsupportedOperationException();
104adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
105adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
106f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
107adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    class Mock_ListIterator<E> implements ListIterator<E> {
108adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        final String wrongElement = "String";
109adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public void add(E o) {
110adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            if (o.equals(wrongElement)) throw new IllegalArgumentException();
111adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            if (o == null) throw new NullPointerException();
112adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
113adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
114adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public boolean hasNext() {
115adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            return false;
116adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
117adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
118adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public boolean hasPrevious() {
119adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            return false;
120adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
121adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
122adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public E next() {
123adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            return null;
124adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
125adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
126adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public int nextIndex() {
127adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            return 0;
128adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
129adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
130adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public E previous() {
131adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            return null;
132adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
133adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
134adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public int previousIndex() {
135adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            return 0;
136adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
137adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
138adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public void remove() {
139adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
140adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
141adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public void set(E o) {
142adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
143adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
144f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
145adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void test_addAllILjava_util_Collection() {
146adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        AbstractSequentialList asl = new AbstractSequentialList() {
147adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
148adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            @Override
149adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            public int size() {
150adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                return 0;
151adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            }
152adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
153adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            @Override
154adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            public ListIterator listIterator(int index) {
155adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                return new Mock_unsupportedListIterator();
156adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            }
157adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        };
158adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Collection strV = new Vector<String>();
159f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
160adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        strV.add("String");
161adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        strV.add("1");
162adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        strV.add("3.14");
163adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
164adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
165adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            asl.addAll(0, strV);
166adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("UnsupportedOperationException expected.");
167adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (UnsupportedOperationException ee) {
168adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            //expected
169adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
170adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
171adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            asl.addAll(0, null);
172adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("NullPointerException expected");
173adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (NullPointerException ee) {
174adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            //expected
175adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
176adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
177adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        //ClassCastException can not be checked for this method.
178adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
179adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        asl = new AbstractSequentialList() {
180adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
181adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            @Override
182adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            public int size() {
183adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                return 0;
184adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            }
185adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
186adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            @Override
187adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            public ListIterator listIterator(int index) {
188adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                return new Mock_ListIterator();
189adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            }
190adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        };
191f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
192adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
193adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            asl.addAll(0, strV);
194adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("IllegalArgumentException expected");
195adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (IllegalArgumentException e) {
196adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            //expected
197adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
198f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
199adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        strV.remove("String");
200adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        strV.add(null);
201adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
202adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
203adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            asl.addAll(0, strV);
204adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("NullPointerException expected");
205adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (NullPointerException e) {
206adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            //expected
207adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
208f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
209adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        strV.remove(null);
210adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        asl.addAll(0, strV);
211f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
212adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        asl = new LinkedList();
213adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
214adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
215adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            asl.addAll(-10, strV);
216adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("IndexOutOfBoundsException expected");
217adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (IndexOutOfBoundsException e) {
218adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            //expected
219adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
220adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
221adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
222adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            asl.addAll(1, strV);
223adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("IndexOutOfBoundsException expected");
224adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (IndexOutOfBoundsException e) {
225adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            //expected
226adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
227adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
228f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
229adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void test_addILjava_lang_Object() {
230adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        AbstractSequentialList asl = new AbstractSequentialList() {
231adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
232adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            @Override
233adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            public int size() {
234adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                return 0;
235adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            }
236adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
237adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            @Override
238adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            public ListIterator listIterator(int index) {
239adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                return new Mock_unsupportedListIterator();
240adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            }
241adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        };
242f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
243adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
244adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            asl.add(0, 1);
245adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("UnsupportedOperationException expected");
246adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (UnsupportedOperationException e) {
247adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            //expected
248adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
249adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
250adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        asl = new AbstractSequentialList() {
251adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
252adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            @Override
253adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            public int size() {
254adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                return 0;
255adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            }
256adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
257adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            @Override
258adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            public ListIterator listIterator(int index) {
259adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                return new Mock_ListIterator();
260adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            }
261adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        };
262f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
263adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
264adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            asl.add(0, "String");
265adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("IllegalArgumentException expected");
266adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (IllegalArgumentException ee) {
267adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            //expected
268adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
269f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
270adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
271adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            asl.add(0, null);
272adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("NullPointerException expected");
273adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (NullPointerException ee) {
274adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            //expected
275adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
276adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
277adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        //ClassCastException can not be checked for this method.
278adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
279adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        asl.add(0, 1);
280f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
281adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        asl = new LinkedList();
282f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
283adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
284adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            asl.add(-1, 1);
285adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("IndexOutOfBoundsException expected");
286adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (IndexOutOfBoundsException ee) {
287adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            //expected
288adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
289adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
290adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        asl.add(0, 1);
291f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
292adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
293adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            asl.add(2, 1);
294adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("IndexOutOfBoundsException expected");
295adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (IndexOutOfBoundsException ee) {
296adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            //expected
297adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
298adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
299f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
300adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void test_getI() {
301adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        final String buff[] = {"0", "1", "2", "3", "4", "5"};
302adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        AbstractSequentialList asl = new AbstractSequentialList() {
303adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            int currPos = 0;
304f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
305adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            @Override
306adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            public int size() {
307adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                return buff.length;
308adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            }
309f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
310adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            @Override
311adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            public ListIterator listIterator(int index) {
312adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                currPos = index;
313adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                return new ListIterator() {
314adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    public void add(Object o) {
315adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    }
316adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
317adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    public boolean hasNext() {
318adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                        return true;
319adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    }
320adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
321adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    public boolean hasPrevious() {
322adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                        return false;
323adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    }
324adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
325adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    public Object next() {
326adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                        return buff[currPos];
327adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    }
328adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
329adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    public int nextIndex() {
330adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                        return 0;
331adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    }
332adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
333adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    public Object previous() {
334adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                        return null;
335adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    }
336adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
337adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    public int previousIndex() {
338adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                        return 0;
339adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    }
340adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
341adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    public void remove() {
342adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    }
343adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
344adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    public void set(Object o) {
345adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    }
346adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                };
347adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            }
348adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        };
349f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
350adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        for (int i = 0; i < buff.length; i++) {
351adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            assertEquals(buff[i], asl.get(i));
352adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
353f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
354adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
355adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            asl.get(asl.size() + 1);
356adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("IndexOutOfBoundsException expected");
357adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (IndexOutOfBoundsException e) {
358adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            //expected
359adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
360f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
361adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
362adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            asl.get(-1);
363adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("IndexOutOfBoundsException expected");
364adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (IndexOutOfBoundsException e) {
365adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            //expected
366adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
367adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
368f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
369adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void test_iterrator() {
370adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        AbstractSequentialList asl = new AbstractSequentialList() {
371adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
372adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            @Override
373adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            public int size() {
374adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                return 0;
375adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            }
376adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
377adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            @Override
378adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            public ListIterator listIterator(int index) {
379adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                return new Mock_unsupportedListIterator();
380adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            }
381adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        };
382f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
383adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertTrue(asl.iterator().getClass().toString().contains("Mock_unsupportedListIterator"));
384adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
385adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        asl = new AbstractSequentialList() {
386adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
387adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            @Override
388adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            public int size() {
389adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                return 0;
390adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            }
391adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
392adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            @Override
393adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            public ListIterator listIterator(int index) {
394adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                return new Mock_ListIterator();
395adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            }
396adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        };
397f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
398adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertTrue(asl.iterator().getClass().toString().contains("Mock_ListIterator"));
399adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
400adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        asl = new AbstractSequentialList() {
401adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
402adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            @Override
403adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            public int size() {
404adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                return 0;
405adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            }
406adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
407adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            @Override
408adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            public ListIterator listIterator(int index) {
409adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                return null;
410adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            }
411adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        };
412adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertNull(asl.iterator());
413adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
414f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
415adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void test_removeI() {
416adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        AbstractSequentialList asl = new AbstractSequentialList() {
417adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            String buff[] = {"0", "1", "2", "3", "4", "5"};
418adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            int currPos = 0;
419f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
420adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            @Override
421adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            public int size() {
422adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                return buff.length;
423adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            }
424f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
425adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            @Override
426adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            public ListIterator listIterator(int index) {
427adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                currPos = index;
428adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                return new ListIterator() {
429adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    public void add(Object o) {
430adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    }
431adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
432adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    public boolean hasNext() {
433adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                        return true;
434adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    }
435adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
436adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    public boolean hasPrevious() {
437adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                        return false;
438adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    }
439adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
440adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    public Object next() {
441adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                        return buff[currPos];
442adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    }
443adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
444adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    public int nextIndex() {
445adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                        return 0;
446adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    }
447adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
448adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    public Object previous() {
449adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                        return null;
450adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    }
451adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
452adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    public int previousIndex() {
453adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                        return 0;
454adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    }
455adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
456adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    public void remove() {
457adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                        buff[currPos] = "removed element";
458adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    }
459adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
460adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    public void set(Object o) {
461adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    }
462adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                };
463adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            }
464adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        };
465f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
466adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
467adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            asl.remove(asl.size() + 1);
468adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("IndexOutOfBoundsException expected");
469adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (IndexOutOfBoundsException e) {
470adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            //expected
471adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
472f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
473adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
474adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            asl.remove(-1);
475adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("IndexOutOfBoundsException expected");
476adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (IndexOutOfBoundsException e) {
477adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            //expected
478adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
479f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
480adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        for(int i = 0; i < asl.size(); i++) {
481adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            assertFalse(asl.get(i).toString().contains("removed element"));
482adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            asl.remove(i);
483adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            assertTrue(asl.get(i).toString().contains("removed element"));
484adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
485adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
486f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
487adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void test_setILjava_lang_Object() {
488adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        AbstractSequentialList asl = new AbstractSequentialList() {
489adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            String buff[] = {"0", "1", "2", "3", "4", "5"};
490adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            final String illegalStr = "Illegal element";
491adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            int currPos = 0;
492f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
493adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            @Override
494adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            public int size() {
495adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                return buff.length;
496adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            }
497f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
498adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            @Override
499adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            public ListIterator listIterator(int index) {
500adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                currPos = index;
501adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                return new ListIterator() {
502adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    public void add(Object o) {
503adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    }
504f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
505adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    public boolean hasNext() {
506adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                        return true;
507adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    }
508f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
509adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    public boolean hasPrevious() {
510adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                        return false;
511adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    }
512f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
513adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    public Object next() {
514adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                        return buff[currPos];
515adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    }
516f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
517adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    public int nextIndex() {
518adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                        return 0;
519adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    }
520f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
521adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    public Object previous() {
522adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                        return null;
523adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    }
524f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
525adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    public int previousIndex() {
526adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                        return 0;
527adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    }
528f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
529adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    public void remove() {
530adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                        buff[currPos] = "removed element";
531adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    }
532f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
533adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    public void set(Object o) {
534adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                        if (o == null) throw new NullPointerException();
535adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                        if (o.equals(illegalStr)) throw new IllegalArgumentException();
536adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                        buff[currPos] = (String) o;
537adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    }
538adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                };
539adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            }
540adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        };
541f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
542adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
543adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            asl.set(asl.size() + 1, "new element");
544adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("IndexOutOfBoundsException expected");
545adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (IndexOutOfBoundsException e) {
546adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            //expected
547adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
548f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
549adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
550adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            asl.set(-1, "new element");
551adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("IndexOutOfBoundsException expected");
552adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (IndexOutOfBoundsException e) {
553adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            //expected
554adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
555f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
556adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        for(int i = 0; i < asl.size(); i++) {
557adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            assertFalse(asl.get(i).toString().contains("new element"));
558adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            asl.set(i, "new element");
559adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            assertTrue(asl.get(i).toString().contains("new element"));
560adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
561f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
562adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
563adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            asl.set(1, new Double(1));
564adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("ClassCastException expected");
565adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (ClassCastException e) {
566adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            //
567adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
568f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
569adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
570adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            asl.set(1, "Illegal element");
571adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("IllegalArgumentException expected");
572adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (IllegalArgumentException ee) {
573adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            //expected
574adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
575f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
576adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
577adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            asl.set(1, null);
578adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("NullPointerException expected");
579adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (NullPointerException ee) {
580adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            //expected
581adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
582adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
583adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        asl = new AbstractSequentialList() {
584adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
585adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            @Override
586adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            public int size() {
587adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                return 0;
588adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            }
589adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
590adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            @Override
591adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            public ListIterator listIterator(int index) {
592adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                return new Mock_unsupportedListIterator();
593adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            }
594adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        };
595f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
596adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
597adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            asl.set(0, "New element");
598adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("UnsupportedOperationException expected");
599adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (UnsupportedOperationException e) {
600adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            //expected
601adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
602adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
603adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project}
604