1adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project/*
2adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Licensed to the Apache Software Foundation (ASF) under one or more
3adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * contributor license agreements.  See the NOTICE file distributed with
4adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * this work for additional information regarding copyright ownership.
5adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * The ASF licenses this file to You under the Apache License, Version 2.0
6adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * (the "License"); you may not use this file except in compliance with
7adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * the License.  You may obtain a copy of the License at
8f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes *
9adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0
10f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes *
11adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Unless required by applicable law or agreed to in writing, software
12adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
13adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
14adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * License for the specific language governing permissions and limitations under
15adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * the License.
16adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */
17adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
18789c3a2e66efcf45c5b1c3cfd457dda7ce4f4ad8Jesse Wilsonpackage libcore.java.util;
19adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
20adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.io.Serializable;
21adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.util.ArrayList;
22adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.util.Arrays;
23adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.util.Collection;
24adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.util.Collections;
25adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.util.Comparator;
26adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.util.HashMap;
27adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.util.HashSet;
28adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.util.Iterator;
29adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.util.LinkedList;
30adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.util.List;
31adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.util.Map;
32adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.util.RandomAccess;
33adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.util.Set;
34adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.util.SortedMap;
35adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.util.SortedSet;
36adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.util.TreeMap;
37adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.util.TreeSet;
38adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.util.Vector;
3910078dabb17441ce2721a8e5e10f275c5d0a426aJesse Wilsonimport junit.framework.TestCase;
40b416ef5dc224630af2b9393a15ae120b27e4864aJesse Wilsonimport libcore.util.SerializationTester;
41adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport org.apache.harmony.testframework.serialization.SerializationTest;
42adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport org.apache.harmony.testframework.serialization.SerializationTest.SerializableAssert;
43adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
44789c3a2e66efcf45c5b1c3cfd457dda7ce4f4ad8Jesse Wilsonpublic class OldCollectionsTest extends TestCase {
45adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
46adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    private static final SerializableAssert comparator = new SerializableAssert() {
47adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public void assertDeserialized(Serializable reference, Serializable test) {
48adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            assertSame(reference, test);
49adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
50adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    };
51f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
52adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
53229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom     * java.util.Collections#binarySearch(java.util.List,
54adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *        java.lang.Object, java.util.Comparator)
55adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
56adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void test_binarySearchLjava_util_ListLjava_lang_ObjectLjava_util_Comparator() {
57adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // Regression for HARMONY-94
58adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        LinkedList<Integer> lst = new LinkedList<Integer>();
59adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        lst.add(new Integer(30));
60adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Collections.sort(lst, null);
61adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        int index = Collections.binarySearch(lst, new Integer(2), null);
62adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals(-1, index);
63adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
64adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        LinkedList<String> lls = new LinkedList<String>();
65adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        lls.add("1");
66adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        lls.add("2");
67adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        lls.add("3");
68adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        lls.add("4");
69adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        lls.add("");
70adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        LinkedList<String> ll = lls;
71adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
72adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
73adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            Collections.binarySearch(ll, new Integer(10), null);
74adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("ClassCastException expected");
75adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (ClassCastException e) {
76adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            //expected
77adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
78f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes    }
79f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
80adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
81229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom     * java.util.Collections#binarySearch(java.util.List,
82adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *        java.lang.Object)
83adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
84adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    @SuppressWarnings("unchecked")
85adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void test_binarySearchLjava_util_ListLjava_lang_Object() {
86adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // regression for Harmony-1367
87adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        List localList = new LinkedList();
88adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals(-1, Collections.binarySearch(localList, new Object()));
89adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        localList.add(new Object());
90adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
91adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            Collections.binarySearch(localList, new Integer(1));
92adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("Should throw ClassCastException");
93adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (ClassCastException e) {
94adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            // expected
95adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
96adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
97adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        LinkedList<String> lls = new LinkedList<String>();
98adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        lls.add("1");
99adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        lls.add("2");
100adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        lls.add("3");
101adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        lls.add("4");
102adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        lls.add("");
103adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        LinkedList ll = lls;
104adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
105adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
106adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            Collections.binarySearch(ll, new Integer(10));
107adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("ClassCastException expected");
108adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (ClassCastException e) {
109adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            //expected
110adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
111adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
112f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
113adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
114229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom     * java.util.Collections#rotate(java.util.List, int)
115adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
116adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void test_rotateLjava_util_ListI() {
117adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // Regression for HARMONY-19 Rotate an *empty* list
118adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Collections.rotate(new ArrayList<Object>(), 25);
119adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
120adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // Regression for HARMONY-20
121adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        List<String> list = new ArrayList<String>();
122adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        list.add(0, "zero");
123adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        list.add(1, "one");
124adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        list.add(2, "two");
125adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        list.add(3, "three");
126adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        list.add(4, "four");
127adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
128adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Collections.rotate(list, Integer.MIN_VALUE);
129adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals("Rotated incorrectly at position 0, ", "three",
130adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                list.get(0));
131adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals("Rotated incorrectly at position 1, ", "four",
132adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                list.get(1));
133adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals("Rotated incorrectly at position 2, ", "zero",
134adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                list.get(2));
135adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals("Rotated incorrectly at position 3, ", "one",
136adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                list.get(3));
137adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals("Rotated incorrectly at position 4, ", "two",
138adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                list.get(4));
139adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
140adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
141adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
142229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom     * java.util.Collections#synchronizedCollection(java.util.Collection)
143adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
144adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void test_synchronizedCollectionLjava_util_Collection() {
145adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
146adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            // Regression for HARMONY-93
147adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            Collections.synchronizedCollection(null);
148adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("Assert 0: synchronizedCollection(null) must throw NPE");
149adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (NullPointerException e) {
150adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            // expected
151adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
152adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
153adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
154adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
155229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom     * java.util.Collections#synchronizedSortedMap(java.util.SortedMap)
156adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
157adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void test_synchronizedSortedMapLjava_util_SortedMap() {
158adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
159adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            // Regression for HARMONY-93
160adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            Collections.synchronizedSortedMap(null);
161adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("Assert 0: synchronizedSortedMap(null) must throw NPE");
162adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (NullPointerException e) {
163adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            // expected
164adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
165adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
166adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
167adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
168229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom     * java.util.Collections#synchronizedMap(java.util.Map)
169adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
170adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void test_synchronizedMapLjava_util_Map() {
171adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
172adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            // Regression for HARMONY-93
173adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            Collections.synchronizedMap(null);
174adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("Assert 0: synchronizedMap(map) must throw NPE");
175adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (NullPointerException e) {
176adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            // expected
177adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
178adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
179adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
180adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
181229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom     * java.util.Collections#synchronizedSet(java.util.Set)
182adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
183adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void test_synchronizedSetLjava_util_Set() {
184adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
185adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            // Regression for HARMONY-93
186adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            Collections.synchronizedSet(null);
187adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("Assert 0: synchronizedSet(set) must throw NPE");
188adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (NullPointerException e) {
189adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            // expected
190adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
191adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
192adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
193adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
194229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom     * java.util.Collections#synchronizedSortedSet(java.util.SortedSet)
195adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
196adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void test_synchronizedSortedSetLjava_util_SortedSet() {
197adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
198adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            // Regression for HARMONY-93
199adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            Collections.synchronizedSortedSet(null);
200adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("Assert 0: synchronizedSortedSet(null) must throw NPE");
201adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (NullPointerException e) {
202adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            // expected
203adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
204adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
205adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
206adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
207229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom     * java.util.Collections#unmodifiableCollection(java.util.Collection)
208adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
209adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void test_unmodifiableCollectionLjava_util_Collection() {
210adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
211adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            // Regression for HARMONY-93
212adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            Collections.unmodifiableCollection(null);
213adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("Assert 0: unmodifiableCollection(null) must throw NPE");
214adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (NullPointerException e) {
215adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            // expected
216adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
217adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
218adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
219adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
220229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom     * java.util.Collections#unmodifiableMap(java.util.Map)
221adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
222adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void test_unmodifiableMapLjava_util_Map() {
223adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
224adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            // Regression for HARMONY-93
225adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            Collections.unmodifiableMap(null);
226adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("Assert 0: unmodifiableMap(null) must throw NPE");
227adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (NullPointerException e) {
228adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            // expected
229adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
230adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
231adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
232adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
233229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom     * java.util.Collections#unmodifiableSet(java.util.Set)
234adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
235adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void test_unmodifiableSetLjava_util_Set() {
236adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
237adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            // Regression for HARMONY-93
238adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            Collections.unmodifiableSet(null);
239adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("Assert 0: unmodifiableSet(null) must throw NPE");
240adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (NullPointerException e) {
241adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            // expected
242adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
243adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
244adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
245adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
246229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom     * java.util.Collections#unmodifiableSortedMap(java.util.SortedMap)
247adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
248adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void test_unmodifiableSortedMapLjava_util_SortedMap() {
249adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
250adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            // Regression for HARMONY-93
251adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            Collections.unmodifiableSortedMap(null);
252adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("Assert 0: unmodifiableSortedMap(null) must throw NPE");
253adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (NullPointerException e) {
254adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            // expected
255adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
256adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
257adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
258adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
259229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom     * java.util.Collections#unmodifiableSortedSet(java.util.SortedSet)
260adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
261adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void test_unmodifiableSortedSetLjava_util_SortedSet() {
262adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
263adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            // Regression for HARMONY-93
264adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            Collections.unmodifiableSortedSet(null);
265adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("Assert 0: unmodifiableSortedSet(null) must throw NPE");
266adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (NullPointerException e) {
267adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            // expected
268adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
269adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
270f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
271adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
272229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom     * java.util.Collections#frequency(java.util.Collection,Object)
273adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
274adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void test_frequencyLjava_util_CollectionLint() {
275adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
276adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            Collections.frequency(null, null);
277adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("Assert 0: frequency(null,<any>) must throw NPE");
278adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (NullPointerException e) {}
279adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
280adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        List<String> strings = Arrays.asList(new String[] { "1", "2", "3", "1", "1" });
281adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
282adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals("Assert 1: did not find three \"1\" strings", 3,
283adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                Collections.frequency(strings, "1"));
284adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
285adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals("Assert 2: did not find one \"2\" strings", 1, Collections
286adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                .frequency(strings, "2"));
287adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
288adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals("Assert 3: did not find three \"3\" strings", 1,
289adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                Collections.frequency(strings, "3"));
290adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
291adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals("Assert 4: matched on null when there are none", 0,
292adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                Collections.frequency(strings, null));
293adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
294adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        List<Object> objects = Arrays.asList(new Object[] { new Integer(1), null, null,
295adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                new Long(1) });
296adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
297adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals("Assert 5: did not find one Integer(1)", 1, Collections
298adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                .frequency(objects, new Integer(1)));
299adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
300adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals("Assert 6: did not find one Long(1)", 1, Collections
301adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                .frequency(objects, new Long(1)));
302adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
303adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals("Assert 7: did not find two null references", 2,
304adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                Collections.frequency(objects, null));
305adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
306adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
307adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
308229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom     * java.util.Collections#reverseOrder()
309adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
310adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void test_reverseOrder() {
311adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Comparator<String> roc = Collections.reverseOrder();
312adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertNotNull("Assert 0: comparator must not be null", roc);
313adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
314adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertTrue("Assert 1: comparator must implement Serializable",
315adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                roc instanceof Serializable);
316adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
317adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        String[] fixtureDesc = new String[] { "2", "1", "0" };
318adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        String[] numbers = new String[] { "0", "1", "2" };
319adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Arrays.sort(numbers, roc);
320adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertTrue("Assert 2: the arrays are not equal, the sort failed",
321adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                Arrays.equals(fixtureDesc, numbers));
322adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
323adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
324adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
325229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom     * java.util.Collections#reverseOrder(java.util.Comparator)
326adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
327adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void test_reverseOrderLjava_util_Comparator() {
328adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Comparator<String> roc = Collections
329adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                .reverseOrder(String.CASE_INSENSITIVE_ORDER);
330adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertNotNull("Assert 0: comparator must not be null", roc);
331adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
332adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertTrue("Assert 1: comparator must implement Serializable",
333adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                roc instanceof Serializable);
334adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
335adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        String[] fixtureDesc = new String[] { "2", "1", "0" };
336adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        String[] numbers = new String[] { "0", "1", "2" };
337adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Arrays.sort(numbers, roc);
338adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertTrue("Assert 2: the arrays are not equal, the sort failed",
339adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                Arrays.equals(fixtureDesc, numbers));
340adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
341adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        roc = Collections.reverseOrder(null);
342adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertNotNull("Assert 3: comparator must not be null", roc);
343adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
344adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertTrue("Assert 4: comparator must implement Serializable",
345adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                roc instanceof Serializable);
346adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
347adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        numbers = new String[] { "0", "1", "2" };
348adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Arrays.sort(numbers, roc);
349adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertTrue("Assert 5: the arrays are not equal, the sort failed",
350adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                Arrays.equals(fixtureDesc, numbers));
351adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
352adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
353adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    class Mock_Collection implements Collection {
354adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public boolean add(Object o) {
355adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            throw new UnsupportedOperationException();
356adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
357adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
358adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public boolean addAll(Collection c) {
359adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            return false;
360adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
361adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
362adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public void clear() {
363adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
364adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
365adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public boolean contains(Object o) {
366adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            return false;
367adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
368adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
369adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public boolean containsAll(Collection c) {
370adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            return false;
371adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
372adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
373adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public boolean isEmpty() {
374adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            return false;
375adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
376adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
377adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public Iterator iterator() {
378adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            return null;
379adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
380adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
381adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public boolean remove(Object o) {
382adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            return false;
383adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
384adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
385adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public boolean removeAll(Collection c) {
386adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            return false;
387adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
388adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
389adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public boolean retainAll(Collection c) {
390adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            return false;
391adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
392adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
393adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public int size() {
394adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            return 0;
395adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
396adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
397adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public Object[] toArray() {
398adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            return null;
399adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
400adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
401adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public Object[] toArray(Object[] a) {
402adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            return null;
403adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
404adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
405adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
406adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    class Mock_WrongCollection implements Collection {
407adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        final String wrongElement = "Wrong element";
408adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public boolean add(Object o) {
409adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            if (o.equals(wrongElement)) throw new IllegalArgumentException();
410adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            if (o == null) throw new NullPointerException();
411adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            return false;
412adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
413adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
414adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public boolean addAll(Collection c) {
415adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            return false;
416adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
417adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
418adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public void clear() {
419adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
420adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
421adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public boolean contains(Object o) {
422adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            return false;
423adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
424adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
425adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public boolean containsAll(Collection c) {
426adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            return false;
427adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
428adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
429adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public boolean isEmpty() {
430adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            return false;
431adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
432adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
433adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public Iterator iterator() {
434adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            return null;
435adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
436adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
437adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public boolean remove(Object o) {
438adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            return false;
439adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
440adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
441adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public boolean removeAll(Collection c) {
442adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            return false;
443adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
444adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
445adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public boolean retainAll(Collection c) {
446adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            return false;
447adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
448adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
449adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public int size() {
450adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            return 0;
451adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
452adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
453adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public Object[] toArray() {
454adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            return null;
455adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
456adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
457adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public Object[] toArray(Object[] a) {
458adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            return null;
459adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
460adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
461f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
462adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void test_AddAll() {
463adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        List<Object> l = new ArrayList<Object>();
464adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertFalse(Collections.addAll(l, new Object[] {}));
465adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertTrue(l.isEmpty());
466adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertTrue(Collections.addAll(l, new Object[] { new Integer(1),
467adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                new Integer(2), new Integer(3) }));
468adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertFalse(l.isEmpty());
469adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertTrue(l.equals(Arrays.asList(new Object[] { new Integer(1),
470adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                new Integer(2), new Integer(3) })));
471f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
472adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
473adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            Collections.addAll(null,new Object[] { new Integer(1),
474adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    new Integer(2), new Integer(3) });
475adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("NullPointerException expected");
476adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (NullPointerException e) {
477adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            //fail
478adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
479f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
480adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Collection c = new Mock_Collection();
481adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
482adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            Collections.addAll(c, new Object[] { new Integer(1),
483adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    new Integer(2), new Integer(3) });
484adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("UnsupportedOperationException expected");
485adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (UnsupportedOperationException e) {
486adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            //expected
487adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
488f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
489adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        c = new Mock_WrongCollection ();
490f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
491adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
492adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            Collections.addAll(c, new String[] { "String",
493adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    "Correct element", null });
494adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("NullPointerException expected");
495adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (NullPointerException e) {
496adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            //fail
497adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
498f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
499adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
500adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            Collections.addAll(c, new String[] { "String",
501adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    "Wrong element", "Correct element" });
502adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("IllegalArgumentException expected");
503adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (IllegalArgumentException e) {
504adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            //fail
505adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
506f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
507adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Collections.addAll(c, new String[] { "String",
508adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                "", "Correct element" });
509adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
510adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void test_Disjoint() {
511adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Object[] arr1 = new Object[10];
512adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        for (int i = 0; i < arr1.length; i++) {
513adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            arr1[i] = new Integer(i);
514adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
515adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Object[] arr2 = new Object[20];
516adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        for (int i = 0; i < arr2.length; i++) {
517adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            arr2[i] = new Integer(100 + i);
518adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
519adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Collection<Object> c1 = new ArrayList<Object>();
520adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Collection<Object> c2 = new ArrayList<Object>();
521adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Collections.addAll(c1, arr1);
522adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Collections.addAll(c2, arr2);
523adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertTrue(Collections.disjoint(c1, c2));
524adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        c1.add(arr2[10]);
525adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertFalse(Collections.disjoint(c1, c2));
526adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
527adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        c1 = new LinkedList<Object>();
528adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        c2 = new LinkedList<Object>();
529adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Collections.addAll(c1, arr1);
530adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Collections.addAll(c2, arr2);
531adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertTrue(Collections.disjoint(c1, c2));
532adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        c1.add(arr2[10]);
533adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertFalse(Collections.disjoint(c1, c2));
534adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
535adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        c1 = new TreeSet<Object>();
536adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        c2 = new TreeSet<Object>();
537adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Collections.addAll(c1, arr1);
538adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Collections.addAll(c2, arr2);
539adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertTrue(Collections.disjoint(c1, c2));
540adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        c1.add(arr2[10]);
541adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertFalse(Collections.disjoint(c1, c2));
542adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
543adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        c1 = new HashSet<Object>();
544adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        c2 = new HashSet<Object>();
545adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Collections.addAll(c1, arr1);
546adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Collections.addAll(c2, arr2);
547adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertTrue(Collections.disjoint(c1, c2));
548adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        c1.add(arr2[10]);
549adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertFalse(Collections.disjoint(c1, c2));
550adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
551adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        c1 = new LinkedList<Object>();
552adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        c2 = new TreeSet<Object>();
553adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Collections.addAll(c1, arr1);
554adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Collections.addAll(c2, arr2);
555adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertTrue(Collections.disjoint(c1, c2));
556adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        c1.add(arr2[10]);
557adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertFalse(Collections.disjoint(c1, c2));
558adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
559adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        c1 = new Vector<Object>();
560adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        c2 = new HashSet<Object>();
561adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Collections.addAll(c1, arr1);
562adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Collections.addAll(c2, arr2);
563adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertTrue(Collections.disjoint(c1, c2));
564adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        c1.add(arr2[10]);
565adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertFalse(Collections.disjoint(c1, c2));
566f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
567adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
568adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            Collections.disjoint(c1, null);
569adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("NullPointerException expected");
570adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (NullPointerException e) {
571adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            //expected
572adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
573f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
574adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
575adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            Collections.disjoint(null, c2);
576adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("NullPointerException expected");
577adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (NullPointerException e) {
578adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            //expected
579adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
580adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
581f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
582adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
583229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom     * java.util.Collections.EmptyList#readResolve()
584adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
585adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void test_EmptyList_readResolve() throws Exception {
586adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        SerializationTest.verifySelf(Collections.EMPTY_LIST, comparator);
587adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
588adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
589adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
590229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom     * java.util.Collections.EmptyMap#readResolve()
591adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
592adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void test_EmptyMap_readResolve() throws Exception {
593adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        SerializationTest.verifySelf(Collections.EMPTY_MAP, comparator);
594adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
595adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
596adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
597229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom     * java.util.Collections.EmptySet#readResolve()
598adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
599adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void test_EmptySet_readResolve() throws Exception {
600adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        SerializationTest.verifySelf(Collections.EMPTY_SET, comparator);
601adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
602adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
60310078dabb17441ce2721a8e5e10f275c5d0a426aJesse Wilson    public void test_checkedCollectionSerializationCompatibility() throws Exception {
60410078dabb17441ce2721a8e5e10f275c5d0a426aJesse Wilson        String s = "aced0005737200276a6176612e7574696c2e436f6c6c656374696f6e73244368"
60510078dabb17441ce2721a8e5e10f275c5d0a426aJesse Wilson                + "65636b6564436f6c6c656374696f6e15e96dfd18e6cc6f0200034c00016374001"
60610078dabb17441ce2721a8e5e10f275c5d0a426aJesse Wilson                + "64c6a6176612f7574696c2f436f6c6c656374696f6e3b4c000474797065740011"
60710078dabb17441ce2721a8e5e10f275c5d0a426aJesse Wilson                + "4c6a6176612f6c616e672f436c6173733b5b00167a65726f4c656e677468456c6"
60810078dabb17441ce2721a8e5e10f275c5d0a426aJesse Wilson                + "56d656e7441727261797400135b4c6a6176612f6c616e672f4f626a6563743b78"
60910078dabb17441ce2721a8e5e10f275c5d0a426aJesse Wilson                + "707372001e6a6176612e7574696c2e436f6c6c656374696f6e7324456d7074795"
61010078dabb17441ce2721a8e5e10f275c5d0a426aJesse Wilson                + "3657415f5721db403cb280200007870767200106a6176612e6c616e672e537472"
61110078dabb17441ce2721a8e5e10f275c5d0a426aJesse Wilson                + "696e67a0f0a4387a3bb342020000787070";
61210078dabb17441ce2721a8e5e10f275c5d0a426aJesse Wilson        assertSerialized(Collections.checkedCollection(
61310078dabb17441ce2721a8e5e10f275c5d0a426aJesse Wilson                Collections.<String>emptySet(), String.class), s, false);
61410078dabb17441ce2721a8e5e10f275c5d0a426aJesse Wilson    }
61510078dabb17441ce2721a8e5e10f275c5d0a426aJesse Wilson    public void test_checkedListRandomAccessSerializationCompatibility() throws Exception {
61610078dabb17441ce2721a8e5e10f275c5d0a426aJesse Wilson        String s = "aced00057372002d6a6176612e7574696c2e436f6c6c656374696f6e73244368"
61710078dabb17441ce2721a8e5e10f275c5d0a426aJesse Wilson                + "65636b656452616e646f6d4163636573734c69737416bc0e55a2d7f2f10200007"
61810078dabb17441ce2721a8e5e10f275c5d0a426aJesse Wilson                + "87200216a6176612e7574696c2e436f6c6c656374696f6e7324436865636b6564"
61910078dabb17441ce2721a8e5e10f275c5d0a426aJesse Wilson                + "4c69737400e7ce7692c45f7c0200014c00046c6973747400104c6a6176612f757"
62010078dabb17441ce2721a8e5e10f275c5d0a426aJesse Wilson                + "4696c2f4c6973743b787200276a6176612e7574696c2e436f6c6c656374696f6e"
62110078dabb17441ce2721a8e5e10f275c5d0a426aJesse Wilson                + "7324436865636b6564436f6c6c656374696f6e15e96dfd18e6cc6f0200034c000"
62210078dabb17441ce2721a8e5e10f275c5d0a426aJesse Wilson                + "1637400164c6a6176612f7574696c2f436f6c6c656374696f6e3b4c0004747970"
62310078dabb17441ce2721a8e5e10f275c5d0a426aJesse Wilson                + "657400114c6a6176612f6c616e672f436c6173733b5b00167a65726f4c656e677"
62410078dabb17441ce2721a8e5e10f275c5d0a426aJesse Wilson                + "468456c656d656e7441727261797400135b4c6a6176612f6c616e672f4f626a65"
62510078dabb17441ce2721a8e5e10f275c5d0a426aJesse Wilson                + "63743b7870737200136a6176612e7574696c2e41727261794c6973747881d21d9"
62610078dabb17441ce2721a8e5e10f275c5d0a426aJesse Wilson                + "9c7619d03000149000473697a6578700000000077040000000a78767200106a61"
62710078dabb17441ce2721a8e5e10f275c5d0a426aJesse Wilson                + "76612e6c616e672e537472696e67a0f0a4387a3bb34202000078707071007e0009";
62810078dabb17441ce2721a8e5e10f275c5d0a426aJesse Wilson        assertSerialized(Collections.checkedList(new ArrayList<String>(), String.class), s, true);
62910078dabb17441ce2721a8e5e10f275c5d0a426aJesse Wilson    }
63010078dabb17441ce2721a8e5e10f275c5d0a426aJesse Wilson    public void test_checkedListSerializationCompatibility() throws Exception {
63110078dabb17441ce2721a8e5e10f275c5d0a426aJesse Wilson        String s = "aced0005737200216a6176612e7574696c2e436f6c6c656374696f6e73244368"
63210078dabb17441ce2721a8e5e10f275c5d0a426aJesse Wilson                + "65636b65644c69737400e7ce7692c45f7c0200014c00046c6973747400104c6a6"
63310078dabb17441ce2721a8e5e10f275c5d0a426aJesse Wilson                + "176612f7574696c2f4c6973743b787200276a6176612e7574696c2e436f6c6c65"
63410078dabb17441ce2721a8e5e10f275c5d0a426aJesse Wilson                + "6374696f6e7324436865636b6564436f6c6c656374696f6e15e96dfd18e6cc6f0"
63510078dabb17441ce2721a8e5e10f275c5d0a426aJesse Wilson                + "200034c0001637400164c6a6176612f7574696c2f436f6c6c656374696f6e3b4c"
63610078dabb17441ce2721a8e5e10f275c5d0a426aJesse Wilson                + "0004747970657400114c6a6176612f6c616e672f436c6173733b5b00167a65726"
63710078dabb17441ce2721a8e5e10f275c5d0a426aJesse Wilson                + "f4c656e677468456c656d656e7441727261797400135b4c6a6176612f6c616e67"
63810078dabb17441ce2721a8e5e10f275c5d0a426aJesse Wilson                + "2f4f626a6563743b7870737200146a6176612e7574696c2e4c696e6b65644c697"
63910078dabb17441ce2721a8e5e10f275c5d0a426aJesse Wilson                + "3740c29535d4a608822030000787077040000000078767200106a6176612e6c61"
64010078dabb17441ce2721a8e5e10f275c5d0a426aJesse Wilson                + "6e672e537472696e67a0f0a4387a3bb34202000078707071007e0008";
64110078dabb17441ce2721a8e5e10f275c5d0a426aJesse Wilson        assertSerialized(Collections.checkedList(new LinkedList<String>(), String.class), s, true);
64210078dabb17441ce2721a8e5e10f275c5d0a426aJesse Wilson    }
64310078dabb17441ce2721a8e5e10f275c5d0a426aJesse Wilson    public void test_checkedSetSerializationCompatibility() throws Exception {
64410078dabb17441ce2721a8e5e10f275c5d0a426aJesse Wilson        String s = "aced0005737200206a6176612e7574696c2e436f6c6c656374696f6e73244368"
64510078dabb17441ce2721a8e5e10f275c5d0a426aJesse Wilson                + "65636b656453657441249ba27ad9ffab020000787200276a6176612e7574696c2"
64610078dabb17441ce2721a8e5e10f275c5d0a426aJesse Wilson                + "e436f6c6c656374696f6e7324436865636b6564436f6c6c656374696f6e15e96d"
64710078dabb17441ce2721a8e5e10f275c5d0a426aJesse Wilson                + "fd18e6cc6f0200034c0001637400164c6a6176612f7574696c2f436f6c6c65637"
64810078dabb17441ce2721a8e5e10f275c5d0a426aJesse Wilson                + "4696f6e3b4c0004747970657400114c6a6176612f6c616e672f436c6173733b5b"
64910078dabb17441ce2721a8e5e10f275c5d0a426aJesse Wilson                + "00167a65726f4c656e677468456c656d656e7441727261797400135b4c6a61766"
65010078dabb17441ce2721a8e5e10f275c5d0a426aJesse Wilson                + "12f6c616e672f4f626a6563743b7870737200116a6176612e7574696c2e486173"
65110078dabb17441ce2721a8e5e10f275c5d0a426aJesse Wilson                + "68536574ba44859596b8b7340300007870770c000000103f40000000000000787"
65210078dabb17441ce2721a8e5e10f275c5d0a426aJesse Wilson                + "67200106a6176612e6c616e672e537472696e67a0f0a4387a3bb3420200007870"
65310078dabb17441ce2721a8e5e10f275c5d0a426aJesse Wilson                + "70";
65410078dabb17441ce2721a8e5e10f275c5d0a426aJesse Wilson        assertSerialized(Collections.checkedSet(new HashSet<String>(), String.class), s, true);
65510078dabb17441ce2721a8e5e10f275c5d0a426aJesse Wilson    }
65610078dabb17441ce2721a8e5e10f275c5d0a426aJesse Wilson    public void test_checkedMapSerializationCompatibility() throws Exception {
65710078dabb17441ce2721a8e5e10f275c5d0a426aJesse Wilson        String s = "aced0005737200206a6176612e7574696c2e436f6c6c656374696f6e73244368"
65810078dabb17441ce2721a8e5e10f275c5d0a426aJesse Wilson                + "65636b65644d61704fb2bcdf0d1863680200054c00076b6579547970657400114"
65910078dabb17441ce2721a8e5e10f275c5d0a426aJesse Wilson                + "c6a6176612f6c616e672f436c6173733b4c00016d74000f4c6a6176612f757469"
66010078dabb17441ce2721a8e5e10f275c5d0a426aJesse Wilson                + "6c2f4d61703b4c000976616c75655479706571007e00015b00127a65726f4c656"
66110078dabb17441ce2721a8e5e10f275c5d0a426aJesse Wilson                + "e6774684b657941727261797400135b4c6a6176612f6c616e672f4f626a656374"
66210078dabb17441ce2721a8e5e10f275c5d0a426aJesse Wilson                + "3b5b00147a65726f4c656e67746856616c7565417272617971007e00037870767"
66310078dabb17441ce2721a8e5e10f275c5d0a426aJesse Wilson                + "200106a6176612e6c616e672e537472696e67a0f0a4387a3bb342020000787073"
66410078dabb17441ce2721a8e5e10f275c5d0a426aJesse Wilson                + "7200116a6176612e7574696c2e486173684d61700507dac1c31660d1030002460"
66510078dabb17441ce2721a8e5e10f275c5d0a426aJesse Wilson                + "00a6c6f6164466163746f724900097468726573686f6c6478703f400000000000"
66610078dabb17441ce2721a8e5e10f275c5d0a426aJesse Wilson                + "0c770800000010000000007871007e00067070";
66710078dabb17441ce2721a8e5e10f275c5d0a426aJesse Wilson        assertSerialized(Collections.checkedMap(
66810078dabb17441ce2721a8e5e10f275c5d0a426aJesse Wilson                new HashMap<String, String>(), String.class, String.class), s);
66910078dabb17441ce2721a8e5e10f275c5d0a426aJesse Wilson    }
67010078dabb17441ce2721a8e5e10f275c5d0a426aJesse Wilson    public void test_checkedSortedSetSerializationCompatibility() throws Exception {
67110078dabb17441ce2721a8e5e10f275c5d0a426aJesse Wilson        String s = "aced0005737200266a6176612e7574696c2e436f6c6c656374696f6e73244368"
67210078dabb17441ce2721a8e5e10f275c5d0a426aJesse Wilson                + "65636b6564536f72746564536574163406ba7362eb0f0200014c0002737374001"
67310078dabb17441ce2721a8e5e10f275c5d0a426aJesse Wilson                + "54c6a6176612f7574696c2f536f727465645365743b787200206a6176612e7574"
67410078dabb17441ce2721a8e5e10f275c5d0a426aJesse Wilson                + "696c2e436f6c6c656374696f6e7324436865636b656453657441249ba27ad9ffa"
67510078dabb17441ce2721a8e5e10f275c5d0a426aJesse Wilson                + "b020000787200276a6176612e7574696c2e436f6c6c656374696f6e7324436865"
67610078dabb17441ce2721a8e5e10f275c5d0a426aJesse Wilson                + "636b6564436f6c6c656374696f6e15e96dfd18e6cc6f0200034c0001637400164"
67710078dabb17441ce2721a8e5e10f275c5d0a426aJesse Wilson                + "c6a6176612f7574696c2f436f6c6c656374696f6e3b4c0004747970657400114c"
67810078dabb17441ce2721a8e5e10f275c5d0a426aJesse Wilson                + "6a6176612f6c616e672f436c6173733b5b00167a65726f4c656e677468456c656"
67910078dabb17441ce2721a8e5e10f275c5d0a426aJesse Wilson                + "d656e7441727261797400135b4c6a6176612f6c616e672f4f626a6563743b7870"
68010078dabb17441ce2721a8e5e10f275c5d0a426aJesse Wilson                + "737200116a6176612e7574696c2e54726565536574dd98509395ed875b0300007"
68110078dabb17441ce2721a8e5e10f275c5d0a426aJesse Wilson                + "8707077040000000078767200106a6176612e6c616e672e537472696e67a0f0a4"
68210078dabb17441ce2721a8e5e10f275c5d0a426aJesse Wilson                + "387a3bb34202000078707071007e0009";
68310078dabb17441ce2721a8e5e10f275c5d0a426aJesse Wilson        assertSerialized(Collections.checkedSortedSet(new TreeSet<String>(), String.class), s, true);
68410078dabb17441ce2721a8e5e10f275c5d0a426aJesse Wilson    }
68510078dabb17441ce2721a8e5e10f275c5d0a426aJesse Wilson    public void test_checkedSortedMapSerializationCompatibility() throws Exception {
68610078dabb17441ce2721a8e5e10f275c5d0a426aJesse Wilson        String s = "aced0005737200266a6176612e7574696c2e436f6c6c656374696f6e73244368"
68710078dabb17441ce2721a8e5e10f275c5d0a426aJesse Wilson                + "65636b6564536f727465644d617016332c973afe036e0200014c0002736d74001"
68810078dabb17441ce2721a8e5e10f275c5d0a426aJesse Wilson                + "54c6a6176612f7574696c2f536f727465644d61703b787200206a6176612e7574"
68910078dabb17441ce2721a8e5e10f275c5d0a426aJesse Wilson                + "696c2e436f6c6c656374696f6e7324436865636b65644d61704fb2bcdf0d18636"
69010078dabb17441ce2721a8e5e10f275c5d0a426aJesse Wilson                + "80200054c00076b6579547970657400114c6a6176612f6c616e672f436c617373"
69110078dabb17441ce2721a8e5e10f275c5d0a426aJesse Wilson                + "3b4c00016d74000f4c6a6176612f7574696c2f4d61703b4c000976616c7565547"
69210078dabb17441ce2721a8e5e10f275c5d0a426aJesse Wilson                + "9706571007e00035b00127a65726f4c656e6774684b657941727261797400135b"
69310078dabb17441ce2721a8e5e10f275c5d0a426aJesse Wilson                + "4c6a6176612f6c616e672f4f626a6563743b5b00147a65726f4c656e677468566"
69410078dabb17441ce2721a8e5e10f275c5d0a426aJesse Wilson                + "16c7565417272617971007e00057870767200106a6176612e6c616e672e537472"
69510078dabb17441ce2721a8e5e10f275c5d0a426aJesse Wilson                + "696e67a0f0a4387a3bb3420200007870737200116a6176612e7574696c2e54726"
69610078dabb17441ce2721a8e5e10f275c5d0a426aJesse Wilson                + "5654d61700cc1f63e2d256ae60300014c000a636f6d70617261746f727400164c"
69710078dabb17441ce2721a8e5e10f275c5d0a426aJesse Wilson                + "6a6176612f7574696c2f436f6d70617261746f723b78707077040000000078710"
69810078dabb17441ce2721a8e5e10f275c5d0a426aJesse Wilson                + "07e0008707071007e000b";
69910078dabb17441ce2721a8e5e10f275c5d0a426aJesse Wilson        assertSerialized(Collections.checkedSortedMap(
70010078dabb17441ce2721a8e5e10f275c5d0a426aJesse Wilson                new TreeMap<String, String>(), String.class, String.class), s);
70110078dabb17441ce2721a8e5e10f275c5d0a426aJesse Wilson    }
70210078dabb17441ce2721a8e5e10f275c5d0a426aJesse Wilson
70310078dabb17441ce2721a8e5e10f275c5d0a426aJesse Wilson    private void assertSerialized(Collection<?> collection, String s, final boolean definesEquals) {
704b416ef5dc224630af2b9393a15ae120b27e4864aJesse Wilson        new SerializationTester<Collection<?>>(collection, s) {
70510078dabb17441ce2721a8e5e10f275c5d0a426aJesse Wilson            @SuppressWarnings("unchecked")
70610078dabb17441ce2721a8e5e10f275c5d0a426aJesse Wilson            @Override protected void verify(Collection<?> deserialized) throws Exception {
70710078dabb17441ce2721a8e5e10f275c5d0a426aJesse Wilson                try {
70810078dabb17441ce2721a8e5e10f275c5d0a426aJesse Wilson                    ((Collection) deserialized).add(Boolean.TRUE);
70910078dabb17441ce2721a8e5e10f275c5d0a426aJesse Wilson                    fail();
71010078dabb17441ce2721a8e5e10f275c5d0a426aJesse Wilson                } catch (ClassCastException expected) {
71110078dabb17441ce2721a8e5e10f275c5d0a426aJesse Wilson                }
71210078dabb17441ce2721a8e5e10f275c5d0a426aJesse Wilson            }
71310078dabb17441ce2721a8e5e10f275c5d0a426aJesse Wilson            @Override protected boolean equals(Collection<?> a, Collection<?> b) {
71410078dabb17441ce2721a8e5e10f275c5d0a426aJesse Wilson                boolean equal = definesEquals
71510078dabb17441ce2721a8e5e10f275c5d0a426aJesse Wilson                        ? a.equals(b)
71610078dabb17441ce2721a8e5e10f275c5d0a426aJesse Wilson                        : Arrays.equals(a.toArray(), b.toArray());
71710078dabb17441ce2721a8e5e10f275c5d0a426aJesse Wilson                return equal
71810078dabb17441ce2721a8e5e10f275c5d0a426aJesse Wilson                        && (a instanceof SortedSet == b instanceof SortedSet)
71910078dabb17441ce2721a8e5e10f275c5d0a426aJesse Wilson                        && (a instanceof RandomAccess == b instanceof RandomAccess);
72010078dabb17441ce2721a8e5e10f275c5d0a426aJesse Wilson            }
72110078dabb17441ce2721a8e5e10f275c5d0a426aJesse Wilson        }.test();
72210078dabb17441ce2721a8e5e10f275c5d0a426aJesse Wilson    }
72310078dabb17441ce2721a8e5e10f275c5d0a426aJesse Wilson
72410078dabb17441ce2721a8e5e10f275c5d0a426aJesse Wilson    private void assertSerialized(Map<?, ?> map, String s) {
725b416ef5dc224630af2b9393a15ae120b27e4864aJesse Wilson        new SerializationTester<Map<?, ?>>(map, s) {
72610078dabb17441ce2721a8e5e10f275c5d0a426aJesse Wilson            @SuppressWarnings("unchecked")
72710078dabb17441ce2721a8e5e10f275c5d0a426aJesse Wilson            @Override protected void verify(Map<?, ?> deserialized) throws Exception {
72810078dabb17441ce2721a8e5e10f275c5d0a426aJesse Wilson                try {
72910078dabb17441ce2721a8e5e10f275c5d0a426aJesse Wilson                    ((Map) deserialized).put(Boolean.TRUE, "a");
73010078dabb17441ce2721a8e5e10f275c5d0a426aJesse Wilson                    fail();
73110078dabb17441ce2721a8e5e10f275c5d0a426aJesse Wilson                } catch (ClassCastException expected) {
73210078dabb17441ce2721a8e5e10f275c5d0a426aJesse Wilson                }
73310078dabb17441ce2721a8e5e10f275c5d0a426aJesse Wilson                try {
73410078dabb17441ce2721a8e5e10f275c5d0a426aJesse Wilson                    ((Map) deserialized).put("a", Boolean.TRUE);
73510078dabb17441ce2721a8e5e10f275c5d0a426aJesse Wilson                    fail();
73610078dabb17441ce2721a8e5e10f275c5d0a426aJesse Wilson                } catch (ClassCastException expected) {
73710078dabb17441ce2721a8e5e10f275c5d0a426aJesse Wilson                }
73810078dabb17441ce2721a8e5e10f275c5d0a426aJesse Wilson            }
73910078dabb17441ce2721a8e5e10f275c5d0a426aJesse Wilson            @Override protected boolean equals(Map<?, ?> a, Map<?, ?> b) {
74010078dabb17441ce2721a8e5e10f275c5d0a426aJesse Wilson                return super.equals(a, b)
74110078dabb17441ce2721a8e5e10f275c5d0a426aJesse Wilson                        && (a instanceof SortedMap == b instanceof SortedMap);
74210078dabb17441ce2721a8e5e10f275c5d0a426aJesse Wilson            }
74310078dabb17441ce2721a8e5e10f275c5d0a426aJesse Wilson        }.test();
744adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
745adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
746adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void test_checkedCollectionLjava_util_CollectionLjava_lang_Class() {
747adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        ArrayList al = new ArrayList<Integer>();
748f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
749adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Collection c = Collections.checkedCollection(al, Integer.class);
750f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
751adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        c.add(new Integer(1));
752f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
753adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
754adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            c.add(new Double(3.14));
755adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("ClassCastException expected");
756adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (ClassCastException e) {
757adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            //expected
758adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
759adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
760adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
761adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void test_checkedListLjava_util_ListLjava_lang_Class() {
762adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        ArrayList al = new ArrayList<Integer>();
763f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
764adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        List l = Collections.checkedList(al, Integer.class);
765f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
766adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        l.add(new Integer(1));
767f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
768adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
769adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            l.add(new Double(3.14));
770adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("ClassCastException expected");
771adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (ClassCastException e) {
772adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            //expected
773adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
774adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
775adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
776adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void test_checkedMapLjava_util_MapLjava_lang_ClassLjava_lang_Class() {
777adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        HashMap hm = new HashMap<Integer, String>();
778f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
779adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Map m = Collections.checkedMap(hm, Integer.class, String.class);
780f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
781adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        m.put(1, "one");
782adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        m.put(2, "two");
783f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
784adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
785adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            m.put("wron key", null);
786adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("ClassCastException expected");
787adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (ClassCastException e) {
788adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            //expected
789adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
790adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
791adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
792adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            m.put(3, new Double(3.14));
793adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("ClassCastException expected");
794adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (ClassCastException e) {
795adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            //expected
796adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
797adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
798adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
799adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void test_checkedSetLjava_util_SetLjava_lang_Class() {
800adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        HashSet hs = new HashSet<Integer>();
801f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
802adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Set s = Collections.checkedSet(hs, Integer.class);
803f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
804adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        s.add(new Integer(1));
805f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
806adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
807adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            s.add(new Double(3.14));
808adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("ClassCastException expected");
809adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (ClassCastException e) {
810adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            //expected
811adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
812adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
813adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
814adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void test_checkedSortedMapLjava_util_SortedMapLjava_lang_ClassLjava_lang_Class() {
815adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        TreeMap tm = new TreeMap<Integer, String>();
816f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
817adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        SortedMap sm = Collections.checkedSortedMap(tm, Integer.class, String.class);
818f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
819adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        sm.put(1, "one");
820adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        sm.put(2, "two");
821f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
822adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
823adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            sm.put("wron key", null);
824adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("ClassCastException expected");
825adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (ClassCastException e) {
826adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            //expected
827adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
828adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
829adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
830adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            sm.put(3, new Double(3.14));
831adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("ClassCastException expected");
832adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (ClassCastException e) {
833adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            //expected
834adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
835adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
836adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
837adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void test_checkedSortedSetLjava_util_SortedSetLjava_lang_Class() {
838adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        TreeSet ts = new TreeSet<Integer>();
839f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
840adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        SortedSet ss = Collections.checkedSortedSet(ts, Integer.class);
841f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
842adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        ss.add(new Integer(1));
843f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
844adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
845adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            ss.add(new Double(3.14));
846adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("ClassCastException expected");
847adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (ClassCastException e) {
848adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            //expected
849adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
850adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
851adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
852adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void test_emptyList() {
853adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        List<String> ls = Collections.emptyList();
854adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        List<Integer> li = Collections.emptyList();
855adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
856adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertTrue(ls.equals(li));
857adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertTrue(li.equals(Collections.EMPTY_LIST));
858adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
859adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
860adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void test_emptyMap() {
861adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Map<Integer, String> mis = Collections.emptyMap();
862adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Map<String, Integer> msi = Collections.emptyMap();
863f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
864adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertTrue(mis.equals(msi));
865adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertTrue(msi.equals(Collections.EMPTY_MAP));
866adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
867adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
868adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void test_emptySet() {
869adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Set<String> ss = Collections.emptySet();
870adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Set<Integer> si = Collections.emptySet();
871f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
872adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertTrue(ss.equals(si));
873adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertTrue(si.equals(Collections.EMPTY_SET));
874adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
875adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project}
876