1561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes/*
2561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *  Licensed to the Apache Software Foundation (ASF) under one or more
3561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *  contributor license agreements.  See the NOTICE file distributed with
4561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *  this work for additional information regarding copyright ownership.
5561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *  The ASF licenses this file to You under the Apache License, Version 2.0
6561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *  (the "License"); you may not use this file except in compliance with
7561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *  the License.  You may obtain a copy of the License at
8561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *
9561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *     http://www.apache.org/licenses/LICENSE-2.0
10561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *
11561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *  Unless required by applicable law or agreed to in writing, software
12561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *  distributed under the License is distributed on an "AS IS" BASIS,
13561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *  See the License for the specific language governing permissions and
15561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *  limitations under the License.
16561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */
17561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
18561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughespackage org.apache.harmony.luni.tests.java.util;
19561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
20561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.io.Serializable;
21561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.lang.reflect.InvocationTargetException;
22561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.lang.reflect.Method;
23561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.util.ArrayDeque;
24561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.util.ArrayList;
25561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.util.Collection;
26561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.util.Collections;
27561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.util.Comparator;
28561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.util.Deque;
29561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.util.Enumeration;
30561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.util.HashMap;
31561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.util.HashSet;
32561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.util.Iterator;
33561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.util.LinkedList;
34561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.util.List;
35561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.util.ListIterator;
36561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.util.Map;
37561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.util.Queue;
38561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.util.Random;
39561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.util.RandomAccess;
40561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.util.Set;
41561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.util.SortedSet;
42561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.util.TreeMap;
43561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.util.TreeSet;
44561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.util.Arrays;
45561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
46561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport org.apache.harmony.testframework.serialization.SerializationTest;
47561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport org.apache.harmony.testframework.serialization.SerializationTest.SerializableAssert;
48561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
49561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport tests.support.Support_CollectionTest;
50561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport tests.support.Support_ListTest;
51561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport tests.support.Support_SetTest;
52561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport tests.support.Support_UnmodifiableCollectionTest;
53561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport tests.support.Support_UnmodifiableMapTest;
54561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport tests.util.SerializationTester;
55561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
56561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughespublic class CollectionsTest extends junit.framework.TestCase {
57561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
58561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	LinkedList ll;
59561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
60561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	LinkedList myll;
61561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
62561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	LinkedList reversedLinkedList;
63561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
64561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	LinkedList myReversedLinkedList;
65561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
66561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	Set s;
67561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
68561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	Set mys;
69561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
70561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	HashMap hm;
71561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
72561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	static Object[] objArray;
73561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
74561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	static Object[] myobjArray;
75561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	{
76561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		objArray = new Object[1000];
77561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		myobjArray = new Object[1000];
78561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		for (int i = 0; i < objArray.length; i++) {
79561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			objArray[i] = new Integer(i);
80561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			myobjArray[i] = new MyInt(i);
81561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
82561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	}
83561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
84561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	public static class ReversedMyIntComparator implements Comparator {
85561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		public int compare(Object o1, Object o2) {
86561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			return -((MyInt) o1).compareTo((MyInt) o2);
87561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
88561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
89561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		public int equals(Object o1, Object o2) {
90561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			return ((MyInt) o1).compareTo((MyInt) o2);
91561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
92561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	}
93561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
94561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	public static class SynchCollectionChecker implements Runnable {
95561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		Collection col;
96561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
97561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		int colSize;
98561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
99561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		int totalToRun;
100561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
101561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		boolean offset;
102561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
103561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		volatile int numberOfChecks = 0;
104561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
105561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		boolean result = true;
106561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
107561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		ArrayList normalCountingList;
108561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
109561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		ArrayList offsetCountingList;
110561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
111561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		public void run() {
112561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			// ensure the list either contains the numbers from 0 to size-1 or
113561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			// the numbers from size to 2*size -1
114561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			while (numberOfChecks < totalToRun) {
115561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				synchronized (col) {
116561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes					if (!(col.isEmpty() || col.containsAll(normalCountingList) || col
117561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes							.containsAll(offsetCountingList)))
118561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes						result = false;
119561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes					col.clear();
120561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				}
121561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				if (offset)
122561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes					col.addAll(offsetCountingList);
123561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				else
124561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes					col.addAll(normalCountingList);
125561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				numberOfChecks++;
126561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			}
127561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
128561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
129561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		public SynchCollectionChecker(Collection c, boolean offset,
130561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				int totalChecks) {
131561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			// The collection to test, whether to offset the filler values by
132561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			// size or not, and the min number of iterations to run
133561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			totalToRun = totalChecks;
134561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			col = c;
135561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			colSize = c.size();
136561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			normalCountingList = new ArrayList(colSize);
137561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			offsetCountingList = new ArrayList(colSize);
138561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			for (int counter = 0; counter < colSize; counter++)
139561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				normalCountingList.add(new Integer(counter));
140561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			for (int counter = 0; counter < colSize; counter++)
141561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				offsetCountingList.add(new Integer(counter + colSize));
142561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			col.clear();
143561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			if (offset)
144561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				col.addAll(offsetCountingList);
145561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			else
146561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				col.addAll(normalCountingList);
147561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
148561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
149561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		public boolean offset() {
150561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			// answer true iff the list is filled with a counting sequence
151561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			// starting at the value size to 2*size - 1
152561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			// else the list with be filled starting at 0 to size - 1
153561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			return offset;
154561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
155561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
156561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		public boolean getResult() {
157561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			// answer true iff no corruption has been found in the collection
158561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			return result;
159561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
160561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
161561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		public int getNumberOfChecks() {
162561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			// answer the number of checks that have been performed on the list
163561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			return numberOfChecks;
164561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
165561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	}
166561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
167561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	public static class SynchMapChecker implements Runnable {
168561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		Map map;
169561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
170561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		int mapSize;
171561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
172561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		int totalToRun;
173561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
174561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		boolean offset;
175561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
176561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		volatile int numberOfChecks = 0;
177561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
178561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		boolean result = true;
179561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
180561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		Map normalCountingMap;
181561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
182561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		Map offsetCountingMap;
183561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
184561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		public void run() {
185561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			Object firstNormalValue = normalCountingMap.get(new Integer(0));
186561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			Object lastNormalValue = normalCountingMap.get(new Integer(
187561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes					mapSize - 1));
188561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			Object firstOffsetValue = offsetCountingMap
189561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes					.get(new Integer(mapSize));
190561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			Object lastOffsetValue = offsetCountingMap.get(new Integer(
191561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes					2 * mapSize - 1));
192561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			// ensure the list either contains the numbers from 0 to size-1 or
193561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			// the numbers from size to 2*size -1
194561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			while (numberOfChecks < totalToRun) {
195561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				synchronized (map) {
196561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes					if (!(map.isEmpty()
197561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes							|| (map.containsValue(firstNormalValue) && map
198561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes									.containsValue(lastNormalValue)) || (map
199561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes							.containsValue(firstOffsetValue) && map
200561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes							.containsValue(lastOffsetValue))))
201561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes						result = false;
202561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes					map.clear();
203561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				}
204561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				if (offset)
205561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes					map.putAll(offsetCountingMap);
206561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				else
207561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes					map.putAll(normalCountingMap);
208561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				numberOfChecks++;
209561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			}
210561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
211561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
212561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		public SynchMapChecker(Map m, boolean offset, int totalChecks) {
213561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			// The collection to test, whether to offset the filler values by
214561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			// size or not, and the min number of iterations to run
215561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			Integer myInt;
216561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			totalToRun = totalChecks;
217561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			map = m;
218561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			mapSize = m.size();
219561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			normalCountingMap = new HashMap(mapSize);
220561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			offsetCountingMap = new HashMap(mapSize);
221561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			for (int counter = 0; counter < mapSize; counter++) {
222561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				myInt = new Integer(counter);
223561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				normalCountingMap.put(myInt, myInt);
224561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			}
225561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			for (int counter = 0; counter < mapSize; counter++) {
226561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				myInt = new Integer(counter + mapSize);
227561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				offsetCountingMap.put(myInt, myInt);
228561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			}
229561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			map.clear();
230561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			if (offset)
231561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				map.putAll(offsetCountingMap);
232561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			else
233561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				map.putAll(normalCountingMap);
234561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
235561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
236561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		public boolean offset() {
237561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			// answer true iff the list is filled with a counting sequence
238561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			// starting at the value size to 2*size - 1
239561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			// else the list with be filled starting at 0 to size - 1
240561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			return offset;
241561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
242561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
243561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		public boolean getResult() {
244561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			// answer true iff no corruption has been found in the collection
245561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			return result;
246561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
247561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
248561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		public int getNumberOfChecks() {
249561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			// answer the number of checks that have been performed on the list
250561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			return numberOfChecks;
251561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
252561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	}
253561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
254561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	public static class CollectionTest extends junit.framework.TestCase {
255561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
256561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		Collection col; // must contain the Integers 0 to 99
257561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
258561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		public CollectionTest(String p1) {
259561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			super(p1);
260561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
261561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
262561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		public CollectionTest(String p1, Collection c) {
263561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			super(p1);
264561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			col = c;
265561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
266561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
267561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	}
268561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
269561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	static class MyInt {
270561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		int data;
271561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
272561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		public MyInt(int value) {
273561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			data = value;
274561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
275561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
276561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		public int compareTo(MyInt object) {
277561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			return data > object.data ? 1 : (data < object.data ? -1 : 0);
278561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
279561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	}
280561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
281561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	/**
282561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 * @tests java.util.Collections#binarySearch(java.util.List,
283561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 *        java.lang.Object)
284561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 */
285561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	public void test_binarySearchLjava_util_ListLjava_lang_Object() {
286561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// Test for method int
287561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// java.util.Collections.binarySearch(java.util.List, java.lang.Object)
288561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// assumes ll is sorted and has no duplicate keys
289561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		final int llSize = ll.size();
290561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// Ensure a NPE is thrown if the list is NULL
291561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		try {
292561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			Collections.binarySearch(null, new Object());
293561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			fail("Expected NullPointerException for null list parameter");
294561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		} catch (NullPointerException e) {
295561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            //Expected
296561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
297561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		for (int counter = 0; counter < llSize; counter++) {
298561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			assertEquals("Returned incorrect binary search item position", ll
299561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    .get(counter), ll.get(Collections.binarySearch(ll, ll
300561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    .get(counter))));
301561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
302561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	}
303561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
304561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	/**
305561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 * @tests java.util.Collections#binarySearch(java.util.List,
306561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 *        java.lang.Object, java.util.Comparator)
307561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 */
308561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	public void test_binarySearchLjava_util_ListLjava_lang_ObjectLjava_util_Comparator() {
309561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// Test for method int
310561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// java.util.Collections.binarySearch(java.util.List, java.lang.Object,
311561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// java.util.Comparator)
312561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// assumes reversedLinkedList is sorted in reversed order and has no
313561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// duplicate keys
314561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		final int rSize = myReversedLinkedList.size();
315561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		ReversedMyIntComparator comp = new ReversedMyIntComparator();
316561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// Ensure a NPE is thrown if the list is NULL
317561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		try {
318561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			Collections.binarySearch(null, new Object(), comp);
319561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			fail("Expected NullPointerException for null list parameter");
320561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		} catch (NullPointerException e) {
321561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            //Expected
322561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
323561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		for (int counter = 0; counter < rSize; counter++) {
324561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			assertEquals(
325561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    "Returned incorrect binary search item position using custom comparator",
326561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    myReversedLinkedList.get(counter), myReversedLinkedList
327561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                            .get(Collections.binarySearch(myReversedLinkedList,
328561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                                    myReversedLinkedList.get(counter), comp)));
329561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
330561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	}
331561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
332561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	/**
333561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 * @tests java.util.Collections#copy(java.util.List, java.util.List)
334561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 */
335561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	public void test_copyLjava_util_ListLjava_util_List() {
336561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// Test for method void java.util.Collections.copy(java.util.List,
337561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// java.util.List)
338561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// Ensure a NPE is thrown if the list is NULL
339561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		try {
340561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			Collections.copy(null, ll);
341561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			fail("Expected NullPointerException for null list first parameter");
342561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		} catch (NullPointerException e) {
343561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		    //Expected
344561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
345561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		try {
346561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			Collections.copy(ll, null);
347561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			fail("Expected NullPointerException for null list second parameter");
348561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		} catch (NullPointerException e) {
349561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            //Expected
350561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
351561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		final int llSize = ll.size();
352561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		ll.set(25, null);
353561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		ArrayList al = new ArrayList();
354561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		Integer extraElement = new Integer(1);
355561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		Integer extraElement2 = new Integer(2);
356561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		al.addAll(myReversedLinkedList);
357561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		al.add(extraElement);
358561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		al.add(extraElement2);
359561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		Collections.copy(al, ll);
360561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		for (int counter = 0; counter < llSize; counter++) {
361561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			assertEquals("Elements do not match after copying collection", ll
362561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    .get(counter), al.get(counter));
363561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
364561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertTrue("Elements after copied elements affected by copy",
365561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				extraElement == al.get(llSize)
366561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes						&& extraElement2 == al.get(llSize + 1));
367561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	}
368561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
369561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	/**
370561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 * @tests java.util.Collections#copy(java.util.List, java.util.List)
371561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 */
372561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	public void test_copy_check_index() {
373561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		ArrayList a1 = new ArrayList();
374561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		a1.add("one");
375561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		a1.add("two");
376561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
377561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		ArrayList a2 = new ArrayList();
378561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		a2.add("aa");
379561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
380561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		try {
381561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			Collections.copy(a2, a1);
382561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			fail("Expected IndexOutOfBoundsException");
383561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		} catch (IndexOutOfBoundsException e) {
384561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            //Expected
385561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
386561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
387561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals("aa", a2.get(0));
388561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	}
389561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
390561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	/**
391561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 * @tests java.util.Collections#enumeration(java.util.Collection)
392561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 */
393561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	public void test_enumerationLjava_util_Collection() {
394561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// Test for method java.util.Enumeration
395561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// java.util.Collections.enumeration(java.util.Collection)
396561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		TreeSet ts = new TreeSet();
397561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		ts.addAll(s);
398561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		Enumeration e = Collections.enumeration(ts);
399561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		int count = 0;
400561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		while (e.hasMoreElements()) {
401561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			assertEquals("Returned incorrect enumeration", e.nextElement(),
402561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    objArray[count++]);
403561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
404561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals("Enumeration missing elements: " + count, objArray.length,
405561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                count);
406561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	}
407561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
408561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	/**
409561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 * @tests java.util.Collections#fill(java.util.List, java.lang.Object)
410561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 */
411561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	public void test_fillLjava_util_ListLjava_lang_Object() {
412561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// Test for method void java.util.Collections.fill(java.util.List,
413561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// java.lang.Object)
414561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		try {
415561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			Collections.fill(null, new Object());
416561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			fail("Expected NullPointerException for null list parameter");
417561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		} catch (NullPointerException e) {
418561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            //Expected
419561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
420561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		final int size = ll.size();
421561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		Collections.fill(ll, "k");
422561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals("Fill modified list size", size, ll.size());
423561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		Iterator i = ll.iterator();
424561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		while (i.hasNext())
425561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			assertEquals("Failed to fill elements", "k", i.next());
426561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
427561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		Collections.fill(ll, null);
428561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals("Fill with nulls modified list size", size, ll.size());
429561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		i = ll.iterator();
430561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		while (i.hasNext())
431561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			assertNull("Failed to fill with nulls", i.next());
432561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	}
433561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
434561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	/**
435561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 * @tests java.util.Collections#max(java.util.Collection)
436561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 */
437561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	public void test_maxLjava_util_Collection() {
438561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// Test for method java.lang.Object
439561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// java.util.Collections.max(java.util.Collection)
440561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// assumes s, objArray are sorted
441561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals("Returned incorrect max element", Collections.max(s),
442561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                objArray[objArray.length - 1]);
443561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	}
444561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
445561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	/**
446561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 * @tests java.util.Collections#max(java.util.Collection,
447561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 *        java.util.Comparator)
448561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 */
449561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	public void test_maxLjava_util_CollectionLjava_util_Comparator() {
450561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// Test for method java.lang.Object
451561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// java.util.Collections.max(java.util.Collection, java.util.Comparator)
452561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// assumes s, objArray are sorted
453561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
454561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// With this custom (backwards) comparator the 'max' element should be
455561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// the smallest in the list
456561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals("Returned incorrect max element using custom comparator",
457561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                Collections.max(mys, new ReversedMyIntComparator()),
458561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                myobjArray[0]);
459561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
460561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
461561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	/**
462561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 * @tests java.util.Collections#min(java.util.Collection)
463561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 */
464561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	public void test_minLjava_util_Collection() {
465561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// Test for method java.lang.Object
466561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// java.util.Collections.min(java.util.Collection)
467561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// assumes s, objArray are sorted
468561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals("Returned incorrect min element", Collections.min(s),
469561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                objArray[0]);
470561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	}
471561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
472561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	/**
473561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 * @tests java.util.Collections#min(java.util.Collection,
474561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 *        java.util.Comparator)
475561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 */
476561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	public void test_minLjava_util_CollectionLjava_util_Comparator() {
477561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// Test for method java.lang.Object
478561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// java.util.Collections.min(java.util.Collection, java.util.Comparator)
479561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// assumes s, objArray are sorted
480561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
481561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// With this custom (backwards) comparator the 'min' element should be
482561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// the largest in the list
483561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals("Returned incorrect min element using custom comparator",
484561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                Collections.min(mys, new ReversedMyIntComparator()),
485561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                myobjArray[objArray.length - 1]);
486561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
487561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
488561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	/**
489561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 * @tests java.util.Collections#nCopies(int, java.lang.Object)
490561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 */
491561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	public void test_nCopiesILjava_lang_Object() {
492561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// Test for method java.util.List java.util.Collections.nCopies(int,
493561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// java.lang.Object)
494561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		Object o = new Object();
495561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		List l = Collections.nCopies(100, o);
496561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		Iterator i = l.iterator();
497561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		Object first = i.next();
498561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals("Returned list consists of copies not refs", first, o);
499561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals("Returned list of incorrect size", 100, l.size());
500561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertTrue("Contains", l.contains(o));
501561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertFalse("Contains null", l.contains(null));
502561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertFalse("null nCopies contains", Collections.nCopies(2, null)
503561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				.contains(o));
504561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertTrue("null nCopies contains null", Collections.nCopies(2, null)
505561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				.contains(null));
506561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		l = Collections.nCopies(20, null);
507561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		i = l.iterator();
508561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		for (int counter = 0; i.hasNext(); counter++) {
509561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			assertTrue("List is too large", counter < 20);
510561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			assertNull("Element should be null: " + counter, i.next());
511561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
512561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		try {
513561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			l.add(o);
514561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			fail("Returned list is not immutable");
515561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		} catch (UnsupportedOperationException e) {
516561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			// Expected
517561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
518561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		try {
519561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			Collections.nCopies(-2, new HashSet());
520561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			fail("nCopies with negative arg didn't throw IAE");
521561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		} catch (IllegalArgumentException e) {
522561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			// Expected
523561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
524561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	}
525561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
526561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	/**
527561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 * @tests java.util.Collections#reverse(java.util.List)
528561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 */
529561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	public void test_reverseLjava_util_List() {
530561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// Test for method void java.util.Collections.reverse(java.util.List)
531561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		try {
532561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			Collections.reverse(null);
533561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			fail("Expected NullPointerException for null list parameter");
534561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		} catch (NullPointerException e) {
535561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            //Expected
536561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
537561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		Collections.reverse(ll);
538561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		Iterator i = ll.iterator();
539561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		int count = objArray.length - 1;
540561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		while (i.hasNext()) {
541561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			assertEquals("Failed to reverse collection", objArray[count], i
542561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    .next());
543561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            --count;
544561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
545561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		ArrayList myList = new ArrayList();
546561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		myList.add(null);
547561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		myList.add(new Integer(20));
548561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		Collections.reverse(myList);
549561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals("Did not reverse correctly--first element is: "
550561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                + myList.get(0), new Integer(20), myList.get(0));
551561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertNull("Did not reverse correctly--second element is: "
552561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				+ myList.get(1), myList.get(1));
553561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	}
554561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
555561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	/**
556561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 * @tests java.util.Collections#reverseOrder()
557561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 */
558561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	public void test_reverseOrder() {
559561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// Test for method java.util.Comparator
560561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// java.util.Collections.reverseOrder()
561561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// assumes no duplicates in ll
562561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		Comparator comp = Collections.reverseOrder();
563561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		LinkedList list2 = new LinkedList(ll);
564561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		Collections.sort(list2, comp);
565561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		final int llSize = ll.size();
566561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		for (int counter = 0; counter < llSize; counter++)
567561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			assertEquals("New comparator does not reverse sorting order", list2
568561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    .get(llSize - counter - 1), ll.get(counter));
569561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	}
570561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
571561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	/**
572561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 * @tests java.util.Collections#shuffle(java.util.List)
573561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 */
574561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	public void test_shuffleLjava_util_List() {
575561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// Test for method void java.util.Collections.shuffle(java.util.List)
576561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// Assumes ll is sorted and has no duplicate keys and is large ( > 20
577561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// elements)
578561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
579561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// test shuffling a Sequential Access List
580561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		try {
581561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			Collections.shuffle(null);
582561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			fail("Expected NullPointerException for null list parameter");
583561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		} catch (NullPointerException e) {
584561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            //Expected
585561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
586561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		ArrayList al = new ArrayList();
587561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		al.addAll(ll);
588561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		testShuffle(al, "Sequential Access", false);
589561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
590561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// test shuffling a Random Access List
591561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		LinkedList ll2 = new LinkedList();
592561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		ll2.addAll(ll);
593561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		testShuffle(ll2, "Random Access", false);
594561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	}
595561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
596561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void testShuffleRandomAccessWithSeededRandom() {
597561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        List<String> list = Arrays.asList("A", "B", "C", "D", "E", "F", "G");
598561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Collections.shuffle(list, new Random(0));
599561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(Arrays.asList("B", "A", "D", "C", "G", "E", "F"), list);
600561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
601561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
602561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void testShuffleWithSeededRandom() {
603561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        List<String> list = new LinkedList<String>(Arrays.asList(
604561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                "A", "B", "C", "D", "E", "F", "G"));
605561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Collections.shuffle(list, new Random(0));
606561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(Arrays.asList("B", "A", "D", "C", "G", "E", "F"), list);
607561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
608561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
609561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	private void testShuffle(List list, String type, boolean random) {
610561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		boolean sorted = true;
611561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		boolean allMatch = true;
612561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		int index = 0;
613561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		final int size = list.size();
614561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
615561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		if (random)
616561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			Collections.shuffle(list);
617561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		else
618561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			Collections.shuffle(list, new Random(200));
619561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
620561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		for (int counter = 0; counter < size - 1; counter++) {
621561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			if (((Integer) list.get(counter)).compareTo((Integer)list.get(counter + 1)) > 0) {
622561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				sorted = false;
623561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			}
624561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
625561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertFalse("Shuffling sorted " + type
626561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				+ " list resulted in sorted list (should be unlikely)", sorted);
627561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		for (int counter = 0; counter < 20; counter++) {
628561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			index = 30031 * counter % (size + 1); // 30031 is a large prime
629561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			if (list.get(index) != ll.get(index))
630561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				allMatch = false;
631561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
632561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertFalse("Too many element positions match in shuffled " + type
633561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				+ " list", allMatch);
634561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	}
635561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
636561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	/**
637561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 * @tests java.util.Collections#shuffle(java.util.List, java.util.Random)
638561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 */
639561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	public void test_shuffleLjava_util_ListLjava_util_Random() {
640561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// Test for method void java.util.Collections.shuffle(java.util.List,
641561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// java.util.Random)
642561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// Assumes ll is sorted and has no duplicate keys and is large ( > 20
643561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// elements)
644561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
645561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// test shuffling a Sequential Access List
646561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		try {
647561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			Collections.shuffle(null, new Random(200));
648561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			fail("Expected NullPointerException for null list parameter");
649561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		} catch (NullPointerException e) {
650561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            //Excepted
651561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
652561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		ArrayList al = new ArrayList();
653561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		al.addAll(ll);
654561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		testShuffle(al, "Sequential Access", true);
655561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
656561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// test shuffling a Random Access List
657561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		LinkedList ll2 = new LinkedList();
658561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		ll2.addAll(ll);
659561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		testShuffle(ll2, "Random Access", true);
660561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
661561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        List l = new ArrayList();
662561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        l.add('a');
663561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        l.add('b');
664561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        l.add('c');
665561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Collections.shuffle(l, new Random(12345678921L));
666561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("acb", l.get(0).toString()+l.get(1)+l.get(2));
667561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	}
668561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
669561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	/**
670561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 * @tests java.util.Collections#singleton(java.lang.Object)
671561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 */
672561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	public void test_singletonLjava_lang_Object() {
673561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// Test for method java.util.Set
674561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// java.util.Collections.singleton(java.lang.Object)
675561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		Object o = new Object();
676561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		Set single = Collections.singleton(o);
677561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals("Wrong size", 1, single.size());
678561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertTrue("Contains", single.contains(o));
679561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertFalse("Contains null", single.contains(null));
680561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertFalse("null nCopies contains", Collections.singleton(null)
681561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				.contains(o));
682561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertTrue("null nCopies contains null", Collections.singleton(null)
683561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				.contains(null));
684561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		try {
685561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			single.add("l");
686561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("Allowed modification of singleton");
687561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		} catch (UnsupportedOperationException e) {
688561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			// Excepted
689561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
690561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	}
691561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
692561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	/**
693561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 * @tests java.util.Collections#sort(java.util.List)
694561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 */
695561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	public void test_sortLjava_util_List() {
696561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// Test for method void java.util.Collections.sort(java.util.List)
697561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// assumes no duplicate keys in ll
698561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		final int llSize = ll.size();
699561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		final int rllSize = reversedLinkedList.size();
700561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		try {
701561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        Collections.sort((List)null);
702561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			fail("Expected NullPointerException for null list parameter");
703561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		} catch (NullPointerException e) {
704561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            //Expected
705561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
706561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		Collections.shuffle(ll);
707561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		Collections.sort(ll);
708561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		Collections.sort(reversedLinkedList);
709561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		for (int counter = 0; counter < llSize - 1; counter++) {
710561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			assertTrue(
711561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes					"Sorting shuffled list resulted in unsorted list",
712561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes					((Integer) ll.get(counter)).compareTo((Integer)ll.get(counter + 1)) < 0);
713561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
714561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
715561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		for (int counter = 0; counter < rllSize - 1; counter++) {
716561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			assertTrue("Sorting reversed list resulted in unsorted list",
717561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes					((Integer) reversedLinkedList.get(counter))
718561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes							.compareTo((Integer)reversedLinkedList.get(counter + 1)) < 0);
719561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
720561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	}
721561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
722561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	/**
723561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 * @tests java.util.Collections#sort(java.util.List, java.util.Comparator)
724561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 */
725561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	public void test_sortLjava_util_ListLjava_util_Comparator() {
726561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// Test for method void java.util.Collections.sort(java.util.List,
727561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// java.util.Comparator)
728561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		Comparator comp = new ReversedMyIntComparator();
729561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		try {
730561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			Collections.sort(null, comp);
731561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			fail("Expected NullPointerException for null list parameter");
732561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		} catch (NullPointerException e) {
733561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            //Expected
734561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
735561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		Collections.shuffle(myll);
736561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		Collections.sort(myll, comp);
737561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		final int llSize = myll.size();
738561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
739561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		for (int counter = 0; counter < llSize - 1; counter++) {
740561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			assertTrue(
741561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes					"Sorting shuffled list with custom comparator resulted in unsorted list",
742561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes					((MyInt) myll.get(counter)).compareTo((MyInt) myll
743561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes							.get(counter + 1)) >= 0);
744561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
745561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	}
746561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
747561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	/**
748561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 * @tests java.util.Collections#swap(java.util.List, int, int)
749561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 */
750561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	public void test_swapLjava_util_ListII() {
751561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// Test for method swap(java.util.List, int, int)
752561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
753561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		LinkedList smallList = new LinkedList();
754561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		for (int i = 0; i < 10; i++) {
755561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			smallList.add(objArray[i]);
756561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
757561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
758561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// test exception cases
759561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		try {
760561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			Collections.swap(smallList, -1, 6);
761561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			fail("Expected IndexOutOfBoundsException for -1");
762561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		} catch (IndexOutOfBoundsException e) {
763561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            //Expected
764561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
765561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
766561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		try {
767561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			Collections.swap(smallList, 6, -1);
768561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			fail("Expected IndexOutOfBoundsException for -1");
769561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		} catch (IndexOutOfBoundsException e) {
770561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            //Expected
771561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
772561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
773561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		try {
774561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			Collections.swap(smallList, 6, 11);
775561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			fail("Expected IndexOutOfBoundsException for 11");
776561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		} catch (IndexOutOfBoundsException e) {
777561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            //Expected
778561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
779561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
780561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		try {
781561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			Collections.swap(smallList, 11, 6);
782561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			fail("Expected IndexOutOfBoundsException for 11");
783561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		} catch (IndexOutOfBoundsException e) {
784561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            //Expected
785561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
786561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
787561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// Ensure a NPE is thrown if the list is NULL
788561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		try {
789561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			Collections.swap(null, 1, 1);
790561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			fail("Expected NullPointerException for null list parameter");
791561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		} catch (NullPointerException e) {
792561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            //Expected
793561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
794561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
795561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// test with valid parameters
796561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		Collections.swap(smallList, 4, 7);
797561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals("Didn't Swap the element at position 4 ", new Integer(7),
798561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				smallList.get(4));
799561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals("Didn't Swap the element at position 7 ", new Integer(4),
800561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				smallList.get(7));
801561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
802561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// make sure other elements didn't get swapped by mistake
803561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		for (int i = 0; i < 10; i++) {
804561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			if (i != 4 && i != 7)
805561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				assertEquals("shouldn't have swapped the element at position "
806561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes						+ i, new Integer(i), smallList.get(i));
807561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
808561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	}
809561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
810561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	/**
811561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 * @tests java.util.Collections#replaceAll(java.util.List, java.lang.Object,
812561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 *        java.lang.Object)
813561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 */
814561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	public void test_replaceAllLjava_util_ListLjava_lang_ObjectLjava_lang_Object() {
815561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// Test for method replaceAll(java.util.List, java.lang.Object,
816561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// java.lang.Object)
817561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
818561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		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";
819561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		char[] chars = string1.toCharArray();
820561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		List list = new ArrayList();
821561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		for (int i = 0; i < chars.length; i++) {
822561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			list.add(new Character(chars[i]));
823561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
824561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
825561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		try {
826561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			Collections.replaceAll(null, new Object(), new Object());
827561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			fail("Expected NullPointerException for null list parameter");
828561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		} catch (NullPointerException e) {
829561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            //Expected
830561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
831561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
832561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// test replace for an element that is not in the list
833561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		boolean result = Collections.replaceAll(list, new Character('1'),
834561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				new Character('Z'));
835561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertFalse("Test1: Collections.replaceAll() returned wrong result",
836561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				result);
837561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals("Test2 : ReplaceAll modified the list incorrectly",
838561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				string1, getString(list));
839561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
840561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// test replace for an element that is in the list
841561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		result = Collections.replaceAll(list, new Character('S'),
842561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				new Character('K'));
843561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertTrue("Test3: Collections.replaceAll() returned wrong result",
844561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				result);
845561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals("Test4: ReplaceAll modified the list incorrectly",
846561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				(string1 = string1.replace('S', 'K')), getString(list));
847561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
848561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// test replace for the last element in the list
849561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		result = Collections.replaceAll(list, new Character('Z'),
850561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				new Character('N'));
851561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertTrue("Test5: Collections.replaceAll() returned wrong result",
852561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				result);
853561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals("Test6: ReplaceAll modified the list incorrectly",
854561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				(string1 = string1.replace('Z', 'N')), getString(list));
855561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
856561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// test replace for the first element in the list
857561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		result = Collections.replaceAll(list, new Character('A'),
858561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				new Character('B'));
859561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertTrue("Test7: Collections.replaceAll() returned wrong result",
860561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				result);
861561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals("Test8: ReplaceAll modified the list incorrectly",
862561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				(string1 = string1.replace('A', 'B')), getString(list));
863561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
864561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// test replacing elements with null
865561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		LinkedList smallList = new LinkedList();
866561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		for (int i = 0; i < 10; i++) {
867561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			smallList.add(objArray[i]);
868561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
869561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		smallList.set(4, new Integer(5));
870561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		result = Collections.replaceAll(smallList, new Integer(5), null);
871561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertTrue("Test9: Collections.replaceAll() returned wrong result",
872561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				result);
873561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		for (int i = 0; i < smallList.size(); i++) {
874561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			if (i == 4 || i == 5)
875561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				assertSame("Test9: ReplaceAll didn't replace element at " + i,
876561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes						null, smallList.get(i));
877561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			else
878561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				assertEquals(
879561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes						"Test9: ReplaceAll shouldn't have replaced element at "
880561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes								+ i, new Integer(i), smallList.get(i));
881561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
882561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
883561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// test replacing null elements with another value
884561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		result = Collections.replaceAll(smallList, null, new Integer(99));
885561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertTrue("Test10: Collections.replaceAll() returned wrong result",
886561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				result);
887561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
888561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		for (int i = 0; i < smallList.size(); i++) {
889561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			if (i == 4 || i == 5)
890561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				assertEquals("Test10: ReplaceAll didn't replace element at "
891561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes						+ i, new Integer(99), smallList.get(i));
892561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			else
893561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				assertEquals(
894561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes						"Test10: ReplaceAll shouldn't have replaced element at "
895561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes								+ i, new Integer(i), smallList.get(i));
896561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
897561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	}
898561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
899561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	/**
900561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 * @tests java.util.Collections#rotate(java.util.List, int)
901561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 */
902561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	public void test_rotateLjava_util_ListI() {
903561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// Test for method rotate(java.util.List, int)
904561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
905561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		try {
906561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			Collections.rotate(null, 0);
907561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			fail("Expected NullPointerException for null list parameter");
908561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		} catch (NullPointerException e) {
909561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            //Expected
910561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
911561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
912561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// Test rotating a Sequential Access List
913561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		LinkedList list1 = new LinkedList();
914561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		for (int i = 0; i < 10; i++) {
915561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			list1.add(objArray[i]);
916561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
917561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		testRotate(list1, "Sequential Access");
918561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
919561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// Test rotating a Random Access List
920561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		ArrayList list2 = new ArrayList();
921561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		for (int i = 0; i < 10; i++) {
922561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			list2.add(objArray[i]);
923561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
924561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		testRotate(list2, "Random Access");
925561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	}
926561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
927561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	private void testRotate(List list, String type) {
928561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// rotate with positive distance
929561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		Collections.rotate(list, 7);
930561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals("Test1: rotate modified the " + type
931561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				+ " list incorrectly,", "3456789012", getString(list));
932561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
933561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// rotate with negative distance
934561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		Collections.rotate(list, -2);
935561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals("Test2: rotate modified the " + type
936561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				+ " list incorrectly,", "5678901234", getString(list));
937561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
938561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// rotate sublist with negative distance
939561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		List subList = list.subList(1, 5);
940561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		Collections.rotate(subList, -1);
941561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals("Test3: rotate modified the " + type
942561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				+ " list incorrectly,", "5789601234", getString(list));
943561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
944561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// rotate sublist with positive distance
945561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		Collections.rotate(subList, 2);
946561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals("Test4: rotate modified the " + type
947561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				+ " list incorrectly,", "5967801234", getString(list));
948561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
949561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// rotate with positive distance that is larger than list size
950561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		Collections.rotate(list, 23);
951561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals("Test5: rotate modified the " + type
952561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				+ " list incorrectly,", "2345967801", getString(list));
953561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
954561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// rotate with negative distance that is larger than list size
955561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		Collections.rotate(list, -23);
956561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals("Test6: rotate modified the " + type
957561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				+ " list incorrectly,", "5967801234", getString(list));
958561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
959561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// rotate with 0 and equivalent distances, this should make no
960561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// modifications to the list
961561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		Collections.rotate(list, 0);
962561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals("Test7: rotate modified the " + type
963561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				+ " list incorrectly,", "5967801234", getString(list));
964561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
965561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		Collections.rotate(list, -30);
966561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals("Test8: rotate modified the " + type
967561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				+ " list incorrectly,", "5967801234", getString(list));
968561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
969561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		Collections.rotate(list, 30);
970561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals("Test9: rotate modified the " + type
971561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				+ " list incorrectly,", "5967801234", getString(list));
972561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	}
973561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
974561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	private String getString(List list) {
975561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		StringBuffer buffer = new StringBuffer();
976561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		for (int i = 0; i < list.size(); i++) {
977561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			buffer.append(list.get(i));
978561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
979561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		return buffer.toString();
980561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	}
981561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
982561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	/**
983561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 * @tests java.util.Collections#rotate(java.util.List, int)
984561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 */
985561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	public void test_rotate2() {
986561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		List list = new ArrayList();
987561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		try {
988561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			Collections.rotate(list, 5);
989561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		} catch (UnsupportedOperationException e) {
990561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			fail("Unexpected UnsupportedOperationException for empty list, "
991561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes					+ e);
992561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
993561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
994561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		list.add(0, "zero");
995561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		list.add(1, "one");
996561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		list.add(2, "two");
997561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		list.add(3, "three");
998561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		list.add(4, "four");
999561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1000561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		Collections.rotate(list, Integer.MIN_VALUE);
1001561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals("Rotated incorrectly at position 0, ", "three",
1002561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				(String) list.get(0));
1003561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals("Rotated incorrectly at position 1, ", "four",
1004561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				(String) list.get(1));
1005561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals("Rotated incorrectly at position 2, ", "zero",
1006561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				(String) list.get(2));
1007561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals("Rotated incorrectly at position 3, ", "one",
1008561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				(String) list.get(3));
1009561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals("Rotated incorrectly at position 4, ", "two",
1010561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				(String) list.get(4));
1011561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	}
1012561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1013561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	/**
1014561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 * @tests java.util.Collections#indexOfSubList(java.util.List,
1015561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 *        java.util.List)
1016561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 */
1017561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	public void test_indexOfSubListLjava_util_ListLjava_util_List() {
1018561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// Test for method int indexOfSubList(java.util.List, java.util.List)
1019561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		List list = new ArrayList();
1020561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		try {
1021561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			Collections.indexOfSubList(null, list);
1022561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			fail("Expected NullPointerException for null list first parameter");
1023561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		} catch (NullPointerException e) {
1024561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            //Expected
1025561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
1026561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		try {
1027561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			Collections.indexOfSubList(list, null);
1028561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			fail("Expected NullPointerException for null list second parameter");
1029561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		} catch (NullPointerException e) {
1030561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            //Expected
1031561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
1032561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1033561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		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";
1034561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1035561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		testwithCharList(1, string1, "B", true);
1036561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		testwithCharList(2, string1, "LIST", true);
1037561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		testwithCharList(3, string1, "SUBLIST", true);
1038561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		testwithCharList(4, string1, "NONE", true);
1039561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		testwithCharList(5, string1, "END", true);
1040561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1041561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// test boundary conditions:
1042561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		testwithCharList(6, "", "", true);
1043561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		testwithCharList(7, "LIST", "", true);
1044561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		testwithCharList(8, "", "SUBLIST", true);
1045561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	}
1046561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1047561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	/**
1048561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 * @tests java.util.Collections#indexOfSubList(java.util.List,
1049561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 *        java.util.List)
1050561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 */
1051561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	public void test_indexOfSubList2() {
1052561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		ArrayList sub = new ArrayList();
1053561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		sub.add(new Integer(1));
1054561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		sub.add(new Integer(2));
1055561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		sub.add(new Integer(3));
1056561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1057561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		ArrayList sub2 = new ArrayList();
1058561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		sub2.add(new Integer(7));
1059561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		sub2.add(new Integer(8));
1060561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1061561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		ArrayList src = new ArrayList();
1062561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		src.addAll(sub);
1063561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		src.addAll(sub);
1064561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		src.addAll(sub);
1065561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		src.add(new Integer(5));
1066561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		src.add(new Integer(6));
1067561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1068561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// so src becomes a list like this:
1069561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// [1, 2, 3, 1, 2, 3, 1, 2, 3, 5, 6]
1070561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1071561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		sub = new ArrayList(src.subList(3, 11));
1072561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// [1, 2, 3, 1, 2, 3, 5, 6]
1073561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals("TestA : Returned wrong indexOfSubList, ", 3, Collections
1074561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				.indexOfSubList(src, sub));
1075561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1076561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		sub = new ArrayList(src.subList(6, 11));
1077561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// [1, 2, 3, 5, 6]
1078561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals("TestB : Returned wrong indexOfSubList, ", 6, Collections
1079561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				.indexOfSubList(src, sub));
1080561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1081561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		sub = new ArrayList(src.subList(0, 3));
1082561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// [1, 2, 3]
1083561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals("TestCC : Returned wrong indexOfSubList, ", 0, Collections
1084561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				.indexOfSubList(src, sub));
1085561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1086561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		sub = new ArrayList(src.subList(9, 11));
1087561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// [5, 6]
1088561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals("TestD : Returned wrong indexOfSubList, ", 9, Collections
1089561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				.indexOfSubList(src, sub));
1090561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1091561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		sub = new ArrayList(src.subList(10, 11));
1092561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// [6]
1093561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals("TestE : Returned wrong indexOfSubList, ", 10, Collections
1094561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				.indexOfSubList(src, sub));
1095561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1096561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		sub = new ArrayList(src.subList(0, 11));
1097561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// the whole list
1098561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals("TestH : Returned wrong indexIndexOfSubList, ", 0,
1099561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				Collections.indexOfSubList(src, sub));
1100561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1101561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// a non-matching list
1102561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals("TestI : Returned wrong indexOfSubList, ", -1, Collections
1103561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				.indexOfSubList(src, sub2));
1104561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	}
1105561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1106561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	/**
1107561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 * @param string2
1108561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 * @param string1
1109561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 * @param index
1110561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 */
1111561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	private void testwithCharList(int count, String string1, String string2,
1112561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			boolean first) {
1113561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		char[] chars = string1.toCharArray();
1114561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		List list = new ArrayList();
1115561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		for (int i = 0; i < chars.length; i++) {
1116561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			list.add(new Character(chars[i]));
1117561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
1118561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		chars = string2.toCharArray();
1119561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		List sublist = new ArrayList();
1120561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		for (int i = 0; i < chars.length; i++) {
1121561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			sublist.add(new Character(chars[i]));
1122561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
1123561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1124561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		if (first)
1125561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			assertEquals("Test " + count + ": Returned wrong index:", string1
1126561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes					.indexOf(string2), Collections
1127561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes					.indexOfSubList(list, sublist));
1128561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		else
1129561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			assertEquals("Test " + count + ": Returned wrong index:", string1
1130561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes					.lastIndexOf(string2), Collections.lastIndexOfSubList(list,
1131561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes					sublist));
1132561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	}
1133561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1134561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	/**
1135561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 * @tests java.util.Collections#lastIndexOfSubList(java.util.List,
1136561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 *        java.util.List)
1137561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 */
1138561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	public void test_lastIndexOfSubListLjava_util_ListLjava_util_List() {
1139561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// Test for method int lastIndexOfSubList(java.util.List,
1140561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// java.util.List)
1141561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		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";
1142561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1143561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		List list = new ArrayList();
1144561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		try {
1145561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			Collections.lastIndexOfSubList(null, list);
1146561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			fail("Expected NullPointerException for null list first parameter");
1147561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		} catch (NullPointerException e) {
1148561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            //Expected
1149561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
1150561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		try {
1151561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			Collections.lastIndexOfSubList(list, null);
1152561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			fail("Expected NullPointerException for null list second parameter");
1153561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		} catch (NullPointerException e) {
1154561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            //Expected
1155561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
1156561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1157561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		testwithCharList(1, string1, "B", false);
1158561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		testwithCharList(2, string1, "LIST", false);
1159561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		testwithCharList(3, string1, "SUBLIST", false);
1160561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		testwithCharList(4, string1, "END", false);
1161561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		testwithCharList(5, string1, "NONE", false);
1162561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1163561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// test boundary conditions
1164561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		testwithCharList(6, "", "", false);
1165561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		testwithCharList(7, "LIST", "", false);
1166561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		testwithCharList(8, "", "SUBLIST", false);
1167561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	}
1168561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1169561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	/**
1170561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 * @tests java.util.Collections#lastIndexOfSubList(java.util.List,
1171561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 *        java.util.List)
1172561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 */
1173561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	public void test_lastIndexOfSubList2() {
1174561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		ArrayList sub = new ArrayList();
1175561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		sub.add(new Integer(1));
1176561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		sub.add(new Integer(2));
1177561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		sub.add(new Integer(3));
1178561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1179561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		ArrayList sub2 = new ArrayList();
1180561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		sub2.add(new Integer(7));
1181561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		sub2.add(new Integer(8));
1182561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1183561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		ArrayList src = new ArrayList();
1184561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		src.addAll(sub);
1185561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		src.addAll(sub);
1186561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		src.addAll(sub);
1187561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		src.add(new Integer(5));
1188561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		src.add(new Integer(6));
1189561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1190561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// so src is a list like this:
1191561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// [1, 2, 3, 1, 2, 3, 1, 2, 3, 5, 6]
1192561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1193561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		Collections.reverse(src);
1194561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// it becomes like this :
1195561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// [6, 5, 3, 2, 1, 3, 2, 1, 3, 2, 1]
1196561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1197561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		sub = new ArrayList(src.subList(0, 8));
1198561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// [6, 5, 3, 2, 1, 3, 2, 1]
1199561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals("TestA : Returned wrong lastIndexOfSubList, ", 0,
1200561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				Collections.lastIndexOfSubList(src, sub));
1201561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1202561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		sub = new ArrayList(src.subList(0, 5));
1203561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// [6, 5, 3, 2, 1]
1204561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals("TestB : Returned wrong lastIndexOfSubList, ", 0,
1205561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				Collections.lastIndexOfSubList(src, sub));
1206561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1207561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		sub = new ArrayList(src.subList(2, 5));
1208561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// [3, 2, 1]
1209561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals("TestC : Returned wrong lastIndexOfSubList, ", 8,
1210561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				Collections.lastIndexOfSubList(src, sub));
1211561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1212561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		sub = new ArrayList(src.subList(9, 11));
1213561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// [2, 1]
1214561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals("TestD : Returned wrong lastIndexOfSubList, ", 9,
1215561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				Collections.lastIndexOfSubList(src, sub));
1216561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1217561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		sub = new ArrayList(src.subList(10, 11));
1218561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// [1]
1219561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals("TestE : Returned wrong lastIndexOfSubList, ", 10,
1220561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				Collections.lastIndexOfSubList(src, sub));
1221561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1222561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		sub = new ArrayList(src.subList(0, 2));
1223561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// [6, 5]
1224561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals("TestF : Returned wrong lastIndexOfSubList, ", 0,
1225561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				Collections.lastIndexOfSubList(src, sub));
1226561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1227561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		sub = new ArrayList(src.subList(0, 1));
1228561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// [6]
1229561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals("TestG : Returned wrong lastIndexOfSubList, ", 0,
1230561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				Collections.lastIndexOfSubList(src, sub));
1231561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1232561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		sub = new ArrayList(src.subList(0, 11));
1233561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// the whole list
1234561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals("TestH : Returned wrong lastIndexOfSubList, ", 0,
1235561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				Collections.lastIndexOfSubList(src, sub));
1236561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1237561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// a non-matching list
1238561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals("TestI : Returned wrong lastIndexOfSubList, ", -1,
1239561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				Collections.lastIndexOfSubList(src, sub2));
1240561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	}
1241561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1242561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	/**
1243561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 * @tests java.util.Collections#list(java.util.Enumeration)
1244561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 */
1245561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	public void test_listLjava_util_Enumeration() {
1246561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// Test for method java.util.ArrayList list(java.util.Enumeration)
1247561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1248561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		Enumeration e = Collections.enumeration(ll);
1249561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		ArrayList al = Collections.list(e);
1250561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1251561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		int size = al.size();
1252561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals("Wrong size", ll.size(), size);
1253561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1254561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		for (int i = 0; i < size; i++) {
1255561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			assertEquals("wrong element at position " + i + ",", ll.get(i), al
1256561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes					.get(i));
1257561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
1258561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	}
1259561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1260561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	/**
1261561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 * @throws InterruptedException
1262561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 * @tests java.util.Collections#synchronizedCollection(java.util.Collection)
1263561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 */
1264561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	public void test_synchronizedCollectionLjava_util_Collection() throws InterruptedException {
1265561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// Test for method java.util.Collection
1266561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// java.util.Collections.synchronizedCollection(java.util.Collection)
1267561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1268561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		LinkedList smallList = new LinkedList();
1269561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		for (int i = 0; i < 50; i++) {
1270561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			smallList.add(objArray[i]);
1271561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
1272561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1273561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		final int numberOfLoops = 200;
1274561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		Collection synchCol = Collections.synchronizedCollection(smallList);
1275561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// Replacing the previous line with the line below *should* cause the
1276561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// test to fail--the collecion below isn't synchronized
1277561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// Collection synchCol = smallList;
1278561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1279561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		SynchCollectionChecker normalSynchChecker = new SynchCollectionChecker(
1280561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				synchCol, false, numberOfLoops);
1281561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		SynchCollectionChecker offsetSynchChecker = new SynchCollectionChecker(
1282561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				synchCol, true, numberOfLoops);
1283561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		Thread normalThread = new Thread(normalSynchChecker);
1284561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		Thread offsetThread = new Thread(offsetSynchChecker);
1285561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		normalThread.start();
1286561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		offsetThread.start();
1287561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		while ((normalSynchChecker.getNumberOfChecks() < numberOfLoops)
1288561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				|| (offsetSynchChecker.getNumberOfChecks() < numberOfLoops)) {
1289561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1290561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                       try {
1291561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                               Thread.sleep(10);
1292561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                       } catch (InterruptedException e) {
1293561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                       }
1294561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1295561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
1296561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertTrue("Returned collection corrupted by multiple thread access",
1297561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				normalSynchChecker.getResult()
1298561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes						&& offsetSynchChecker.getResult());
1299561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		try {
1300561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			normalThread.join(5000);
1301561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			offsetThread.join(5000);
1302561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		} catch (InterruptedException e) {
1303561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			fail("join() interrupted");
1304561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
1305561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1306561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		synchCol.add(null);
1307561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertTrue("Trying to use nulls in collection failed", synchCol
1308561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				.contains(null));
1309561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1310561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		smallList = new LinkedList();
1311561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		for (int i = 0; i < 100; i++) {
1312561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			smallList.add(objArray[i]);
1313561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
1314561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		new Support_CollectionTest("", Collections
1315561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				.synchronizedCollection(smallList)).runTest();
1316561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1317561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        //Test self reference
1318561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        synchCol = Collections.synchronizedCollection(smallList);
1319561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        synchCol.add(smallList);
1320561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue("should contain self ref", synchCol.toString().indexOf("(this") > -1);
1321561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	}
1322561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1323561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	/**
1324561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 * @tests java.util.Collections#synchronizedList(java.util.List)
1325561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 */
1326561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	public void test_synchronizedListLjava_util_List() {
1327561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		try {
1328561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			Collections.synchronizedList(null);
1329561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			fail("Expected NullPointerException for null list parameter");
1330561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		} catch (NullPointerException e) {
1331561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            //Expected
1332561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
1333561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1334561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// test with a Sequential Access List
1335561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		List smallList = new LinkedList();
1336561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		testSynchronizedList(smallList, "Sequential Access");
1337561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1338561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		smallList = new LinkedList();
1339561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		List myList;
1340561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		for (int i = 0; i < 100; i++) {
1341561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			smallList.add(objArray[i]);
1342561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
1343561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		myList = Collections.synchronizedList(smallList);
1344561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1345561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		new Support_ListTest("", myList).runTest();
1346561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1347561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// test with a Random Access List
1348561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		smallList = new ArrayList();
1349561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		testSynchronizedList(smallList, "Random Access");
1350561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1351561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		smallList = new ArrayList();
1352561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		for (int i = 0; i < 100; i++) {
1353561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			smallList.add(objArray[i]);
1354561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
1355561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		myList = Collections.synchronizedList(smallList);
1356561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		new Support_ListTest("", myList).runTest();
1357561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1358561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		//Test self reference
1359561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        myList = Collections.synchronizedList(smallList);
1360561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        myList.add(smallList);
1361561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue("should contain self ref", myList.toString().indexOf("(this") > -1);
1362561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	}
1363561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1364561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	private void testSynchronizedList(List smallList, String type) {
1365561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		for (int i = 0; i < 50; i++) {
1366561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			smallList.add(objArray[i]);
1367561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
1368561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		final int numberOfLoops = 200;
1369561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		List synchList = Collections.synchronizedList(smallList);
1370561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		if (type.equals("Random Access"))
1371561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			assertTrue(
1372561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes					"Returned synchronized list should implement the Random Access interface",
1373561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes					synchList instanceof RandomAccess);
1374561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		else
1375561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			assertTrue(
1376561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes					"Returned synchronized list should not implement the Random Access interface",
1377561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes					!(synchList instanceof RandomAccess));
1378561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1379561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// Replacing the previous line with the line below *should* cause the
1380561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// test to fail--the list below isn't synchronized
1381561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// List synchList = smallList;
1382561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		SynchCollectionChecker normalSynchChecker = new SynchCollectionChecker(
1383561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				synchList, false, numberOfLoops);
1384561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		SynchCollectionChecker offsetSynchChecker = new SynchCollectionChecker(
1385561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				synchList, true, numberOfLoops);
1386561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		Thread normalThread = new Thread(normalSynchChecker);
1387561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		Thread offsetThread = new Thread(offsetSynchChecker);
1388561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		normalThread.start();
1389561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		offsetThread.start();
1390561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		while ((normalSynchChecker.getNumberOfChecks() < numberOfLoops)
1391561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				|| (offsetSynchChecker.getNumberOfChecks() < numberOfLoops)) {
1392561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			try {
1393561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				Thread.sleep(10);
1394561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			} catch (InterruptedException e) {
1395561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                //Expected
1396561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			}
1397561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
1398561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertTrue(
1399561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                type
1400561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        + " list tests: Returned list corrupted by multiple thread access",
1401561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                normalSynchChecker.getResult()
1402561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        && offsetSynchChecker.getResult());
1403561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		try {
1404561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			normalThread.join(5000);
1405561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			offsetThread.join(5000);
1406561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		} catch (InterruptedException e) {
1407561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			fail(type + " list tests: join() interrupted");
1408561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
1409561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		synchList.set(25, null);
1410561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertNull(type + " list tests: Trying to use nulls in list failed",
1411561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				synchList.get(25));
1412561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	}
1413561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1414561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	/**
1415561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 * @tests java.util.Collections#synchronizedMap(java.util.Map)
1416561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 */
1417561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	public void test_synchronizedMapLjava_util_Map() {
1418561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// Test for method java.util.Map
1419561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// java.util.Collections.synchronizedMap(java.util.Map)
1420561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		HashMap smallMap = new HashMap();
1421561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		for (int i = 0; i < 50; i++) {
1422561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			smallMap.put(objArray[i], objArray[i]);
1423561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
1424561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1425561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		final int numberOfLoops = 200;
1426561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		Map synchMap = Collections.synchronizedMap(smallMap);
1427561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// Replacing the previous line with the line below should cause the test
1428561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// to fail--the list below isn't synchronized
1429561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// Map synchMap = smallMap;
1430561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1431561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		SynchMapChecker normalSynchChecker = new SynchMapChecker(synchMap,
1432561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				false, numberOfLoops);
1433561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		SynchMapChecker offsetSynchChecker = new SynchMapChecker(synchMap,
1434561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				true, numberOfLoops);
1435561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		Thread normalThread = new Thread(normalSynchChecker);
1436561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		Thread offsetThread = new Thread(offsetSynchChecker);
1437561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		normalThread.start();
1438561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		offsetThread.start();
1439561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		while ((normalSynchChecker.getNumberOfChecks() < numberOfLoops)
1440561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				|| (offsetSynchChecker.getNumberOfChecks() < numberOfLoops)) {
1441561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			try {
1442561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				Thread.sleep(10);
1443561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			} catch (InterruptedException e) {
1444561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                //Expected
1445561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			}
1446561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
1447561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertTrue("Returned map corrupted by multiple thread access",
1448561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				normalSynchChecker.getResult()
1449561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes						&& offsetSynchChecker.getResult());
1450561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		try {
1451561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			normalThread.join(5000);
1452561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			offsetThread.join(5000);
1453561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		} catch (InterruptedException e) {
1454561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			fail("join() interrupted");
1455561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
1456561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1457561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// synchronized map does not have to permit null keys or values
1458561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		synchMap.put(new Long(25), null);
1459561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		synchMap.put(null, new Long(30));
1460561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertNull("Trying to use a null value in map failed", synchMap
1461561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				.get(new Long(25)));
1462561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertTrue("Trying to use a null key in map failed", synchMap.get(null)
1463561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				.equals(new Long(30)));
1464561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1465561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		smallMap = new HashMap();
1466561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		for (int i = 0; i < 100; i++) {
1467561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			smallMap.put(objArray[i].toString(), objArray[i]);
1468561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
1469561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		synchMap = Collections.synchronizedMap(smallMap);
1470561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		new Support_UnmodifiableMapTest("", synchMap).runTest();
1471561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		synchMap.keySet().remove(objArray[50].toString());
1472561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertNull(
1473561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				"Removing a key from the keySet of the synchronized map did not remove it from the synchronized map: ",
1474561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				synchMap.get(objArray[50].toString()));
1475561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertNull(
1476561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				"Removing a key from the keySet of the synchronized map did not remove it from the original map",
1477561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				smallMap.get(objArray[50].toString()));
1478561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	}
1479561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1480561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	/**
1481561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 * @tests java.util.Collections#synchronizedSet(java.util.Set)
1482561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 */
1483561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	public void test_synchronizedSetLjava_util_Set() {
1484561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// Test for method java.util.Set
1485561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// java.util.Collections.synchronizedSet(java.util.Set)
1486561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		HashSet smallSet = new HashSet();
1487561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		for (int i = 0; i < 50; i++) {
1488561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			smallSet.add(objArray[i]);
1489561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
1490561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1491561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		final int numberOfLoops = 200;
1492561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		Set synchSet = Collections.synchronizedSet(smallSet);
1493561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// Replacing the previous line with the line below should cause the test
1494561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// to fail--the set below isn't synchronized
1495561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// Set synchSet = smallSet;
1496561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1497561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		SynchCollectionChecker normalSynchChecker = new SynchCollectionChecker(
1498561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				synchSet, false, numberOfLoops);
1499561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		SynchCollectionChecker offsetSynchChecker = new SynchCollectionChecker(
1500561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				synchSet, true, numberOfLoops);
1501561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		Thread normalThread = new Thread(normalSynchChecker);
1502561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		Thread offsetThread = new Thread(offsetSynchChecker);
1503561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		normalThread.start();
1504561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		offsetThread.start();
1505561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		while ((normalSynchChecker.getNumberOfChecks() < numberOfLoops)
1506561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				|| (offsetSynchChecker.getNumberOfChecks() < numberOfLoops)) {
1507561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			try {
1508561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				Thread.sleep(10);
1509561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			} catch (InterruptedException e) {
1510561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                //Expected
1511561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			}
1512561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
1513561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertTrue("Returned set corrupted by multiple thread access",
1514561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				normalSynchChecker.getResult()
1515561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes						&& offsetSynchChecker.getResult());
1516561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		try {
1517561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			normalThread.join(5000);
1518561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			offsetThread.join(5000);
1519561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		} catch (InterruptedException e) {
1520561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			fail("join() interrupted");
1521561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
1522561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1523561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		Set mySet = Collections.synchronizedSet(smallSet);
1524561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		mySet.add(null);
1525561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertTrue("Trying to use nulls in list failed", mySet.contains(null));
1526561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1527561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		smallSet = new HashSet();
1528561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		for (int i = 0; i < 100; i++) {
1529561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			smallSet.add(objArray[i]);
1530561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
1531561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		new Support_SetTest("", Collections.synchronizedSet(smallSet))
1532561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				.runTest();
1533561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1534561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		//Test self reference
1535561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        mySet = Collections.synchronizedSet(smallSet);
1536561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        mySet.add(smallSet);
1537561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue("should contain self ref", mySet.toString().indexOf("(this") > -1);
1538561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	}
1539561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1540561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	/**
1541561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 * @tests java.util.Collections#synchronizedSortedMap(java.util.SortedMap)
1542561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 */
1543561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	public void test_synchronizedSortedMapLjava_util_SortedMap() {
1544561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// Test for method java.util.SortedMap
1545561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// java.util.Collections.synchronizedSortedMap(java.util.SortedMap)
1546561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		TreeMap smallMap = new TreeMap();
1547561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		for (int i = 0; i < 50; i++) {
1548561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			smallMap.put(objArray[i], objArray[i]);
1549561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
1550561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1551561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		final int numberOfLoops = 200;
1552561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		Map synchMap = Collections.synchronizedMap(smallMap);
1553561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// Replacing the previous line with the line below should cause the test
1554561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// to fail--the list below isn't synchronized
1555561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// Map synchMap = smallMap;
1556561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1557561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		SynchMapChecker normalSynchChecker = new SynchMapChecker(synchMap,
1558561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				false, numberOfLoops);
1559561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		SynchMapChecker offsetSynchChecker = new SynchMapChecker(synchMap,
1560561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				true, numberOfLoops);
1561561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		Thread normalThread = new Thread(normalSynchChecker);
1562561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		Thread offsetThread = new Thread(offsetSynchChecker);
1563561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		normalThread.start();
1564561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		offsetThread.start();
1565561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		while ((normalSynchChecker.getNumberOfChecks() < numberOfLoops)
1566561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				|| (offsetSynchChecker.getNumberOfChecks() < numberOfLoops)) {
1567561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			try {
1568561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				Thread.sleep(10);
1569561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			} catch (InterruptedException e) {
1570561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                //Expected
1571561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			}
1572561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
1573561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertTrue("Returned map corrupted by multiple thread access",
1574561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				normalSynchChecker.getResult()
1575561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes						&& offsetSynchChecker.getResult());
1576561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		try {
1577561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			normalThread.join(5000);
1578561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			offsetThread.join(5000);
1579561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		} catch (InterruptedException e) {
1580561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			fail("join() interrupted");
1581561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
1582561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1583561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		smallMap = new TreeMap();
1584561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		for (int i = 0; i < 100; i++) {
1585561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			smallMap.put(objArray[i].toString(), objArray[i]);
1586561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
1587561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		synchMap = Collections.synchronizedSortedMap(smallMap);
1588561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		new Support_UnmodifiableMapTest("", synchMap).runTest();
1589561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		synchMap.keySet().remove(objArray[50].toString());
1590561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertNull(
1591561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				"Removing a key from the keySet of the synchronized map did not remove it from the synchronized map",
1592561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				synchMap.get(objArray[50].toString()));
1593561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertNull(
1594561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				"Removing a key from the keySet of the synchronized map did not remove it from the original map",
1595561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				smallMap.get(objArray[50].toString()));
1596561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	}
1597561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1598561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	/**
1599561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 * @tests java.util.Collections#synchronizedSortedSet(java.util.SortedSet)
1600561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 */
1601561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	public void test_synchronizedSortedSetLjava_util_SortedSet() {
1602561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// Test for method java.util.SortedSet
1603561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// java.util.Collections.synchronizedSortedSet(java.util.SortedSet)
1604561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		TreeSet smallSet = new TreeSet();
1605561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		for (int i = 0; i < 50; i++) {
1606561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			smallSet.add(objArray[i]);
1607561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
1608561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1609561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		final int numberOfLoops = 200;
1610561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		Set synchSet = Collections.synchronizedSet(smallSet);
1611561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// Replacing the previous line with the line below should cause the test
1612561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// to fail--the list below isn't synchronized
1613561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// Set synchSet = smallSet;
1614561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1615561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		SynchCollectionChecker normalSynchChecker = new SynchCollectionChecker(
1616561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				synchSet, false, numberOfLoops);
1617561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		SynchCollectionChecker offsetSynchChecker = new SynchCollectionChecker(
1618561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				synchSet, true, numberOfLoops);
1619561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		Thread normalThread = new Thread(normalSynchChecker);
1620561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		Thread offsetThread = new Thread(offsetSynchChecker);
1621561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		normalThread.start();
1622561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		offsetThread.start();
1623561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		while ((normalSynchChecker.getNumberOfChecks() < numberOfLoops)
1624561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				|| (offsetSynchChecker.getNumberOfChecks() < numberOfLoops)) {
1625561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			try {
1626561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				Thread.sleep(10);
1627561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			} catch (InterruptedException e) {
1628561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                //Expected
1629561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			}
1630561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
1631561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertTrue("Returned set corrupted by multiple thread access",
1632561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				normalSynchChecker.getResult()
1633561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes						&& offsetSynchChecker.getResult());
1634561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		try {
1635561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			normalThread.join(5000);
1636561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			offsetThread.join(5000);
1637561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		} catch (InterruptedException e) {
1638561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			fail("join() interrupted");
1639561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
1640561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	}
1641561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1642561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	/**
1643561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 * @tests java.util.Collections#unmodifiableCollection(java.util.Collection)
1644561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 */
1645561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	public void test_unmodifiableCollectionLjava_util_Collection() {
1646561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// Test for method java.util.Collection
1647561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// java.util.Collections.unmodifiableCollection(java.util.Collection)
1648561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		boolean exception = false;
1649561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		Collection c = Collections.unmodifiableCollection(ll);
1650561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertTrue("Returned collection is of incorrect size", c.size() == ll
1651561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				.size());
1652561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		Iterator i = ll.iterator();
1653561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		while (i.hasNext())
1654561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			assertTrue("Returned list missing elements", c.contains(i.next()));
1655561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		try {
1656561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			c.add(new Object());
1657561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		} catch (UnsupportedOperationException e) {
1658561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			exception = true;
1659561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			// Correct
1660561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
1661561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		if (!exception) {
1662561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			fail("Allowed modification of collection");
1663561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
1664561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1665561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		try {
1666561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			c.remove(new Object());
1667561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("Allowed modification of collection");
1668561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		} catch (UnsupportedOperationException e) {
1669561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			// Correct
1670561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
1671561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1672561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		Collection myCollection = new ArrayList();
1673561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		myCollection.add(new Integer(20));
1674561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		myCollection.add(null);
1675561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		c = Collections.unmodifiableCollection(myCollection);
1676561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertTrue("Collection should contain null", c.contains(null));
1677561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertTrue("Collection should contain Integer(20)", c
1678561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				.contains(new Integer(20)));
1679561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1680561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		myCollection = new ArrayList();
1681561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		for (int counter = 0; counter < 100; counter++) {
1682561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			myCollection.add(objArray[counter]);
1683561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
1684561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		new Support_UnmodifiableCollectionTest("", Collections
1685561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				.unmodifiableCollection(myCollection)).runTest();
1686561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	}
1687561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1688561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	/**
1689561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 * @tests java.util.Collections#unmodifiableList(java.util.List)
1690561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 */
1691561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	public void test_unmodifiableListLjava_util_List() {
1692561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// Test for method java.util.List
1693561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// java.util.Collections.unmodifiableList(java.util.List)
1694561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1695561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// test with a Sequential Access List
1696561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		boolean exception = false;
1697561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		List c = Collections.unmodifiableList(ll);
1698561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// Ensure a NPE is thrown if the list is NULL
1699561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		try {
1700561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			Collections.unmodifiableList(null);
1701561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			fail("Expected NullPointerException for null list parameter");
1702561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		} catch (NullPointerException e) {
1703561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
1704561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1705561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertTrue("Returned list is of incorrect size", c.size() == ll.size());
1706561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertTrue(
1707561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				"Returned List should not implement Random Access interface",
1708561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				!(c instanceof RandomAccess));
1709561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1710561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		Iterator i = ll.iterator();
1711561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		while (i.hasNext())
1712561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			assertTrue("Returned list missing elements", c.contains(i.next()));
1713561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		try {
1714561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			c.add(new Object());
1715561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		} catch (UnsupportedOperationException e) {
1716561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			exception = true;
1717561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			// Correct
1718561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
1719561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		if (!exception) {
1720561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			fail("Allowed modification of list");
1721561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
1722561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1723561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		try {
1724561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			c.remove(new Object());
1725561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("Allowed modification of list");
1726561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		} catch (UnsupportedOperationException e) {
1727561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			// Correct
1728561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
1729561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1730561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// test with a Random Access List
1731561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		List smallList = new ArrayList();
1732561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		smallList.add(null);
1733561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		smallList.add("yoink");
1734561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		c = Collections.unmodifiableList(smallList);
1735561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertNull("First element should be null", c.get(0));
1736561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertTrue("List should contain null", c.contains(null));
1737561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertTrue(
1738561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				"T1. Returned List should implement Random Access interface",
1739561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				c instanceof RandomAccess);
1740561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1741561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		smallList = new ArrayList();
1742561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		for (int counter = 0; counter < 100; counter++) {
1743561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			smallList.add(objArray[counter]);
1744561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
1745561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		List myList = Collections.unmodifiableList(smallList);
1746561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertTrue("List should not contain null", !myList.contains(null));
1747561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertTrue(
1748561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				"T2. Returned List should implement Random Access interface",
1749561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				myList instanceof RandomAccess);
1750561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1751561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertTrue("get failed on unmodifiable list", myList.get(50).equals(
1752561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				new Integer(50)));
1753561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		ListIterator listIterator = myList.listIterator();
1754561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		for (int counter = 0; listIterator.hasNext(); counter++) {
1755561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			assertTrue("List has wrong elements", ((Integer) listIterator
1756561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes					.next()).intValue() == counter);
1757561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
1758561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		new Support_UnmodifiableCollectionTest("", smallList).runTest();
1759561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	}
1760561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1761561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	/**
1762561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 * @tests java.util.Collections#unmodifiableMap(java.util.Map)
1763561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 */
1764561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	public void test_unmodifiableMapLjava_util_Map() {
1765561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// Test for method java.util.Map
1766561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// java.util.Collections.unmodifiableMap(java.util.Map)
1767561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		boolean exception = false;
1768561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		Map c = Collections.unmodifiableMap(hm);
1769561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertTrue("Returned map is of incorrect size", c.size() == hm.size());
1770561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		Iterator i = hm.keySet().iterator();
1771561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		while (i.hasNext()) {
1772561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			Object x = i.next();
1773561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			assertTrue("Returned map missing elements", c.get(x).equals(
1774561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes					hm.get(x)));
1775561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
1776561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		try {
1777561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			c.put(new Object(), "");
1778561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		} catch (UnsupportedOperationException e) {
1779561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			exception = true;
1780561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			// Correct
1781561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
1782561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertTrue("Allowed modification of map", exception);
1783561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1784561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		exception = false;
1785561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		try {
1786561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			c.remove(new Object());
1787561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		} catch (UnsupportedOperationException e) {
1788561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			// Correct
1789561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			exception = true;
1790561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
1791561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertTrue("Allowed modification of map", exception);
1792561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1793561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		exception = false;
1794561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		Iterator it = c.entrySet().iterator();
1795561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		Map.Entry entry = (Map.Entry) it.next();
1796561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		try {
1797561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			entry.setValue("modified");
1798561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		} catch (UnsupportedOperationException e) {
1799561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			// Correct
1800561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			exception = true;
1801561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
1802561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertTrue("Allowed modification of entry", exception);
1803561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1804561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		exception = false;
1805561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		Object[] array = c.entrySet().toArray();
1806561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		try {
1807561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			((Map.Entry) array[0]).setValue("modified");
1808561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		} catch (UnsupportedOperationException e) {
1809561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			// Correct
1810561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			exception = true;
1811561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
1812561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertTrue("Allowed modification of array entry", exception);
1813561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1814561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		exception = false;
1815561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		Map.Entry[] array2 = (Map.Entry[]) c.entrySet().toArray(
1816561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				new Map.Entry[0]);
1817561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		try {
1818561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			array2[0].setValue("modified");
1819561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		} catch (UnsupportedOperationException e) {
1820561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			// Correct
1821561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			exception = true;
1822561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
1823561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertTrue("Allowed modification of array entry2", exception);
1824561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1825561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		HashMap smallMap = new HashMap();
1826561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		smallMap.put(null, new Long(30));
1827561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		smallMap.put(new Long(25), null);
1828561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		Map unmodMap = Collections.unmodifiableMap(smallMap);
1829561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1830561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertNull("Trying to use a null value in map failed", unmodMap
1831561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				.get(new Long(25)));
1832561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertTrue("Trying to use a null key in map failed", unmodMap.get(null)
1833561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				.equals(new Long(30)));
1834561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1835561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		smallMap = new HashMap();
1836561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		for (int counter = 0; counter < 100; counter++) {
1837561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			smallMap.put(objArray[counter].toString(), objArray[counter]);
1838561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
1839561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		unmodMap = Collections.unmodifiableMap(smallMap);
1840561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		new Support_UnmodifiableMapTest("", unmodMap).runTest();
1841561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1842561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	}
1843561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1844561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	/**
1845561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 * @tests java.util.Collections#unmodifiableSet(java.util.Set)
1846561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 */
1847561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	public void test_unmodifiableSetLjava_util_Set() {
1848561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// Test for method java.util.Set
1849561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// java.util.Collections.unmodifiableSet(java.util.Set)
1850561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		boolean exception = false;
1851561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		Set c = Collections.unmodifiableSet(s);
1852561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertTrue("Returned set is of incorrect size", c.size() == s.size());
1853561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		Iterator i = ll.iterator();
1854561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		while (i.hasNext())
1855561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			assertTrue("Returned set missing elements", c.contains(i.next()));
1856561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		try {
1857561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			c.add(new Object());
1858561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		} catch (UnsupportedOperationException e) {
1859561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			exception = true;
1860561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			// Correct
1861561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
1862561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		if (!exception) {
1863561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			fail("Allowed modification of set");
1864561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
1865561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		try {
1866561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			c.remove(new Object());
1867561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("Allowed modification of set");
1868561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		} catch (UnsupportedOperationException e) {
1869561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			// Correct
1870561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
1871561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1872561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		Set mySet = Collections.unmodifiableSet(new HashSet());
1873561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertTrue("Should not contain null", !mySet.contains(null));
1874561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		mySet = Collections.unmodifiableSet(Collections.singleton(null));
1875561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertTrue("Should contain null", mySet.contains(null));
1876561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1877561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		mySet = new TreeSet();
1878561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		for (int counter = 0; counter < 100; counter++) {
1879561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			mySet.add(objArray[counter]);
1880561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
1881561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		new Support_UnmodifiableCollectionTest("", Collections
1882561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				.unmodifiableSet(mySet)).runTest();
1883561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	}
1884561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1885561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	/**
1886561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 * @tests java.util.Collections#unmodifiableSortedMap(java.util.SortedMap)
1887561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 */
1888561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	public void test_unmodifiableSortedMapLjava_util_SortedMap() {
1889561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// Test for method java.util.SortedMap
1890561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// java.util.Collections.unmodifiableSortedMap(java.util.SortedMap)
1891561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		boolean exception = false;
1892561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		TreeMap tm = new TreeMap();
1893561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		tm.putAll(hm);
1894561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		Map c = Collections.unmodifiableSortedMap(tm);
1895561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertTrue("Returned map is of incorrect size", c.size() == tm.size());
1896561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		Iterator i = hm.keySet().iterator();
1897561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		while (i.hasNext()) {
1898561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			Object x = i.next();
1899561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			assertTrue("Returned map missing elements", c.get(x).equals(
1900561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes					tm.get(x)));
1901561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
1902561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		try {
1903561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			c.put(new Object(), "");
1904561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		} catch (UnsupportedOperationException e) {
1905561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			exception = true;
1906561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			// Correct
1907561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
1908561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		if (!exception) {
1909561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			fail("Allowed modification of map");
1910561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
1911561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		try {
1912561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			c.remove(new Object());
1913561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		} catch (UnsupportedOperationException e) {
1914561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			// Correct
1915561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			return;
1916561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
1917561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		fail("Allowed modification of map");
1918561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	}
1919561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1920561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	/**
1921561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 * @tests java.util.Collections#unmodifiableSortedSet(java.util.SortedSet)
1922561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 */
1923561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	public void test_unmodifiableSortedSetLjava_util_SortedSet() {
1924561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// Test for method java.util.SortedSet
1925561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// java.util.Collections.unmodifiableSortedSet(java.util.SortedSet)
1926561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		boolean exception = false;
1927561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		SortedSet ss = new TreeSet();
1928561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		ss.addAll(s);
1929561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		SortedSet c = Collections.unmodifiableSortedSet(ss);
1930561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertTrue("Returned set is of incorrect size", c.size() == ss.size());
1931561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		Iterator i = ll.iterator();
1932561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		while (i.hasNext())
1933561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			assertTrue("Returned set missing elements", c.contains(i.next()));
1934561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		try {
1935561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			c.add(new Object());
1936561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		} catch (UnsupportedOperationException e) {
1937561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			exception = true;
1938561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			// Correct
1939561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
1940561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		if (!exception) {
1941561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			fail("Allowed modification of set");
1942561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
1943561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		try {
1944561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			c.remove(new Object());
1945561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		} catch (UnsupportedOperationException e) {
1946561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			// Correct
1947561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			return;
1948561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
1949561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		fail("Allowed modification of set");
1950561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	}
1951561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1952561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	/**
1953561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * Test unmodifiable objects toString methods
1954561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
1955561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_unmodifiable_toString_methods() {
1956561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // Regression for HARMONY-552
1957561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        ArrayList al = new ArrayList();
1958561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        al.add("a");
1959561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        al.add("b");
1960561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Collection uc = Collections.unmodifiableCollection(al);
1961561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("[a, b]", uc.toString());
1962561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        HashMap m = new HashMap();
1963561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        m.put("one", "1");
1964561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        m.put("two", "2");
1965561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Map um = Collections.unmodifiableMap(m);
1966561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("{one=1, two=2}", um.toString());
1967561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
1968561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1969561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
1970561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.util.Collections#checkType(Object, Class)
1971561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
1972561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_checkType_Ljava_lang_Object_Ljava_lang_Class() throws Exception {
1973561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Method m = Collections.class.getDeclaredMethod("checkType", Object.class, Class.class);
1974561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes   		m.setAccessible(true);
1975561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes   		m.invoke(null, new Object(), Object.class);
1976561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1977561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes   		try {
1978561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes   			m.invoke(null, new Object(), int.class);
19792a68e06b23ceb5b401d5bc784e6882e71c662caeElliott Hughes   			fail();
19802a68e06b23ceb5b401d5bc784e6882e71c662caeElliott Hughes   		} catch (InvocationTargetException expected) {
1981561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes   		}
1982561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
1983561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1984561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_binarySearch_asymmetry_with_comparator() throws Exception{
1985561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        List list = new ArrayList();
1986561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        String s1 = new String("a");
1987561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        String s2 = new String("aa");
1988561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        String s3 = new String("aaa");
1989561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        list.add(s1);
1990561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        list.add(s2);
1991561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        list.add(s3);
1992561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Collections.sort(list);
1993561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Object o = Collections.binarySearch(list, 1, new StringComparator());
1994561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertSame(0,o);
1995561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
1996561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1997561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_binarySearch_asymmetry() throws Exception{
1998561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        List list = new LinkedList();
1999561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        String s1 = new String("a");
2000561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        String s2 = new String("aa");
2001561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        String s3 = new String("aaa");
2002561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        list.add(new MyComparable(s1));
2003561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        list.add(new MyComparable(s2));
2004561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        list.add(new MyComparable(s3));
2005561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Collections.sort(list);
2006561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Object o = Collections.binarySearch(list, 1);
2007561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertSame(0,o);
2008561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
2009561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
2010561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
2011561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    private class MyComparable implements Comparable {
2012561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
2013561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        public String s;
2014561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
2015561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        public MyComparable(String s) {
2016561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            this.s = s;
2017561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
2018561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
2019561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
2020561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        public int compareTo(Object another) {
2021561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            int length = 0;
2022561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            if (another instanceof MyComparable) {
2023561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                length = (((MyComparable) another).s).length();
2024561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            } else {
2025561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                length = (Integer) another;
2026561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
2027561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            return s.length() - length;
2028561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
2029561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
2030561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
2031561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
2032561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    private class StringComparator implements Comparator {
2033561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
2034561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        public int compare(Object object1, Object object2) {
2035561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            String s = (String) object1;
2036561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            int length;
2037561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            if(object2 instanceof String){
2038561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                length = ((String)object2).length();
2039561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
2040561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            else
2041561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            {
2042561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                length = (Integer) object2;
2043561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
2044561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            return s.length() - length;
2045561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
2046561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
2047561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
2048561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
2049561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
2050561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests {@link java.util.Collections#newSetFromMap(Map)}
2051561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
2052561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_newSetFromMap_LMap() throws Exception {
2053561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Integer testInt[] = new Integer[100];
2054561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 0; i < testInt.length; i++) {
2055561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            testInt[i] = new Integer(i);
2056561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
2057561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Map<Integer,Boolean> map = new HashMap<Integer,Boolean>();
2058561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Set<Integer> set = Collections.newSetFromMap(map);
2059561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 0; i < testInt.length; i++) {
2060561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            map.put(testInt[i], true);
2061561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
2062561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // operater on map successed
2063561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        map.put(testInt[1], false);
2064561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue(map.containsKey(testInt[1]));
2065561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(100, map.size());
2066561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse(map.get(testInt[1]));
2067561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(100, set.size());
2068561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue(set.contains(testInt[16]));
2069561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Iterator setIter = set.iterator();
2070561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Iterator mapIter = map.keySet().iterator();
2071561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        int i = 0;
2072561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // in the same order
2073561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        while(setIter.hasNext()){
2074561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(mapIter.next(),setIter.next());
2075561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
2076561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
2077561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // operator on set successed
2078561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Integer testInt101 = new Integer(101);
2079561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Integer testInt102 = new Integer(102);
2080561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        set.add(testInt101);
2081561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue(set.contains(testInt101));
2082561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue(map.get(testInt101));
2083561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
2084561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // operator on map still passes
2085561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        map.put(testInt102, false);
2086561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue(set.contains(testInt102));
2087561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse(map.get(testInt102));
2088561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
2089561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // exception thrown
2090561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
2091561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            Collections.newSetFromMap(map);
2092561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail ("should throw IllegalArgumentException");
2093561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
2094561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // expected
2095561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
2096561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
2097561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
2098561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
2099561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests serialization/deserialization.
2100561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
2101561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    @SuppressWarnings({ "unchecked", "boxing" })
2102561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void testSerializationSelf_newSetFromMap() throws Exception {
2103561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Integer testInt[] = new Integer[100];
2104561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 0; i < testInt.length; i++) {
2105561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            testInt[i] = new Integer(i);
2106561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
2107561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Map<Integer,Boolean> map = new HashMap<Integer,Boolean>();
2108561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Set<Integer> set = Collections.newSetFromMap(map);
2109561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 0; i < testInt.length; i++) {
2110561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            map.put(testInt[i], true);
2111561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
2112561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        SerializationTest.verifySelf(set);
2113561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
2114561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
2115561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
2116561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests serialization/deserialization compatibility with RI.
2117561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
2118561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    @SuppressWarnings({ "unchecked", "boxing" })
2119561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void testSerializationCompatibility_newSetFromMap() throws Exception {
2120561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Integer testInt[] = new Integer[100];
2121561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 0; i < testInt.length; i++) {
2122561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            testInt[i] = new Integer(i);
2123561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
2124561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Map<Integer,Boolean> map = new HashMap<Integer,Boolean>();
2125561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Set<Integer> set = Collections.newSetFromMap(map);
2126561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 0; i < testInt.length; i++) {
2127561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            map.put(testInt[i], true);
2128561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
2129561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue(SerializationTester.assertCompabilityEquals(set, "serialization/java/util/Collections_newSetFromMap.golden.ser"));
2130561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
2131561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
2132561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
2133561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests {@link java.util.Collections#asLifoQueue(Deque)
2134561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
2135561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_asLifoQueue() throws Exception {
2136561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Integer testInt[] = new Integer[100];
2137561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Integer test101 = new Integer(101);
2138561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 0; i < testInt.length; i++) {
2139561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            testInt[i] = new Integer(i);
2140561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
2141561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Deque deque = new ArrayDeque<Integer>();
2142561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Queue<Integer> que = Collections.asLifoQueue(deque);
2143561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 0; i < testInt.length; i++) {
2144561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            que.add(testInt[i]);
2145561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
2146561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(100, deque.size());
2147561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(100, que.size());
2148561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = testInt.length-1; i >=0 ; i--) {
2149561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(testInt[i], deque.pop());
2150561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
2151561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(0, deque.size());
2152561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(0, que.size());
2153561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 0; i < testInt.length; i++) {
2154561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            deque.push(testInt[i]);
2155561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
2156561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(100, deque.size());
2157561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(100, que.size());
2158561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Collection col = new LinkedList<Integer>();
2159561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        col.add(test101);
2160561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        que.addAll(col);
2161561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(test101, que.remove());
2162561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = testInt.length-1; i >=0 ; i--) {
2163561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(testInt[i], que.remove());
2164561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
2165561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(0, deque.size());
2166561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(0, que.size());
2167561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
2168561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
2169561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
2170561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests serialization/deserialization.
2171561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
2172561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    @SuppressWarnings({ "unchecked", "boxing" })
2173561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void testSerializationSelf_asLifoQueue() throws Exception {
2174561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Integer testInt[] = new Integer[100];
2175561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Integer test101 = new Integer(101);
2176561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 0; i < testInt.length; i++) {
2177561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            testInt[i] = new Integer(i);
2178561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
2179561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Deque deque = new ArrayDeque<Integer>();
2180561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Queue<Integer> que = Collections.asLifoQueue(deque);
2181561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 0; i < testInt.length; i++) {
2182561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            que.add(testInt[i]);
2183561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
2184561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        SerializationTest.verifySelf(que, new SerializableAssert(){
2185561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            public void assertDeserialized(Serializable initial, Serializable deserialized) {
2186561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                Queue<Integer> initque = (Queue) initial;
2187561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                Queue<Integer> deserque = (Queue) deserialized;
2188561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                while (!initque.isEmpty()){
2189561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    assertEquals(initque.remove(),deserque.remove());
2190561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                }
2191561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
2192561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        });
2193561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
2194561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
2195561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
2196561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests serialization/deserialization compatibility with RI.
2197561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
2198561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    @SuppressWarnings({ "unchecked", "boxing" })
2199561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void testSerializationCompatibility_asLifoQueue() throws Exception {
2200561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Integer testInt[] = new Integer[100];
2201561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Integer test101 = new Integer(101);
2202561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 0; i < testInt.length; i++) {
2203561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            testInt[i] = new Integer(i);
2204561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
2205561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Deque deque = new ArrayDeque<Integer>();
2206561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Queue<Integer> que = Collections.asLifoQueue(deque);
2207561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 0; i < testInt.length; i++) {
2208561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            que.add(testInt[i]);
2209561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
2210561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Queue deserQue = (Queue)SerializationTester.readObject(que, "serialization/java/util/Collections_asLifoQueue.golden.ser");
2211561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        while(!deserQue.isEmpty()){
2212561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(que.remove(),deserQue.remove());
2213561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
2214561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
2215561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
2216561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
2217561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.util.Collections#emptyList()
2218561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
2219561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_emptyList() {
2220561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    	List<String> list = Collections.emptyList();
2221561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    	assertTrue("should be true", list.isEmpty());
2222561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
2223561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
2224561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
2225561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * Sets up the fixture, for example, open a network connection. This method
2226561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * is called before a test is executed.
2227561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
2228561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	protected void setUp() {
2229561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		ll = new LinkedList();
2230561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		myll = new LinkedList();
2231561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		s = new HashSet();
2232561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		mys = new HashSet();
2233561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		reversedLinkedList = new LinkedList(); // to be sorted in reverse order
2234561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		myReversedLinkedList = new LinkedList(); // to be sorted in reverse
2235561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// order
2236561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		hm = new HashMap();
2237561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		for (int i = 0; i < objArray.length; i++) {
2238561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			ll.add(objArray[i]);
2239561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			myll.add(myobjArray[i]);
2240561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			s.add(objArray[i]);
2241561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			mys.add(myobjArray[i]);
2242561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			reversedLinkedList.add(objArray[objArray.length - i - 1]);
2243561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			myReversedLinkedList.add(myobjArray[myobjArray.length - i - 1]);
2244561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			hm.put(objArray[i].toString(), objArray[i]);
2245561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
2246561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	}
2247561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
2248561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	/**
2249561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 * Tears down the fixture, for example, close a network connection. This
2250561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 * method is called after a test is executed.
2251561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 */
2252561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	protected void tearDown() {
2253561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	}
2254561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
2255561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	protected void doneSuite() {
2256561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		objArray = null;
2257561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	}
2258561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes}
2259