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.4 by dl, Sat Sep 20 18:20:07 2003 UTC vs.
Revision 1.5 by dl, Thu Sep 25 11:02:41 2003 UTC

# Line 19 | Line 19 | public class AtomicReferenceArrayTest ex
19      }
20  
21      /**
22 <     *
22 >     * constructor creates array of given size with all elements null
23       */
24      public void testConstructor(){
25          AtomicReferenceArray<Integer> ai = new AtomicReferenceArray<Integer>(SIZE);
# Line 29 | Line 29 | public class AtomicReferenceArrayTest ex
29      }
30  
31      /**
32 <     *
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);
# Line 44 | Line 67 | public class AtomicReferenceArrayTest ex
67      }
68  
69      /**
70 <     *
70 >     * compareAndSet succeeds in changing value if equal to expected else fails
71       */
72      public void testCompareAndSet(){
73          AtomicReferenceArray ai = new AtomicReferenceArray(SIZE);
# Line 61 | Line 84 | public class AtomicReferenceArrayTest ex
84      }
85  
86      /**
87 <     *
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);
# Line 76 | Line 123 | public class AtomicReferenceArrayTest ex
123      }
124  
125      /**
126 <     *
126 >     * getAndSet returns previous value and sets to given value at given index
127       */
128      public void testGetAndSet(){
129          AtomicReferenceArray ai = new AtomicReferenceArray(SIZE);
# Line 89 | Line 136 | public class AtomicReferenceArrayTest ex
136      }
137  
138      /**
139 <     *
139 >     * a deserialized serialized array holds same values
140       */
141      public void testSerialization() {
142          AtomicReferenceArray l = new AtomicReferenceArray(SIZE);

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines