1adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project/*
2adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *  Licensed to the Apache Software Foundation (ASF) under one or more
3adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *  contributor license agreements.  See the NOTICE file distributed with
4adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *  this work for additional information regarding copyright ownership.
5adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *  The ASF licenses this file to You under the Apache License, Version 2.0
6adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *  (the "License"); you may not use this file except in compliance with
7adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *  the License.  You may obtain a copy of the License at
8adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *
9adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *     http://www.apache.org/licenses/LICENSE-2.0
10adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *
11adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *  Unless required by applicable law or agreed to in writing, software
12adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *  distributed under the License is distributed on an "AS IS" BASIS,
13adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *  See the License for the specific language governing permissions and
15adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *  limitations under the License.
16adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */
17adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
18adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectpackage tests.api.java.util;
19adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
20adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.util.ArrayList;
21adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.util.Collection;
22adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.util.Collections;
23adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.util.Comparator;
24adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.util.Enumeration;
25adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.util.HashMap;
26adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.util.HashSet;
27adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.util.Iterator;
28adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.util.LinkedList;
29adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.util.List;
30adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.util.ListIterator;
31adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.util.Map;
32adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.util.NoSuchElementException;
33adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.util.Random;
34adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.util.RandomAccess;
35adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.util.Set;
36adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.util.SortedSet;
37adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.util.TreeMap;
38adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.util.TreeSet;
395839b909d9528b7726e678a4b696ed37df15d897Jesse Wilsonimport java.util.Arrays;
40adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
41adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport tests.support.Support_CollectionTest;
42adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport tests.support.Support_ListTest;
43adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport tests.support.Support_SetTest;
44adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport tests.support.Support_UnmodifiableCollectionTest;
45adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport tests.support.Support_UnmodifiableMapTest;
46adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
47adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectpublic class CollectionsTest extends junit.framework.TestCase {
48adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
49740cbf1565815f08d9fb3a0a8d4a581cdc0d2a9dJorg Pleumann    private LinkedList ll;
50adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
51740cbf1565815f08d9fb3a0a8d4a581cdc0d2a9dJorg Pleumann    private LinkedList myll;
52adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
53740cbf1565815f08d9fb3a0a8d4a581cdc0d2a9dJorg Pleumann    private LinkedList reversedLinkedList;
54adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
55740cbf1565815f08d9fb3a0a8d4a581cdc0d2a9dJorg Pleumann    private LinkedList myReversedLinkedList;
56adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
57740cbf1565815f08d9fb3a0a8d4a581cdc0d2a9dJorg Pleumann    private Set s;
58adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
59740cbf1565815f08d9fb3a0a8d4a581cdc0d2a9dJorg Pleumann    private Set mys;
60adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
61740cbf1565815f08d9fb3a0a8d4a581cdc0d2a9dJorg Pleumann    private HashMap hm;
62adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
63740cbf1565815f08d9fb3a0a8d4a581cdc0d2a9dJorg Pleumann    private Object[] objArray;
64adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
65740cbf1565815f08d9fb3a0a8d4a581cdc0d2a9dJorg Pleumann    private Object[] myobjArray;
66f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
67adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public static class ReversedMyIntComparator implements Comparator {
68adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public int compare(Object o1, Object o2) {
69adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            return -((MyInt) o1).compareTo((MyInt) o2);
70adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
71adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
72adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public int equals(Object o1, Object o2) {
73adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            return ((MyInt) o1).compareTo((MyInt) o2);
74adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
75adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
76adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
77adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public static class SynchCollectionChecker implements Runnable {
78adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Collection col;
79adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
80adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        int colSize;
81adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
82adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        int totalToRun;
83adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
84adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        boolean offset;
85adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
86adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        volatile int numberOfChecks = 0;
87adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
88adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        boolean result = true;
89adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
90adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        ArrayList normalCountingList;
91adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
92adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        ArrayList offsetCountingList;
93adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
94adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public void run() {
95adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            // ensure the list either contains the numbers from 0 to size-1 or
96adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            // the numbers from size to 2*size -1
97adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            while (numberOfChecks < totalToRun) {
98adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                synchronized (col) {
99adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    if (!(col.isEmpty() || col.containsAll(normalCountingList) || col
100adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                            .containsAll(offsetCountingList)))
101adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                        result = false;
102adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    col.clear();
103adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                }
104adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                if (offset)
105adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    col.addAll(offsetCountingList);
106adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                else
107adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    col.addAll(normalCountingList);
108adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                numberOfChecks++;
109adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            }
110adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
111adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
112adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public SynchCollectionChecker(Collection c, boolean offset,
113adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                int totalChecks) {
114adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            // The collection to test, whether to offset the filler values by
115adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            // size or not, and the min number of iterations to run
116adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            totalToRun = totalChecks;
117adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            col = c;
118adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            colSize = c.size();
119adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            normalCountingList = new ArrayList(colSize);
120adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            offsetCountingList = new ArrayList(colSize);
121adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            for (int counter = 0; counter < colSize; counter++)
122adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                normalCountingList.add(new Integer(counter));
123adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            for (int counter = 0; counter < colSize; counter++)
124adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                offsetCountingList.add(new Integer(counter + colSize));
125adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            col.clear();
126adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            if (offset)
127adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                col.addAll(offsetCountingList);
128adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            else
129adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                col.addAll(normalCountingList);
130adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
131adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
132adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public boolean offset() {
133adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            // answer true iff the list is filled with a counting sequence
134adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            // starting at the value size to 2*size - 1
135adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            // else the list with be filled starting at 0 to size - 1
136adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            return offset;
137adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
138adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
139adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public boolean getResult() {
140adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            // answer true iff no corruption has been found in the collection
141adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            return result;
142adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
143adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
144adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public int getNumberOfChecks() {
145adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            // answer the number of checks that have been performed on the list
146adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            return numberOfChecks;
147adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
148adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
149adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
150adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public static class SynchMapChecker implements Runnable {
151adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Map map;
152adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
153adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        int mapSize;
154adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
155adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        int totalToRun;
156adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
157adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        boolean offset;
158adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
159adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        volatile int numberOfChecks = 0;
160adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
161adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        boolean result = true;
162adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
163adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Map normalCountingMap;
164adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
165adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Map offsetCountingMap;
166adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
167adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public void run() {
168adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            Object firstNormalValue = normalCountingMap.get(new Integer(0));
169adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            Object lastNormalValue = normalCountingMap.get(new Integer(
170adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    mapSize - 1));
171adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            Object firstOffsetValue = offsetCountingMap
172adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    .get(new Integer(mapSize));
173adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            Object lastOffsetValue = offsetCountingMap.get(new Integer(
174adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    2 * mapSize - 1));
175adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            // ensure the list either contains the numbers from 0 to size-1 or
176adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            // the numbers from size to 2*size -1
177adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            while (numberOfChecks < totalToRun) {
178adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                synchronized (map) {
179adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    if (!(map.isEmpty()
180adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                            || (map.containsValue(firstNormalValue) && map
181adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                                    .containsValue(lastNormalValue)) || (map
182adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                            .containsValue(firstOffsetValue) && map
183adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                            .containsValue(lastOffsetValue))))
184adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                        result = false;
185adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    map.clear();
186adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                }
187adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                if (offset)
188adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    map.putAll(offsetCountingMap);
189adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                else
190adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    map.putAll(normalCountingMap);
191adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                numberOfChecks++;
192adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            }
193adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
194adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
195adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public SynchMapChecker(Map m, boolean offset, int totalChecks) {
196adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            // The collection to test, whether to offset the filler values by
197adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            // size or not, and the min number of iterations to run
198adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            Integer myInt;
199adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            totalToRun = totalChecks;
200adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            map = m;
201adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            mapSize = m.size();
202adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            normalCountingMap = new HashMap(mapSize);
203adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            offsetCountingMap = new HashMap(mapSize);
204adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            for (int counter = 0; counter < mapSize; counter++) {
205adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                myInt = new Integer(counter);
206adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                normalCountingMap.put(myInt, myInt);
207adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            }
208adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            for (int counter = 0; counter < mapSize; counter++) {
209adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                myInt = new Integer(counter + mapSize);
210adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                offsetCountingMap.put(myInt, myInt);
211adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            }
212adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            map.clear();
213adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            if (offset)
214adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                map.putAll(offsetCountingMap);
215adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            else
216adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                map.putAll(normalCountingMap);
217adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
218adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
219adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public boolean offset() {
220adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            // answer true iff the list is filled with a counting sequence
221adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            // starting at the value size to 2*size - 1
222adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            // else the list with be filled starting at 0 to size - 1
223adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            return offset;
224adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
225adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
226adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public boolean getResult() {
227adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            // answer true iff no corruption has been found in the collection
228adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            return result;
229adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
230adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
231adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public int getNumberOfChecks() {
232adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            // answer the number of checks that have been performed on the list
233adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            return numberOfChecks;
234adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
235adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
236adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
237adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public static class CollectionTest extends junit.framework.TestCase {
238adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
239adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Collection col; // must contain the Integers 0 to 99
240adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
241adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public CollectionTest(String p1) {
242adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            super(p1);
243adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
244adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
245adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public CollectionTest(String p1, Collection c) {
246adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            super(p1);
247adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            col = c;
248adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
249adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
250adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
251adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
252adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    static class MyInt {
253adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        int data;
254adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
255adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public MyInt(int value) {
256adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            data = value;
257adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
258adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
259adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public int compareTo(MyInt object) {
260adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            return data > object.data ? 1 : (data < object.data ? -1 : 0);
261adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
262adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
263adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
264adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
265229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom     * java.util.Collections#binarySearch(java.util.List,
266adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *        java.lang.Object)
267adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
268adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void test_binarySearchLjava_util_ListLjava_lang_Object() {
269adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // Test for method int
270adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // java.util.Collections.binarySearch(java.util.List, java.lang.Object)
271adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // assumes ll is sorted and has no duplicate keys
272adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        final int llSize = ll.size();
273adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // Ensure a NPE is thrown if the list is NULL
274adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
275adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            Collections.binarySearch(null, new Object());
276adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("Expected NullPointerException for null list parameter");
277adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (NullPointerException e) {
278adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
279adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        for (int counter = 0; counter < llSize; counter++) {
280adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            assertTrue("Returned incorrect binary search item position", ll
281adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    .get(Collections.binarySearch(ll, ll.get(counter))) == ll
282adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    .get(counter));
283adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
284adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
285adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
286adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
287229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom     * java.util.Collections#binarySearch(java.util.List,
288adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *        java.lang.Object, java.util.Comparator)
289adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
290adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void test_binarySearchLjava_util_ListLjava_lang_ObjectLjava_util_Comparator() {
291adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // Test for method int
292adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // java.util.Collections.binarySearch(java.util.List, java.lang.Object,
293adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // java.util.Comparator)
294adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // assumes reversedLinkedList is sorted in reversed order and has no
295adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // duplicate keys
296adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        final int rSize = myReversedLinkedList.size();
297adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        ReversedMyIntComparator comp = new ReversedMyIntComparator();
298adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // Ensure a NPE is thrown if the list is NULL
299adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
300adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            Collections.binarySearch(null, new Object(), comp);
301adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("Expected NullPointerException for null list parameter");
302adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (NullPointerException e) {
303adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
304adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        for (int counter = 0; counter < rSize; counter++) {
305adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            assertTrue(
306adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    "Returned incorrect binary search item position using custom comparator",
307adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    myReversedLinkedList.get(Collections.binarySearch(
308adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                            myReversedLinkedList, myReversedLinkedList
309adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                                    .get(counter), comp)) == myReversedLinkedList
310adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                            .get(counter));
311adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
312adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
313adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
314adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    class Mock_ArrayList extends ArrayList {
315adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        @Override
316adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public
317adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Object set (int index, Object o){
318adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            throw new UnsupportedOperationException();
319adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
320adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
321f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
322adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
323229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom     * java.util.Collections#copy(java.util.List, java.util.List)
324adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
325adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void test_copyLjava_util_ListLjava_util_List() {
326adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // Test for method void java.util.Collections.copy(java.util.List,
327adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // java.util.List)
328adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // Ensure a NPE is thrown if the list is NULL
329adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
330adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            Collections.copy(null, ll);
331adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("Expected NullPointerException for null list first parameter");
332adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (NullPointerException e) {
333adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
334adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
335adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            Collections.copy(ll, null);
336adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("Expected NullPointerException for null list second parameter");
337adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (NullPointerException e) {
338adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
339adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        final int llSize = ll.size();
340adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        ll.set(25, null);
341adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        ArrayList al = new ArrayList();
342adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Integer extraElement = new Integer(1);
343adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Integer extraElement2 = new Integer(2);
344adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        al.addAll(myReversedLinkedList);
345adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        al.add(extraElement);
346adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        al.add(extraElement2);
347adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Collections.copy(al, ll);
348adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        for (int counter = 0; counter < llSize; counter++) {
349adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            assertTrue("Elements do not match after copying collection", al
350adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    .get(counter) == ll.get(counter));
351adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
352adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertTrue("Elements after copied elements affected by copy",
353adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                extraElement == al.get(llSize)
354adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                        && extraElement2 == al.get(llSize + 1));
355f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
356adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        ArrayList ar1 = new ArrayList();
357adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        ArrayList ar2 = new ArrayList();
358f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
359adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        int i;
360f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
361adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        for(i = 0; i < 5; i ++) {
362adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            ar2.add(new Integer(i));
363adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
364f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
365adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        for(i = 0; i < 10; i ++) {
366adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            ar1.add(new Integer(i));
367adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
368f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
369adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
370adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            Collections.copy(ar2, ar1);
371adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("IndexOutOfBoundsException expected");
372adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (IndexOutOfBoundsException e) {
373adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            //expected
374adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
375f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
376adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Mock_ArrayList mal1 = new Mock_ArrayList();
377adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Mock_ArrayList mal2 = new Mock_ArrayList();
378f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
379adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        for(i = 0; i < 10; i ++) {
380adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            mal1.add(new Integer(i));
381adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            mal2.add(new Integer(10 - i));
382adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
383f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
384adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
385adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            Collections.copy(mal1, mal2);
386adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("UnsupportedOperationException expected");
387adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (UnsupportedOperationException e) {
388adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            //expected
389adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
390adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
391adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
392adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
393229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom     * java.util.Collections#copy(java.util.List, java.util.List)
394adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
395adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void test_copy_check_index() {
396adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        ArrayList a1 = new ArrayList();
397adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        a1.add("one");
398adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        a1.add("two");
399adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
400adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        ArrayList a2 = new ArrayList();
401adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        a2.add("aa");
402adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
403adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
404adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            Collections.copy(a2, a1);
405adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("Expected IndexOutOfBoundsException");
406adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (IndexOutOfBoundsException e) {
407adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
408adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
409adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals("aa", a2.get(0));
410adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
411adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
412adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
413229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom     * java.util.Collections#enumeration(java.util.Collection)
414adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
415adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void test_enumerationLjava_util_Collection() {
416adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // Test for method java.util.Enumeration
417adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // java.util.Collections.enumeration(java.util.Collection)
418adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        TreeSet ts = new TreeSet();
419adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        ts.addAll(s);
420adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Enumeration e = Collections.enumeration(ts);
421adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        int count = 0;
422adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        while (e.hasMoreElements())
423adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            assertTrue("Returned incorrect enumeration",
424adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    e.nextElement() == objArray[count++]);
425adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertTrue("Enumeration missing elements: " + count,
426adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                count == objArray.length);
427adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
428adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
429adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
430229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom     * java.util.Collections#fill(java.util.List, java.lang.Object)
431adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
432adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void test_fillLjava_util_ListLjava_lang_Object() {
433adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // Test for method void java.util.Collections.fill(java.util.List,
434adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // java.lang.Object)
435adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
436adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            Collections.fill(null, new Object());
437adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("Expected NullPointerException for null list parameter");
438adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (NullPointerException e) {
439adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
440adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        final int size = ll.size();
441adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Collections.fill(ll, "k");
442adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertTrue("Fill modified list size", size == ll.size());
443adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Iterator i = ll.iterator();
444adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        while (i.hasNext())
445adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            assertEquals("Failed to fill elements", "k", i.next());
446adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
447adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Collections.fill(ll, null);
448adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertTrue("Fill with nulls modified list size", size == ll.size());
449adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        i = ll.iterator();
450adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        while (i.hasNext())
451adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            assertNull("Failed to fill with nulls", i.next());
452f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
453adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Mock_ArrayList mal = new Mock_ArrayList();
454f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
455adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        mal.add("one");
456adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        mal.add("two");
457f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
458adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
459adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            Collections.fill(mal, "value");
460adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("UnsupportedOperationException ecpected");
461adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (UnsupportedOperationException e) {
462adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            //expected
463adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
464adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
465adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
466adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
467229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom     * java.util.Collections#max(java.util.Collection)
468adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
469adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void test_maxLjava_util_Collection() {
470adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // Test for method java.lang.Object
471adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // java.util.Collections.max(java.util.Collection)
472adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // assumes s, objArray are sorted
473adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertTrue("Returned incorrect max element",
474adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                Collections.max(s) == objArray[objArray.length - 1]);
475f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
476adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        ArrayList al = new ArrayList();
477f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
478adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
479adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            Collections.max(al);
480adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("NoSuchElementException expected");
481adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (NoSuchElementException e) {
482adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            //expected
483adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
484f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
485adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        al.add("String");
486adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        al.add(new Integer(1));
487adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        al.add(new Double(3.14));
488f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
489adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
490adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            Collections.max(al);
491adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("ClassCastException expected");
492adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (ClassCastException e) {
493adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            //expected
494adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
495adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
496adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
497adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
498229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom     * java.util.Collections#max(java.util.Collection,
499adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *        java.util.Comparator)
500adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
501adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void test_maxLjava_util_CollectionLjava_util_Comparator() {
502adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // Test for method java.lang.Object
503adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // java.util.Collections.max(java.util.Collection, java.util.Comparator)
504adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // assumes s, objArray are sorted
505adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
506adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // With this custom (backwards) comparator the 'max' element should be
507adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // the smallest in the list
508adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        ReversedMyIntComparator rmic = new ReversedMyIntComparator();
509adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertTrue(
510adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                "Returned incorrect max element using custom comparator",
511adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                Collections.max(mys, rmic) == myobjArray[0]);
512adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
513adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        ArrayList al = new ArrayList();
514f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
515adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
516adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            Collections.max(al, rmic);
517adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("NoSuchElementException expected");
518adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (NoSuchElementException e) {
519adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            //expected
520adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
521f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
522adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        al.add("String");
523adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        al.add(new Integer(1));
524adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        al.add(new Double(3.14));
525f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
526adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
527adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            Collections.max(al, rmic);
528adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("ClassCastException expected");
529adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (ClassCastException e) {
530adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            //expected
531adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
532adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
533adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
534adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
535229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom     * java.util.Collections#min(java.util.Collection)
536adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
537adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void test_minLjava_util_Collection() {
538adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // Test for method java.lang.Object
539adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // java.util.Collections.min(java.util.Collection)
540adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // assumes s, objArray are sorted
541adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertTrue("Returned incorrect min element",
542adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                Collections.min(s) == objArray[0]);
543adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        ArrayList al = new ArrayList();
544f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
545adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
546adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            Collections.min(al);
547adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("NoSuchElementException expected");
548adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (NoSuchElementException e) {
549adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            //expected
550adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
551f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
552adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        al.add("String");
553adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        al.add(new Integer(1));
554adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        al.add(new Double(3.14));
555f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
556adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
557adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            Collections.min(al);
558adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("ClassCastException expected");
559adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (ClassCastException e) {
560adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            //expected
561adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
562adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
563adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
564adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
565229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom     * java.util.Collections#min(java.util.Collection,
566adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *        java.util.Comparator)
567adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
568adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void test_minLjava_util_CollectionLjava_util_Comparator() {
569adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // Test for method java.lang.Object
570adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // java.util.Collections.min(java.util.Collection, java.util.Comparator)
571adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // assumes s, objArray are sorted
572adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
573adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // With this custom (backwards) comparator the 'min' element should be
574adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // the largest in the list
575adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        ReversedMyIntComparator rmic = new ReversedMyIntComparator();
576f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
577adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertTrue(
578adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                "Returned incorrect min element using custom comparator",
579adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                Collections.min(mys, rmic) == myobjArray[objArray.length - 1]);
580adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
581adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        ArrayList al = new ArrayList();
582f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
583adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
584adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            Collections.min(al, rmic);
585adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("NoSuchElementException expected");
586adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (NoSuchElementException e) {
587adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            //expected
588adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
589f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
590adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        al.add("String");
591adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        al.add(new Integer(1));
592adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        al.add(new Double(3.14));
593f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
594adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
595adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            Collections.min(al, rmic);
596adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("ClassCastException expected");
597adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (ClassCastException e) {
598adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            //expected
599adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
600adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
601adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
602adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
603229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom     * java.util.Collections#nCopies(int, java.lang.Object)
604adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
605adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void test_nCopiesILjava_lang_Object() {
606adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // Test for method java.util.List java.util.Collections.nCopies(int,
607adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // java.lang.Object)
608adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Object o = new Object();
609adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        List l = Collections.nCopies(100, o);
610adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Iterator i = l.iterator();
611adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Object first = i.next();
612adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertTrue("Returned list consists of copies not refs", first == o);
613adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals("Returned list of incorrect size", 100, l.size());
614adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertTrue("Contains", l.contains(o));
615adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertTrue("Contains null", !l.contains(null));
616adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertTrue("null nCopies contains", !Collections.nCopies(2, null)
617adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                .contains(o));
618adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertTrue("null nCopies contains null", Collections.nCopies(2, null)
619adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                .contains(null));
620adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        l = Collections.nCopies(20, null);
621adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        i = l.iterator();
622adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        for (int counter = 0; i.hasNext(); counter++) {
623adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            assertTrue("List is too large", counter < 20);
624adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            assertNull("Element should be null: " + counter, i.next());
625adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
626adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
627adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            l.add(o);
628adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("Returned list is not immutable");
629adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (UnsupportedOperationException e) {
630adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            // Correct
631adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            return;
632adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
633adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
634adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            Collections.nCopies(-2, new HashSet());
635adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("nCopies with negative arg didn't throw IAE");
636adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (IllegalArgumentException e) {
637adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            // Expected
638adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
639adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
640adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
641adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
642229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom     * java.util.Collections#reverse(java.util.List)
643adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
644adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void test_reverseLjava_util_List() {
645adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // Test for method void java.util.Collections.reverse(java.util.List)
646adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
647adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            Collections.reverse(null);
648adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("Expected NullPointerException for null list parameter");
649adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (NullPointerException e) {
650adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
651adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Collections.reverse(ll);
652adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Iterator i = ll.iterator();
653adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        int count = objArray.length - 1;
654adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        while (i.hasNext()) {
655adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            assertTrue("Failed to reverse collection",
656adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    i.next() == objArray[count]);
657adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            --count;
658adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
659adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        ArrayList myList = new ArrayList();
660adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        myList.add(null);
661adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        myList.add(new Integer(20));
662adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Collections.reverse(myList);
663adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertTrue("Did not reverse correctly--first element is: "
664adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                + myList.get(0), myList.get(0).equals(new Integer(20)));
665adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertNull("Did not reverse correctly--second element is: "
666adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                + myList.get(1), myList.get(1));
667adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
668adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Mock_ArrayList mal = new Mock_ArrayList();
669f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
670adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        mal.add("First");
671adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        mal.add("Second");
672f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
673adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
674adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            Collections.reverse(mal);
675adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("UnsupportedOperationException expected");
676adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (UnsupportedOperationException e) {
677adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            //expected
678adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
679adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
680adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
681adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
682229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom     * java.util.Collections#reverseOrder()
683adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
684adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void test_reverseOrder() {
685adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // Test for method java.util.Comparator
686adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // java.util.Collections.reverseOrder()
687adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // assumes no duplicates in ll
688adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Comparator comp = Collections.reverseOrder();
689adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        LinkedList list2 = new LinkedList(ll);
690adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Collections.sort(list2, comp);
691adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        final int llSize = ll.size();
692adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        for (int counter = 0; counter < llSize; counter++)
693adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            assertTrue("New comparator does not reverse sorting order", ll
694adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    .get(counter) == list2.get(llSize - counter - 1));
695adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
696adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
697adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
698229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom     * java.util.Collections#shuffle(java.util.List)
699adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
700adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void test_shuffleLjava_util_List() {
701adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // Test for method void java.util.Collections.shuffle(java.util.List)
702adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // Assumes ll is sorted and has no duplicate keys and is large ( > 20
703adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // elements)
704adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
705adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // test shuffling a Sequential Access List
706adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
707adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            Collections.shuffle(null);
708adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("Expected NullPointerException for null list parameter");
709adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (NullPointerException e) {
710adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
711adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        ArrayList al = new ArrayList();
712adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        al.addAll(ll);
713adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        testShuffle(al, "Sequential Access", false);
714adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
715adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // test shuffling a Random Access List
716adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        LinkedList ll2 = new LinkedList();
717adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        ll2.addAll(ll);
718adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        testShuffle(ll2, "Random Access", false);
7195839b909d9528b7726e678a4b696ed37df15d897Jesse Wilson    }
720adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
7215839b909d9528b7726e678a4b696ed37df15d897Jesse Wilson    public void testShuffleRandomAccessWithSeededRandom() {
7225839b909d9528b7726e678a4b696ed37df15d897Jesse Wilson        List<String> list = Arrays.asList("A", "B", "C", "D", "E", "F", "G");
7235839b909d9528b7726e678a4b696ed37df15d897Jesse Wilson        Collections.shuffle(list, new Random(0));
7245839b909d9528b7726e678a4b696ed37df15d897Jesse Wilson        assertEquals(Arrays.asList("B", "A", "D", "C", "G", "E", "F"), list);
7255839b909d9528b7726e678a4b696ed37df15d897Jesse Wilson    }
7265839b909d9528b7726e678a4b696ed37df15d897Jesse Wilson
7275839b909d9528b7726e678a4b696ed37df15d897Jesse Wilson    public void testShuffleWithSeededRandom() {
7285839b909d9528b7726e678a4b696ed37df15d897Jesse Wilson        List<String> list = new LinkedList<String>(Arrays.asList(
7295839b909d9528b7726e678a4b696ed37df15d897Jesse Wilson                "A", "B", "C", "D", "E", "F", "G"));
7305839b909d9528b7726e678a4b696ed37df15d897Jesse Wilson        Collections.shuffle(list, new Random(0));
7315839b909d9528b7726e678a4b696ed37df15d897Jesse Wilson        assertEquals(Arrays.asList("B", "A", "D", "C", "G", "E", "F"), list);
732adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
733adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
734adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    private void testShuffle(List list, String type, boolean random) {
735adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        boolean sorted = true;
736adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        boolean allMatch = true;
737adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        int index = 0;
738adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        final int size = list.size();
739adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
740adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        if (random)
741adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            Collections.shuffle(list);
742adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        else
743adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            Collections.shuffle(list, new Random(200));
744adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
745adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        for (int counter = 0; counter < size - 1; counter++) {
746adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            if (((Integer) list.get(counter)).compareTo((Integer)list.get(counter + 1)) > 0) {
747adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                sorted = false;
748adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            }
749adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
7505839b909d9528b7726e678a4b696ed37df15d897Jesse Wilson        assertFalse("Shuffling sorted " + type
7515839b909d9528b7726e678a4b696ed37df15d897Jesse Wilson                + " list resulted in sorted list (should be unlikely)", sorted);
752adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        for (int counter = 0; counter < 20; counter++) {
753adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            index = 30031 * counter % (size + 1); // 30031 is a large prime
754adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            if (list.get(index) != ll.get(index))
755adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                allMatch = false;
756adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
7575839b909d9528b7726e678a4b696ed37df15d897Jesse Wilson        assertFalse("Too many element positions match in shuffled " + type
7585839b909d9528b7726e678a4b696ed37df15d897Jesse Wilson                + " list", allMatch);
759adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
760adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
761adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
762229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom     * java.util.Collections#shuffle(java.util.List, java.util.Random)
763adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
764adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void test_shuffleLjava_util_ListLjava_util_Random() {
765adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // Test for method void java.util.Collections.shuffle(java.util.List,
766adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // java.util.Random)
767adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // Assumes ll is sorted and has no duplicate keys and is large ( > 20
768adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // elements)
769adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
770adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // test shuffling a Sequential Access List
771adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
772adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            Collections.shuffle(null, new Random(200));
773adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("Expected NullPointerException for null list parameter");
774adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (NullPointerException e) {
775adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
776adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        ArrayList al = new ArrayList();
777adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        al.addAll(ll);
778adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        testShuffle(al, "Sequential Access", true);
779adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
780adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // test shuffling a Random Access List
781adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        LinkedList ll2 = new LinkedList();
782adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        ll2.addAll(ll);
783adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        testShuffle(ll2, "Random Access", true);
784adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
785adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
786adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Mock_ArrayList mal = new Mock_ArrayList();
787f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
788adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        mal.add("First");
789adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        mal.add("Second");
790f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
791adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
792adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            Collections.shuffle(mal, new Random(200));
793adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("UnsupportedOperationException expected");
794adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (UnsupportedOperationException e) {
795adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            //expected
796adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
797adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project}
798adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
799adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
800229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom     * java.util.Collections#singleton(java.lang.Object)
801adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
802adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void test_singletonLjava_lang_Object() {
803adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // Test for method java.util.Set
804adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // java.util.Collections.singleton(java.lang.Object)
805adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Object o = new Object();
806adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Set single = Collections.singleton(o);
807adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals("Wrong size", 1, single.size());
808adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertTrue("Contains", single.contains(o));
809adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertTrue("Contains null", !single.contains(null));
810adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertTrue("null nCopies contains", !Collections.singleton(null)
811adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                .contains(o));
812adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertTrue("null nCopies contains null", Collections.singleton(null)
813adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                .contains(null));
814adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
815adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            single.add("l");
816adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (UnsupportedOperationException e) {
817adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            // Correct
818adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            return;
819adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
820adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        fail("Allowed modification of singleton");
821adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
822adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
823adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
824229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom     * java.util.Collections#sort(java.util.List)
825adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
826adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void test_sortLjava_util_List() {
827adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // Test for method void java.util.Collections.sort(java.util.List)
828adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // assumes no duplicate keys in ll
829adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        final int llSize = ll.size();
830adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        final int rllSize = reversedLinkedList.size();
831adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
832adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                        Collections.sort((List)null);
833adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("Expected NullPointerException for null list parameter");
834adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (NullPointerException e) {
835adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
836adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Collections.shuffle(ll);
837adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Collections.sort(ll);
838adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Collections.sort(reversedLinkedList);
839adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        for (int counter = 0; counter < llSize - 1; counter++) {
840adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            assertTrue(
841adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    "Sorting shuffled list resulted in unsorted list",
842adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    ((Integer) ll.get(counter)).compareTo((Integer)ll.get(counter + 1)) < 0);
843adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
844adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
845adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        for (int counter = 0; counter < rllSize - 1; counter++) {
846adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            assertTrue("Sorting reversed list resulted in unsorted list",
847adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    ((Integer) reversedLinkedList.get(counter))
848adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                            .compareTo((Integer)reversedLinkedList.get(counter + 1)) < 0);
849adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
850adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
851adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        ArrayList al = new ArrayList();
852f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
853adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        al.add("String");
854adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        al.add(new Integer(1));
855adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        al.add(new Double(3.14));
856f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
857adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
858adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            Collections.sort(al);
859adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("ClassCastException expected");
860adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (ClassCastException e) {
861adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            //expected
862adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
863f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
864adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Mock_ArrayList mal = new Mock_ArrayList();
865f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
866adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        mal.add("First");
867adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        mal.add("Second");
868f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
869adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
870adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            Collections.sort(mal);
871adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("UnsupportedOperationException expected");
872adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (UnsupportedOperationException e) {
873adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            //expected
874adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
875adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project   }
876adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
877adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
878229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom     * java.util.Collections#sort(java.util.List, java.util.Comparator)
879adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
880adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void test_sortLjava_util_ListLjava_util_Comparator() {
881adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // Test for method void java.util.Collections.sort(java.util.List,
882adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // java.util.Comparator)
883adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Comparator comp = new ReversedMyIntComparator();
884adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
885adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            Collections.sort(null, comp);
886adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("Expected NullPointerException for null list parameter");
887adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (NullPointerException e) {
888adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
889adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Collections.shuffle(myll);
890adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Collections.sort(myll, comp);
891adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        final int llSize = myll.size();
892adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
893adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        for (int counter = 0; counter < llSize - 1; counter++) {
894adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            assertTrue(
895adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    "Sorting shuffled list with custom comparator resulted in unsorted list",
896adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    ((MyInt) myll.get(counter)).compareTo((MyInt) myll
897adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                            .get(counter + 1)) >= 0);
898adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
899adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
900adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        ArrayList al = new ArrayList();
901f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
902adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        al.add("String");
903adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        al.add(new Integer(1));
904adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        al.add(new Double(3.14));
905f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
906adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
907adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            Collections.sort(al, comp);
908adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("ClassCastException expected");
909adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (ClassCastException e) {
910adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            //expected
911adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
912f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
913adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Mock_ArrayList mal = new Mock_ArrayList();
914f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
915adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        mal.add(new MyInt(1));
916adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        mal.add(new MyInt(2));
917f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
918adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
919adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            Collections.sort(mal, comp);
920adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("UnsupportedOperationException expected");
921adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (UnsupportedOperationException e) {
922adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            //expected
923adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
924adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
925adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
926adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
927229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom     * java.util.Collections#swap(java.util.List, int, int)
928adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
929adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void test_swapLjava_util_ListII() {
930adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // Test for method swap(java.util.List, int, int)
931adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
932adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        LinkedList smallList = new LinkedList();
933adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        for (int i = 0; i < 10; i++) {
934adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            smallList.add(objArray[i]);
935adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
936adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
937adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // test exception cases
938adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
939adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            Collections.swap(smallList, -1, 6);
940adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("Expected IndexOutOfBoundsException for -1");
941adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (IndexOutOfBoundsException e) {
942adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
943adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
944adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
945adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            Collections.swap(smallList, 6, -1);
946adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("Expected IndexOutOfBoundsException for -1");
947adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (IndexOutOfBoundsException e) {
948adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
949adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
950adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
951adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            Collections.swap(smallList, 6, 11);
952adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("Expected IndexOutOfBoundsException for 11");
953adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (IndexOutOfBoundsException e) {
954adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
955adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
956adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
957adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            Collections.swap(smallList, 11, 6);
958adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("Expected IndexOutOfBoundsException for 11");
959adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (IndexOutOfBoundsException e) {
960adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
961adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
962adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // Ensure a NPE is thrown if the list is NULL
963adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
964adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            Collections.swap(null, 1, 1);
965adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("Expected NullPointerException for null list parameter");
966adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (NullPointerException e) {
967adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
968adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
969adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // test with valid parameters
970adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Collections.swap(smallList, 4, 7);
971adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals("Didn't Swap the element at position 4 ", new Integer(7),
972adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                smallList.get(4));
973adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals("Didn't Swap the element at position 7 ", new Integer(4),
974adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                smallList.get(7));
975adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
976adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // make sure other elements didn't get swapped by mistake
977adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        for (int i = 0; i < 10; i++) {
978adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            if (i != 4 && i != 7)
979adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                assertEquals("shouldn't have swapped the element at position "
980adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                        + i, new Integer(i), smallList.get(i));
981adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
982adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
983adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
984adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
985229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom     * java.util.Collections#replaceAll(java.util.List, java.lang.Object,
986adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *        java.lang.Object)
987adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
988adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void test_replaceAllLjava_util_ListLjava_lang_ObjectLjava_lang_Object() {
989adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // Test for method replaceAll(java.util.List, java.lang.Object,
990adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // java.lang.Object)
991adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
992adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        String string1 = "A-B-C-D-E-S-JF-SUB-G-H-I-J-SUBL-K-L-LIST-M-N--S-S-O-SUBLIS-P-Q-R-SUBLIST-S-T-U-V-W-X-Y-Z";
993adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        char[] chars = string1.toCharArray();
994adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        List list = new ArrayList();
995adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        for (int i = 0; i < chars.length; i++) {
996adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            list.add(new Character(chars[i]));
997adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
998adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
999adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
1000adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            Collections.replaceAll(null, new Object(), new Object());
1001adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("Expected NullPointerException for null list parameter");
1002adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (NullPointerException e) {
1003adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
1004adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
1005adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // test replace for an element that is not in the list
1006adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        boolean result = Collections.replaceAll(list, new Character('1'),
1007adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                new Character('Z'));
1008adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertFalse("Test1: Collections.replaceAll() returned wrong result",
1009adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                result);
1010adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals("Test2 : ReplaceAll modified the list incorrectly",
1011adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                string1, getString(list));
1012adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
1013adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // test replace for an element that is in the list
1014adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        result = Collections.replaceAll(list, new Character('S'),
1015adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                new Character('K'));
1016adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertTrue("Test3: Collections.replaceAll() returned wrong result",
1017adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                result);
1018adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals("Test4: ReplaceAll modified the list incorrectly",
1019adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                (string1 = string1.replace('S', 'K')), getString(list));
1020adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
1021adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // test replace for the last element in the list
1022adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        result = Collections.replaceAll(list, new Character('Z'),
1023adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                new Character('N'));
1024adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertTrue("Test5: Collections.replaceAll() returned wrong result",
1025adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                result);
1026adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals("Test6: ReplaceAll modified the list incorrectly",
1027adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                (string1 = string1.replace('Z', 'N')), getString(list));
1028adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
1029adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // test replace for the first element in the list
1030adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        result = Collections.replaceAll(list, new Character('A'),
1031adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                new Character('B'));
1032adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertTrue("Test7: Collections.replaceAll() returned wrong result",
1033adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                result);
1034adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals("Test8: ReplaceAll modified the list incorrectly",
1035adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                (string1 = string1.replace('A', 'B')), getString(list));
1036adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
1037adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // test replacing elements with null
1038adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        LinkedList smallList = new LinkedList();
1039adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        for (int i = 0; i < 10; i++) {
1040adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            smallList.add(objArray[i]);
1041adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
1042adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        smallList.set(4, new Integer(5));
1043adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        result = Collections.replaceAll(smallList, new Integer(5), null);
1044adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertTrue("Test9: Collections.replaceAll() returned wrong result",
1045adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                result);
1046adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        for (int i = 0; i < smallList.size(); i++) {
1047adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            if (i == 4 || i == 5)
1048adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                assertSame("Test9: ReplaceAll didn't replace element at " + i,
1049adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                        null, smallList.get(i));
1050adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            else
1051adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                assertEquals(
1052adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                        "Test9: ReplaceAll shouldn't have replaced element at "
1053adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                                + i, new Integer(i), smallList.get(i));
1054adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
1055adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
1056adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // test replacing null elements with another value
1057adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        result = Collections.replaceAll(smallList, null, new Integer(99));
1058adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertTrue("Test10: Collections.replaceAll() returned wrong result",
1059adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                result);
1060adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
1061adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        for (int i = 0; i < smallList.size(); i++) {
1062adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            if (i == 4 || i == 5)
1063adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                assertEquals("Test10: ReplaceAll didn't replace element at "
1064adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                        + i, new Integer(99), smallList.get(i));
1065adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            else
1066adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                assertEquals(
1067adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                        "Test10: ReplaceAll shouldn't have replaced element at "
1068adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                                + i, new Integer(i), smallList.get(i));
1069adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
1070f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
1071adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Mock_ArrayList mal = new Mock_ArrayList();
1072f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
1073adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        mal.add("First");
1074adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        mal.add("Second");
1075f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
1076adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
1077adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            Collections.replaceAll(mal, "Second", null);
1078adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("UnsupportedOperationException expected");
1079adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (UnsupportedOperationException e) {
1080adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            //expected
1081adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
1082adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
1083adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
1084adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
1085229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom     * java.util.Collections#rotate(java.util.List, int)
1086adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
1087adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void test_rotateLjava_util_ListI() {
1088adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // Test for method rotate(java.util.List, int)
1089adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
1090adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
1091adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            Collections.rotate(null, 0);
1092adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("Expected NullPointerException for null list parameter");
1093adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (NullPointerException e) {
1094adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
1095adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
1096adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // Test rotating a Sequential Access List
1097adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        LinkedList list1 = new LinkedList();
1098adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        for (int i = 0; i < 10; i++) {
1099adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            list1.add(objArray[i]);
1100adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
1101adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        testRotate(list1, "Sequential Access");
1102adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
1103adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // Test rotating a Random Access List
1104adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        ArrayList list2 = new ArrayList();
1105adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        for (int i = 0; i < 10; i++) {
1106adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            list2.add(objArray[i]);
1107adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
1108adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        testRotate(list2, "Random Access");
1109adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
1110adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
1111adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    private void testRotate(List list, String type) {
1112adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // rotate with positive distance
1113adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Collections.rotate(list, 7);
1114adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals("Test1: rotate modified the " + type
1115adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                + " list incorrectly,", "3456789012", getString(list));
1116adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
1117adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // rotate with negative distance
1118adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Collections.rotate(list, -2);
1119adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals("Test2: rotate modified the " + type
1120adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                + " list incorrectly,", "5678901234", getString(list));
1121adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
1122adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // rotate sublist with negative distance
1123adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        List subList = list.subList(1, 5);
1124adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Collections.rotate(subList, -1);
1125adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals("Test3: rotate modified the " + type
1126adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                + " list incorrectly,", "5789601234", getString(list));
1127adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
1128adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // rotate sublist with positive distance
1129adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Collections.rotate(subList, 2);
1130adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals("Test4: rotate modified the " + type
1131adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                + " list incorrectly,", "5967801234", getString(list));
1132adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
1133adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // rotate with positive distance that is larger than list size
1134adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Collections.rotate(list, 23);
1135adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals("Test5: rotate modified the " + type
1136adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                + " list incorrectly,", "2345967801", getString(list));
1137adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
1138adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // rotate with negative distance that is larger than list size
1139adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Collections.rotate(list, -23);
1140adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals("Test6: rotate modified the " + type
1141adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                + " list incorrectly,", "5967801234", getString(list));
1142adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
1143adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // rotate with 0 and equivalent distances, this should make no
1144adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // modifications to the list
1145adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Collections.rotate(list, 0);
1146adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals("Test7: rotate modified the " + type
1147adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                + " list incorrectly,", "5967801234", getString(list));
1148adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
1149adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Collections.rotate(list, -30);
1150adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals("Test8: rotate modified the " + type
1151adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                + " list incorrectly,", "5967801234", getString(list));
1152adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
1153adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Collections.rotate(list, 30);
1154adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals("Test9: rotate modified the " + type
1155adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                + " list incorrectly,", "5967801234", getString(list));
1156adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
1157adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
1158adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    private String getString(List list) {
1159adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        StringBuffer buffer = new StringBuffer();
1160adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        for (int i = 0; i < list.size(); i++) {
1161adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            buffer.append(list.get(i));
1162adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
1163adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        return buffer.toString();
1164adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
1165adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
1166adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
1167229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom     * java.util.Collections#rotate(java.util.List, int)
1168adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
1169adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void test_rotate2() {
1170adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        List list = new ArrayList();
1171adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
1172adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            Collections.rotate(list, 5);
1173adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (UnsupportedOperationException e) {
1174adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("Unexpected UnsupportedOperationException for empty list, "
1175adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    + e);
1176adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
1177adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
1178adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        list.add(0, "zero");
1179adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        list.add(1, "one");
1180adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        list.add(2, "two");
1181adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        list.add(3, "three");
1182adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        list.add(4, "four");
1183adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
1184adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Collections.rotate(list, Integer.MIN_VALUE);
1185adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals("Rotated incorrectly at position 0, ", "three",
1186adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                (String) list.get(0));
1187adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals("Rotated incorrectly at position 1, ", "four",
1188adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                (String) list.get(1));
1189adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals("Rotated incorrectly at position 2, ", "zero",
1190adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                (String) list.get(2));
1191adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals("Rotated incorrectly at position 3, ", "one",
1192adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                (String) list.get(3));
1193adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals("Rotated incorrectly at position 4, ", "two",
1194adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                (String) list.get(4));
1195adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
1196adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
1197adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
1198229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom     * java.util.Collections#indexOfSubList(java.util.List,
1199adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *        java.util.List)
1200adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
1201adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void test_indexOfSubListLjava_util_ListLjava_util_List() {
1202adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // Test for method int indexOfSubList(java.util.List, java.util.List)
1203adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        List list = new ArrayList();
1204adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
1205adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            Collections.indexOfSubList(null, list);
1206adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("Expected NullPointerException for null list first parameter");
1207adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (NullPointerException e) {
1208adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
1209adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
1210adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            Collections.indexOfSubList(list, null);
1211adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("Expected NullPointerException for null list second parameter");
1212adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (NullPointerException e) {
1213adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
1214adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
1215adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        String string1 = "A-B-C-D-E-S-JF-SUB-G-H-I-J-SUBL-K-L-LIST-M-N--S-S-O-SUBLIS-P-Q-R-SUBLIST-S-T-U-V-W-X-Y-Z";
1216adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
1217adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        testwithCharList(1, string1, "B", true);
1218adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        testwithCharList(2, string1, "LIST", true);
1219adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        testwithCharList(3, string1, "SUBLIST", true);
1220adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        testwithCharList(4, string1, "NONE", true);
1221adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        testwithCharList(5, string1, "END", true);
1222adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
1223adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // test boundary conditions:
1224adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        testwithCharList(6, "", "", true);
1225adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        testwithCharList(7, "LIST", "", true);
1226adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        testwithCharList(8, "", "SUBLIST", true);
1227adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
1228adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
1229adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
1230229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom     * java.util.Collections#indexOfSubList(java.util.List,
1231adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *        java.util.List)
1232adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
1233adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void test_indexOfSubList2() {
1234adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        ArrayList sub = new ArrayList();
1235adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        sub.add(new Integer(1));
1236adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        sub.add(new Integer(2));
1237adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        sub.add(new Integer(3));
1238adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
1239adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        ArrayList sub2 = new ArrayList();
1240adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        sub2.add(new Integer(7));
1241adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        sub2.add(new Integer(8));
1242adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
1243adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        ArrayList src = new ArrayList();
1244adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        src.addAll(sub);
1245adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        src.addAll(sub);
1246adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        src.addAll(sub);
1247adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        src.add(new Integer(5));
1248adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        src.add(new Integer(6));
1249adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
1250adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // so src becomes a list like this:
1251adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // [1, 2, 3, 1, 2, 3, 1, 2, 3, 5, 6]
1252adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
1253adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        sub = new ArrayList(src.subList(3, 11));
1254adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // [1, 2, 3, 1, 2, 3, 5, 6]
1255adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals("TestA : Returned wrong indexOfSubList, ", 3, Collections
1256adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                .indexOfSubList(src, sub));
1257adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
1258adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        sub = new ArrayList(src.subList(6, 11));
1259adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // [1, 2, 3, 5, 6]
1260adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals("TestB : Returned wrong indexOfSubList, ", 6, Collections
1261adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                .indexOfSubList(src, sub));
1262adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
1263adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        sub = new ArrayList(src.subList(0, 3));
1264adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // [1, 2, 3]
1265adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals("TestCC : Returned wrong indexOfSubList, ", 0, Collections
1266adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                .indexOfSubList(src, sub));
1267adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
1268adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        sub = new ArrayList(src.subList(9, 11));
1269adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // [5, 6]
1270adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals("TestD : Returned wrong indexOfSubList, ", 9, Collections
1271adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                .indexOfSubList(src, sub));
1272adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
1273adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        sub = new ArrayList(src.subList(10, 11));
1274adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // [6]
1275adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals("TestE : Returned wrong indexOfSubList, ", 10, Collections
1276adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                .indexOfSubList(src, sub));
1277adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
1278adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        sub = new ArrayList(src.subList(0, 11));
1279adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // the whole list
1280adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals("TestH : Returned wrong indexIndexOfSubList, ", 0,
1281adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                Collections.indexOfSubList(src, sub));
1282adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
1283adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // a non-matching list
1284adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals("TestI : Returned wrong indexOfSubList, ", -1, Collections
1285adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                .indexOfSubList(src, sub2));
1286adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
1287adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
128819ab821c3b1da5812590140a21ad9d551a3a3ec5Joshua Bloch
1289adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    private void testwithCharList(int count, String string1, String string2,
1290adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            boolean first) {
1291adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        char[] chars = string1.toCharArray();
1292adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        List list = new ArrayList();
1293adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        for (int i = 0; i < chars.length; i++) {
1294adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            list.add(new Character(chars[i]));
1295adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
1296adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        chars = string2.toCharArray();
1297adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        List sublist = new ArrayList();
1298adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        for (int i = 0; i < chars.length; i++) {
1299adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            sublist.add(new Character(chars[i]));
1300adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
1301adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
1302adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        if (first)
1303adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            assertEquals("Test " + count + ": Returned wrong index:", string1
1304adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    .indexOf(string2), Collections
1305adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    .indexOfSubList(list, sublist));
1306adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        else
1307adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            assertEquals("Test " + count + ": Returned wrong index:", string1
1308adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    .lastIndexOf(string2), Collections.lastIndexOfSubList(list,
1309adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    sublist));
1310adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
1311adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
1312adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
1313229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom     * java.util.Collections#lastIndexOfSubList(java.util.List,
1314adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *        java.util.List)
1315adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
1316adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void test_lastIndexOfSubListLjava_util_ListLjava_util_List() {
1317adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // Test for method int lastIndexOfSubList(java.util.List,
1318adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // java.util.List)
1319adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        String string1 = "A-B-C-D-E-S-JF-SUB-G-H-I-J-SUBL-K-L-LIST-M-N--S-S-O-SUBLIS-P-Q-R-SUBLIST-S-T-U-V-W-X-Y-Z-END";
1320adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
1321adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        List list = new ArrayList();
1322adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
1323adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            Collections.lastIndexOfSubList(null, list);
1324adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("Expected NullPointerException for null list first parameter");
1325adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (NullPointerException e) {
1326adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
1327adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
1328adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            Collections.lastIndexOfSubList(list, null);
1329adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("Expected NullPointerException for null list second parameter");
1330adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (NullPointerException e) {
1331adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
1332adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
1333adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        testwithCharList(1, string1, "B", false);
1334adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        testwithCharList(2, string1, "LIST", false);
1335adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        testwithCharList(3, string1, "SUBLIST", false);
1336adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        testwithCharList(4, string1, "END", false);
1337adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        testwithCharList(5, string1, "NONE", false);
1338adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
1339adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // test boundary conditions
1340adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        testwithCharList(6, "", "", false);
1341adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        testwithCharList(7, "LIST", "", false);
1342adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        testwithCharList(8, "", "SUBLIST", false);
1343adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
1344adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
1345adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
1346229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom     * java.util.Collections#lastIndexOfSubList(java.util.List,
1347adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *        java.util.List)
1348adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
1349adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void test_lastIndexOfSubList2() {
1350adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        ArrayList sub = new ArrayList();
1351adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        sub.add(new Integer(1));
1352adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        sub.add(new Integer(2));
1353adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        sub.add(new Integer(3));
1354adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
1355adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        ArrayList sub2 = new ArrayList();
1356adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        sub2.add(new Integer(7));
1357adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        sub2.add(new Integer(8));
1358adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
1359adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        ArrayList src = new ArrayList();
1360adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        src.addAll(sub);
1361adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        src.addAll(sub);
1362adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        src.addAll(sub);
1363adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        src.add(new Integer(5));
1364adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        src.add(new Integer(6));
1365adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
1366adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // so src is a list like this:
1367adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // [1, 2, 3, 1, 2, 3, 1, 2, 3, 5, 6]
1368adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
1369adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Collections.reverse(src);
1370adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // it becomes like this :
1371adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // [6, 5, 3, 2, 1, 3, 2, 1, 3, 2, 1]
1372adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
1373adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        sub = new ArrayList(src.subList(0, 8));
1374adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // [6, 5, 3, 2, 1, 3, 2, 1]
1375adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals("TestA : Returned wrong lastIndexOfSubList, ", 0,
1376adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                Collections.lastIndexOfSubList(src, sub));
1377adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
1378adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        sub = new ArrayList(src.subList(0, 5));
1379adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // [6, 5, 3, 2, 1]
1380adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals("TestB : Returned wrong lastIndexOfSubList, ", 0,
1381adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                Collections.lastIndexOfSubList(src, sub));
1382adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
1383adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        sub = new ArrayList(src.subList(2, 5));
1384adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // [3, 2, 1]
1385adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals("TestC : Returned wrong lastIndexOfSubList, ", 8,
1386adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                Collections.lastIndexOfSubList(src, sub));
1387adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
1388adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        sub = new ArrayList(src.subList(9, 11));
1389adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // [2, 1]
1390adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals("TestD : Returned wrong lastIndexOfSubList, ", 9,
1391adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                Collections.lastIndexOfSubList(src, sub));
1392adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
1393adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        sub = new ArrayList(src.subList(10, 11));
1394adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // [1]
1395adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals("TestE : Returned wrong lastIndexOfSubList, ", 10,
1396adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                Collections.lastIndexOfSubList(src, sub));
1397adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
1398adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        sub = new ArrayList(src.subList(0, 2));
1399adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // [6, 5]
1400adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals("TestF : Returned wrong lastIndexOfSubList, ", 0,
1401adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                Collections.lastIndexOfSubList(src, sub));
1402adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
1403adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        sub = new ArrayList(src.subList(0, 1));
1404adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // [6]
1405adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals("TestG : Returned wrong lastIndexOfSubList, ", 0,
1406adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                Collections.lastIndexOfSubList(src, sub));
1407adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
1408adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        sub = new ArrayList(src.subList(0, 11));
1409adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // the whole list
1410adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals("TestH : Returned wrong lastIndexOfSubList, ", 0,
1411adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                Collections.lastIndexOfSubList(src, sub));
1412adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
1413adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // a non-matching list
1414adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals("TestI : Returned wrong lastIndexOfSubList, ", -1,
1415adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                Collections.lastIndexOfSubList(src, sub2));
1416adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
1417adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
1418adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
1419229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom     * java.util.Collections#list(java.util.Enumeration)
1420adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
1421adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void test_listLjava_util_Enumeration() {
1422adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // Test for method java.util.ArrayList list(java.util.Enumeration)
1423adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
1424adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Enumeration e = Collections.enumeration(ll);
1425adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        ArrayList al = Collections.list(e);
1426adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
1427adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        int size = al.size();
1428adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals("Wrong size", ll.size(), size);
1429adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
1430adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        for (int i = 0; i < size; i++) {
1431adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            assertEquals("wrong element at position " + i + ",", ll.get(i), al
1432adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    .get(i));
1433adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
1434adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
1435adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
1436adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
1437229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom     * java.util.Collections#synchronizedCollection(java.util.Collection)
1438adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
1439adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void test_synchronizedCollectionLjava_util_Collection() {
1440adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // Test for method java.util.Collection
1441adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // java.util.Collections.synchronizedCollection(java.util.Collection)
1442adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
1443adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        LinkedList smallList = new LinkedList();
1444adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        for (int i = 0; i < 50; i++) {
1445adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            smallList.add(objArray[i]);
1446adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
1447adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
1448adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        final int numberOfLoops = 200;
1449adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Collection synchCol = Collections.synchronizedCollection(smallList);
1450adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // Replacing the previous line with the line below *should* cause the
1451adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // test to fail--the collecion below isn't synchronized
1452adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // Collection synchCol = smallList;
1453adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
1454adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        SynchCollectionChecker normalSynchChecker = new SynchCollectionChecker(
1455adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                synchCol, false, numberOfLoops);
1456adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        SynchCollectionChecker offsetSynchChecker = new SynchCollectionChecker(
1457adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                synchCol, true, numberOfLoops);
1458adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Thread normalThread = new Thread(normalSynchChecker);
1459adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Thread offsetThread = new Thread(offsetSynchChecker);
1460adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        normalThread.start();
1461adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        offsetThread.start();
1462adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        while ((normalSynchChecker.getNumberOfChecks() < numberOfLoops)
1463adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                || (offsetSynchChecker.getNumberOfChecks() < numberOfLoops)) {
1464adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            try {
1465adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                Thread.sleep(10);
1466adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            } catch (InterruptedException e) {
1467adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            }
1468adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
1469adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertTrue("Returned collection corrupted by multiple thread access",
1470adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                normalSynchChecker.getResult()
1471adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                        && offsetSynchChecker.getResult());
1472adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
1473adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            normalThread.join(5000);
1474adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            offsetThread.join(5000);
1475adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (InterruptedException e) {
1476adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("join() interrupted");
1477adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
1478adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
1479adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        synchCol.add(null);
1480adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertTrue("Trying to use nulls in collection failed", synchCol
1481adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                .contains(null));
1482adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
1483adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        smallList = new LinkedList();
1484adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        for (int i = 0; i < 100; i++) {
1485adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            smallList.add(objArray[i]);
1486adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
1487adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        new Support_CollectionTest("", Collections
1488adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                .synchronizedCollection(smallList)).runTest();
1489adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
1490adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
1491adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
1492229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom     * java.util.Collections#synchronizedList(java.util.List)
1493adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
1494adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void test_synchronizedListLjava_util_List() {
1495adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
1496adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            Collections.synchronizedList(null);
1497adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("Expected NullPointerException for null list parameter");
1498adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (NullPointerException e) {
1499adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
1500adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
1501adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // test with a Sequential Access List
1502adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        List smallList = new LinkedList();
1503adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        testSynchronizedList(smallList, "Sequential Access");
1504adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
1505adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        smallList = new LinkedList();
1506adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        List myList;
1507adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        for (int i = 0; i < 100; i++) {
1508adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            smallList.add(objArray[i]);
1509adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
1510adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        myList = Collections.synchronizedList(smallList);
1511adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        new Support_ListTest("", myList).runTest();
1512adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
1513adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // test with a Random Access List
1514adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        smallList = new ArrayList();
1515adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        testSynchronizedList(smallList, "Random Access");
1516adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
1517adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        smallList = new ArrayList();
1518adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        for (int i = 0; i < 100; i++) {
1519adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            smallList.add(objArray[i]);
1520adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
1521adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        myList = Collections.synchronizedList(smallList);
1522adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        new Support_ListTest("", myList).runTest();
1523adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
1524adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
1525adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    private void testSynchronizedList(List smallList, String type) {
1526adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        for (int i = 0; i < 50; i++) {
1527adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            smallList.add(objArray[i]);
1528adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
1529adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        final int numberOfLoops = 200;
1530adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        List synchList = Collections.synchronizedList(smallList);
1531adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        if (type.equals("Random Access"))
1532adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            assertTrue(
1533adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    "Returned synchronized list should implement the Random Access interface",
1534adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    synchList instanceof RandomAccess);
1535adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        else
1536adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            assertTrue(
1537adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    "Returned synchronized list should not implement the Random Access interface",
1538adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    !(synchList instanceof RandomAccess));
1539adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
1540adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // Replacing the previous line with the line below *should* cause the
1541adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // test to fail--the list below isn't synchronized
1542adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // List synchList = smallList;
1543adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        SynchCollectionChecker normalSynchChecker = new SynchCollectionChecker(
1544adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                synchList, false, numberOfLoops);
1545adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        SynchCollectionChecker offsetSynchChecker = new SynchCollectionChecker(
1546adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                synchList, true, numberOfLoops);
1547adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Thread normalThread = new Thread(normalSynchChecker);
1548adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Thread offsetThread = new Thread(offsetSynchChecker);
1549adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        normalThread.start();
1550adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        offsetThread.start();
1551adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        while ((normalSynchChecker.getNumberOfChecks() < numberOfLoops)
1552adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                || (offsetSynchChecker.getNumberOfChecks() < numberOfLoops)) {
1553adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            try {
1554adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                Thread.sleep(10);
1555adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            } catch (InterruptedException e) {
1556adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            }
1557adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
1558adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertTrue(
1559adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                type
1560adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                        + " list tests: Returned list corrupted by multiple thread access",
1561adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                normalSynchChecker.getResult()
1562adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                        && offsetSynchChecker.getResult());
1563adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
1564adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            normalThread.join(5000);
1565adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            offsetThread.join(5000);
1566adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (InterruptedException e) {
1567adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail(type + " list tests: join() interrupted");
1568adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
1569adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        synchList.set(25, null);
1570adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertNull(type + " list tests: Trying to use nulls in list failed",
1571adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                synchList.get(25));
1572adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
1573adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
1574adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
1575229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom     * java.util.Collections#synchronizedMap(java.util.Map)
1576adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
1577adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void test_synchronizedMapLjava_util_Map() {
1578adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // Test for method java.util.Map
1579adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // java.util.Collections.synchronizedMap(java.util.Map)
1580adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        HashMap smallMap = new HashMap();
1581adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        for (int i = 0; i < 50; i++) {
1582adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            smallMap.put(objArray[i], objArray[i]);
1583adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
1584adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
1585adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        final int numberOfLoops = 200;
1586adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Map synchMap = Collections.synchronizedMap(smallMap);
1587adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // Replacing the previous line with the line below should cause the test
1588adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // to fail--the list below isn't synchronized
1589adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // Map synchMap = smallMap;
1590adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
1591adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        SynchMapChecker normalSynchChecker = new SynchMapChecker(synchMap,
1592adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                false, numberOfLoops);
1593adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        SynchMapChecker offsetSynchChecker = new SynchMapChecker(synchMap,
1594adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                true, numberOfLoops);
1595adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Thread normalThread = new Thread(normalSynchChecker);
1596adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Thread offsetThread = new Thread(offsetSynchChecker);
1597adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        normalThread.start();
1598adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        offsetThread.start();
1599adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        while ((normalSynchChecker.getNumberOfChecks() < numberOfLoops)
1600adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                || (offsetSynchChecker.getNumberOfChecks() < numberOfLoops)) {
1601adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            try {
1602adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                Thread.sleep(10);
1603adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            } catch (InterruptedException e) {
1604adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            }
1605adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
1606adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertTrue("Returned map corrupted by multiple thread access",
1607adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                normalSynchChecker.getResult()
1608adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                        && offsetSynchChecker.getResult());
1609adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
1610adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            normalThread.join(5000);
1611adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            offsetThread.join(5000);
1612adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (InterruptedException e) {
1613adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("join() interrupted");
1614adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
1615adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
1616adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // synchronized map does not have to permit null keys or values
1617adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        synchMap.put(new Long(25), null);
1618adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        synchMap.put(null, new Long(30));
1619adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertNull("Trying to use a null value in map failed", synchMap
1620adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                .get(new Long(25)));
1621adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertTrue("Trying to use a null key in map failed", synchMap.get(null)
1622adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                .equals(new Long(30)));
1623adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
1624adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        smallMap = new HashMap();
1625adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        for (int i = 0; i < 100; i++) {
1626adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            smallMap.put(objArray[i].toString(), objArray[i]);
1627adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
1628adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        synchMap = Collections.synchronizedMap(smallMap);
1629adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        new Support_UnmodifiableMapTest("", synchMap).runTest();
1630adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        synchMap.keySet().remove(objArray[50].toString());
1631adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertNull(
1632adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                "Removing a key from the keySet of the synchronized map did not remove it from the synchronized map: ",
1633adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                synchMap.get(objArray[50].toString()));
1634adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertNull(
1635adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                "Removing a key from the keySet of the synchronized map did not remove it from the original map",
1636adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                smallMap.get(objArray[50].toString()));
1637adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
1638adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
1639adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
1640229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom     * java.util.Collections#synchronizedSet(java.util.Set)
1641adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
1642adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void test_synchronizedSetLjava_util_Set() {
1643adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // Test for method java.util.Set
1644adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // java.util.Collections.synchronizedSet(java.util.Set)
1645adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        HashSet smallSet = new HashSet();
1646adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        for (int i = 0; i < 50; i++) {
1647adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            smallSet.add(objArray[i]);
1648adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
1649adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
1650adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        final int numberOfLoops = 200;
1651adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Set synchSet = Collections.synchronizedSet(smallSet);
1652adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // Replacing the previous line with the line below should cause the test
1653adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // to fail--the set below isn't synchronized
1654adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // Set synchSet = smallSet;
1655adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
1656adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        SynchCollectionChecker normalSynchChecker = new SynchCollectionChecker(
1657adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                synchSet, false, numberOfLoops);
1658adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        SynchCollectionChecker offsetSynchChecker = new SynchCollectionChecker(
1659adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                synchSet, true, numberOfLoops);
1660adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Thread normalThread = new Thread(normalSynchChecker);
1661adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Thread offsetThread = new Thread(offsetSynchChecker);
1662adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        normalThread.start();
1663adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        offsetThread.start();
1664adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        while ((normalSynchChecker.getNumberOfChecks() < numberOfLoops)
1665adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                || (offsetSynchChecker.getNumberOfChecks() < numberOfLoops)) {
1666adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            try {
1667adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                Thread.sleep(10);
1668adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            } catch (InterruptedException e) {
1669adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            }
1670adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
1671adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertTrue("Returned set corrupted by multiple thread access",
1672adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                normalSynchChecker.getResult()
1673adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                        && offsetSynchChecker.getResult());
1674adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
1675adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            normalThread.join(5000);
1676adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            offsetThread.join(5000);
1677adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (InterruptedException e) {
1678adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("join() interrupted");
1679adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
1680adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
1681adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Set mySet = Collections.synchronizedSet(smallSet);
1682adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        mySet.add(null);
1683adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertTrue("Trying to use nulls in list failed", mySet.contains(null));
1684adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
1685adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        smallSet = new HashSet();
1686adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        for (int i = 0; i < 100; i++) {
1687adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            smallSet.add(objArray[i]);
1688adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
1689adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        new Support_SetTest("", Collections.synchronizedSet(smallSet))
1690adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                .runTest();
1691adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
1692adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
1693adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
1694229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom     * java.util.Collections#synchronizedSortedMap(java.util.SortedMap)
1695adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
1696adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void test_synchronizedSortedMapLjava_util_SortedMap() {
1697adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // Test for method java.util.SortedMap
1698adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // java.util.Collections.synchronizedSortedMap(java.util.SortedMap)
1699adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        TreeMap smallMap = new TreeMap();
1700adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        for (int i = 0; i < 50; i++) {
1701adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            smallMap.put(objArray[i], objArray[i]);
1702adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
1703adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
1704adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        final int numberOfLoops = 200;
1705adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Map synchMap = Collections.synchronizedMap(smallMap);
1706adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // Replacing the previous line with the line below should cause the test
1707adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // to fail--the list below isn't synchronized
1708adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // Map synchMap = smallMap;
1709adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
1710adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        SynchMapChecker normalSynchChecker = new SynchMapChecker(synchMap,
1711adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                false, numberOfLoops);
1712adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        SynchMapChecker offsetSynchChecker = new SynchMapChecker(synchMap,
1713adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                true, numberOfLoops);
1714adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Thread normalThread = new Thread(normalSynchChecker);
1715adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Thread offsetThread = new Thread(offsetSynchChecker);
1716adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        normalThread.start();
1717adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        offsetThread.start();
1718adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        while ((normalSynchChecker.getNumberOfChecks() < numberOfLoops)
1719adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                || (offsetSynchChecker.getNumberOfChecks() < numberOfLoops)) {
1720adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            try {
1721adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                Thread.sleep(10);
1722adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            } catch (InterruptedException e) {
1723adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            }
1724adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
1725adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertTrue("Returned map corrupted by multiple thread access",
1726adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                normalSynchChecker.getResult()
1727adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                        && offsetSynchChecker.getResult());
1728adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
1729adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            normalThread.join(5000);
1730adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            offsetThread.join(5000);
1731adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (InterruptedException e) {
1732adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("join() interrupted");
1733adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
1734adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
1735adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        smallMap = new TreeMap();
1736adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        for (int i = 0; i < 100; i++) {
1737adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            smallMap.put(objArray[i].toString(), objArray[i]);
1738adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
1739adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        synchMap = Collections.synchronizedSortedMap(smallMap);
1740adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        new Support_UnmodifiableMapTest("", synchMap).runTest();
1741adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        synchMap.keySet().remove(objArray[50].toString());
1742adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertNull(
1743adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                "Removing a key from the keySet of the synchronized map did not remove it from the synchronized map",
1744adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                synchMap.get(objArray[50].toString()));
1745adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertNull(
1746adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                "Removing a key from the keySet of the synchronized map did not remove it from the original map",
1747adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                smallMap.get(objArray[50].toString()));
1748adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
1749adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
1750adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
1751229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom     * java.util.Collections#synchronizedSortedSet(java.util.SortedSet)
1752adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
1753adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void test_synchronizedSortedSetLjava_util_SortedSet() {
1754adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // Test for method java.util.SortedSet
1755adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // java.util.Collections.synchronizedSortedSet(java.util.SortedSet)
1756adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        TreeSet smallSet = new TreeSet();
1757adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        for (int i = 0; i < 50; i++) {
1758adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            smallSet.add(objArray[i]);
1759adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
1760adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
1761adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        final int numberOfLoops = 200;
1762adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Set synchSet = Collections.synchronizedSet(smallSet);
1763adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // Replacing the previous line with the line below should cause the test
1764adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // to fail--the list below isn't synchronized
1765adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // Set synchSet = smallSet;
1766adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
1767adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        SynchCollectionChecker normalSynchChecker = new SynchCollectionChecker(
1768adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                synchSet, false, numberOfLoops);
1769adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        SynchCollectionChecker offsetSynchChecker = new SynchCollectionChecker(
1770adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                synchSet, true, numberOfLoops);
1771adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Thread normalThread = new Thread(normalSynchChecker);
1772adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Thread offsetThread = new Thread(offsetSynchChecker);
1773adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        normalThread.start();
1774adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        offsetThread.start();
1775adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        while ((normalSynchChecker.getNumberOfChecks() < numberOfLoops)
1776adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                || (offsetSynchChecker.getNumberOfChecks() < numberOfLoops)) {
1777adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            try {
1778adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                Thread.sleep(10);
1779adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            } catch (InterruptedException e) {
1780adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            }
1781adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
1782adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertTrue("Returned set corrupted by multiple thread access",
1783adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                normalSynchChecker.getResult()
1784adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                        && offsetSynchChecker.getResult());
1785adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
1786adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            normalThread.join(5000);
1787adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            offsetThread.join(5000);
1788adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (InterruptedException e) {
1789adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("join() interrupted");
1790adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
1791adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
1792adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
1793adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
1794229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom     * java.util.Collections#unmodifiableCollection(java.util.Collection)
1795adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
1796adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void test_unmodifiableCollectionLjava_util_Collection() {
1797adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // Test for method java.util.Collection
1798adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // java.util.Collections.unmodifiableCollection(java.util.Collection)
1799adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        boolean exception = false;
1800adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Collection c = Collections.unmodifiableCollection(ll);
1801adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertTrue("Returned collection is of incorrect size", c.size() == ll
1802adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                .size());
1803adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Iterator i = ll.iterator();
1804adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        while (i.hasNext())
1805adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            assertTrue("Returned list missing elements", c.contains(i.next()));
1806adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
1807adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            c.add(new Object());
1808adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (UnsupportedOperationException e) {
1809adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            exception = true;
1810adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            // Correct
1811adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
1812adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        if (!exception) {
1813adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("Allowed modification of collection");
1814adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
1815f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
1816adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
1817adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            c.remove(new Object());
1818adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("Allowed modification of collection");
1819adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (UnsupportedOperationException e) {
1820adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            // Correct
1821f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes        }
1822adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
1823adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Collection myCollection = new ArrayList();
1824adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        myCollection.add(new Integer(20));
1825adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        myCollection.add(null);
1826adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        c = Collections.unmodifiableCollection(myCollection);
1827adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertTrue("Collection should contain null", c.contains(null));
1828adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertTrue("Collection should contain Integer(20)", c
1829adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                .contains(new Integer(20)));
1830adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
1831adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        myCollection = new ArrayList();
1832adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        for (int counter = 0; counter < 100; counter++) {
1833adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            myCollection.add(objArray[counter]);
1834adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
1835adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        new Support_UnmodifiableCollectionTest("", Collections
1836adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                .unmodifiableCollection(myCollection)).runTest();
1837adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
1838adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
1839adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
1840229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom     * java.util.Collections#unmodifiableList(java.util.List)
1841adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
1842adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void test_unmodifiableListLjava_util_List() {
1843adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // Test for method java.util.List
1844adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // java.util.Collections.unmodifiableList(java.util.List)
1845adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
1846adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // test with a Sequential Access List
1847adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        boolean exception = false;
1848adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        List c = Collections.unmodifiableList(ll);
1849adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // Ensure a NPE is thrown if the list is NULL
1850adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
1851adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            Collections.unmodifiableList(null);
1852adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("Expected NullPointerException for null list parameter");
1853adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (NullPointerException e) {
1854adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
1855adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
1856adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertTrue("Returned list is of incorrect size", c.size() == ll.size());
1857adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertTrue(
1858adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                "Returned List should not implement Random Access interface",
1859adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                !(c instanceof RandomAccess));
1860adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
1861adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Iterator i = ll.iterator();
1862adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        while (i.hasNext())
1863adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            assertTrue("Returned list missing elements", c.contains(i.next()));
1864adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
1865adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            c.add(new Object());
1866adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (UnsupportedOperationException e) {
1867adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            exception = true;
1868adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            // Correct
1869adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
1870adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        if (!exception) {
1871adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("Allowed modification of list");
1872adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
1873f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
1874adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
1875adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            c.remove(new Object());
1876adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("Allowed modification of list");
1877adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (UnsupportedOperationException e) {
1878adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            // Correct
1879f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes        }
1880adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
1881adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // test with a Random Access List
1882adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        List smallList = new ArrayList();
1883adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        smallList.add(null);
1884adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        smallList.add("yoink");
1885adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        c = Collections.unmodifiableList(smallList);
1886adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertNull("First element should be null", c.get(0));
1887adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertTrue("List should contain null", c.contains(null));
1888adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertTrue(
1889adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                "T1. Returned List should implement Random Access interface",
1890adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                c instanceof RandomAccess);
1891adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
1892adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        smallList = new ArrayList();
1893adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        for (int counter = 0; counter < 100; counter++) {
1894adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            smallList.add(objArray[counter]);
1895adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
1896adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        List myList = Collections.unmodifiableList(smallList);
1897adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertTrue("List should not contain null", !myList.contains(null));
1898adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertTrue(
1899adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                "T2. Returned List should implement Random Access interface",
1900adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                myList instanceof RandomAccess);
1901adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
1902adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertTrue("get failed on unmodifiable list", myList.get(50).equals(
1903adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                new Integer(50)));
1904adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        ListIterator listIterator = myList.listIterator();
1905adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        for (int counter = 0; listIterator.hasNext(); counter++) {
1906adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            assertTrue("List has wrong elements", ((Integer) listIterator
1907adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    .next()).intValue() == counter);
1908adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
1909adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        new Support_UnmodifiableCollectionTest("", smallList).runTest();
1910adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
1911adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
1912adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
1913229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom     * java.util.Collections#unmodifiableMap(java.util.Map)
1914adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
1915adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void test_unmodifiableMapLjava_util_Map() {
1916adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // Test for method java.util.Map
1917adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // java.util.Collections.unmodifiableMap(java.util.Map)
1918adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        boolean exception = false;
1919adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Map c = Collections.unmodifiableMap(hm);
1920adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertTrue("Returned map is of incorrect size", c.size() == hm.size());
1921adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Iterator i = hm.keySet().iterator();
1922adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        while (i.hasNext()) {
1923adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            Object x = i.next();
1924adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            assertTrue("Returned map missing elements", c.get(x).equals(
1925adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    hm.get(x)));
1926adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
1927adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
1928adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            c.put(new Object(), "");
1929adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (UnsupportedOperationException e) {
1930adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            exception = true;
1931adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            // Correct
1932adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
1933adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertTrue("Allowed modification of map", exception);
1934adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
1935adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        exception = false;
1936adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
1937adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            c.remove(new Object());
1938adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (UnsupportedOperationException e) {
1939adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            // Correct
1940adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            exception = true;
1941adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
1942adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertTrue("Allowed modification of map", exception);
1943adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
1944adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        exception = false;
1945adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Iterator it = c.entrySet().iterator();
1946adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Map.Entry entry = (Map.Entry) it.next();
1947adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
1948adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            entry.setValue("modified");
1949adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (UnsupportedOperationException e) {
1950adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            // Correct
1951adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            exception = true;
1952adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
1953adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertTrue("Allowed modification of entry", exception);
1954adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
1955adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        exception = false;
1956adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Object[] array = c.entrySet().toArray();
1957adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
1958adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            ((Map.Entry) array[0]).setValue("modified");
1959adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (UnsupportedOperationException e) {
1960adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            // Correct
1961adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            exception = true;
1962adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
1963adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertTrue("Allowed modification of array entry", exception);
1964adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
1965adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        exception = false;
1966adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Map.Entry[] array2 = (Map.Entry[]) c.entrySet().toArray(
1967adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                new Map.Entry[0]);
1968adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
1969adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            array2[0].setValue("modified");
1970adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (UnsupportedOperationException e) {
1971adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            // Correct
1972adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            exception = true;
1973adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
1974adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertTrue("Allowed modification of array entry2", exception);
1975adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
1976adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        HashMap smallMap = new HashMap();
1977adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        smallMap.put(null, new Long(30));
1978adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        smallMap.put(new Long(25), null);
1979adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Map unmodMap = Collections.unmodifiableMap(smallMap);
1980adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
1981adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertNull("Trying to use a null value in map failed", unmodMap
1982adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                .get(new Long(25)));
1983adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertTrue("Trying to use a null key in map failed", unmodMap.get(null)
1984adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                .equals(new Long(30)));
1985adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
1986adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        smallMap = new HashMap();
1987adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        for (int counter = 0; counter < 100; counter++) {
1988adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            smallMap.put(objArray[counter].toString(), objArray[counter]);
1989adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
1990adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        unmodMap = Collections.unmodifiableMap(smallMap);
1991adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        new Support_UnmodifiableMapTest("", unmodMap).runTest();
1992adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
1993adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
1994adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
1995adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
1996229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom     * java.util.Collections#unmodifiableSet(java.util.Set)
1997adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
1998adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void test_unmodifiableSetLjava_util_Set() {
1999adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // Test for method java.util.Set
2000adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // java.util.Collections.unmodifiableSet(java.util.Set)
2001adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        boolean exception = false;
2002adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Set c = Collections.unmodifiableSet(s);
2003adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertTrue("Returned set is of incorrect size", c.size() == s.size());
2004adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Iterator i = ll.iterator();
2005adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        while (i.hasNext())
2006adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            assertTrue("Returned set missing elements", c.contains(i.next()));
2007adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
2008adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            c.add(new Object());
2009adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (UnsupportedOperationException e) {
2010adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            exception = true;
2011adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            // Correct
2012adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
2013adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        if (!exception) {
2014adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("Allowed modification of set");
2015adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
2016adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
2017adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            c.remove(new Object());
2018adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("Allowed modification of set");
2019adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (UnsupportedOperationException e) {
2020adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            // Correct
2021f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes        }
2022adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
2023adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Set mySet = Collections.unmodifiableSet(new HashSet());
2024adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertTrue("Should not contain null", !mySet.contains(null));
2025adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        mySet = Collections.unmodifiableSet(Collections.singleton(null));
2026adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertTrue("Should contain null", mySet.contains(null));
2027adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
2028adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        mySet = new TreeSet();
2029adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        for (int counter = 0; counter < 100; counter++) {
2030adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            mySet.add(objArray[counter]);
2031adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
2032adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        new Support_UnmodifiableCollectionTest("", Collections
2033adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                .unmodifiableSet(mySet)).runTest();
2034adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
2035adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
2036adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
2037229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom     * java.util.Collections#unmodifiableSortedMap(java.util.SortedMap)
2038adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
2039adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void test_unmodifiableSortedMapLjava_util_SortedMap() {
2040adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // Test for method java.util.SortedMap
2041adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // java.util.Collections.unmodifiableSortedMap(java.util.SortedMap)
2042adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        boolean exception = false;
2043adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        TreeMap tm = new TreeMap();
2044adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        tm.putAll(hm);
2045adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Map c = Collections.unmodifiableSortedMap(tm);
2046adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertTrue("Returned map is of incorrect size", c.size() == tm.size());
2047adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Iterator i = hm.keySet().iterator();
2048adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        while (i.hasNext()) {
2049adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            Object x = i.next();
2050adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            assertTrue("Returned map missing elements", c.get(x).equals(
2051adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    tm.get(x)));
2052adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
2053adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
2054adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            c.put(new Object(), "");
2055adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (UnsupportedOperationException e) {
2056adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            exception = true;
2057adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            // Correct
2058adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
2059adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
2060adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        if (!exception) {
2061adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("Allowed modification of map");
2062adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
2063adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
2064adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            c.remove(new Object());
2065adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (UnsupportedOperationException e) {
2066adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            // Correct
2067adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            return;
2068adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
2069adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        fail("Allowed modification of map");
2070adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
2071adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
2072adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
2073229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom     * java.util.Collections#unmodifiableSortedSet(java.util.SortedSet)
2074adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
2075adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void test_unmodifiableSortedSetLjava_util_SortedSet() {
2076adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // Test for method java.util.SortedSet
2077adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // java.util.Collections.unmodifiableSortedSet(java.util.SortedSet)
2078adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        boolean exception = false;
2079adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        SortedSet ss = new TreeSet();
2080adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        ss.addAll(s);
2081adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        SortedSet c = Collections.unmodifiableSortedSet(ss);
2082adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertTrue("Returned set is of incorrect size", c.size() == ss.size());
2083adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Iterator i = ll.iterator();
2084adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        while (i.hasNext())
2085adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            assertTrue("Returned set missing elements", c.contains(i.next()));
2086adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
2087adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            c.add(new Object());
2088adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (UnsupportedOperationException e) {
2089adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            exception = true;
2090adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            // Correct
2091adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
2092adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        if (!exception) {
2093adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("Allowed modification of set");
2094adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
2095adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
2096adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            c.remove(new Object());
2097adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (UnsupportedOperationException e) {
2098adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            // Correct
2099adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            return;
2100adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
2101adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        fail("Allowed modification of set");
2102adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
2103adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
2104adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
2105adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Test unmodifiable objects toString methods
2106adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
2107adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void test_unmodifiable_toString_methods() {
2108adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // Regression for HARMONY-552
2109adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        ArrayList al = new ArrayList();
2110adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        al.add("a");
2111adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        al.add("b");
2112adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Collection uc = Collections.unmodifiableCollection(al);
2113adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals("[a, b]", uc.toString());
2114adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        HashMap m = new HashMap();
2115adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        m.put("one", "1");
2116adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        m.put("two", "2");
2117adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Map um = Collections.unmodifiableMap(m);
211819ab821c3b1da5812590140a21ad9d551a3a3ec5Joshua Bloch        assertTrue("{one=1, two=2}".equals(um.toString()) ||
2119f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes                   "{two=2, one=1}".equals(um.toString()));
2120adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
2121adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
212219ab821c3b1da5812590140a21ad9d551a3a3ec5Joshua Bloch
2123adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void test_singletonListLjava_lang_Object() {
2124adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // Test for method java.util.Set
2125adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // java.util.Collections.singleton(java.lang.Object)
2126adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        String str = "Singleton";
2127adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
2128adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        List single = Collections.singletonList(str);
2129adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals(1, single.size());
2130adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertTrue(single.contains(str));
2131adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertFalse(single.contains(null));
2132adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertFalse(Collections.singletonList(null).contains(str));
2133adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertTrue(Collections.singletonList(null).contains(null));
2134adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
2135adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
2136adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            single.add("New element");
2137adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("UnsupportedOperationException expected");
2138adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (UnsupportedOperationException e) {
2139adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            //expected
2140adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
2141adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
2142adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
2143adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void test_singletonMapLjava_lang_Object() {
2144adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // Test for method java.util.Set
2145adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // java.util.Collections.singleton(java.lang.Object)
2146adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Double key = new Double (3.14);
2147adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        String value = "Fundamental constant";
2148f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
2149adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Map single = Collections.singletonMap(key, value);
2150adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals(1, single.size());
2151adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertTrue(single.containsKey(key));
2152adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertTrue(single.containsValue(value));
2153adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertFalse(single.containsKey(null));
2154adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertFalse(single.containsValue(null));
2155adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertFalse(Collections.singletonMap(null, null).containsKey(key));
2156adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertFalse(Collections.singletonMap(null, null).containsValue(value));
2157adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertTrue(Collections.singletonMap(null, null).containsKey(null));
2158adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertTrue(Collections.singletonMap(null, null).containsValue(null));
2159f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
2160adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
2161adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            single.clear();
2162adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("UnsupportedOperationException expected");
2163adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (UnsupportedOperationException e) {
2164adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            //expected
2165adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
2166f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
2167adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
2168adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            single.put(new Double(1), "one wrong value");
2169adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("UnsupportedOperationException expected");
2170adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (UnsupportedOperationException e) {
2171adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            //expected
2172adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
2173adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
2174f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
2175adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
2176adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Sets up the fixture, for example, open a network connection. This method
2177adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * is called before a test is executed.
2178adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
2179adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    protected void setUp() {
2180740cbf1565815f08d9fb3a0a8d4a581cdc0d2a9dJorg Pleumann        objArray = new Object[1000];
2181740cbf1565815f08d9fb3a0a8d4a581cdc0d2a9dJorg Pleumann        myobjArray = new Object[1000];
2182740cbf1565815f08d9fb3a0a8d4a581cdc0d2a9dJorg Pleumann        for (int i = 0; i < objArray.length; i++) {
2183740cbf1565815f08d9fb3a0a8d4a581cdc0d2a9dJorg Pleumann            objArray[i] = new Integer(i);
2184740cbf1565815f08d9fb3a0a8d4a581cdc0d2a9dJorg Pleumann            myobjArray[i] = new MyInt(i);
2185740cbf1565815f08d9fb3a0a8d4a581cdc0d2a9dJorg Pleumann        }
2186740cbf1565815f08d9fb3a0a8d4a581cdc0d2a9dJorg Pleumann
2187adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        ll = new LinkedList();
2188adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        myll = new LinkedList();
2189adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        s = new HashSet();
2190adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        mys = new HashSet();
2191adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        reversedLinkedList = new LinkedList(); // to be sorted in reverse order
2192adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        myReversedLinkedList = new LinkedList(); // to be sorted in reverse
2193adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // order
2194adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        hm = new HashMap();
2195adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        for (int i = 0; i < objArray.length; i++) {
2196adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            ll.add(objArray[i]);
2197adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            myll.add(myobjArray[i]);
2198adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            s.add(objArray[i]);
2199adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            mys.add(myobjArray[i]);
2200adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            reversedLinkedList.add(objArray[objArray.length - i - 1]);
2201adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            myReversedLinkedList.add(myobjArray[myobjArray.length - i - 1]);
2202adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            hm.put(objArray[i].toString(), objArray[i]);
2203adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
2204adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
2205adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
2206adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
2207adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Tears down the fixture, for example, close a network connection. This
2208adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * method is called after a test is executed.
2209adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
2210adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    protected void tearDown() {
2211740cbf1565815f08d9fb3a0a8d4a581cdc0d2a9dJorg Pleumann        objArray = null;
2212740cbf1565815f08d9fb3a0a8d4a581cdc0d2a9dJorg Pleumann        myobjArray = null;
2213f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
2214740cbf1565815f08d9fb3a0a8d4a581cdc0d2a9dJorg Pleumann        ll = null;
2215740cbf1565815f08d9fb3a0a8d4a581cdc0d2a9dJorg Pleumann        myll = null;
2216740cbf1565815f08d9fb3a0a8d4a581cdc0d2a9dJorg Pleumann        reversedLinkedList = null;
2217740cbf1565815f08d9fb3a0a8d4a581cdc0d2a9dJorg Pleumann        myReversedLinkedList = null;
2218740cbf1565815f08d9fb3a0a8d4a581cdc0d2a9dJorg Pleumann        s = null;
2219740cbf1565815f08d9fb3a0a8d4a581cdc0d2a9dJorg Pleumann        mys = null;
2220740cbf1565815f08d9fb3a0a8d4a581cdc0d2a9dJorg Pleumann        hm = null;
2221adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
2222adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
2223adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    protected void doneSuite() {
2224adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        objArray = null;
2225adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
2226adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project}
2227