ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/jsr166/jsr166/src/test/tck/CopyOnWriteArraySetTest.java
Revision: 1.1
Committed: Sun Aug 31 19:24:54 2003 UTC (20 years, 8 months ago) by dl
Branch: MAIN
Log Message:
First check-in of tests to be in tck

File Contents

# User Rev Content
1 dl 1.1 /*
2     * Written by members of JCP JSR-166 Expert Group and released to the
3     * public domain. Use, modify, and redistribute this code in any way
4     * without acknowledgement. Other contributors include Andrew Wright,
5     * Jeffrey Hayes, Pat Fischer, Mike Judd.
6     */
7    
8     import junit.framework.*;
9     import java.util.*;
10     import java.util.concurrent.*;
11    
12     public class CopyOnWriteArraySetTest extends TestCase{
13    
14     public static void main(String[] args) {
15     junit.textui.TestRunner.run (suite());
16     }
17    
18     public static Test suite() {
19     return new TestSuite(CopyOnWriteArraySetTest.class);
20     }
21    
22     static CopyOnWriteArraySet fullSet(int n){
23     CopyOnWriteArraySet a = new CopyOnWriteArraySet();
24     assertTrue(a.isEmpty());
25     for (int i = 0; i < n; ++i)
26     a.add(new Integer(i));
27     assertFalse(a.isEmpty());
28     assertEquals(n, a.size());
29     return a;
30     }
31    
32     /**
33     * Test to verify addAll correctly adds each element from the given collection
34     */
35     public void testAddAll(){
36     CopyOnWriteArraySet full = fullSet(3);
37     Vector v = new Vector();
38     v.add(new Integer(3));
39     v.add(new Integer(4));
40     v.add(new Integer(5));
41     full.addAll(v);
42     assertEquals(6, full.size());
43     }
44    
45     /**
46     * Test to verify addAllAbsent adds each element from the given collection that did not
47     * already exist in the List
48     */
49     public void testAddAll2(){
50     CopyOnWriteArraySet full = fullSet(3);
51     Vector v = new Vector();
52     v.add(new Integer(3));
53     v.add(new Integer(4));
54     v.add(new Integer(1)); // will not add this element
55     full.addAll(v);
56     assertEquals(5, full.size());
57     }
58    
59     /**
60     * Test to verify addIfAbsent will not add the element if it already exists in the list
61     */
62     public void testAdd2(){
63     CopyOnWriteArraySet full = fullSet(3);
64     full.add(new Integer(1));
65     assertEquals(3, full.size());
66     }
67    
68     /**
69     * test to verify addIfAbsent correctly adds the element when it does not exist in the list
70     */
71     public void testAdd3(){
72     CopyOnWriteArraySet full = fullSet(3);
73     full.add(new Integer(3));
74     assertTrue(full.contains(new Integer(3)));
75     }
76    
77     /**
78     * Test to verify clear correctly removes all elements from the list
79     */
80     public void testClear(){
81     CopyOnWriteArraySet full = fullSet(3);
82     full.clear();
83     assertEquals(0, full.size());
84     }
85    
86     /**
87     * Test to verify contains returns the correct values
88     */
89     public void testContains(){
90     CopyOnWriteArraySet full = fullSet(3);
91     assertTrue(full.contains(new Integer(1)));
92     assertFalse(full.contains(new Integer(5)));
93     }
94    
95     public void testEquals() {
96     CopyOnWriteArraySet a = fullSet(3);
97     CopyOnWriteArraySet b = fullSet(3);
98     assertTrue(a.equals(b));
99     assertTrue(b.equals(a));
100     assertEquals(a.hashCode(), b.hashCode());
101     a.add(new Integer(-1));
102     assertFalse(a.equals(b));
103     assertFalse(b.equals(a));
104     b.add(new Integer(-1));
105     assertTrue(a.equals(b));
106     assertTrue(b.equals(a));
107     assertEquals(a.hashCode(), b.hashCode());
108     }
109    
110    
111     /**
112     * Test to verify containsAll returns the correct values
113     */
114     public void testContainsAll(){
115     CopyOnWriteArraySet full = fullSet(3);
116     Vector v = new Vector();
117     v.add(new Integer(1));
118     v.add(new Integer(2));
119     assertTrue(full.containsAll(v));
120     v.add(new Integer(6));
121     assertFalse(full.containsAll(v));
122     }
123    
124     /**
125     * Test to verify isEmpty returns the correct values
126     */
127     public void testIsEmpty(){
128     CopyOnWriteArraySet empty = new CopyOnWriteArraySet();
129     CopyOnWriteArraySet full = fullSet(3);
130     assertTrue(empty.isEmpty());
131     assertFalse(full.isEmpty());
132     }
133    
134     /**
135     * Test to verify iterator() returns an iterator containing the elements of the list
136     */
137     public void testIterator(){
138     CopyOnWriteArraySet full = fullSet(3);
139     Iterator i = full.iterator();
140     int j;
141     for(j = 0; i.hasNext(); j++)
142     assertEquals(j, ((Integer)i.next()).intValue());
143     assertEquals(3, j);
144     }
145    
146     public void testIteratorRemove () {
147     CopyOnWriteArraySet full = fullSet(3);
148     Iterator it = full.iterator();
149     it.next();
150     try {
151     it.remove();
152     fail("should throw");
153     }
154     catch (UnsupportedOperationException success) {}
155     }
156    
157     public void testToString(){
158     CopyOnWriteArraySet full = fullSet(3);
159     String s = full.toString();
160     for (int i = 0; i < 3; ++i) {
161     assertTrue(s.indexOf(String.valueOf(i)) >= 0);
162     }
163     }
164    
165    
166     /**
167     * Test to verify removeAll correctly removes all elements from the given collection
168     */
169     public void testRemoveAll(){
170     CopyOnWriteArraySet full = fullSet(3);
171     Vector v = new Vector();
172     v.add(new Integer(1));
173     v.add(new Integer(2));
174     full.removeAll(v);
175     assertEquals(1, full.size());
176     }
177    
178    
179     public void testRemove(){
180     CopyOnWriteArraySet full = fullSet(3);
181     full.remove(new Integer(1));
182     assertFalse(full.contains(new Integer(1)));
183     assertEquals(2, full.size());
184     }
185    
186     /**
187     * Test to verify size returns the correct values
188     */
189     public void testSize(){
190     CopyOnWriteArraySet empty = new CopyOnWriteArraySet();
191     CopyOnWriteArraySet full = fullSet(3);
192     assertEquals(3, full.size());
193     assertEquals(0, empty.size());
194     }
195    
196     /**
197     * Test to verify toArray returns an Object array containing all elements from the list
198     */
199     public void testToArray(){
200     CopyOnWriteArraySet full = fullSet(3);
201     Object[] o = full.toArray();
202     assertEquals(3, o.length);
203     assertEquals(0, ((Integer)o[0]).intValue());
204     assertEquals(1, ((Integer)o[1]).intValue());
205     assertEquals(2, ((Integer)o[2]).intValue());
206     }
207    
208     /**
209     * test to verify toArray returns an Integer array containing all elements from the list
210     */
211     public void testToArray2(){
212     CopyOnWriteArraySet full = fullSet(3);
213     Integer[] i = new Integer[3];
214     i = (Integer[])full.toArray(i);
215     assertEquals(3, i.length);
216     assertEquals(0, i[0].intValue());
217     assertEquals(1, i[1].intValue());
218     assertEquals(2, i[2].intValue());
219     }
220    
221    
222    
223     // Exception tests
224    
225     /**
226     * Test to verify toArray throws an ArrayStoreException when the given array
227     * can not store the objects inside the list
228     */
229     public void testToArray_ArrayStoreException(){
230     try{
231     CopyOnWriteArraySet c = new CopyOnWriteArraySet();
232     c.add("zfasdfsdf");
233     c.add("asdadasd");
234     c.toArray(new Long[5]);
235     fail("Object[] toArray(Object[]) should throw ArrayStoreException");
236     }catch(ArrayStoreException e){}
237     }
238    
239     }