ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/jsr166/jsr166/src/test/tck/AtomicReferenceArrayTest.java
(Generate patch)

Comparing jsr166/src/test/tck/AtomicReferenceArrayTest.java (file contents):
Revision 1.3 by dl, Sun Sep 14 20:42:40 2003 UTC vs.
Revision 1.5 by dl, Thu Sep 25 11:02:41 2003 UTC

# Line 18 | Line 18 | public class AtomicReferenceArrayTest ex
18          return new TestSuite(AtomicReferenceArrayTest.class);
19      }
20  
21 +    /**
22 +     * constructor creates array of given size with all elements null
23 +     */
24      public void testConstructor(){
25          AtomicReferenceArray<Integer> ai = new AtomicReferenceArray<Integer>(SIZE);
26          for (int i = 0; i < SIZE; ++i) {
# Line 25 | Line 28 | public class AtomicReferenceArrayTest ex
28          }
29      }
30  
31 +    /**
32 +     * get and set for out of bound indices throw IndexOutOfBoundsException
33 +     */
34 +    public void testIndexing(){
35 +        AtomicReferenceArray<Integer> ai = new AtomicReferenceArray<Integer>(SIZE);
36 +        try {
37 +            ai.get(SIZE);
38 +        } catch(IndexOutOfBoundsException success){
39 +        }
40 +        try {
41 +            ai.get(-1);
42 +        } catch(IndexOutOfBoundsException success){
43 +        }
44 +        try {
45 +            ai.set(SIZE, null);
46 +        } catch(IndexOutOfBoundsException success){
47 +        }
48 +        try {
49 +            ai.set(-1, null);
50 +        } catch(IndexOutOfBoundsException success){
51 +        }
52 +    }
53 +
54 +    /**
55 +     * get returns the last value set at index
56 +     */
57      public void testGetSet(){
58          AtomicReferenceArray ai = new AtomicReferenceArray(SIZE);
59          for (int i = 0; i < SIZE; ++i) {
# Line 37 | Line 66 | public class AtomicReferenceArrayTest ex
66          }
67      }
68  
69 +    /**
70 +     * compareAndSet succeeds in changing value if equal to expected else fails
71 +     */
72      public void testCompareAndSet(){
73          AtomicReferenceArray ai = new AtomicReferenceArray(SIZE);
74          for (int i = 0; i < SIZE; ++i) {
# Line 51 | Line 83 | public class AtomicReferenceArrayTest ex
83          }
84      }
85  
86 +    /**
87 +     * compareAndSet in one thread enables another waiting for value
88 +     * to succeed
89 +     */
90 +    public void testCompareAndSetInMultipleThreads() {
91 +        final AtomicReferenceArray a = new AtomicReferenceArray(1);
92 +        a.set(0, one);
93 +        Thread t = new Thread(new Runnable() {
94 +                public void run() {
95 +                    while(!a.compareAndSet(0, two, three)) Thread.yield();
96 +                }});
97 +        try {
98 +            t.start();
99 +            assertTrue(a.compareAndSet(0, one, two));
100 +            t.join(LONG_DELAY_MS);
101 +            assertFalse(t.isAlive());
102 +            assertEquals(a.get(0), three);
103 +        }
104 +        catch(Exception e) {
105 +            unexpectedException();
106 +        }
107 +    }
108 +
109 +    /**
110 +     * repeated weakCompareAndSet succeeds in changing value when equal
111 +     * to expected
112 +     */
113      public void testWeakCompareAndSet(){
114          AtomicReferenceArray ai = new AtomicReferenceArray(SIZE);
115          for (int i = 0; i < SIZE; ++i) {
# Line 63 | Line 122 | public class AtomicReferenceArrayTest ex
122          }
123      }
124  
125 +    /**
126 +     * getAndSet returns previous value and sets to given value at given index
127 +     */
128      public void testGetAndSet(){
129          AtomicReferenceArray ai = new AtomicReferenceArray(SIZE);
130          for (int i = 0; i < SIZE; ++i) {
# Line 73 | Line 135 | public class AtomicReferenceArrayTest ex
135          }
136      }
137  
138 +    /**
139 +     * a deserialized serialized array holds same values
140 +     */
141      public void testSerialization() {
142          AtomicReferenceArray l = new AtomicReferenceArray(SIZE);
143          for (int i = 0; i < SIZE; ++i) {
# Line 93 | Line 158 | public class AtomicReferenceArrayTest ex
158                  assertEquals(r.get(i), l.get(i));
159              }
160          } catch(Exception e){
161 <            e.printStackTrace();
97 <            fail("unexpected exception");
161 >            unexpectedException();
162          }
163      }
164  

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines