You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@harmony.apache.org by te...@apache.org on 2008/09/26 12:46:45 UTC

svn commit: r699262 [2/3] - in /harmony/enhanced/classlib/trunk/modules/luni/src/test/api/common/org/apache/harmony/luni/tests/java/util: ArrayListTest.java ArraysTest.java CollectionsTest.java HashMapTest.java

Modified: harmony/enhanced/classlib/trunk/modules/luni/src/test/api/common/org/apache/harmony/luni/tests/java/util/CollectionsTest.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/trunk/modules/luni/src/test/api/common/org/apache/harmony/luni/tests/java/util/CollectionsTest.java?rev=699262&r1=699261&r2=699262&view=diff
==============================================================================
--- harmony/enhanced/classlib/trunk/modules/luni/src/test/api/common/org/apache/harmony/luni/tests/java/util/CollectionsTest.java (original)
+++ harmony/enhanced/classlib/trunk/modules/luni/src/test/api/common/org/apache/harmony/luni/tests/java/util/CollectionsTest.java Fri Sep 26 03:46:45 2008
@@ -1,2066 +1,2066 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You under the Apache License, Version 2.0
- *  (the "License"); you may not use this file except in compliance with
- *  the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-
-package org.apache.harmony.luni.tests.java.util;
-
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.Comparator;
-import java.util.Enumeration;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.ListIterator;
-import java.util.Map;
-import java.util.Random;
-import java.util.RandomAccess;
-import java.util.Set;
-import java.util.SortedSet;
-import java.util.TreeMap;
-import java.util.TreeSet;
-
-import org.apache.harmony.luni.internal.nls.Messages;
-
-import tests.support.Support_CollectionTest;
-import tests.support.Support_ListTest;
-import tests.support.Support_SetTest;
-import tests.support.Support_UnmodifiableCollectionTest;
-import tests.support.Support_UnmodifiableMapTest;
-
-public class CollectionsTest extends junit.framework.TestCase {
-
-	LinkedList ll;
-
-	LinkedList myll;
-
-	LinkedList reversedLinkedList;
-
-	LinkedList myReversedLinkedList;
-
-	Set s;
-
-	Set mys;
-
-	HashMap hm;
-
-	static Object[] objArray;
-
-	static Object[] myobjArray;
-	{
-		objArray = new Object[1000];
-		myobjArray = new Object[1000];
-		for (int i = 0; i < objArray.length; i++) {
-			objArray[i] = new Integer(i);
-			myobjArray[i] = new MyInt(i);
-		}
-	}
-
-	public static class ReversedMyIntComparator implements Comparator {
-		public int compare(Object o1, Object o2) {
-			return -((MyInt) o1).compareTo((MyInt) o2);
-		}
-
-		public int equals(Object o1, Object o2) {
-			return ((MyInt) o1).compareTo((MyInt) o2);
-		}
-	}
-
-	public static class SynchCollectionChecker implements Runnable {
-		Collection col;
-
-		int colSize;
-
-		int totalToRun;
-
-		boolean offset;
-
-		volatile int numberOfChecks = 0;
-
-		boolean result = true;
-
-		ArrayList normalCountingList;
-
-		ArrayList offsetCountingList;
-
-		public void run() {
-			// ensure the list either contains the numbers from 0 to size-1 or
-			// the numbers from size to 2*size -1
-			while (numberOfChecks < totalToRun) {
-				synchronized (col) {
-					if (!(col.isEmpty() || col.containsAll(normalCountingList) || col
-							.containsAll(offsetCountingList)))
-						result = false;
-					col.clear();
-				}
-				if (offset)
-					col.addAll(offsetCountingList);
-				else
-					col.addAll(normalCountingList);
-				numberOfChecks++;
-			}
-		}
-
-		public SynchCollectionChecker(Collection c, boolean offset,
-				int totalChecks) {
-			// The collection to test, whether to offset the filler values by
-			// size or not, and the min number of iterations to run
-			totalToRun = totalChecks;
-			col = c;
-			colSize = c.size();
-			normalCountingList = new ArrayList(colSize);
-			offsetCountingList = new ArrayList(colSize);
-			for (int counter = 0; counter < colSize; counter++)
-				normalCountingList.add(new Integer(counter));
-			for (int counter = 0; counter < colSize; counter++)
-				offsetCountingList.add(new Integer(counter + colSize));
-			col.clear();
-			if (offset)
-				col.addAll(offsetCountingList);
-			else
-				col.addAll(normalCountingList);
-		}
-
-		public boolean offset() {
-			// answer true iff the list is filled with a counting sequence
-			// starting at the value size to 2*size - 1
-			// else the list with be filled starting at 0 to size - 1
-			return offset;
-		}
-
-		public boolean getResult() {
-			// answer true iff no corruption has been found in the collection
-			return result;
-		}
-
-		public int getNumberOfChecks() {
-			// answer the number of checks that have been performed on the list
-			return numberOfChecks;
-		}
-	}
-
-	public static class SynchMapChecker implements Runnable {
-		Map map;
-
-		int mapSize;
-
-		int totalToRun;
-
-		boolean offset;
-
-		volatile int numberOfChecks = 0;
-
-		boolean result = true;
-
-		Map normalCountingMap;
-
-		Map offsetCountingMap;
-
-		public void run() {
-			Object firstNormalValue = normalCountingMap.get(new Integer(0));
-			Object lastNormalValue = normalCountingMap.get(new Integer(
-					mapSize - 1));
-			Object firstOffsetValue = offsetCountingMap
-					.get(new Integer(mapSize));
-			Object lastOffsetValue = offsetCountingMap.get(new Integer(
-					2 * mapSize - 1));
-			// ensure the list either contains the numbers from 0 to size-1 or
-			// the numbers from size to 2*size -1
-			while (numberOfChecks < totalToRun) {
-				synchronized (map) {
-					if (!(map.isEmpty()
-							|| (map.containsValue(firstNormalValue) && map
-									.containsValue(lastNormalValue)) || (map
-							.containsValue(firstOffsetValue) && map
-							.containsValue(lastOffsetValue))))
-						result = false;
-					map.clear();
-				}
-				if (offset)
-					map.putAll(offsetCountingMap);
-				else
-					map.putAll(normalCountingMap);
-				numberOfChecks++;
-			}
-		}
-
-		public SynchMapChecker(Map m, boolean offset, int totalChecks) {
-			// The collection to test, whether to offset the filler values by
-			// size or not, and the min number of iterations to run
-			Integer myInt;
-			totalToRun = totalChecks;
-			map = m;
-			mapSize = m.size();
-			normalCountingMap = new HashMap(mapSize);
-			offsetCountingMap = new HashMap(mapSize);
-			for (int counter = 0; counter < mapSize; counter++) {
-				myInt = new Integer(counter);
-				normalCountingMap.put(myInt, myInt);
-			}
-			for (int counter = 0; counter < mapSize; counter++) {
-				myInt = new Integer(counter + mapSize);
-				offsetCountingMap.put(myInt, myInt);
-			}
-			map.clear();
-			if (offset)
-				map.putAll(offsetCountingMap);
-			else
-				map.putAll(normalCountingMap);
-		}
-
-		public boolean offset() {
-			// answer true iff the list is filled with a counting sequence
-			// starting at the value size to 2*size - 1
-			// else the list with be filled starting at 0 to size - 1
-			return offset;
-		}
-
-		public boolean getResult() {
-			// answer true iff no corruption has been found in the collection
-			return result;
-		}
-
-		public int getNumberOfChecks() {
-			// answer the number of checks that have been performed on the list
-			return numberOfChecks;
-		}
-	}
-
-	public static class CollectionTest extends junit.framework.TestCase {
-
-		Collection col; // must contain the Integers 0 to 99
-
-		public CollectionTest(String p1) {
-			super(p1);
-		}
-
-		public CollectionTest(String p1, Collection c) {
-			super(p1);
-			col = c;
-		}
-
-	}
-
-	static class MyInt {
-		int data;
-
-		public MyInt(int value) {
-			data = value;
-		}
-
-		public int compareTo(MyInt object) {
-			return data > object.data ? 1 : (data < object.data ? -1 : 0);
-		}
-	}
-
-	/**
-	 * @tests java.util.Collections#binarySearch(java.util.List,
-	 *        java.lang.Object)
-	 */
-	public void test_binarySearchLjava_util_ListLjava_lang_Object() {
-		// Test for method int
-		// java.util.Collections.binarySearch(java.util.List, java.lang.Object)
-		// assumes ll is sorted and has no duplicate keys
-		final int llSize = ll.size();
-		// Ensure a NPE is thrown if the list is NULL
-		try {
-			Collections.binarySearch(null, new Object());
-			fail("Expected NullPointerException for null list parameter");
-		} catch (NullPointerException e) {
-            //Expected
-		}
-		for (int counter = 0; counter < llSize; counter++) {
-			assertEquals("Returned incorrect binary search item position", ll
-                    .get(counter), ll.get(Collections.binarySearch(ll, ll
-                    .get(counter))));
-		}
-	}
-
-	/**
-	 * @tests java.util.Collections#binarySearch(java.util.List,
-	 *        java.lang.Object, java.util.Comparator)
-	 */
-	public void test_binarySearchLjava_util_ListLjava_lang_ObjectLjava_util_Comparator() {
-		// Test for method int
-		// java.util.Collections.binarySearch(java.util.List, java.lang.Object,
-		// java.util.Comparator)
-		// assumes reversedLinkedList is sorted in reversed order and has no
-		// duplicate keys
-		final int rSize = myReversedLinkedList.size();
-		ReversedMyIntComparator comp = new ReversedMyIntComparator();
-		// Ensure a NPE is thrown if the list is NULL
-		try {
-			Collections.binarySearch(null, new Object(), comp);
-			fail("Expected NullPointerException for null list parameter");
-		} catch (NullPointerException e) {
-            //Expected
-		}
-		for (int counter = 0; counter < rSize; counter++) {
-			assertEquals(
-                    "Returned incorrect binary search item position using custom comparator",
-                    myReversedLinkedList.get(counter), myReversedLinkedList
-                            .get(Collections.binarySearch(myReversedLinkedList,
-                                    myReversedLinkedList.get(counter), comp)));
-		}
-	}
-
-	/**
-	 * @tests java.util.Collections#copy(java.util.List, java.util.List)
-	 */
-	public void test_copyLjava_util_ListLjava_util_List() {
-		// Test for method void java.util.Collections.copy(java.util.List,
-		// java.util.List)
-		// Ensure a NPE is thrown if the list is NULL
-		try {
-			Collections.copy(null, ll);
-			fail("Expected NullPointerException for null list first parameter");
-		} catch (NullPointerException e) {
-		    //Expected
-		}
-		try {
-			Collections.copy(ll, null);
-			fail("Expected NullPointerException for null list second parameter");
-		} catch (NullPointerException e) {
-            //Expected
-		}
-		final int llSize = ll.size();
-		ll.set(25, null);
-		ArrayList al = new ArrayList();
-		Integer extraElement = new Integer(1);
-		Integer extraElement2 = new Integer(2);
-		al.addAll(myReversedLinkedList);
-		al.add(extraElement);
-		al.add(extraElement2);
-		Collections.copy(al, ll);
-		for (int counter = 0; counter < llSize; counter++) {
-			assertEquals("Elements do not match after copying collection", ll
-                    .get(counter), al.get(counter));
-		}
-		assertTrue("Elements after copied elements affected by copy",
-				extraElement == al.get(llSize)
-						&& extraElement2 == al.get(llSize + 1));
-	}
-
-	/**
-	 * @tests java.util.Collections#copy(java.util.List, java.util.List)
-	 */
-	public void test_copy_check_index() {
-		ArrayList a1 = new ArrayList();
-		a1.add("one");
-		a1.add("two");
-
-		ArrayList a2 = new ArrayList();
-		a2.add("aa");
-
-		try {
-			Collections.copy(a2, a1);
-			fail("Expected IndexOutOfBoundsException");
-		} catch (IndexOutOfBoundsException e) {
-            //Expected
-		}
-
-		assertEquals("aa", a2.get(0));
-	}
-
-	/**
-	 * @tests java.util.Collections#enumeration(java.util.Collection)
-	 */
-	public void test_enumerationLjava_util_Collection() {
-		// Test for method java.util.Enumeration
-		// java.util.Collections.enumeration(java.util.Collection)
-		TreeSet ts = new TreeSet();
-		ts.addAll(s);
-		Enumeration e = Collections.enumeration(ts);
-		int count = 0;
-		while (e.hasMoreElements()) {
-			assertEquals("Returned incorrect enumeration", e.nextElement(),
-                    objArray[count++]);
-        }
-		assertEquals("Enumeration missing elements: " + count, objArray.length,
-                count);
-	}
-
-	/**
-	 * @tests java.util.Collections#fill(java.util.List, java.lang.Object)
-	 */
-	public void test_fillLjava_util_ListLjava_lang_Object() {
-		// Test for method void java.util.Collections.fill(java.util.List,
-		// java.lang.Object)
-		try {
-			Collections.fill(null, new Object());
-			fail("Expected NullPointerException for null list parameter");
-		} catch (NullPointerException e) {
-            //Expected
-		}
-		final int size = ll.size();
-		Collections.fill(ll, "k");
-		assertEquals("Fill modified list size", size, ll.size());
-		Iterator i = ll.iterator();
-		while (i.hasNext())
-			assertEquals("Failed to fill elements", "k", i.next());
-
-		Collections.fill(ll, null);
-		assertEquals("Fill with nulls modified list size", size, ll.size());
-		i = ll.iterator();
-		while (i.hasNext())
-			assertNull("Failed to fill with nulls", i.next());
-	}
-
-	/**
-	 * @tests java.util.Collections#max(java.util.Collection)
-	 */
-	public void test_maxLjava_util_Collection() {
-		// Test for method java.lang.Object
-		// java.util.Collections.max(java.util.Collection)
-		// assumes s, objArray are sorted
-		assertEquals("Returned incorrect max element", Collections.max(s),
-                objArray[objArray.length - 1]);
-	}
-
-	/**
-	 * @tests java.util.Collections#max(java.util.Collection,
-	 *        java.util.Comparator)
-	 */
-	public void test_maxLjava_util_CollectionLjava_util_Comparator() {
-		// Test for method java.lang.Object
-		// java.util.Collections.max(java.util.Collection, java.util.Comparator)
-		// assumes s, objArray are sorted
-
-		// With this custom (backwards) comparator the 'max' element should be
-		// the smallest in the list
-		assertEquals("Returned incorrect max element using custom comparator",
-                Collections.max(mys, new ReversedMyIntComparator()),
-                myobjArray[0]);
-    }
-
-	/**
-	 * @tests java.util.Collections#min(java.util.Collection)
-	 */
-	public void test_minLjava_util_Collection() {
-		// Test for method java.lang.Object
-		// java.util.Collections.min(java.util.Collection)
-		// assumes s, objArray are sorted
-		assertEquals("Returned incorrect min element", Collections.min(s),
-                objArray[0]);
-	}
-
-	/**
-	 * @tests java.util.Collections#min(java.util.Collection,
-	 *        java.util.Comparator)
-	 */
-	public void test_minLjava_util_CollectionLjava_util_Comparator() {
-		// Test for method java.lang.Object
-		// java.util.Collections.min(java.util.Collection, java.util.Comparator)
-		// assumes s, objArray are sorted
-
-		// With this custom (backwards) comparator the 'min' element should be
-		// the largest in the list
-		assertEquals("Returned incorrect min element using custom comparator",
-                Collections.min(mys, new ReversedMyIntComparator()),
-                myobjArray[objArray.length - 1]);
-    }
-
-	/**
-	 * @tests java.util.Collections#nCopies(int, java.lang.Object)
-	 */
-	public void test_nCopiesILjava_lang_Object() {
-		// Test for method java.util.List java.util.Collections.nCopies(int,
-		// java.lang.Object)
-		Object o = new Object();
-		List l = Collections.nCopies(100, o);
-		Iterator i = l.iterator();
-		Object first = i.next();
-		assertEquals("Returned list consists of copies not refs", first, o);
-		assertEquals("Returned list of incorrect size", 100, l.size());
-		assertTrue("Contains", l.contains(o));
-		assertFalse("Contains null", l.contains(null));
-		assertFalse("null nCopies contains", Collections.nCopies(2, null)
-				.contains(o));
-		assertTrue("null nCopies contains null", Collections.nCopies(2, null)
-				.contains(null));
-		l = Collections.nCopies(20, null);
-		i = l.iterator();
-		for (int counter = 0; i.hasNext(); counter++) {
-			assertTrue("List is too large", counter < 20);
-			assertNull("Element should be null: " + counter, i.next());
-		}
-		try {
-			l.add(o);
-			fail("Returned list is not immutable");
-		} catch (UnsupportedOperationException e) {
-			// Expected
-		}
-		try {
-			Collections.nCopies(-2, new HashSet());
-			fail("nCopies with negative arg didn't throw IAE");
-		} catch (IllegalArgumentException e) {
-			// Expected
-		}
-	}
-
-	/**
-	 * @tests java.util.Collections#reverse(java.util.List)
-	 */
-	public void test_reverseLjava_util_List() {
-		// Test for method void java.util.Collections.reverse(java.util.List)
-		try {
-			Collections.reverse(null);
-			fail("Expected NullPointerException for null list parameter");
-		} catch (NullPointerException e) {
-            //Expected
-		}
-		Collections.reverse(ll);
-		Iterator i = ll.iterator();
-		int count = objArray.length - 1;
-		while (i.hasNext()) {
-			assertEquals("Failed to reverse collection", objArray[count], i
-                    .next());
-            --count;
-		}
-		ArrayList myList = new ArrayList();
-		myList.add(null);
-		myList.add(new Integer(20));
-		Collections.reverse(myList);
-		assertEquals("Did not reverse correctly--first element is: "
-                + myList.get(0), new Integer(20), myList.get(0));
-		assertNull("Did not reverse correctly--second element is: "
-				+ myList.get(1), myList.get(1));
-	}
-
-	/**
-	 * @tests java.util.Collections#reverseOrder()
-	 */
-	public void test_reverseOrder() {
-		// Test for method java.util.Comparator
-		// java.util.Collections.reverseOrder()
-		// assumes no duplicates in ll
-		Comparator comp = Collections.reverseOrder();
-		LinkedList list2 = new LinkedList(ll);
-		Collections.sort(list2, comp);
-		final int llSize = ll.size();
-		for (int counter = 0; counter < llSize; counter++)
-			assertEquals("New comparator does not reverse sorting order", list2
-                    .get(llSize - counter - 1), ll.get(counter));
-	}
-
-	/**
-	 * @tests java.util.Collections#shuffle(java.util.List)
-	 */
-	public void test_shuffleLjava_util_List() {
-		// Test for method void java.util.Collections.shuffle(java.util.List)
-		// Assumes ll is sorted and has no duplicate keys and is large ( > 20
-		// elements)
-
-		// test shuffling a Sequential Access List
-		try {
-			Collections.shuffle(null);
-			fail("Expected NullPointerException for null list parameter");
-		} catch (NullPointerException e) {
-            //Expected
-		}
-		ArrayList al = new ArrayList();
-		al.addAll(ll);
-		testShuffle(al, "Sequential Access", false);
-
-		// test shuffling a Random Access List
-		LinkedList ll2 = new LinkedList();
-		ll2.addAll(ll);
-		testShuffle(ll2, "Random Access", false);
-	}
-
-	private void testShuffle(List list, String type, boolean random) {
-		boolean sorted = true;
-		boolean allMatch = true;
-		int index = 0;
-		final int size = list.size();
-
-		if (random)
-			Collections.shuffle(list);
-		else
-			Collections.shuffle(list, new Random(200));
-
-		for (int counter = 0; counter < size - 1; counter++) {
-			if (((Integer) list.get(counter)).compareTo((Integer)list.get(counter + 1)) > 0) {
-				sorted = false;
-			}
-		}
-		assertFalse("Shuffling sorted " + type
-				+ " list resulted in sorted list (should be unlikely)", sorted);
-		for (int counter = 0; counter < 20; counter++) {
-			index = 30031 * counter % (size + 1); // 30031 is a large prime
-			if (list.get(index) != ll.get(index))
-				allMatch = false;
-		}
-		assertFalse("Too many element positions match in shuffled " + type
-				+ " list", allMatch);
-	}
-
-	/**
-	 * @tests java.util.Collections#shuffle(java.util.List, java.util.Random)
-	 */
-	public void test_shuffleLjava_util_ListLjava_util_Random() {
-		// Test for method void java.util.Collections.shuffle(java.util.List,
-		// java.util.Random)
-		// Assumes ll is sorted and has no duplicate keys and is large ( > 20
-		// elements)
-
-		// test shuffling a Sequential Access List
-		try {
-			Collections.shuffle(null, new Random(200));
-			fail("Expected NullPointerException for null list parameter");
-		} catch (NullPointerException e) {
-            //Excepted
-		}
-		ArrayList al = new ArrayList();
-		al.addAll(ll);
-		testShuffle(al, "Sequential Access", true);
-
-		// test shuffling a Random Access List
-		LinkedList ll2 = new LinkedList();
-		ll2.addAll(ll);
-		testShuffle(ll2, "Random Access", true);
-        
-        List l = new ArrayList();
-        l.add('a');
-        l.add('b');
-        l.add('c');
-        Collections.shuffle(l, new Random(12345678921L));
-        assertEquals("acb", l.get(0).toString()+l.get(1)+l.get(2));
-	}
-
-	/**
-	 * @tests java.util.Collections#singleton(java.lang.Object)
-	 */
-	public void test_singletonLjava_lang_Object() {
-		// Test for method java.util.Set
-		// java.util.Collections.singleton(java.lang.Object)
-		Object o = new Object();
-		Set single = Collections.singleton(o);
-		assertEquals("Wrong size", 1, single.size());
-		assertTrue("Contains", single.contains(o));
-		assertFalse("Contains null", single.contains(null));
-		assertFalse("null nCopies contains", Collections.singleton(null)
-				.contains(o));
-		assertTrue("null nCopies contains null", Collections.singleton(null)
-				.contains(null));
-		try {
-			single.add("l");
-            fail("Allowed modification of singleton");
-		} catch (UnsupportedOperationException e) {
-			// Excepted
-		}
-	}
-
-	/**
-	 * @tests java.util.Collections#sort(java.util.List)
-	 */
-	public void test_sortLjava_util_List() {
-		// Test for method void java.util.Collections.sort(java.util.List)
-		// assumes no duplicate keys in ll
-		final int llSize = ll.size();
-		final int rllSize = reversedLinkedList.size();
-		try {
-                        Collections.sort((List)null);
-			fail("Expected NullPointerException for null list parameter");
-		} catch (NullPointerException e) {
-            //Expected
-		}
-		Collections.shuffle(ll);
-		Collections.sort(ll);
-		Collections.sort(reversedLinkedList);
-		for (int counter = 0; counter < llSize - 1; counter++) {
-			assertTrue(
-					"Sorting shuffled list resulted in unsorted list",
-					((Integer) ll.get(counter)).compareTo((Integer)ll.get(counter + 1)) < 0);
-		}
-
-		for (int counter = 0; counter < rllSize - 1; counter++) {
-			assertTrue("Sorting reversed list resulted in unsorted list",
-					((Integer) reversedLinkedList.get(counter))
-							.compareTo((Integer)reversedLinkedList.get(counter + 1)) < 0);
-		}
-	}
-
-	/**
-	 * @tests java.util.Collections#sort(java.util.List, java.util.Comparator)
-	 */
-	public void test_sortLjava_util_ListLjava_util_Comparator() {
-		// Test for method void java.util.Collections.sort(java.util.List,
-		// java.util.Comparator)
-		Comparator comp = new ReversedMyIntComparator();
-		try {
-			Collections.sort(null, comp);
-			fail("Expected NullPointerException for null list parameter");
-		} catch (NullPointerException e) {
-            //Expected
-		}
-		Collections.shuffle(myll);
-		Collections.sort(myll, comp);
-		final int llSize = myll.size();
-
-		for (int counter = 0; counter < llSize - 1; counter++) {
-			assertTrue(
-					"Sorting shuffled list with custom comparator resulted in unsorted list",
-					((MyInt) myll.get(counter)).compareTo((MyInt) myll
-							.get(counter + 1)) >= 0);
-		}
-	}
-
-	/**
-	 * @tests java.util.Collections#swap(java.util.List, int, int)
-	 */
-	public void test_swapLjava_util_ListII() {
-		// Test for method swap(java.util.List, int, int)
-
-		LinkedList smallList = new LinkedList();
-		for (int i = 0; i < 10; i++) {
-			smallList.add(objArray[i]);
-		}
-
-		// test exception cases
-		try {
-			Collections.swap(smallList, -1, 6);
-			fail("Expected IndexOutOfBoundsException for -1");
-		} catch (IndexOutOfBoundsException e) {
-            //Expected
-		}
-
-		try {
-			Collections.swap(smallList, 6, -1);
-			fail("Expected IndexOutOfBoundsException for -1");
-		} catch (IndexOutOfBoundsException e) {
-            //Expected
-		}
-
-		try {
-			Collections.swap(smallList, 6, 11);
-			fail("Expected IndexOutOfBoundsException for 11");
-		} catch (IndexOutOfBoundsException e) {
-            //Expected
-		}
-
-		try {
-			Collections.swap(smallList, 11, 6);
-			fail("Expected IndexOutOfBoundsException for 11");
-		} catch (IndexOutOfBoundsException e) {
-            //Expected
-		}
-
-		// Ensure a NPE is thrown if the list is NULL
-		try {
-			Collections.swap(null, 1, 1);
-			fail("Expected NullPointerException for null list parameter");
-		} catch (NullPointerException e) {
-            //Expected
-		}
-
-		// test with valid parameters
-		Collections.swap(smallList, 4, 7);
-		assertEquals("Didn't Swap the element at position 4 ", new Integer(7),
-				smallList.get(4));
-		assertEquals("Didn't Swap the element at position 7 ", new Integer(4),
-				smallList.get(7));
-
-		// make sure other elements didn't get swapped by mistake
-		for (int i = 0; i < 10; i++) {
-			if (i != 4 && i != 7)
-				assertEquals("shouldn't have swapped the element at position "
-						+ i, new Integer(i), smallList.get(i));
-		}
-	}
-
-	/**
-	 * @tests java.util.Collections#replaceAll(java.util.List, java.lang.Object,
-	 *        java.lang.Object)
-	 */
-	public void test_replaceAllLjava_util_ListLjava_lang_ObjectLjava_lang_Object() {
-		// Test for method replaceAll(java.util.List, java.lang.Object,
-		// java.lang.Object)
-
-		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";
-		char[] chars = string1.toCharArray();
-		List list = new ArrayList();
-		for (int i = 0; i < chars.length; i++) {
-			list.add(new Character(chars[i]));
-		}
-
-		try {
-			Collections.replaceAll(null, new Object(), new Object());
-			fail("Expected NullPointerException for null list parameter");
-		} catch (NullPointerException e) {
-            //Expected
-		}
-
-		// test replace for an element that is not in the list
-		boolean result = Collections.replaceAll(list, new Character('1'),
-				new Character('Z'));
-		assertFalse("Test1: Collections.replaceAll() returned wrong result",
-				result);
-		assertEquals("Test2 : ReplaceAll modified the list incorrectly",
-				string1, getString(list));
-
-		// test replace for an element that is in the list
-		result = Collections.replaceAll(list, new Character('S'),
-				new Character('K'));
-		assertTrue("Test3: Collections.replaceAll() returned wrong result",
-				result);
-		assertEquals("Test4: ReplaceAll modified the list incorrectly",
-				(string1 = string1.replace('S', 'K')), getString(list));
-
-		// test replace for the last element in the list
-		result = Collections.replaceAll(list, new Character('Z'),
-				new Character('N'));
-		assertTrue("Test5: Collections.replaceAll() returned wrong result",
-				result);
-		assertEquals("Test6: ReplaceAll modified the list incorrectly",
-				(string1 = string1.replace('Z', 'N')), getString(list));
-
-		// test replace for the first element in the list
-		result = Collections.replaceAll(list, new Character('A'),
-				new Character('B'));
-		assertTrue("Test7: Collections.replaceAll() returned wrong result",
-				result);
-		assertEquals("Test8: ReplaceAll modified the list incorrectly",
-				(string1 = string1.replace('A', 'B')), getString(list));
-
-		// test replacing elements with null
-		LinkedList smallList = new LinkedList();
-		for (int i = 0; i < 10; i++) {
-			smallList.add(objArray[i]);
-		}
-		smallList.set(4, new Integer(5));
-		result = Collections.replaceAll(smallList, new Integer(5), null);
-		assertTrue("Test9: Collections.replaceAll() returned wrong result",
-				result);
-		for (int i = 0; i < smallList.size(); i++) {
-			if (i == 4 || i == 5)
-				assertSame("Test9: ReplaceAll didn't replace element at " + i,
-						null, smallList.get(i));
-			else
-				assertEquals(
-						"Test9: ReplaceAll shouldn't have replaced element at "
-								+ i, new Integer(i), smallList.get(i));
-		}
-
-		// test replacing null elements with another value
-		result = Collections.replaceAll(smallList, null, new Integer(99));
-		assertTrue("Test10: Collections.replaceAll() returned wrong result",
-				result);
-
-		for (int i = 0; i < smallList.size(); i++) {
-			if (i == 4 || i == 5)
-				assertEquals("Test10: ReplaceAll didn't replace element at "
-						+ i, new Integer(99), smallList.get(i));
-			else
-				assertEquals(
-						"Test10: ReplaceAll shouldn't have replaced element at "
-								+ i, new Integer(i), smallList.get(i));
-		}
-	}
-
-	/**
-	 * @tests java.util.Collections#rotate(java.util.List, int)
-	 */
-	public void test_rotateLjava_util_ListI() {
-		// Test for method rotate(java.util.List, int)
-
-		try {
-			Collections.rotate(null, 0);
-			fail("Expected NullPointerException for null list parameter");
-		} catch (NullPointerException e) {
-            //Expected
-		}
-
-		// Test rotating a Sequential Access List
-		LinkedList list1 = new LinkedList();
-		for (int i = 0; i < 10; i++) {
-			list1.add(objArray[i]);
-		}
-		testRotate(list1, "Sequential Access");
-
-		// Test rotating a Random Access List
-		ArrayList list2 = new ArrayList();
-		for (int i = 0; i < 10; i++) {
-			list2.add(objArray[i]);
-		}
-		testRotate(list2, "Random Access");
-	}
-
-	private void testRotate(List list, String type) {
-		// rotate with positive distance
-		Collections.rotate(list, 7);
-		assertEquals("Test1: rotate modified the " + type
-				+ " list incorrectly,", "3456789012", getString(list));
-
-		// rotate with negative distance
-		Collections.rotate(list, -2);
-		assertEquals("Test2: rotate modified the " + type
-				+ " list incorrectly,", "5678901234", getString(list));
-
-		// rotate sublist with negative distance
-		List subList = list.subList(1, 5);
-		Collections.rotate(subList, -1);
-		assertEquals("Test3: rotate modified the " + type
-				+ " list incorrectly,", "5789601234", getString(list));
-
-		// rotate sublist with positive distance
-		Collections.rotate(subList, 2);
-		assertEquals("Test4: rotate modified the " + type
-				+ " list incorrectly,", "5967801234", getString(list));
-
-		// rotate with positive distance that is larger than list size
-		Collections.rotate(list, 23);
-		assertEquals("Test5: rotate modified the " + type
-				+ " list incorrectly,", "2345967801", getString(list));
-
-		// rotate with negative distance that is larger than list size
-		Collections.rotate(list, -23);
-		assertEquals("Test6: rotate modified the " + type
-				+ " list incorrectly,", "5967801234", getString(list));
-
-		// rotate with 0 and equivalent distances, this should make no
-		// modifications to the list
-		Collections.rotate(list, 0);
-		assertEquals("Test7: rotate modified the " + type
-				+ " list incorrectly,", "5967801234", getString(list));
-
-		Collections.rotate(list, -30);
-		assertEquals("Test8: rotate modified the " + type
-				+ " list incorrectly,", "5967801234", getString(list));
-
-		Collections.rotate(list, 30);
-		assertEquals("Test9: rotate modified the " + type
-				+ " list incorrectly,", "5967801234", getString(list));
-	}
-
-	private String getString(List list) {
-		StringBuffer buffer = new StringBuffer();
-		for (int i = 0; i < list.size(); i++) {
-			buffer.append(list.get(i));
-		}
-		return buffer.toString();
-	}
-
-	/**
-	 * @tests java.util.Collections#rotate(java.util.List, int)
-	 */
-	public void test_rotate2() {
-		List list = new ArrayList();
-		try {
-			Collections.rotate(list, 5);
-		} catch (UnsupportedOperationException e) {
-			fail("Unexpected UnsupportedOperationException for empty list, "
-					+ e);
-		}
-
-		list.add(0, "zero");
-		list.add(1, "one");
-		list.add(2, "two");
-		list.add(3, "three");
-		list.add(4, "four");
-
-		Collections.rotate(list, Integer.MIN_VALUE);
-		assertEquals("Rotated incorrectly at position 0, ", "three",
-				(String) list.get(0));
-		assertEquals("Rotated incorrectly at position 1, ", "four",
-				(String) list.get(1));
-		assertEquals("Rotated incorrectly at position 2, ", "zero",
-				(String) list.get(2));
-		assertEquals("Rotated incorrectly at position 3, ", "one",
-				(String) list.get(3));
-		assertEquals("Rotated incorrectly at position 4, ", "two",
-				(String) list.get(4));
-	}
-
-	/**
-	 * @tests java.util.Collections#indexOfSubList(java.util.List,
-	 *        java.util.List)
-	 */
-	public void test_indexOfSubListLjava_util_ListLjava_util_List() {
-		// Test for method int indexOfSubList(java.util.List, java.util.List)
-		List list = new ArrayList();
-		try {
-			Collections.indexOfSubList(null, list);
-			fail("Expected NullPointerException for null list first parameter");
-		} catch (NullPointerException e) {
-            //Expected
-		}
-		try {
-			Collections.indexOfSubList(list, null);
-			fail("Expected NullPointerException for null list second parameter");
-		} catch (NullPointerException e) {
-            //Expected
-		}
-
-		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";
-
-		testwithCharList(1, string1, "B", true);
-		testwithCharList(2, string1, "LIST", true);
-		testwithCharList(3, string1, "SUBLIST", true);
-		testwithCharList(4, string1, "NONE", true);
-		testwithCharList(5, string1, "END", true);
-
-		// test boundary conditions:
-		testwithCharList(6, "", "", true);
-		testwithCharList(7, "LIST", "", true);
-		testwithCharList(8, "", "SUBLIST", true);
-	}
-
-	/**
-	 * @tests java.util.Collections#indexOfSubList(java.util.List,
-	 *        java.util.List)
-	 */
-	public void test_indexOfSubList2() {
-		ArrayList sub = new ArrayList();
-		sub.add(new Integer(1));
-		sub.add(new Integer(2));
-		sub.add(new Integer(3));
-
-		ArrayList sub2 = new ArrayList();
-		sub2.add(new Integer(7));
-		sub2.add(new Integer(8));
-
-		ArrayList src = new ArrayList();
-		src.addAll(sub);
-		src.addAll(sub);
-		src.addAll(sub);
-		src.add(new Integer(5));
-		src.add(new Integer(6));
-
-		// so src becomes a list like this:
-		// [1, 2, 3, 1, 2, 3, 1, 2, 3, 5, 6]
-
-		sub = new ArrayList(src.subList(3, 11));
-		// [1, 2, 3, 1, 2, 3, 5, 6]
-		assertEquals("TestA : Returned wrong indexOfSubList, ", 3, Collections
-				.indexOfSubList(src, sub));
-
-		sub = new ArrayList(src.subList(6, 11));
-		// [1, 2, 3, 5, 6]
-		assertEquals("TestB : Returned wrong indexOfSubList, ", 6, Collections
-				.indexOfSubList(src, sub));
-
-		sub = new ArrayList(src.subList(0, 3));
-		// [1, 2, 3]
-		assertEquals("TestCC : Returned wrong indexOfSubList, ", 0, Collections
-				.indexOfSubList(src, sub));
-
-		sub = new ArrayList(src.subList(9, 11));
-		// [5, 6]
-		assertEquals("TestD : Returned wrong indexOfSubList, ", 9, Collections
-				.indexOfSubList(src, sub));
-
-		sub = new ArrayList(src.subList(10, 11));
-		// [6]
-		assertEquals("TestE : Returned wrong indexOfSubList, ", 10, Collections
-				.indexOfSubList(src, sub));
-
-		sub = new ArrayList(src.subList(0, 11));
-		// the whole list
-		assertEquals("TestH : Returned wrong indexIndexOfSubList, ", 0,
-				Collections.indexOfSubList(src, sub));
-
-		// a non-matching list
-		assertEquals("TestI : Returned wrong indexOfSubList, ", -1, Collections
-				.indexOfSubList(src, sub2));
-	}
-
-	/**
-	 * @param string2
-	 * @param string1
-	 * @param index
-	 */
-	private void testwithCharList(int count, String string1, String string2,
-			boolean first) {
-		char[] chars = string1.toCharArray();
-		List list = new ArrayList();
-		for (int i = 0; i < chars.length; i++) {
-			list.add(new Character(chars[i]));
-		}
-		chars = string2.toCharArray();
-		List sublist = new ArrayList();
-		for (int i = 0; i < chars.length; i++) {
-			sublist.add(new Character(chars[i]));
-		}
-
-		if (first)
-			assertEquals("Test " + count + ": Returned wrong index:", string1
-					.indexOf(string2), Collections
-					.indexOfSubList(list, sublist));
-		else
-			assertEquals("Test " + count + ": Returned wrong index:", string1
-					.lastIndexOf(string2), Collections.lastIndexOfSubList(list,
-					sublist));
-	}
-
-	/**
-	 * @tests java.util.Collections#lastIndexOfSubList(java.util.List,
-	 *        java.util.List)
-	 */
-	public void test_lastIndexOfSubListLjava_util_ListLjava_util_List() {
-		// Test for method int lastIndexOfSubList(java.util.List,
-		// java.util.List)
-		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";
-
-		List list = new ArrayList();
-		try {
-			Collections.lastIndexOfSubList(null, list);
-			fail("Expected NullPointerException for null list first parameter");
-		} catch (NullPointerException e) {
-            //Expected
-		}
-		try {
-			Collections.lastIndexOfSubList(list, null);
-			fail("Expected NullPointerException for null list second parameter");
-		} catch (NullPointerException e) {
-            //Expected
-		}
-
-		testwithCharList(1, string1, "B", false);
-		testwithCharList(2, string1, "LIST", false);
-		testwithCharList(3, string1, "SUBLIST", false);
-		testwithCharList(4, string1, "END", false);
-		testwithCharList(5, string1, "NONE", false);
-
-		// test boundary conditions
-		testwithCharList(6, "", "", false);
-		testwithCharList(7, "LIST", "", false);
-		testwithCharList(8, "", "SUBLIST", false);
-	}
-
-	/**
-	 * @tests java.util.Collections#lastIndexOfSubList(java.util.List,
-	 *        java.util.List)
-	 */
-	public void test_lastIndexOfSubList2() {
-		ArrayList sub = new ArrayList();
-		sub.add(new Integer(1));
-		sub.add(new Integer(2));
-		sub.add(new Integer(3));
-
-		ArrayList sub2 = new ArrayList();
-		sub2.add(new Integer(7));
-		sub2.add(new Integer(8));
-
-		ArrayList src = new ArrayList();
-		src.addAll(sub);
-		src.addAll(sub);
-		src.addAll(sub);
-		src.add(new Integer(5));
-		src.add(new Integer(6));
-
-		// so src is a list like this:
-		// [1, 2, 3, 1, 2, 3, 1, 2, 3, 5, 6]
-
-		Collections.reverse(src);
-		// it becomes like this :
-		// [6, 5, 3, 2, 1, 3, 2, 1, 3, 2, 1]
-
-		sub = new ArrayList(src.subList(0, 8));
-		// [6, 5, 3, 2, 1, 3, 2, 1]
-		assertEquals("TestA : Returned wrong lastIndexOfSubList, ", 0,
-				Collections.lastIndexOfSubList(src, sub));
-
-		sub = new ArrayList(src.subList(0, 5));
-		// [6, 5, 3, 2, 1]
-		assertEquals("TestB : Returned wrong lastIndexOfSubList, ", 0,
-				Collections.lastIndexOfSubList(src, sub));
-
-		sub = new ArrayList(src.subList(2, 5));
-		// [3, 2, 1]
-		assertEquals("TestC : Returned wrong lastIndexOfSubList, ", 8,
-				Collections.lastIndexOfSubList(src, sub));
-
-		sub = new ArrayList(src.subList(9, 11));
-		// [2, 1]
-		assertEquals("TestD : Returned wrong lastIndexOfSubList, ", 9,
-				Collections.lastIndexOfSubList(src, sub));
-
-		sub = new ArrayList(src.subList(10, 11));
-		// [1]
-		assertEquals("TestE : Returned wrong lastIndexOfSubList, ", 10,
-				Collections.lastIndexOfSubList(src, sub));
-
-		sub = new ArrayList(src.subList(0, 2));
-		// [6, 5]
-		assertEquals("TestF : Returned wrong lastIndexOfSubList, ", 0,
-				Collections.lastIndexOfSubList(src, sub));
-
-		sub = new ArrayList(src.subList(0, 1));
-		// [6]
-		assertEquals("TestG : Returned wrong lastIndexOfSubList, ", 0,
-				Collections.lastIndexOfSubList(src, sub));
-
-		sub = new ArrayList(src.subList(0, 11));
-		// the whole list
-		assertEquals("TestH : Returned wrong lastIndexOfSubList, ", 0,
-				Collections.lastIndexOfSubList(src, sub));
-
-		// a non-matching list
-		assertEquals("TestI : Returned wrong lastIndexOfSubList, ", -1,
-				Collections.lastIndexOfSubList(src, sub2));
-	}
-
-	/**
-	 * @tests java.util.Collections#list(java.util.Enumeration)
-	 */
-	public void test_listLjava_util_Enumeration() {
-		// Test for method java.util.ArrayList list(java.util.Enumeration)
-
-		Enumeration e = Collections.enumeration(ll);
-		ArrayList al = Collections.list(e);
-
-		int size = al.size();
-		assertEquals("Wrong size", ll.size(), size);
-
-		for (int i = 0; i < size; i++) {
-			assertEquals("wrong element at position " + i + ",", ll.get(i), al
-					.get(i));
-		}
-	}
-
-	/**
-	 * @throws InterruptedException
-	 * @tests java.util.Collections#synchronizedCollection(java.util.Collection)
-	 */
-	public void test_synchronizedCollectionLjava_util_Collection() throws InterruptedException {
-		// Test for method java.util.Collection
-		// java.util.Collections.synchronizedCollection(java.util.Collection)
-
-		LinkedList smallList = new LinkedList();
-		for (int i = 0; i < 50; i++) {
-			smallList.add(objArray[i]);
-		}
-
-		final int numberOfLoops = 200;
-		Collection synchCol = Collections.synchronizedCollection(smallList);
-		// Replacing the previous line with the line below *should* cause the
-		// test to fail--the collecion below isn't synchronized
-		// Collection synchCol = smallList;
-
-		SynchCollectionChecker normalSynchChecker = new SynchCollectionChecker(
-				synchCol, false, numberOfLoops);
-		SynchCollectionChecker offsetSynchChecker = new SynchCollectionChecker(
-				synchCol, true, numberOfLoops);
-		Thread normalThread = new Thread(normalSynchChecker);
-		Thread offsetThread = new Thread(offsetSynchChecker);
-		normalThread.start();
-		offsetThread.start();
-		while ((normalSynchChecker.getNumberOfChecks() < numberOfLoops)
-				|| (offsetSynchChecker.getNumberOfChecks() < numberOfLoops)) {
-	    
-                       try {
-                               Thread.sleep(10);
-                       } catch (InterruptedException e) {
-                       }
-
-		}
-		assertTrue("Returned collection corrupted by multiple thread access",
-				normalSynchChecker.getResult()
-						&& offsetSynchChecker.getResult());
-		try {
-			normalThread.join(5000);
-			offsetThread.join(5000);
-		} catch (InterruptedException e) {
-			fail("join() interrupted");
-		}
-
-		synchCol.add(null);
-		assertTrue("Trying to use nulls in collection failed", synchCol
-				.contains(null));
-
-		smallList = new LinkedList();
-		for (int i = 0; i < 100; i++) {
-			smallList.add(objArray[i]);
-		}
-		new Support_CollectionTest("", Collections
-				.synchronizedCollection(smallList)).runTest();
-
-        //Test self reference
-        synchCol = Collections.synchronizedCollection(smallList);
-        synchCol.add(smallList);
-        assertTrue("should contain self ref", synchCol.toString().indexOf("(this") > -1);
-	}
-
-	/**
-	 * @tests java.util.Collections#synchronizedList(java.util.List)
-	 */
-	public void test_synchronizedListLjava_util_List() {
-		try {
-			Collections.synchronizedList(null);
-			fail("Expected NullPointerException for null list parameter");
-		} catch (NullPointerException e) {
-            //Expected
-		}
-
-		// test with a Sequential Access List
-		List smallList = new LinkedList();
-		testSynchronizedList(smallList, "Sequential Access");
-
-		smallList = new LinkedList();
-		List myList;
-		for (int i = 0; i < 100; i++) {
-			smallList.add(objArray[i]);
-		}
-		myList = Collections.synchronizedList(smallList);
-
-		new Support_ListTest("", myList).runTest();
-        
-		// test with a Random Access List
-		smallList = new ArrayList();
-		testSynchronizedList(smallList, "Random Access");
-
-		smallList = new ArrayList();
-		for (int i = 0; i < 100; i++) {
-			smallList.add(objArray[i]);
-		}
-		myList = Collections.synchronizedList(smallList);
-		new Support_ListTest("", myList).runTest();
-        
-		//Test self reference
-        myList = Collections.synchronizedList(smallList);
-        myList.add(smallList);
-        assertTrue("should contain self ref", myList.toString().indexOf("(this") > -1);
-	}
-
-	private void testSynchronizedList(List smallList, String type) {
-		for (int i = 0; i < 50; i++) {
-			smallList.add(objArray[i]);
-		}
-		final int numberOfLoops = 200;
-		List synchList = Collections.synchronizedList(smallList);
-		if (type.equals("Random Access"))
-			assertTrue(
-					"Returned synchronized list should implement the Random Access interface",
-					synchList instanceof RandomAccess);
-		else
-			assertTrue(
-					"Returned synchronized list should not implement the Random Access interface",
-					!(synchList instanceof RandomAccess));
-
-		// Replacing the previous line with the line below *should* cause the
-		// test to fail--the list below isn't synchronized
-		// List synchList = smallList;
-		SynchCollectionChecker normalSynchChecker = new SynchCollectionChecker(
-				synchList, false, numberOfLoops);
-		SynchCollectionChecker offsetSynchChecker = new SynchCollectionChecker(
-				synchList, true, numberOfLoops);
-		Thread normalThread = new Thread(normalSynchChecker);
-		Thread offsetThread = new Thread(offsetSynchChecker);
-		normalThread.start();
-		offsetThread.start();
-		while ((normalSynchChecker.getNumberOfChecks() < numberOfLoops)
-				|| (offsetSynchChecker.getNumberOfChecks() < numberOfLoops)) {
-			try {
-				Thread.sleep(10);
-			} catch (InterruptedException e) {
-                //Expected
-			}
-		}
-		assertTrue(
-                type
-                        + " list tests: Returned list corrupted by multiple thread access",
-                normalSynchChecker.getResult()
-                        && offsetSynchChecker.getResult());
-		try {
-			normalThread.join(5000);
-			offsetThread.join(5000);
-		} catch (InterruptedException e) {
-			fail(type + " list tests: join() interrupted");
-		}
-		synchList.set(25, null);
-		assertNull(type + " list tests: Trying to use nulls in list failed",
-				synchList.get(25));
-	}
-
-	/**
-	 * @tests java.util.Collections#synchronizedMap(java.util.Map)
-	 */
-	public void test_synchronizedMapLjava_util_Map() {
-		// Test for method java.util.Map
-		// java.util.Collections.synchronizedMap(java.util.Map)
-		HashMap smallMap = new HashMap();
-		for (int i = 0; i < 50; i++) {
-			smallMap.put(objArray[i], objArray[i]);
-		}
-
-		final int numberOfLoops = 200;
-		Map synchMap = Collections.synchronizedMap(smallMap);
-		// Replacing the previous line with the line below should cause the test
-		// to fail--the list below isn't synchronized
-		// Map synchMap = smallMap;
-
-		SynchMapChecker normalSynchChecker = new SynchMapChecker(synchMap,
-				false, numberOfLoops);
-		SynchMapChecker offsetSynchChecker = new SynchMapChecker(synchMap,
-				true, numberOfLoops);
-		Thread normalThread = new Thread(normalSynchChecker);
-		Thread offsetThread = new Thread(offsetSynchChecker);
-		normalThread.start();
-		offsetThread.start();
-		while ((normalSynchChecker.getNumberOfChecks() < numberOfLoops)
-				|| (offsetSynchChecker.getNumberOfChecks() < numberOfLoops)) {
-			try {
-				Thread.sleep(10);
-			} catch (InterruptedException e) {
-                //Expected
-			}
-		}
-		assertTrue("Returned map corrupted by multiple thread access",
-				normalSynchChecker.getResult()
-						&& offsetSynchChecker.getResult());
-		try {
-			normalThread.join(5000);
-			offsetThread.join(5000);
-		} catch (InterruptedException e) {
-			fail("join() interrupted");
-		}
-
-		// synchronized map does not have to permit null keys or values
-		synchMap.put(new Long(25), null);
-		synchMap.put(null, new Long(30));
-		assertNull("Trying to use a null value in map failed", synchMap
-				.get(new Long(25)));
-		assertTrue("Trying to use a null key in map failed", synchMap.get(null)
-				.equals(new Long(30)));
-
-		smallMap = new HashMap();
-		for (int i = 0; i < 100; i++) {
-			smallMap.put(objArray[i].toString(), objArray[i]);
-		}
-		synchMap = Collections.synchronizedMap(smallMap);
-		new Support_UnmodifiableMapTest("", synchMap).runTest();
-		synchMap.keySet().remove(objArray[50].toString());
-		assertNull(
-				"Removing a key from the keySet of the synchronized map did not remove it from the synchronized map: ",
-				synchMap.get(objArray[50].toString()));
-		assertNull(
-				"Removing a key from the keySet of the synchronized map did not remove it from the original map",
-				smallMap.get(objArray[50].toString()));
-	}
-
-	/**
-	 * @tests java.util.Collections#synchronizedSet(java.util.Set)
-	 */
-	public void test_synchronizedSetLjava_util_Set() {
-		// Test for method java.util.Set
-		// java.util.Collections.synchronizedSet(java.util.Set)
-		HashSet smallSet = new HashSet();
-		for (int i = 0; i < 50; i++) {
-			smallSet.add(objArray[i]);
-		}
-
-		final int numberOfLoops = 200;
-		Set synchSet = Collections.synchronizedSet(smallSet);
-		// Replacing the previous line with the line below should cause the test
-		// to fail--the set below isn't synchronized
-		// Set synchSet = smallSet;
-
-		SynchCollectionChecker normalSynchChecker = new SynchCollectionChecker(
-				synchSet, false, numberOfLoops);
-		SynchCollectionChecker offsetSynchChecker = new SynchCollectionChecker(
-				synchSet, true, numberOfLoops);
-		Thread normalThread = new Thread(normalSynchChecker);
-		Thread offsetThread = new Thread(offsetSynchChecker);
-		normalThread.start();
-		offsetThread.start();
-		while ((normalSynchChecker.getNumberOfChecks() < numberOfLoops)
-				|| (offsetSynchChecker.getNumberOfChecks() < numberOfLoops)) {
-			try {
-				Thread.sleep(10);
-			} catch (InterruptedException e) {
-                //Expected
-			}
-		}
-		assertTrue("Returned set corrupted by multiple thread access",
-				normalSynchChecker.getResult()
-						&& offsetSynchChecker.getResult());
-		try {
-			normalThread.join(5000);
-			offsetThread.join(5000);
-		} catch (InterruptedException e) {
-			fail("join() interrupted");
-		}
-
-		Set mySet = Collections.synchronizedSet(smallSet);
-		mySet.add(null);
-		assertTrue("Trying to use nulls in list failed", mySet.contains(null));
-
-		smallSet = new HashSet();
-		for (int i = 0; i < 100; i++) {
-			smallSet.add(objArray[i]);
-		}
-		new Support_SetTest("", Collections.synchronizedSet(smallSet))
-				.runTest();
-        
-		//Test self reference
-        mySet = Collections.synchronizedSet(smallSet);
-        mySet.add(smallSet);
-        assertTrue("should contain self ref", mySet.toString().indexOf("(this") > -1);
-	}
-
-	/**
-	 * @tests java.util.Collections#synchronizedSortedMap(java.util.SortedMap)
-	 */
-	public void test_synchronizedSortedMapLjava_util_SortedMap() {
-		// Test for method java.util.SortedMap
-		// java.util.Collections.synchronizedSortedMap(java.util.SortedMap)
-		TreeMap smallMap = new TreeMap();
-		for (int i = 0; i < 50; i++) {
-			smallMap.put(objArray[i], objArray[i]);
-		}
-
-		final int numberOfLoops = 200;
-		Map synchMap = Collections.synchronizedMap(smallMap);
-		// Replacing the previous line with the line below should cause the test
-		// to fail--the list below isn't synchronized
-		// Map synchMap = smallMap;
-
-		SynchMapChecker normalSynchChecker = new SynchMapChecker(synchMap,
-				false, numberOfLoops);
-		SynchMapChecker offsetSynchChecker = new SynchMapChecker(synchMap,
-				true, numberOfLoops);
-		Thread normalThread = new Thread(normalSynchChecker);
-		Thread offsetThread = new Thread(offsetSynchChecker);
-		normalThread.start();
-		offsetThread.start();
-		while ((normalSynchChecker.getNumberOfChecks() < numberOfLoops)
-				|| (offsetSynchChecker.getNumberOfChecks() < numberOfLoops)) {
-			try {
-				Thread.sleep(10);
-			} catch (InterruptedException e) {
-                //Expected
-			}
-		}
-		assertTrue("Returned map corrupted by multiple thread access",
-				normalSynchChecker.getResult()
-						&& offsetSynchChecker.getResult());
-		try {
-			normalThread.join(5000);
-			offsetThread.join(5000);
-		} catch (InterruptedException e) {
-			fail("join() interrupted");
-		}
-
-		smallMap = new TreeMap();
-		for (int i = 0; i < 100; i++) {
-			smallMap.put(objArray[i].toString(), objArray[i]);
-		}
-		synchMap = Collections.synchronizedSortedMap(smallMap);
-		new Support_UnmodifiableMapTest("", synchMap).runTest();
-		synchMap.keySet().remove(objArray[50].toString());
-		assertNull(
-				"Removing a key from the keySet of the synchronized map did not remove it from the synchronized map",
-				synchMap.get(objArray[50].toString()));
-		assertNull(
-				"Removing a key from the keySet of the synchronized map did not remove it from the original map",
-				smallMap.get(objArray[50].toString()));
-	}
-
-	/**
-	 * @tests java.util.Collections#synchronizedSortedSet(java.util.SortedSet)
-	 */
-	public void test_synchronizedSortedSetLjava_util_SortedSet() {
-		// Test for method java.util.SortedSet
-		// java.util.Collections.synchronizedSortedSet(java.util.SortedSet)
-		TreeSet smallSet = new TreeSet();
-		for (int i = 0; i < 50; i++) {
-			smallSet.add(objArray[i]);
-		}
-
-		final int numberOfLoops = 200;
-		Set synchSet = Collections.synchronizedSet(smallSet);
-		// Replacing the previous line with the line below should cause the test
-		// to fail--the list below isn't synchronized
-		// Set synchSet = smallSet;
-
-		SynchCollectionChecker normalSynchChecker = new SynchCollectionChecker(
-				synchSet, false, numberOfLoops);
-		SynchCollectionChecker offsetSynchChecker = new SynchCollectionChecker(
-				synchSet, true, numberOfLoops);
-		Thread normalThread = new Thread(normalSynchChecker);
-		Thread offsetThread = new Thread(offsetSynchChecker);
-		normalThread.start();
-		offsetThread.start();
-		while ((normalSynchChecker.getNumberOfChecks() < numberOfLoops)
-				|| (offsetSynchChecker.getNumberOfChecks() < numberOfLoops)) {
-			try {
-				Thread.sleep(10);
-			} catch (InterruptedException e) {
-                //Expected
-			}
-		}
-		assertTrue("Returned set corrupted by multiple thread access",
-				normalSynchChecker.getResult()
-						&& offsetSynchChecker.getResult());
-		try {
-			normalThread.join(5000);
-			offsetThread.join(5000);
-		} catch (InterruptedException e) {
-			fail("join() interrupted");
-		}
-	}
-
-	/**
-	 * @tests java.util.Collections#unmodifiableCollection(java.util.Collection)
-	 */
-	public void test_unmodifiableCollectionLjava_util_Collection() {
-		// Test for method java.util.Collection
-		// java.util.Collections.unmodifiableCollection(java.util.Collection)
-		boolean exception = false;
-		Collection c = Collections.unmodifiableCollection(ll);
-		assertTrue("Returned collection is of incorrect size", c.size() == ll
-				.size());
-		Iterator i = ll.iterator();
-		while (i.hasNext())
-			assertTrue("Returned list missing elements", c.contains(i.next()));
-		try {
-			c.add(new Object());
-		} catch (UnsupportedOperationException e) {
-			exception = true;
-			// Correct
-		}
-		if (!exception) {
-			fail("Allowed modification of collection");
-		}
-		
-		try {
-			c.remove(new Object());
-            fail("Allowed modification of collection");
-		} catch (UnsupportedOperationException e) {
-			// Correct
-		}		
-
-		Collection myCollection = new ArrayList();
-		myCollection.add(new Integer(20));
-		myCollection.add(null);
-		c = Collections.unmodifiableCollection(myCollection);
-		assertTrue("Collection should contain null", c.contains(null));
-		assertTrue("Collection should contain Integer(20)", c
-				.contains(new Integer(20)));
-
-		myCollection = new ArrayList();
-		for (int counter = 0; counter < 100; counter++) {
-			myCollection.add(objArray[counter]);
-		}
-		new Support_UnmodifiableCollectionTest("", Collections
-				.unmodifiableCollection(myCollection)).runTest();
-	}
-
-	/**
-	 * @tests java.util.Collections#unmodifiableList(java.util.List)
-	 */
-	public void test_unmodifiableListLjava_util_List() {
-		// Test for method java.util.List
-		// java.util.Collections.unmodifiableList(java.util.List)
-
-		// test with a Sequential Access List
-		boolean exception = false;
-		List c = Collections.unmodifiableList(ll);
-		// Ensure a NPE is thrown if the list is NULL
-		try {
-			Collections.unmodifiableList(null);
-			fail("Expected NullPointerException for null list parameter");
-		} catch (NullPointerException e) {
-		}
-
-		assertTrue("Returned list is of incorrect size", c.size() == ll.size());
-		assertTrue(
-				"Returned List should not implement Random Access interface",
-				!(c instanceof RandomAccess));
-
-		Iterator i = ll.iterator();
-		while (i.hasNext())
-			assertTrue("Returned list missing elements", c.contains(i.next()));
-		try {
-			c.add(new Object());
-		} catch (UnsupportedOperationException e) {
-			exception = true;
-			// Correct
-		}
-		if (!exception) {
-			fail("Allowed modification of list");
-		}
-		
-		try {
-			c.remove(new Object());
-            fail("Allowed modification of list");
-		} catch (UnsupportedOperationException e) {
-			// Correct
-		}		
-
-		// test with a Random Access List
-		List smallList = new ArrayList();
-		smallList.add(null);
-		smallList.add("yoink");
-		c = Collections.unmodifiableList(smallList);
-		assertNull("First element should be null", c.get(0));
-		assertTrue("List should contain null", c.contains(null));
-		assertTrue(
-				"T1. Returned List should implement Random Access interface",
-				c instanceof RandomAccess);
-
-		smallList = new ArrayList();
-		for (int counter = 0; counter < 100; counter++) {
-			smallList.add(objArray[counter]);
-		}
-		List myList = Collections.unmodifiableList(smallList);
-		assertTrue("List should not contain null", !myList.contains(null));
-		assertTrue(
-				"T2. Returned List should implement Random Access interface",
-				myList instanceof RandomAccess);
-
-		assertTrue("get failed on unmodifiable list", myList.get(50).equals(
-				new Integer(50)));
-		ListIterator listIterator = myList.listIterator();
-		for (int counter = 0; listIterator.hasNext(); counter++) {
-			assertTrue("List has wrong elements", ((Integer) listIterator
-					.next()).intValue() == counter);
-		}
-		new Support_UnmodifiableCollectionTest("", smallList).runTest();
-	}
-
-	/**
-	 * @tests java.util.Collections#unmodifiableMap(java.util.Map)
-	 */
-	public void test_unmodifiableMapLjava_util_Map() {
-		// Test for method java.util.Map
-		// java.util.Collections.unmodifiableMap(java.util.Map)
-		boolean exception = false;
-		Map c = Collections.unmodifiableMap(hm);
-		assertTrue("Returned map is of incorrect size", c.size() == hm.size());
-		Iterator i = hm.keySet().iterator();
-		while (i.hasNext()) {
-			Object x = i.next();
-			assertTrue("Returned map missing elements", c.get(x).equals(
-					hm.get(x)));
-		}
-		try {
-			c.put(new Object(), "");
-		} catch (UnsupportedOperationException e) {
-			exception = true;
-			// Correct
-		}
-		assertTrue("Allowed modification of map", exception);
-
-		exception = false;
-		try {
-			c.remove(new Object());
-		} catch (UnsupportedOperationException e) {
-			// Correct
-			exception = true;
-		}
-		assertTrue("Allowed modification of map", exception);
-
-		exception = false;
-		Iterator it = c.entrySet().iterator();
-		Map.Entry entry = (Map.Entry) it.next();
-		try {
-			entry.setValue("modified");
-		} catch (UnsupportedOperationException e) {
-			// Correct
-			exception = true;
-		}
-		assertTrue("Allowed modification of entry", exception);
-
-		exception = false;
-		Object[] array = c.entrySet().toArray();
-		try {
-			((Map.Entry) array[0]).setValue("modified");
-		} catch (UnsupportedOperationException e) {
-			// Correct
-			exception = true;
-		}
-		assertTrue("Allowed modification of array entry", exception);
-
-		exception = false;
-		Map.Entry[] array2 = (Map.Entry[]) c.entrySet().toArray(
-				new Map.Entry[0]);
-		try {
-			array2[0].setValue("modified");
-		} catch (UnsupportedOperationException e) {
-			// Correct
-			exception = true;
-		}
-		assertTrue("Allowed modification of array entry2", exception);
-
-		HashMap smallMap = new HashMap();
-		smallMap.put(null, new Long(30));
-		smallMap.put(new Long(25), null);
-		Map unmodMap = Collections.unmodifiableMap(smallMap);
-
-		assertNull("Trying to use a null value in map failed", unmodMap
-				.get(new Long(25)));
-		assertTrue("Trying to use a null key in map failed", unmodMap.get(null)
-				.equals(new Long(30)));
-
-		smallMap = new HashMap();
-		for (int counter = 0; counter < 100; counter++) {
-			smallMap.put(objArray[counter].toString(), objArray[counter]);
-		}
-		unmodMap = Collections.unmodifiableMap(smallMap);
-		new Support_UnmodifiableMapTest("", unmodMap).runTest();
-
-	}
-
-	/**
-	 * @tests java.util.Collections#unmodifiableSet(java.util.Set)
-	 */
-	public void test_unmodifiableSetLjava_util_Set() {
-		// Test for method java.util.Set
-		// java.util.Collections.unmodifiableSet(java.util.Set)
-		boolean exception = false;
-		Set c = Collections.unmodifiableSet(s);
-		assertTrue("Returned set is of incorrect size", c.size() == s.size());
-		Iterator i = ll.iterator();
-		while (i.hasNext())
-			assertTrue("Returned set missing elements", c.contains(i.next()));
-		try {
-			c.add(new Object());
-		} catch (UnsupportedOperationException e) {
-			exception = true;
-			// Correct
-		}
-		if (!exception) {
-			fail("Allowed modification of set");
-		}
-		try {
-			c.remove(new Object());
-            fail("Allowed modification of set");
-		} catch (UnsupportedOperationException e) {
-			// Correct
-		}		
-
-		Set mySet = Collections.unmodifiableSet(new HashSet());
-		assertTrue("Should not contain null", !mySet.contains(null));
-		mySet = Collections.unmodifiableSet(Collections.singleton(null));
-		assertTrue("Should contain null", mySet.contains(null));
-
-		mySet = new TreeSet();
-		for (int counter = 0; counter < 100; counter++) {
-			mySet.add(objArray[counter]);
-		}
-		new Support_UnmodifiableCollectionTest("", Collections
-				.unmodifiableSet(mySet)).runTest();
-	}
-
-	/**
-	 * @tests java.util.Collections#unmodifiableSortedMap(java.util.SortedMap)
-	 */
-	public void test_unmodifiableSortedMapLjava_util_SortedMap() {
-		// Test for method java.util.SortedMap
-		// java.util.Collections.unmodifiableSortedMap(java.util.SortedMap)
-		boolean exception = false;
-		TreeMap tm = new TreeMap();
-		tm.putAll(hm);
-		Map c = Collections.unmodifiableSortedMap(tm);
-		assertTrue("Returned map is of incorrect size", c.size() == tm.size());
-		Iterator i = hm.keySet().iterator();
-		while (i.hasNext()) {
-			Object x = i.next();
-			assertTrue("Returned map missing elements", c.get(x).equals(
-					tm.get(x)));
-		}
-		try {
-			c.put(new Object(), "");
-		} catch (UnsupportedOperationException e) {
-			exception = true;
-			// Correct
-		}
-		if (!exception) {
-			fail("Allowed modification of map");
-		}
-		try {
-			c.remove(new Object());
-		} catch (UnsupportedOperationException e) {
-			// Correct
-			return;
-		}
-		fail("Allowed modification of map");
-	}
-
-	/**
-	 * @tests java.util.Collections#unmodifiableSortedSet(java.util.SortedSet)
-	 */
-	public void test_unmodifiableSortedSetLjava_util_SortedSet() {
-		// Test for method java.util.SortedSet
-		// java.util.Collections.unmodifiableSortedSet(java.util.SortedSet)
-		boolean exception = false;
-		SortedSet ss = new TreeSet();
-		ss.addAll(s);
-		SortedSet c = Collections.unmodifiableSortedSet(ss);
-		assertTrue("Returned set is of incorrect size", c.size() == ss.size());
-		Iterator i = ll.iterator();
-		while (i.hasNext())
-			assertTrue("Returned set missing elements", c.contains(i.next()));
-		try {
-			c.add(new Object());
-		} catch (UnsupportedOperationException e) {
-			exception = true;
-			// Correct
-		}
-		if (!exception) {
-			fail("Allowed modification of set");
-		}
-		try {
-			c.remove(new Object());
-		} catch (UnsupportedOperationException e) {
-			// Correct
-			return;
-		}
-		fail("Allowed modification of set");
-	}
-
-	/**
-     * Test unmodifiable objects toString methods
-     */
-    public void test_unmodifiable_toString_methods() {
-        // Regression for HARMONY-552
-        ArrayList al = new ArrayList();
-        al.add("a");
-        al.add("b");
-        Collection uc = Collections.unmodifiableCollection(al);
-        assertEquals("[a, b]", uc.toString());
-        HashMap m = new HashMap();
-        m.put("one", "1");
-        m.put("two", "2");
-        Map um = Collections.unmodifiableMap(m);
-        assertEquals("{one=1, two=2}", um.toString());
-    }
-    
-    /**
-     * @tests java.util.Collections#checkType(Object, Class)
-     */
-    public void test_checkType_Ljava_lang_Object_Ljava_lang_Class() throws Exception {
-        Method m = Collections.class.getDeclaredMethod("checkType", Object.class, Class.class);
-   		m.setAccessible(true);
-   		m.invoke(null, new Object(), Object.class);
-    		
-   		try {
-   			m.invoke(null, new Object(), int.class);
-   			fail("should throw InvocationTargetException");
-   		} catch (InvocationTargetException e) {
-            String errMsg = Messages.getString(
-                    "luni.05", Object.class, int.class);
-   			assertEquals(errMsg, e.getCause().getMessage());
-   		}
-    }
-    
-    public void test_binarySearch_asymmetry_with_comparator() throws Exception{
-        List list = new ArrayList();
-        String s1 = new String("a");
-        String s2 = new String("aa");
-        String s3 = new String("aaa");        
-        list.add(s1);
-        list.add(s2);
-        list.add(s3);
-        Collections.sort(list);
-        Object o = Collections.binarySearch(list, 1, new StringComparator());
-        assertSame(0,o);
-    }
-    
-    public void test_binarySearch_asymmetry() throws Exception{
-        List list = new LinkedList();
-        String s1 = new String("a");
-        String s2 = new String("aa");
-        String s3 = new String("aaa");        
-        list.add(new MyComparable(s1));
-        list.add(new MyComparable(s2));
-        list.add(new MyComparable(s3));
-        Collections.sort(list);
-        Object o = Collections.binarySearch(list, 1);
-        assertSame(0,o);
-    }
-    
-    
-    private class MyComparable implements Comparable {
-
-        public String s;
-
-        public MyComparable(String s) {
-            this.s = s;
-
-        }
-
-        public int compareTo(Object another) {
-            int length = 0;
-            if (another instanceof MyComparable) {
-                length = (((MyComparable) another).s).length();
-            } else {
-                length = (Integer) another;
-            }
-            return s.length() - length;
-        }
-
-    }
-    
-    private class StringComparator implements Comparator {
-
-        public int compare(Object object1, Object object2) {
-            String s = (String) object1;
-            int length;
-            if(object2 instanceof String){
-                length = ((String)object2).length();
-            }
-            else
-            {
-                length = (Integer) object2;
-            }            
-            return s.length() - length;
-        }
-    }
-
-
-    /**
-     * Sets up the fixture, for example, open a network connection. This method
-     * is called before a test is executed.
-     */
-	protected void setUp() {
-		ll = new LinkedList();
-		myll = new LinkedList();
-		s = new HashSet();
-		mys = new HashSet();
-		reversedLinkedList = new LinkedList(); // to be sorted in reverse order
-		myReversedLinkedList = new LinkedList(); // to be sorted in reverse
-		// order
-		hm = new HashMap();
-		for (int i = 0; i < objArray.length; i++) {
-			ll.add(objArray[i]);
-			myll.add(myobjArray[i]);
-			s.add(objArray[i]);
-			mys.add(myobjArray[i]);
-			reversedLinkedList.add(objArray[objArray.length - i - 1]);
-			myReversedLinkedList.add(myobjArray[myobjArray.length - i - 1]);
-			hm.put(objArray[i].toString(), objArray[i]);
-		}
-	}
-
-	/**
-	 * Tears down the fixture, for example, close a network connection. This
-	 * method is called after a test is executed.
-	 */
-	protected void tearDown() {
-	}
-
-	protected void doneSuite() {
-		objArray = null;
-	}
-}
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one or more
+ *  contributor license agreements.  See the NOTICE file distributed with
+ *  this work for additional information regarding copyright ownership.
+ *  The ASF licenses this file to You under the Apache License, Version 2.0
+ *  (the "License"); you may not use this file except in compliance with
+ *  the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ */
+
+package org.apache.harmony.luni.tests.java.util;
+
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.Enumeration;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.ListIterator;
+import java.util.Map;
+import java.util.Random;
+import java.util.RandomAccess;
+import java.util.Set;
+import java.util.SortedSet;
+import java.util.TreeMap;
+import java.util.TreeSet;
+
+import org.apache.harmony.luni.internal.nls.Messages;
+
+import tests.support.Support_CollectionTest;
+import tests.support.Support_ListTest;
+import tests.support.Support_SetTest;
+import tests.support.Support_UnmodifiableCollectionTest;
+import tests.support.Support_UnmodifiableMapTest;
+
+public class CollectionsTest extends junit.framework.TestCase {
+
+	LinkedList ll;
+
+	LinkedList myll;
+
+	LinkedList reversedLinkedList;
+
+	LinkedList myReversedLinkedList;
+
+	Set s;
+
+	Set mys;
+
+	HashMap hm;
+
+	static Object[] objArray;
+
+	static Object[] myobjArray;
+	{
+		objArray = new Object[1000];
+		myobjArray = new Object[1000];
+		for (int i = 0; i < objArray.length; i++) {
+			objArray[i] = new Integer(i);
+			myobjArray[i] = new MyInt(i);
+		}
+	}
+
+	public static class ReversedMyIntComparator implements Comparator {
+		public int compare(Object o1, Object o2) {
+			return -((MyInt) o1).compareTo((MyInt) o2);
+		}
+
+		public int equals(Object o1, Object o2) {
+			return ((MyInt) o1).compareTo((MyInt) o2);
+		}
+	}
+
+	public static class SynchCollectionChecker implements Runnable {
+		Collection col;
+
+		int colSize;
+
+		int totalToRun;
+
+		boolean offset;
+
+		volatile int numberOfChecks = 0;
+
+		boolean result = true;
+
+		ArrayList normalCountingList;
+
+		ArrayList offsetCountingList;
+
+		public void run() {
+			// ensure the list either contains the numbers from 0 to size-1 or
+			// the numbers from size to 2*size -1
+			while (numberOfChecks < totalToRun) {
+				synchronized (col) {
+					if (!(col.isEmpty() || col.containsAll(normalCountingList) || col
+							.containsAll(offsetCountingList)))
+						result = false;
+					col.clear();
+				}
+				if (offset)
+					col.addAll(offsetCountingList);
+				else
+					col.addAll(normalCountingList);
+				numberOfChecks++;
+			}
+		}
+
+		public SynchCollectionChecker(Collection c, boolean offset,
+				int totalChecks) {
+			// The collection to test, whether to offset the filler values by
+			// size or not, and the min number of iterations to run
+			totalToRun = totalChecks;
+			col = c;
+			colSize = c.size();
+			normalCountingList = new ArrayList(colSize);
+			offsetCountingList = new ArrayList(colSize);
+			for (int counter = 0; counter < colSize; counter++)
+				normalCountingList.add(new Integer(counter));
+			for (int counter = 0; counter < colSize; counter++)
+				offsetCountingList.add(new Integer(counter + colSize));
+			col.clear();
+			if (offset)
+				col.addAll(offsetCountingList);
+			else
+				col.addAll(normalCountingList);
+		}
+
+		public boolean offset() {
+			// answer true iff the list is filled with a counting sequence
+			// starting at the value size to 2*size - 1
+			// else the list with be filled starting at 0 to size - 1
+			return offset;
+		}
+
+		public boolean getResult() {
+			// answer true iff no corruption has been found in the collection
+			return result;
+		}
+
+		public int getNumberOfChecks() {
+			// answer the number of checks that have been performed on the list
+			return numberOfChecks;
+		}
+	}
+
+	public static class SynchMapChecker implements Runnable {
+		Map map;
+
+		int mapSize;
+
+		int totalToRun;
+
+		boolean offset;
+
+		volatile int numberOfChecks = 0;
+
+		boolean result = true;
+
+		Map normalCountingMap;
+
+		Map offsetCountingMap;
+
+		public void run() {
+			Object firstNormalValue = normalCountingMap.get(new Integer(0));
+			Object lastNormalValue = normalCountingMap.get(new Integer(
+					mapSize - 1));
+			Object firstOffsetValue = offsetCountingMap
+					.get(new Integer(mapSize));
+			Object lastOffsetValue = offsetCountingMap.get(new Integer(
+					2 * mapSize - 1));
+			// ensure the list either contains the numbers from 0 to size-1 or
+			// the numbers from size to 2*size -1
+			while (numberOfChecks < totalToRun) {
+				synchronized (map) {
+					if (!(map.isEmpty()
+							|| (map.containsValue(firstNormalValue) && map
+									.containsValue(lastNormalValue)) || (map
+							.containsValue(firstOffsetValue) && map
+							.containsValue(lastOffsetValue))))
+						result = false;
+					map.clear();
+				}
+				if (offset)
+					map.putAll(offsetCountingMap);
+				else
+					map.putAll(normalCountingMap);
+				numberOfChecks++;
+			}
+		}
+
+		public SynchMapChecker(Map m, boolean offset, int totalChecks) {
+			// The collection to test, whether to offset the filler values by
+			// size or not, and the min number of iterations to run
+			Integer myInt;
+			totalToRun = totalChecks;
+			map = m;
+			mapSize = m.size();
+			normalCountingMap = new HashMap(mapSize);
+			offsetCountingMap = new HashMap(mapSize);
+			for (int counter = 0; counter < mapSize; counter++) {
+				myInt = new Integer(counter);
+				normalCountingMap.put(myInt, myInt);
+			}
+			for (int counter = 0; counter < mapSize; counter++) {
+				myInt = new Integer(counter + mapSize);
+				offsetCountingMap.put(myInt, myInt);
+			}
+			map.clear();
+			if (offset)
+				map.putAll(offsetCountingMap);
+			else
+				map.putAll(normalCountingMap);
+		}
+
+		public boolean offset() {
+			// answer true iff the list is filled with a counting sequence
+			// starting at the value size to 2*size - 1
+			// else the list with be filled starting at 0 to size - 1
+			return offset;
+		}
+
+		public boolean getResult() {
+			// answer true iff no corruption has been found in the collection
+			return result;
+		}
+
+		public int getNumberOfChecks() {
+			// answer the number of checks that have been performed on the list
+			return numberOfChecks;
+		}
+	}
+
+	public static class CollectionTest extends junit.framework.TestCase {
+
+		Collection col; // must contain the Integers 0 to 99
+
+		public CollectionTest(String p1) {
+			super(p1);
+		}
+
+		public CollectionTest(String p1, Collection c) {
+			super(p1);
+			col = c;
+		}
+
+	}
+
+	static class MyInt {
+		int data;
+
+		public MyInt(int value) {
+			data = value;
+		}
+
+		public int compareTo(MyInt object) {
+			return data > object.data ? 1 : (data < object.data ? -1 : 0);
+		}
+	}
+
+	/**
+	 * @tests java.util.Collections#binarySearch(java.util.List,
+	 *        java.lang.Object)
+	 */
+	public void test_binarySearchLjava_util_ListLjava_lang_Object() {
+		// Test for method int
+		// java.util.Collections.binarySearch(java.util.List, java.lang.Object)
+		// assumes ll is sorted and has no duplicate keys
+		final int llSize = ll.size();
+		// Ensure a NPE is thrown if the list is NULL
+		try {
+			Collections.binarySearch(null, new Object());
+			fail("Expected NullPointerException for null list parameter");
+		} catch (NullPointerException e) {
+            //Expected
+		}
+		for (int counter = 0; counter < llSize; counter++) {
+			assertEquals("Returned incorrect binary search item position", ll
+                    .get(counter), ll.get(Collections.binarySearch(ll, ll
+                    .get(counter))));
+		}
+	}
+
+	/**
+	 * @tests java.util.Collections#binarySearch(java.util.List,
+	 *        java.lang.Object, java.util.Comparator)
+	 */
+	public void test_binarySearchLjava_util_ListLjava_lang_ObjectLjava_util_Comparator() {
+		// Test for method int
+		// java.util.Collections.binarySearch(java.util.List, java.lang.Object,
+		// java.util.Comparator)
+		// assumes reversedLinkedList is sorted in reversed order and has no
+		// duplicate keys
+		final int rSize = myReversedLinkedList.size();
+		ReversedMyIntComparator comp = new ReversedMyIntComparator();
+		// Ensure a NPE is thrown if the list is NULL
+		try {
+			Collections.binarySearch(null, new Object(), comp);
+			fail("Expected NullPointerException for null list parameter");
+		} catch (NullPointerException e) {
+            //Expected
+		}
+		for (int counter = 0; counter < rSize; counter++) {
+			assertEquals(
+                    "Returned incorrect binary search item position using custom comparator",
+                    myReversedLinkedList.get(counter), myReversedLinkedList
+                            .get(Collections.binarySearch(myReversedLinkedList,
+                                    myReversedLinkedList.get(counter), comp)));
+		}
+	}
+
+	/**
+	 * @tests java.util.Collections#copy(java.util.List, java.util.List)
+	 */
+	public void test_copyLjava_util_ListLjava_util_List() {
+		// Test for method void java.util.Collections.copy(java.util.List,
+		// java.util.List)
+		// Ensure a NPE is thrown if the list is NULL
+		try {
+			Collections.copy(null, ll);
+			fail("Expected NullPointerException for null list first parameter");
+		} catch (NullPointerException e) {
+		    //Expected
+		}
+		try {
+			Collections.copy(ll, null);
+			fail("Expected NullPointerException for null list second parameter");
+		} catch (NullPointerException e) {
+            //Expected
+		}
+		final int llSize = ll.size();
+		ll.set(25, null);
+		ArrayList al = new ArrayList();
+		Integer extraElement = new Integer(1);
+		Integer extraElement2 = new Integer(2);
+		al.addAll(myReversedLinkedList);
+		al.add(extraElement);
+		al.add(extraElement2);
+		Collections.copy(al, ll);
+		for (int counter = 0; counter < llSize; counter++) {
+			assertEquals("Elements do not match after copying collection", ll
+                    .get(counter), al.get(counter));
+		}
+		assertTrue("Elements after copied elements affected by copy",
+				extraElement == al.get(llSize)
+						&& extraElement2 == al.get(llSize + 1));
+	}
+
+	/**
+	 * @tests java.util.Collections#copy(java.util.List, java.util.List)
+	 */
+	public void test_copy_check_index() {
+		ArrayList a1 = new ArrayList();
+		a1.add("one");
+		a1.add("two");
+
+		ArrayList a2 = new ArrayList();
+		a2.add("aa");
+
+		try {
+			Collections.copy(a2, a1);
+			fail("Expected IndexOutOfBoundsException");
+		} catch (IndexOutOfBoundsException e) {
+            //Expected
+		}
+
+		assertEquals("aa", a2.get(0));
+	}
+
+	/**
+	 * @tests java.util.Collections#enumeration(java.util.Collection)
+	 */
+	public void test_enumerationLjava_util_Collection() {
+		// Test for method java.util.Enumeration
+		// java.util.Collections.enumeration(java.util.Collection)
+		TreeSet ts = new TreeSet();
+		ts.addAll(s);
+		Enumeration e = Collections.enumeration(ts);
+		int count = 0;
+		while (e.hasMoreElements()) {
+			assertEquals("Returned incorrect enumeration", e.nextElement(),
+                    objArray[count++]);
+        }
+		assertEquals("Enumeration missing elements: " + count, objArray.length,
+                count);
+	}
+
+	/**
+	 * @tests java.util.Collections#fill(java.util.List, java.lang.Object)
+	 */
+	public void test_fillLjava_util_ListLjava_lang_Object() {
+		// Test for method void java.util.Collections.fill(java.util.List,
+		// java.lang.Object)
+		try {
+			Collections.fill(null, new Object());
+			fail("Expected NullPointerException for null list parameter");
+		} catch (NullPointerException e) {
+            //Expected
+		}
+		final int size = ll.size();
+		Collections.fill(ll, "k");
+		assertEquals("Fill modified list size", size, ll.size());
+		Iterator i = ll.iterator();
+		while (i.hasNext())
+			assertEquals("Failed to fill elements", "k", i.next());
+
+		Collections.fill(ll, null);
+		assertEquals("Fill with nulls modified list size", size, ll.size());
+		i = ll.iterator();
+		while (i.hasNext())
+			assertNull("Failed to fill with nulls", i.next());
+	}
+
+	/**
+	 * @tests java.util.Collections#max(java.util.Collection)
+	 */
+	public void test_maxLjava_util_Collection() {
+		// Test for method java.lang.Object
+		// java.util.Collections.max(java.util.Collection)
+		// assumes s, objArray are sorted
+		assertEquals("Returned incorrect max element", Collections.max(s),
+                objArray[objArray.length - 1]);
+	}
+
+	/**
+	 * @tests java.util.Collections#max(java.util.Collection,
+	 *        java.util.Comparator)
+	 */
+	public void test_maxLjava_util_CollectionLjava_util_Comparator() {
+		// Test for method java.lang.Object
+		// java.util.Collections.max(java.util.Collection, java.util.Comparator)
+		// assumes s, objArray are sorted
+
+		// With this custom (backwards) comparator the 'max' element should be
+		// the smallest in the list
+		assertEquals("Returned incorrect max element using custom comparator",
+                Collections.max(mys, new ReversedMyIntComparator()),
+                myobjArray[0]);
+    }
+
+	/**
+	 * @tests java.util.Collections#min(java.util.Collection)
+	 */
+	public void test_minLjava_util_Collection() {
+		// Test for method java.lang.Object
+		// java.util.Collections.min(java.util.Collection)
+		// assumes s, objArray are sorted
+		assertEquals("Returned incorrect min element", Collections.min(s),
+                objArray[0]);
+	}
+
+	/**
+	 * @tests java.util.Collections#min(java.util.Collection,
+	 *        java.util.Comparator)
+	 */
+	public void test_minLjava_util_CollectionLjava_util_Comparator() {
+		// Test for method java.lang.Object
+		// java.util.Collections.min(java.util.Collection, java.util.Comparator)
+		// assumes s, objArray are sorted
+
+		// With this custom (backwards) comparator the 'min' element should be
+		// the largest in the list
+		assertEquals("Returned incorrect min element using custom comparator",
+                Collections.min(mys, new ReversedMyIntComparator()),
+                myobjArray[objArray.length - 1]);
+    }
+
+	/**
+	 * @tests java.util.Collections#nCopies(int, java.lang.Object)
+	 */
+	public void test_nCopiesILjava_lang_Object() {
+		// Test for method java.util.List java.util.Collections.nCopies(int,
+		// java.lang.Object)
+		Object o = new Object();
+		List l = Collections.nCopies(100, o);
+		Iterator i = l.iterator();
+		Object first = i.next();
+		assertEquals("Returned list consists of copies not refs", first, o);
+		assertEquals("Returned list of incorrect size", 100, l.size());
+		assertTrue("Contains", l.contains(o));
+		assertFalse("Contains null", l.contains(null));
+		assertFalse("null nCopies contains", Collections.nCopies(2, null)
+				.contains(o));
+		assertTrue("null nCopies contains null", Collections.nCopies(2, null)
+				.contains(null));
+		l = Collections.nCopies(20, null);
+		i = l.iterator();
+		for (int counter = 0; i.hasNext(); counter++) {
+			assertTrue("List is too large", counter < 20);
+			assertNull("Element should be null: " + counter, i.next());
+		}
+		try {
+			l.add(o);
+			fail("Returned list is not immutable");
+		} catch (UnsupportedOperationException e) {
+			// Expected
+		}
+		try {
+			Collections.nCopies(-2, new HashSet());
+			fail("nCopies with negative arg didn't throw IAE");
+		} catch (IllegalArgumentException e) {
+			// Expected
+		}
+	}
+
+	/**
+	 * @tests java.util.Collections#reverse(java.util.List)
+	 */
+	public void test_reverseLjava_util_List() {
+		// Test for method void java.util.Collections.reverse(java.util.List)
+		try {
+			Collections.reverse(null);
+			fail("Expected NullPointerException for null list parameter");
+		} catch (NullPointerException e) {
+            //Expected
+		}
+		Collections.reverse(ll);
+		Iterator i = ll.iterator();
+		int count = objArray.length - 1;
+		while (i.hasNext()) {
+			assertEquals("Failed to reverse collection", objArray[count], i
+                    .next());
+            --count;
+		}
+		ArrayList myList = new ArrayList();
+		myList.add(null);
+		myList.add(new Integer(20));
+		Collections.reverse(myList);
+		assertEquals("Did not reverse correctly--first element is: "
+                + myList.get(0), new Integer(20), myList.get(0));
+		assertNull("Did not reverse correctly--second element is: "
+				+ myList.get(1), myList.get(1));
+	}
+
+	/**
+	 * @tests java.util.Collections#reverseOrder()
+	 */
+	public void test_reverseOrder() {
+		// Test for method java.util.Comparator
+		// java.util.Collections.reverseOrder()
+		// assumes no duplicates in ll
+		Comparator comp = Collections.reverseOrder();
+		LinkedList list2 = new LinkedList(ll);
+		Collections.sort(list2, comp);
+		final int llSize = ll.size();
+		for (int counter = 0; counter < llSize; counter++)
+			assertEquals("New comparator does not reverse sorting order", list2
+                    .get(llSize - counter - 1), ll.get(counter));
+	}
+
+	/**
+	 * @tests java.util.Collections#shuffle(java.util.List)
+	 */
+	public void test_shuffleLjava_util_List() {
+		// Test for method void java.util.Collections.shuffle(java.util.List)
+		// Assumes ll is sorted and has no duplicate keys and is large ( > 20
+		// elements)
+
+		// test shuffling a Sequential Access List
+		try {
+			Collections.shuffle(null);
+			fail("Expected NullPointerException for null list parameter");
+		} catch (NullPointerException e) {
+            //Expected
+		}
+		ArrayList al = new ArrayList();
+		al.addAll(ll);
+		testShuffle(al, "Sequential Access", false);
+
+		// test shuffling a Random Access List
+		LinkedList ll2 = new LinkedList();
+		ll2.addAll(ll);
+		testShuffle(ll2, "Random Access", false);
+	}
+
+	private void testShuffle(List list, String type, boolean random) {
+		boolean sorted = true;
+		boolean allMatch = true;
+		int index = 0;
+		final int size = list.size();
+
+		if (random)
+			Collections.shuffle(list);
+		else
+			Collections.shuffle(list, new Random(200));
+
+		for (int counter = 0; counter < size - 1; counter++) {
+			if (((Integer) list.get(counter)).compareTo((Integer)list.get(counter + 1)) > 0) {
+				sorted = false;
+			}
+		}
+		assertFalse("Shuffling sorted " + type
+				+ " list resulted in sorted list (should be unlikely)", sorted);
+		for (int counter = 0; counter < 20; counter++) {
+			index = 30031 * counter % (size + 1); // 30031 is a large prime
+			if (list.get(index) != ll.get(index))
+				allMatch = false;
+		}
+		assertFalse("Too many element positions match in shuffled " + type
+				+ " list", allMatch);
+	}
+
+	/**
+	 * @tests java.util.Collections#shuffle(java.util.List, java.util.Random)
+	 */
+	public void test_shuffleLjava_util_ListLjava_util_Random() {
+		// Test for method void java.util.Collections.shuffle(java.util.List,
+		// java.util.Random)
+		// Assumes ll is sorted and has no duplicate keys and is large ( > 20
+		// elements)
+
+		// test shuffling a Sequential Access List
+		try {
+			Collections.shuffle(null, new Random(200));
+			fail("Expected NullPointerException for null list parameter");
+		} catch (NullPointerException e) {
+            //Excepted
+		}
+		ArrayList al = new ArrayList();
+		al.addAll(ll);
+		testShuffle(al, "Sequential Access", true);
+

[... 1432 lines stripped ...]