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

Comparing jsr166/src/test/tck/AtomicIntegerArrayTest.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 20 | Line 20 | public class AtomicIntegerArrayTest exte
20  
21  
22      /**
23 <     *
23 >     * constructor creates array of given size with all elements zero
24       */
25      public void testConstructor() {
26          AtomicIntegerArray ai = new AtomicIntegerArray(SIZE);
# Line 29 | Line 29 | public class AtomicIntegerArrayTest exte
29      }
30  
31      /**
32 <     *
32 >     * get and set for out of bound indices throw IndexOutOfBoundsException
33 >     */
34 >    public void testIndexing(){
35 >        AtomicIntegerArray ai = new AtomicIntegerArray(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, 0);
46 >        } catch(IndexOutOfBoundsException success){
47 >        }
48 >        try {
49 >            ai.set(-1, 0);
50 >        } catch(IndexOutOfBoundsException success){
51 >        }
52 >    }
53 >
54 >    /**
55 >     * get returns the last value set at index
56       */
57      public void testGetSet() {
58          AtomicIntegerArray ai = new AtomicIntegerArray(SIZE);
# Line 44 | Line 67 | public class AtomicIntegerArrayTest exte
67      }
68  
69      /**
70 <     *
70 >     * compareAndSet succeeds in changing value if equal to expected else fails
71       */
72      public void testCompareAndSet() {
73          AtomicIntegerArray ai = new AtomicIntegerArray(SIZE);
# Line 61 | Line 84 | public class AtomicIntegerArrayTest exte
84      }
85  
86      /**
87 <     *
87 >     * compareAndSet in one thread enables another waiting for value
88 >     * to succeed
89 >     */
90 >    public void testCompareAndSetInMultipleThreads() {
91 >        final AtomicIntegerArray a = new AtomicIntegerArray(1);
92 >        a.set(0, 1);
93 >        Thread t = new Thread(new Runnable() {
94 >                public void run() {
95 >                    while(!a.compareAndSet(0, 2, 3)) Thread.yield();
96 >                }});
97 >        try {
98 >            t.start();
99 >            assertTrue(a.compareAndSet(0, 1, 2));
100 >            t.join(LONG_DELAY_MS);
101 >            assertFalse(t.isAlive());
102 >            assertEquals(a.get(0), 3);
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          AtomicIntegerArray ai = new AtomicIntegerArray(SIZE);
# Line 76 | Line 123 | public class AtomicIntegerArrayTest exte
123      }
124  
125      /**
126 <     *
126 >     *  getAndSet returns previous value and sets to given value at given index
127       */
128      public void testGetAndSet() {
129          AtomicIntegerArray ai = new AtomicIntegerArray(SIZE);
# Line 89 | Line 136 | public class AtomicIntegerArrayTest exte
136      }
137  
138      /**
139 <     *
139 >     *  getAndAdd returns previous value and adds given value
140       */
141      public void testGetAndAdd() {
142          AtomicIntegerArray ai = new AtomicIntegerArray(SIZE);
# Line 103 | Line 150 | public class AtomicIntegerArrayTest exte
150      }
151  
152      /**
153 <     *
153 >     * getAndDecrement returns previous value and decrements
154       */
155      public void testGetAndDecrement() {
156          AtomicIntegerArray ai = new AtomicIntegerArray(SIZE);
# Line 116 | Line 163 | public class AtomicIntegerArrayTest exte
163      }
164  
165      /**
166 <     *
166 >     * getAndIncrement returns previous value and increments
167       */
168      public void testGetAndIncrement() {
169          AtomicIntegerArray ai = new AtomicIntegerArray(SIZE);
# Line 133 | Line 180 | public class AtomicIntegerArrayTest exte
180      }
181  
182      /**
183 <     *
183 >     *  addAndGet adds given value to current, and returns current value
184       */
185      public void testAddAndGet() {
186          AtomicIntegerArray ai = new AtomicIntegerArray(SIZE);
# Line 147 | Line 194 | public class AtomicIntegerArrayTest exte
194      }
195  
196      /**
197 <     *
197 >     * decrementAndGet decrements and returns current value
198       */
199      public void testDecrementAndGet() {
200          AtomicIntegerArray ai = new AtomicIntegerArray(SIZE);
# Line 161 | Line 208 | public class AtomicIntegerArrayTest exte
208      }
209  
210      /**
211 <     *
211 >     *  incrementAndGet increments and returns current value
212       */
213      public void testIncrementAndGet() {
214          AtomicIntegerArray ai = new AtomicIntegerArray(SIZE);
# Line 202 | Line 249 | public class AtomicIntegerArrayTest exte
249      }
250  
251      /**
252 <     *
252 >     * Multiple threads using same array of counters successfully
253 >     * update a number of times equal to total count
254       */
255      public void testCountingInMultipleThreads() {
256          try {
# Line 226 | Line 274 | public class AtomicIntegerArrayTest exte
274  
275  
276      /**
277 <     *
277 >     * a deserialized serialized array holds same values
278       */
279      public void testSerialization() {
280          AtomicIntegerArray l = new AtomicIntegerArray(SIZE);

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines