blob: 8a31ba77a0949b4dac6b807de8bb29398bd066a7 [file] [log] [blame]
/*
* 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 libcore.java.util;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.RandomAccess;
import java.util.Set;
import java.util.SortedMap;
import java.util.SortedSet;
import java.util.TreeMap;
import java.util.TreeSet;
import java.util.Vector;
import junit.framework.TestCase;
import libcore.util.SerializationTester;
import org.apache.harmony.testframework.serialization.SerializationTest;
import org.apache.harmony.testframework.serialization.SerializationTest.SerializableAssert;
public class OldCollectionsTest extends TestCase {
private static final SerializableAssert comparator = new SerializableAssert() {
public void assertDeserialized(Serializable reference, Serializable test) {
assertSame(reference, test);
}
};
/**
* java.util.Collections#binarySearch(java.util.List,
* java.lang.Object, java.util.Comparator)
*/
public void test_binarySearchLjava_util_ListLjava_lang_ObjectLjava_util_Comparator() {
// Regression for HARMONY-94
LinkedList<Integer> lst = new LinkedList<Integer>();
lst.add(new Integer(30));
Collections.sort(lst, null);
int index = Collections.binarySearch(lst, new Integer(2), null);
assertEquals(-1, index);
LinkedList<String> lls = new LinkedList<String>();
lls.add("1");
lls.add("2");
lls.add("3");
lls.add("4");
lls.add("");
LinkedList<String> ll = lls;
try {
Collections.binarySearch(ll, new Integer(10), null);
fail("ClassCastException expected");
} catch (ClassCastException e) {
//expected
}
}
/**
* java.util.Collections#binarySearch(java.util.List,
* java.lang.Object)
*/
@SuppressWarnings("unchecked")
public void test_binarySearchLjava_util_ListLjava_lang_Object() {
// regression for Harmony-1367
List localList = new LinkedList();
assertEquals(-1, Collections.binarySearch(localList, new Object()));
localList.add(new Object());
try {
Collections.binarySearch(localList, new Integer(1));
fail("Should throw ClassCastException");
} catch (ClassCastException e) {
// expected
}
LinkedList<String> lls = new LinkedList<String>();
lls.add("1");
lls.add("2");
lls.add("3");
lls.add("4");
lls.add("");
LinkedList ll = lls;
try {
Collections.binarySearch(ll, new Integer(10));
fail("ClassCastException expected");
} catch (ClassCastException e) {
//expected
}
}
/**
* java.util.Collections#rotate(java.util.List, int)
*/
public void test_rotateLjava_util_ListI() {
// Regression for HARMONY-19 Rotate an *empty* list
Collections.rotate(new ArrayList<Object>(), 25);
// Regression for HARMONY-20
List<String> list = new ArrayList<String>();
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",
list.get(0));
assertEquals("Rotated incorrectly at position 1, ", "four",
list.get(1));
assertEquals("Rotated incorrectly at position 2, ", "zero",
list.get(2));
assertEquals("Rotated incorrectly at position 3, ", "one",
list.get(3));
assertEquals("Rotated incorrectly at position 4, ", "two",
list.get(4));
}
/**
* java.util.Collections#synchronizedCollection(java.util.Collection)
*/
public void test_synchronizedCollectionLjava_util_Collection() {
try {
// Regression for HARMONY-93
Collections.synchronizedCollection(null);
fail("Assert 0: synchronizedCollection(null) must throw NPE");
} catch (NullPointerException e) {
// expected
}
}
/**
* java.util.Collections#synchronizedSortedMap(java.util.SortedMap)
*/
public void test_synchronizedSortedMapLjava_util_SortedMap() {
try {
// Regression for HARMONY-93
Collections.synchronizedSortedMap(null);
fail("Assert 0: synchronizedSortedMap(null) must throw NPE");
} catch (NullPointerException e) {
// expected
}
}
/**
* java.util.Collections#synchronizedMap(java.util.Map)
*/
public void test_synchronizedMapLjava_util_Map() {
try {
// Regression for HARMONY-93
Collections.synchronizedMap(null);
fail("Assert 0: synchronizedMap(map) must throw NPE");
} catch (NullPointerException e) {
// expected
}
}
/**
* java.util.Collections#synchronizedSet(java.util.Set)
*/
public void test_synchronizedSetLjava_util_Set() {
try {
// Regression for HARMONY-93
Collections.synchronizedSet(null);
fail("Assert 0: synchronizedSet(set) must throw NPE");
} catch (NullPointerException e) {
// expected
}
}
/**
* java.util.Collections#synchronizedSortedSet(java.util.SortedSet)
*/
public void test_synchronizedSortedSetLjava_util_SortedSet() {
try {
// Regression for HARMONY-93
Collections.synchronizedSortedSet(null);
fail("Assert 0: synchronizedSortedSet(null) must throw NPE");
} catch (NullPointerException e) {
// expected
}
}
/**
* java.util.Collections#unmodifiableCollection(java.util.Collection)
*/
public void test_unmodifiableCollectionLjava_util_Collection() {
try {
// Regression for HARMONY-93
Collections.unmodifiableCollection(null);
fail("Assert 0: unmodifiableCollection(null) must throw NPE");
} catch (NullPointerException e) {
// expected
}
}
/**
* java.util.Collections#unmodifiableMap(java.util.Map)
*/
public void test_unmodifiableMapLjava_util_Map() {
try {
// Regression for HARMONY-93
Collections.unmodifiableMap(null);
fail("Assert 0: unmodifiableMap(null) must throw NPE");
} catch (NullPointerException e) {
// expected
}
}
/**
* java.util.Collections#unmodifiableSet(java.util.Set)
*/
public void test_unmodifiableSetLjava_util_Set() {
try {
// Regression for HARMONY-93
Collections.unmodifiableSet(null);
fail("Assert 0: unmodifiableSet(null) must throw NPE");
} catch (NullPointerException e) {
// expected
}
}
/**
* java.util.Collections#unmodifiableSortedMap(java.util.SortedMap)
*/
public void test_unmodifiableSortedMapLjava_util_SortedMap() {
try {
// Regression for HARMONY-93
Collections.unmodifiableSortedMap(null);
fail("Assert 0: unmodifiableSortedMap(null) must throw NPE");
} catch (NullPointerException e) {
// expected
}
}
/**
* java.util.Collections#unmodifiableSortedSet(java.util.SortedSet)
*/
public void test_unmodifiableSortedSetLjava_util_SortedSet() {
try {
// Regression for HARMONY-93
Collections.unmodifiableSortedSet(null);
fail("Assert 0: unmodifiableSortedSet(null) must throw NPE");
} catch (NullPointerException e) {
// expected
}
}
/**
* java.util.Collections#frequency(java.util.Collection,Object)
*/
public void test_frequencyLjava_util_CollectionLint() {
try {
Collections.frequency(null, null);
fail("Assert 0: frequency(null,<any>) must throw NPE");
} catch (NullPointerException e) {}
List<String> strings = Arrays.asList(new String[] { "1", "2", "3", "1", "1" });
assertEquals("Assert 1: did not find three \"1\" strings", 3,
Collections.frequency(strings, "1"));
assertEquals("Assert 2: did not find one \"2\" strings", 1, Collections
.frequency(strings, "2"));
assertEquals("Assert 3: did not find three \"3\" strings", 1,
Collections.frequency(strings, "3"));
assertEquals("Assert 4: matched on null when there are none", 0,
Collections.frequency(strings, null));
List<Object> objects = Arrays.asList(new Object[] { new Integer(1), null, null,
new Long(1) });
assertEquals("Assert 5: did not find one Integer(1)", 1, Collections
.frequency(objects, new Integer(1)));
assertEquals("Assert 6: did not find one Long(1)", 1, Collections
.frequency(objects, new Long(1)));
assertEquals("Assert 7: did not find two null references", 2,
Collections.frequency(objects, null));
}
/**
* java.util.Collections#reverseOrder()
*/
public void test_reverseOrder() {
Comparator<String> roc = Collections.reverseOrder();
assertNotNull("Assert 0: comparator must not be null", roc);
assertTrue("Assert 1: comparator must implement Serializable",
roc instanceof Serializable);
String[] fixtureDesc = new String[] { "2", "1", "0" };
String[] numbers = new String[] { "0", "1", "2" };
Arrays.sort(numbers, roc);
assertTrue("Assert 2: the arrays are not equal, the sort failed",
Arrays.equals(fixtureDesc, numbers));
}
/**
* java.util.Collections#reverseOrder(java.util.Comparator)
*/
public void test_reverseOrderLjava_util_Comparator() {
Comparator<String> roc = Collections
.reverseOrder(String.CASE_INSENSITIVE_ORDER);
assertNotNull("Assert 0: comparator must not be null", roc);
assertTrue("Assert 1: comparator must implement Serializable",
roc instanceof Serializable);
String[] fixtureDesc = new String[] { "2", "1", "0" };
String[] numbers = new String[] { "0", "1", "2" };
Arrays.sort(numbers, roc);
assertTrue("Assert 2: the arrays are not equal, the sort failed",
Arrays.equals(fixtureDesc, numbers));
roc = Collections.reverseOrder(null);
assertNotNull("Assert 3: comparator must not be null", roc);
assertTrue("Assert 4: comparator must implement Serializable",
roc instanceof Serializable);
numbers = new String[] { "0", "1", "2" };
Arrays.sort(numbers, roc);
assertTrue("Assert 5: the arrays are not equal, the sort failed",
Arrays.equals(fixtureDesc, numbers));
}
class Mock_Collection implements Collection {
public boolean add(Object o) {
throw new UnsupportedOperationException();
}
public boolean addAll(Collection c) {
return false;
}
public void clear() {
}
public boolean contains(Object o) {
return false;
}
public boolean containsAll(Collection c) {
return false;
}
public boolean isEmpty() {
return false;
}
public Iterator iterator() {
return null;
}
public boolean remove(Object o) {
return false;
}
public boolean removeAll(Collection c) {
return false;
}
public boolean retainAll(Collection c) {
return false;
}
public int size() {
return 0;
}
public Object[] toArray() {
return null;
}
public Object[] toArray(Object[] a) {
return null;
}
}
class Mock_WrongCollection implements Collection {
final String wrongElement = "Wrong element";
public boolean add(Object o) {
if (o.equals(wrongElement)) throw new IllegalArgumentException();
if (o == null) throw new NullPointerException();
return false;
}
public boolean addAll(Collection c) {
return false;
}
public void clear() {
}
public boolean contains(Object o) {
return false;
}
public boolean containsAll(Collection c) {
return false;
}
public boolean isEmpty() {
return false;
}
public Iterator iterator() {
return null;
}
public boolean remove(Object o) {
return false;
}
public boolean removeAll(Collection c) {
return false;
}
public boolean retainAll(Collection c) {
return false;
}
public int size() {
return 0;
}
public Object[] toArray() {
return null;
}
public Object[] toArray(Object[] a) {
return null;
}
}
public void test_AddAll() {
List<Object> l = new ArrayList<Object>();
assertFalse(Collections.addAll(l, new Object[] {}));
assertTrue(l.isEmpty());
assertTrue(Collections.addAll(l, new Object[] { new Integer(1),
new Integer(2), new Integer(3) }));
assertFalse(l.isEmpty());
assertTrue(l.equals(Arrays.asList(new Object[] { new Integer(1),
new Integer(2), new Integer(3) })));
try {
Collections.addAll(null,new Object[] { new Integer(1),
new Integer(2), new Integer(3) });
fail("NullPointerException expected");
} catch (NullPointerException e) {
//fail
}
Collection c = new Mock_Collection();
try {
Collections.addAll(c, new Object[] { new Integer(1),
new Integer(2), new Integer(3) });
fail("UnsupportedOperationException expected");
} catch (UnsupportedOperationException e) {
//expected
}
c = new Mock_WrongCollection ();
try {
Collections.addAll(c, new String[] { "String",
"Correct element", null });
fail("NullPointerException expected");
} catch (NullPointerException e) {
//fail
}
try {
Collections.addAll(c, new String[] { "String",
"Wrong element", "Correct element" });
fail("IllegalArgumentException expected");
} catch (IllegalArgumentException e) {
//fail
}
Collections.addAll(c, new String[] { "String",
"", "Correct element" });
}
public void test_Disjoint() {
Object[] arr1 = new Object[10];
for (int i = 0; i < arr1.length; i++) {
arr1[i] = new Integer(i);
}
Object[] arr2 = new Object[20];
for (int i = 0; i < arr2.length; i++) {
arr2[i] = new Integer(100 + i);
}
Collection<Object> c1 = new ArrayList<Object>();
Collection<Object> c2 = new ArrayList<Object>();
Collections.addAll(c1, arr1);
Collections.addAll(c2, arr2);
assertTrue(Collections.disjoint(c1, c2));
c1.add(arr2[10]);
assertFalse(Collections.disjoint(c1, c2));
c1 = new LinkedList<Object>();
c2 = new LinkedList<Object>();
Collections.addAll(c1, arr1);
Collections.addAll(c2, arr2);
assertTrue(Collections.disjoint(c1, c2));
c1.add(arr2[10]);
assertFalse(Collections.disjoint(c1, c2));
c1 = new TreeSet<Object>();
c2 = new TreeSet<Object>();
Collections.addAll(c1, arr1);
Collections.addAll(c2, arr2);
assertTrue(Collections.disjoint(c1, c2));
c1.add(arr2[10]);
assertFalse(Collections.disjoint(c1, c2));
c1 = new HashSet<Object>();
c2 = new HashSet<Object>();
Collections.addAll(c1, arr1);
Collections.addAll(c2, arr2);
assertTrue(Collections.disjoint(c1, c2));
c1.add(arr2[10]);
assertFalse(Collections.disjoint(c1, c2));
c1 = new LinkedList<Object>();
c2 = new TreeSet<Object>();
Collections.addAll(c1, arr1);
Collections.addAll(c2, arr2);
assertTrue(Collections.disjoint(c1, c2));
c1.add(arr2[10]);
assertFalse(Collections.disjoint(c1, c2));
c1 = new Vector<Object>();
c2 = new HashSet<Object>();
Collections.addAll(c1, arr1);
Collections.addAll(c2, arr2);
assertTrue(Collections.disjoint(c1, c2));
c1.add(arr2[10]);
assertFalse(Collections.disjoint(c1, c2));
try {
Collections.disjoint(c1, null);
fail("NullPointerException expected");
} catch (NullPointerException e) {
//expected
}
try {
Collections.disjoint(null, c2);
fail("NullPointerException expected");
} catch (NullPointerException e) {
//expected
}
}
/**
* java.util.Collections.EmptyList#readResolve()
*/
public void test_EmptyList_readResolve() throws Exception {
SerializationTest.verifySelf(Collections.EMPTY_LIST, comparator);
}
/**
* java.util.Collections.EmptyMap#readResolve()
*/
public void test_EmptyMap_readResolve() throws Exception {
SerializationTest.verifySelf(Collections.EMPTY_MAP, comparator);
}
/**
* java.util.Collections.EmptySet#readResolve()
*/
public void test_EmptySet_readResolve() throws Exception {
SerializationTest.verifySelf(Collections.EMPTY_SET, comparator);
}
public void test_checkedCollectionSerializationCompatibility() throws Exception {
String s = "aced0005737200276a6176612e7574696c2e436f6c6c656374696f6e73244368"
+ "65636b6564436f6c6c656374696f6e15e96dfd18e6cc6f0200034c00016374001"
+ "64c6a6176612f7574696c2f436f6c6c656374696f6e3b4c000474797065740011"
+ "4c6a6176612f6c616e672f436c6173733b5b00167a65726f4c656e677468456c6"
+ "56d656e7441727261797400135b4c6a6176612f6c616e672f4f626a6563743b78"
+ "707372001e6a6176612e7574696c2e436f6c6c656374696f6e7324456d7074795"
+ "3657415f5721db403cb280200007870767200106a6176612e6c616e672e537472"
+ "696e67a0f0a4387a3bb342020000787070";
assertSerialized(Collections.checkedCollection(
Collections.<String>emptySet(), String.class), s, false);
}
public void test_checkedListRandomAccessSerializationCompatibility() throws Exception {
String s = "aced00057372002d6a6176612e7574696c2e436f6c6c656374696f6e73244368"
+ "65636b656452616e646f6d4163636573734c69737416bc0e55a2d7f2f10200007"
+ "87200216a6176612e7574696c2e436f6c6c656374696f6e7324436865636b6564"
+ "4c69737400e7ce7692c45f7c0200014c00046c6973747400104c6a6176612f757"
+ "4696c2f4c6973743b787200276a6176612e7574696c2e436f6c6c656374696f6e"
+ "7324436865636b6564436f6c6c656374696f6e15e96dfd18e6cc6f0200034c000"
+ "1637400164c6a6176612f7574696c2f436f6c6c656374696f6e3b4c0004747970"
+ "657400114c6a6176612f6c616e672f436c6173733b5b00167a65726f4c656e677"
+ "468456c656d656e7441727261797400135b4c6a6176612f6c616e672f4f626a65"
+ "63743b7870737200136a6176612e7574696c2e41727261794c6973747881d21d9"
+ "9c7619d03000149000473697a6578700000000077040000000a78767200106a61"
+ "76612e6c616e672e537472696e67a0f0a4387a3bb34202000078707071007e0009";
assertSerialized(Collections.checkedList(new ArrayList<String>(), String.class), s, true);
}
public void test_checkedListSerializationCompatibility() throws Exception {
String s = "aced0005737200216a6176612e7574696c2e436f6c6c656374696f6e73244368"
+ "65636b65644c69737400e7ce7692c45f7c0200014c00046c6973747400104c6a6"
+ "176612f7574696c2f4c6973743b787200276a6176612e7574696c2e436f6c6c65"
+ "6374696f6e7324436865636b6564436f6c6c656374696f6e15e96dfd18e6cc6f0"
+ "200034c0001637400164c6a6176612f7574696c2f436f6c6c656374696f6e3b4c"
+ "0004747970657400114c6a6176612f6c616e672f436c6173733b5b00167a65726"
+ "f4c656e677468456c656d656e7441727261797400135b4c6a6176612f6c616e67"
+ "2f4f626a6563743b7870737200146a6176612e7574696c2e4c696e6b65644c697"
+ "3740c29535d4a608822030000787077040000000078767200106a6176612e6c61"
+ "6e672e537472696e67a0f0a4387a3bb34202000078707071007e0008";
assertSerialized(Collections.checkedList(new LinkedList<String>(), String.class), s, true);
}
public void test_checkedSetSerializationCompatibility() throws Exception {
String s = "aced0005737200206a6176612e7574696c2e436f6c6c656374696f6e73244368"
+ "65636b656453657441249ba27ad9ffab020000787200276a6176612e7574696c2"
+ "e436f6c6c656374696f6e7324436865636b6564436f6c6c656374696f6e15e96d"
+ "fd18e6cc6f0200034c0001637400164c6a6176612f7574696c2f436f6c6c65637"
+ "4696f6e3b4c0004747970657400114c6a6176612f6c616e672f436c6173733b5b"
+ "00167a65726f4c656e677468456c656d656e7441727261797400135b4c6a61766"
+ "12f6c616e672f4f626a6563743b7870737200116a6176612e7574696c2e486173"
+ "68536574ba44859596b8b7340300007870770c000000103f40000000000000787"
+ "67200106a6176612e6c616e672e537472696e67a0f0a4387a3bb3420200007870"
+ "70";
assertSerialized(Collections.checkedSet(new HashSet<String>(), String.class), s, true);
}
public void test_checkedMapSerializationCompatibility() throws Exception {
String s = "aced0005737200206a6176612e7574696c2e436f6c6c656374696f6e73244368"
+ "65636b65644d61704fb2bcdf0d1863680200054c00076b6579547970657400114"
+ "c6a6176612f6c616e672f436c6173733b4c00016d74000f4c6a6176612f757469"
+ "6c2f4d61703b4c000976616c75655479706571007e00015b00127a65726f4c656"
+ "e6774684b657941727261797400135b4c6a6176612f6c616e672f4f626a656374"
+ "3b5b00147a65726f4c656e67746856616c7565417272617971007e00037870767"
+ "200106a6176612e6c616e672e537472696e67a0f0a4387a3bb342020000787073"
+ "7200116a6176612e7574696c2e486173684d61700507dac1c31660d1030002460"
+ "00a6c6f6164466163746f724900097468726573686f6c6478703f400000000000"
+ "0c770800000010000000007871007e00067070";
assertSerialized(Collections.checkedMap(
new HashMap<String, String>(), String.class, String.class), s);
}
public void test_checkedSortedSetSerializationCompatibility() throws Exception {
String s = "aced0005737200266a6176612e7574696c2e436f6c6c656374696f6e73244368"
+ "65636b6564536f72746564536574163406ba7362eb0f0200014c0002737374001"
+ "54c6a6176612f7574696c2f536f727465645365743b787200206a6176612e7574"
+ "696c2e436f6c6c656374696f6e7324436865636b656453657441249ba27ad9ffa"
+ "b020000787200276a6176612e7574696c2e436f6c6c656374696f6e7324436865"
+ "636b6564436f6c6c656374696f6e15e96dfd18e6cc6f0200034c0001637400164"
+ "c6a6176612f7574696c2f436f6c6c656374696f6e3b4c0004747970657400114c"
+ "6a6176612f6c616e672f436c6173733b5b00167a65726f4c656e677468456c656"
+ "d656e7441727261797400135b4c6a6176612f6c616e672f4f626a6563743b7870"
+ "737200116a6176612e7574696c2e54726565536574dd98509395ed875b0300007"
+ "8707077040000000078767200106a6176612e6c616e672e537472696e67a0f0a4"
+ "387a3bb34202000078707071007e0009";
assertSerialized(Collections.checkedSortedSet(new TreeSet<String>(), String.class), s, true);
}
public void test_checkedSortedMapSerializationCompatibility() throws Exception {
String s = "aced0005737200266a6176612e7574696c2e436f6c6c656374696f6e73244368"
+ "65636b6564536f727465644d617016332c973afe036e0200014c0002736d74001"
+ "54c6a6176612f7574696c2f536f727465644d61703b787200206a6176612e7574"
+ "696c2e436f6c6c656374696f6e7324436865636b65644d61704fb2bcdf0d18636"
+ "80200054c00076b6579547970657400114c6a6176612f6c616e672f436c617373"
+ "3b4c00016d74000f4c6a6176612f7574696c2f4d61703b4c000976616c7565547"
+ "9706571007e00035b00127a65726f4c656e6774684b657941727261797400135b"
+ "4c6a6176612f6c616e672f4f626a6563743b5b00147a65726f4c656e677468566"
+ "16c7565417272617971007e00057870767200106a6176612e6c616e672e537472"
+ "696e67a0f0a4387a3bb3420200007870737200116a6176612e7574696c2e54726"
+ "5654d61700cc1f63e2d256ae60300014c000a636f6d70617261746f727400164c"
+ "6a6176612f7574696c2f436f6d70617261746f723b78707077040000000078710"
+ "07e0008707071007e000b";
assertSerialized(Collections.checkedSortedMap(
new TreeMap<String, String>(), String.class, String.class), s);
}
private void assertSerialized(Collection<?> collection, String s, final boolean definesEquals) {
new SerializationTester<Collection<?>>(collection, s) {
@SuppressWarnings("unchecked")
@Override protected void verify(Collection<?> deserialized) throws Exception {
try {
((Collection) deserialized).add(Boolean.TRUE);
fail();
} catch (ClassCastException expected) {
}
}
@Override protected boolean equals(Collection<?> a, Collection<?> b) {
boolean equal = definesEquals
? a.equals(b)
: Arrays.equals(a.toArray(), b.toArray());
return equal
&& (a instanceof SortedSet == b instanceof SortedSet)
&& (a instanceof RandomAccess == b instanceof RandomAccess);
}
}.test();
}
private void assertSerialized(Map<?, ?> map, String s) {
new SerializationTester<Map<?, ?>>(map, s) {
@SuppressWarnings("unchecked")
@Override protected void verify(Map<?, ?> deserialized) throws Exception {
try {
((Map) deserialized).put(Boolean.TRUE, "a");
fail();
} catch (ClassCastException expected) {
}
try {
((Map) deserialized).put("a", Boolean.TRUE);
fail();
} catch (ClassCastException expected) {
}
}
@Override protected boolean equals(Map<?, ?> a, Map<?, ?> b) {
return super.equals(a, b)
&& (a instanceof SortedMap == b instanceof SortedMap);
}
}.test();
}
public void test_checkedCollectionLjava_util_CollectionLjava_lang_Class() {
ArrayList al = new ArrayList<Integer>();
Collection c = Collections.checkedCollection(al, Integer.class);
c.add(new Integer(1));
try {
c.add(new Double(3.14));
fail("ClassCastException expected");
} catch (ClassCastException e) {
//expected
}
}
public void test_checkedListLjava_util_ListLjava_lang_Class() {
ArrayList al = new ArrayList<Integer>();
List l = Collections.checkedList(al, Integer.class);
l.add(new Integer(1));
try {
l.add(new Double(3.14));
fail("ClassCastException expected");
} catch (ClassCastException e) {
//expected
}
}
public void test_checkedMapLjava_util_MapLjava_lang_ClassLjava_lang_Class() {
HashMap hm = new HashMap<Integer, String>();
Map m = Collections.checkedMap(hm, Integer.class, String.class);
m.put(1, "one");
m.put(2, "two");
try {
m.put("wron key", null);
fail("ClassCastException expected");
} catch (ClassCastException e) {
//expected
}
try {
m.put(3, new Double(3.14));
fail("ClassCastException expected");
} catch (ClassCastException e) {
//expected
}
}
public void test_checkedSetLjava_util_SetLjava_lang_Class() {
HashSet hs = new HashSet<Integer>();
Set s = Collections.checkedSet(hs, Integer.class);
s.add(new Integer(1));
try {
s.add(new Double(3.14));
fail("ClassCastException expected");
} catch (ClassCastException e) {
//expected
}
}
public void test_checkedSortedMapLjava_util_SortedMapLjava_lang_ClassLjava_lang_Class() {
TreeMap tm = new TreeMap<Integer, String>();
SortedMap sm = Collections.checkedSortedMap(tm, Integer.class, String.class);
sm.put(1, "one");
sm.put(2, "two");
try {
sm.put("wron key", null);
fail("ClassCastException expected");
} catch (ClassCastException e) {
//expected
}
try {
sm.put(3, new Double(3.14));
fail("ClassCastException expected");
} catch (ClassCastException e) {
//expected
}
}
public void test_checkedSortedSetLjava_util_SortedSetLjava_lang_Class() {
TreeSet ts = new TreeSet<Integer>();
SortedSet ss = Collections.checkedSortedSet(ts, Integer.class);
ss.add(new Integer(1));
try {
ss.add(new Double(3.14));
fail("ClassCastException expected");
} catch (ClassCastException e) {
//expected
}
}
public void test_emptyList() {
List<String> ls = Collections.emptyList();
List<Integer> li = Collections.emptyList();
assertTrue(ls.equals(li));
assertTrue(li.equals(Collections.EMPTY_LIST));
}
public void test_emptyMap() {
Map<Integer, String> mis = Collections.emptyMap();
Map<String, Integer> msi = Collections.emptyMap();
assertTrue(mis.equals(msi));
assertTrue(msi.equals(Collections.EMPTY_MAP));
}
public void test_emptySet() {
Set<String> ss = Collections.emptySet();
Set<Integer> si = Collections.emptySet();
assertTrue(ss.equals(si));
assertTrue(si.equals(Collections.EMPTY_SET));
}
}