1561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes/*
2561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *  Licensed to the Apache Software Foundation (ASF) under one or more
3561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *  contributor license agreements.  See the NOTICE file distributed with
4561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *  this work for additional information regarding copyright ownership.
5561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *  The ASF licenses this file to You under the Apache License, Version 2.0
6561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *  (the "License"); you may not use this file except in compliance with
7561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *  the License.  You may obtain a copy of the License at
8561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *
9561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *     http://www.apache.org/licenses/LICENSE-2.0
10561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *
11561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *  Unless required by applicable law or agreed to in writing, software
12561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *  distributed under the License is distributed on an "AS IS" BASIS,
13561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *  See the License for the specific language governing permissions and
15561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *  limitations under the License.
16561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */
17561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
18561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughespackage org.apache.harmony.luni.tests.java.util;
19561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
20561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.util.Arrays;
21561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.util.HashSet;
22561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.util.Iterator;
23561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.util.Set;
24561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.io.ObjectOutputStream;
25561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.io.ByteArrayOutputStream;
26561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.io.IOException;
27561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.io.Serializable;
28561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.lang.reflect.Method;
29561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.lang.reflect.InvocationTargetException;
30561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
31561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport org.apache.harmony.testframework.serialization.SerializationTest;
32561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
33561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughespublic class HashSetTest extends junit.framework.TestCase {
34561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
35561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	HashSet hs;
36561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
37561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	static Object[] objArray;
38561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	{
39561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		objArray = new Object[1000];
40561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		for (int i = 0; i < objArray.length; i++)
41561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			objArray[i] = new Integer(i);
42561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	}
43561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
44561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	/**
45561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 * @tests java.util.HashSet#HashSet()
46561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 */
47561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	public void test_Constructor() {
48561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// Test for method java.util.HashSet()
49561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		HashSet hs2 = new HashSet();
50561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals("Created incorrect HashSet", 0, hs2.size());
51561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	}
52561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
53561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	/**
54561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 * @tests java.util.HashSet#HashSet(int)
55561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 */
56561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	public void test_ConstructorI() {
57561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// Test for method java.util.HashSet(int)
58561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		HashSet hs2 = new HashSet(5);
59561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals("Created incorrect HashSet", 0, hs2.size());
60561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		try {
61561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			new HashSet(-1);
62561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		} catch (IllegalArgumentException e) {
63561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			return;
64561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
65561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		fail(
66561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				"Failed to throw IllegalArgumentException for capacity < 0");
67561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	}
68561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
69561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	/**
70561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 * @tests java.util.HashSet#HashSet(int, float)
71561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 */
72561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	public void test_ConstructorIF() {
73561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// Test for method java.util.HashSet(int, float)
74561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		HashSet hs2 = new HashSet(5, (float) 0.5);
75561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals("Created incorrect HashSet", 0, hs2.size());
76561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		try {
77561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			new HashSet(0, 0);
78561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		} catch (IllegalArgumentException e) {
79561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			return;
80561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
81561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		fail(
82561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				"Failed to throw IllegalArgumentException for initial load factor <= 0");
83561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	}
84561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
85561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	/**
86561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 * @tests java.util.HashSet#HashSet(java.util.Collection)
87561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 */
88561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	public void test_ConstructorLjava_util_Collection() {
89561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// Test for method java.util.HashSet(java.util.Collection)
90561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		HashSet hs2 = new HashSet(Arrays.asList(objArray));
91561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		for (int counter = 0; counter < objArray.length; counter++)
92561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			assertTrue("HashSet does not contain correct elements", hs
93561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes					.contains(objArray[counter]));
94561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertTrue("HashSet created from collection incorrect size",
95561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				hs2.size() == objArray.length);
96561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	}
97561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
98561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	/**
99561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 * @tests java.util.HashSet#add(java.lang.Object)
100561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 */
101561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	public void test_addLjava_lang_Object() {
102561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// Test for method boolean java.util.HashSet.add(java.lang.Object)
103561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		int size = hs.size();
104561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		hs.add(new Integer(8));
105561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertTrue("Added element already contained by set", hs.size() == size);
106561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		hs.add(new Integer(-9));
107561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertTrue("Failed to increment set size after add",
108561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				hs.size() == size + 1);
109561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertTrue("Failed to add element to set", hs.contains(new Integer(-9)));
110561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	}
111561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
112561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	/**
113561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 * @tests java.util.HashSet#clear()
114561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 */
115561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	public void test_clear() {
116561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// Test for method void java.util.HashSet.clear()
117561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		Set orgSet = (Set) hs.clone();
118561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		hs.clear();
119561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		Iterator i = orgSet.iterator();
120561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals("Returned non-zero size after clear", 0, hs.size());
121561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		while (i.hasNext())
122561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			assertTrue("Failed to clear set", !hs.contains(i.next()));
123561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	}
124561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
125561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	/**
126561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 * @tests java.util.HashSet#clone()
127561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 */
128561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	public void test_clone() {
129561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// Test for method java.lang.Object java.util.HashSet.clone()
130561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		HashSet hs2 = (HashSet) hs.clone();
131561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertTrue("clone returned an equivalent HashSet", hs != hs2);
132561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertTrue("clone did not return an equal HashSet", hs.equals(hs2));
133561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	}
134561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
135561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	/**
136561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 * @tests java.util.HashSet#contains(java.lang.Object)
137561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 */
138561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	public void test_containsLjava_lang_Object() {
139561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// Test for method boolean java.util.HashSet.contains(java.lang.Object)
140561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertTrue("Returned false for valid object", hs.contains(objArray[90]));
141561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertTrue("Returned true for invalid Object", !hs
142561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				.contains(new Object()));
143561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
144561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		HashSet s = new HashSet();
145561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		s.add(null);
146561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertTrue("Cannot handle null", s.contains(null));
147561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	}
148561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
149561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	/**
150561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 * @tests java.util.HashSet#isEmpty()
151561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 */
152561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	public void test_isEmpty() {
153561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// Test for method boolean java.util.HashSet.isEmpty()
154561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertTrue("Empty set returned false", new HashSet().isEmpty());
155561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertTrue("Non-empty set returned true", !hs.isEmpty());
156561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	}
157561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
158561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	/**
159561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 * @tests java.util.HashSet#iterator()
160561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 */
161561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	public void test_iterator() {
162561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// Test for method java.util.Iterator java.util.HashSet.iterator()
163561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		Iterator i = hs.iterator();
164561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		int x = 0;
165561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		while (i.hasNext()) {
166561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			assertTrue("Failed to iterate over all elements", hs.contains(i
167561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes					.next()));
168561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			++x;
169561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
170561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertTrue("Returned iteration of incorrect size", hs.size() == x);
171561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
172561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		HashSet s = new HashSet();
173561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		s.add(null);
174561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertNull("Cannot handle null", s.iterator().next());
175561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	}
176561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
177561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	/**
178561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 * @tests java.util.HashSet#remove(java.lang.Object)
179561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 */
180561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	public void test_removeLjava_lang_Object() {
181561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// Test for method boolean java.util.HashSet.remove(java.lang.Object)
182561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		int size = hs.size();
183561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		hs.remove(new Integer(98));
184561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertTrue("Failed to remove element", !hs.contains(new Integer(98)));
185561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertTrue("Failed to decrement set size", hs.size() == size - 1);
186561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
187561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		HashSet s = new HashSet();
188561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		s.add(null);
189561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertTrue("Cannot handle null", s.remove(null));
190561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	}
191561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
192561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	/**
193561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 * @tests java.util.HashSet#size()
194561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 */
195561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	public void test_size() {
196561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// Test for method int java.util.HashSet.size()
197561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertTrue("Returned incorrect size", hs.size() == (objArray.length + 1));
198561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		hs.clear();
199561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals("Cleared set returned non-zero size", 0, hs.size());
200561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	}
201561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
202561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
203561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.util.AbstractCollection#toString()
204561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
205561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_toString() {
206561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        HashSet s = new HashSet();
207561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        s.add(s);
208561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        String result = s.toString();
209561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue("should contain self ref", result.indexOf("(this") > -1);
210561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
211561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
212561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	/**
213561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 * @tests java.util.HashSet#SerializationTest
214561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 */
215561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	public void test_Serialization() throws Exception{
216561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		HashSet<String> hs = new HashSet<String>();
217561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		hs.add("hello");
218561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		hs.add("world");
219561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		SerializationTest.verifySelf(hs, comparator);
220561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        SerializationTest.verifyGolden(this, hs, comparator);
221561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	}
222561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
223561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	/**
224561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 * Sets up the fixture, for example, open a network connection. This method
225561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 * is called before a test is executed.
226561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 */
227561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	protected void setUp() {
228561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		hs = new HashSet();
229561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		for (int i = 0; i < objArray.length; i++)
230561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			hs.add(objArray[i]);
231561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		hs.add(null);
232561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	}
233561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
234561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	/**
235561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 * Tears down the fixture, for example, close a network connection. This
236561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 * method is called after a test is executed.
237561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 */
238561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	protected void tearDown() {
239561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	}
240561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
241561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	private static final SerializationTest.SerializableAssert comparator = new
242561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	                                   SerializationTest.SerializableAssert() {
243561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		public void assertDeserialized(Serializable initial, Serializable deserialized) {
244561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			HashSet<String> initialHs = (HashSet<String>) initial;
245561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			HashSet<String> deseriaHs = (HashSet<String>) deserialized;
246561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			assertEquals("should be equal", initialHs.size(), deseriaHs.size());
247561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			assertEquals("should be equal", initialHs, deseriaHs);
248561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
249561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
250561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	};
251561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes}
252