[cvs] / jsr166 / src / test / tck / AtomicIntegerArray9Test.java Repository:
ViewVC logotype

Annotation of /jsr166/src/test/tck/AtomicIntegerArray9Test.java

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.2 - (view) (download)

1 : jsr166 1.1 /*
2 :     * Written by Doug Lea with assistance from members of JCP JSR-166
3 :     * Expert Group and released to the public domain, as explained at
4 :     * http://creativecommons.org/publicdomain/zero/1.0/
5 :     */
6 :    
7 :     import java.util.concurrent.atomic.AtomicIntegerArray;
8 :    
9 :     import junit.framework.Test;
10 :     import junit.framework.TestSuite;
11 :    
12 :     public class AtomicIntegerArray9Test extends JSR166TestCase {
13 :    
14 :     public static void main(String[] args) {
15 :     main(suite(), args);
16 :     }
17 :     public static Test suite() {
18 :     return new TestSuite(AtomicIntegerArray9Test.class);
19 :     }
20 :    
21 :     /**
22 :     * get and set for out of bound indices throw IndexOutOfBoundsException
23 :     */
24 :     public void testIndexing() {
25 :     AtomicIntegerArray aa = new AtomicIntegerArray(SIZE);
26 :     for (int index : new int[] { -1, SIZE }) {
27 :     final int j = index;
28 :     final Runnable[] tasks = {
29 :     () -> aa.getPlain(j),
30 :     () -> aa.getOpaque(j),
31 :     () -> aa.getAcquire(j),
32 :     () -> aa.setPlain(j, 1),
33 :     () -> aa.setOpaque(j, 1),
34 :     () -> aa.setRelease(j, 1),
35 :     () -> aa.compareAndExchange(j, 1, 2),
36 :     () -> aa.compareAndExchangeAcquire(j, 1, 2),
37 :     () -> aa.compareAndExchangeRelease(j, 1, 2),
38 :     () -> aa.weakCompareAndSetVolatile(j, 1, 2),
39 :     () -> aa.weakCompareAndSetAcquire(j, 1, 2),
40 :     () -> aa.weakCompareAndSetRelease(j, 1, 2),
41 :     };
42 :    
43 :     assertThrows(IndexOutOfBoundsException.class, tasks);
44 :     }
45 :     }
46 :    
47 :     /**
48 :     * getPlain returns the last value set
49 :     */
50 :     public void testGetPlainSet() {
51 :     AtomicIntegerArray aa = new AtomicIntegerArray(SIZE);
52 :     for (int i = 0; i < SIZE; i++) {
53 :     aa.set(i, 1);
54 :     assertEquals(1, aa.getPlain(i));
55 :     aa.set(i, 2);
56 :     assertEquals(2, aa.getPlain(i));
57 :     aa.set(i, -3);
58 :     assertEquals(-3, aa.getPlain(i));
59 :     }
60 :     }
61 :    
62 :     /**
63 :     * getOpaque returns the last value set
64 :     */
65 :     public void testGetOpaqueSet() {
66 :     AtomicIntegerArray aa = new AtomicIntegerArray(SIZE);
67 :     for (int i = 0; i < SIZE; i++) {
68 :     aa.set(i, 1);
69 :     assertEquals(1, aa.getOpaque(i));
70 :     aa.set(i, 2);
71 :     assertEquals(2, aa.getOpaque(i));
72 :     aa.set(i, -3);
73 :     assertEquals(-3, aa.getOpaque(i));
74 :     }
75 :     }
76 :    
77 :     /**
78 :     * getAcquire returns the last value set
79 :     */
80 :     public void testGetAcquireSet() {
81 :     AtomicIntegerArray aa = new AtomicIntegerArray(SIZE);
82 :     for (int i = 0; i < SIZE; i++) {
83 :     aa.set(i, 1);
84 :     assertEquals(1, aa.getAcquire(i));
85 :     aa.set(i, 2);
86 :     assertEquals(2, aa.getAcquire(i));
87 :     aa.set(i, -3);
88 :     assertEquals(-3, aa.getAcquire(i));
89 :     }
90 :     }
91 :    
92 :     /**
93 :     * get returns the last value setPlain
94 :     */
95 :     public void testGetSetPlain() {
96 :     AtomicIntegerArray aa = new AtomicIntegerArray(SIZE);
97 :     for (int i = 0; i < SIZE; i++) {
98 :     aa.setPlain(i, 1);
99 :     assertEquals(1, aa.get(i));
100 :     aa.setPlain(i, 2);
101 :     assertEquals(2, aa.get(i));
102 :     aa.setPlain(i, -3);
103 :     assertEquals(-3, aa.get(i));
104 :     }
105 :     }
106 :    
107 :     /**
108 :     * get returns the last value setOpaque
109 :     */
110 :     public void testGetSetOpaque() {
111 :     AtomicIntegerArray aa = new AtomicIntegerArray(SIZE);
112 :     for (int i = 0; i < SIZE; i++) {
113 :     aa.setOpaque(i, 1);
114 :     assertEquals(1, aa.get(i));
115 :     aa.setOpaque(i, 2);
116 :     assertEquals(2, aa.get(i));
117 :     aa.setOpaque(i, -3);
118 :     assertEquals(-3, aa.get(i));
119 :     }
120 :     }
121 :    
122 :     /**
123 :     * get returns the last value setRelease
124 :     */
125 :     public void testGetSetRelease() {
126 :     AtomicIntegerArray aa = new AtomicIntegerArray(SIZE);
127 :     for (int i = 0; i < SIZE; i++) {
128 :     aa.setRelease(i, 1);
129 :     assertEquals(1, aa.get(i));
130 :     aa.setRelease(i, 2);
131 :     assertEquals(2, aa.get(i));
132 :     aa.setRelease(i, -3);
133 :     assertEquals(-3, aa.get(i));
134 :     }
135 :     }
136 :    
137 :     /**
138 :     * compareAndExchange succeeds in changing value if equal to
139 :     * expected else fails
140 :     */
141 :     public void testCompareAndExchange() {
142 :     AtomicIntegerArray aa = new AtomicIntegerArray(SIZE);
143 :     for (int i = 0; i < SIZE; i++) {
144 :     aa.set(i, 1);
145 :     assertEquals(1, aa.compareAndExchange(i, 1, 2));
146 :     assertEquals(2, aa.compareAndExchange(i, 2, -4));
147 :     assertEquals(-4, aa.get(i));
148 :     assertEquals(-4, aa.compareAndExchange(i,-5, 7));
149 :     assertEquals(-4, aa.get(i));
150 :     assertEquals(-4, aa.compareAndExchange(i, -4, 7));
151 :     assertEquals(7, aa.get(i));
152 :     }
153 :     }
154 :    
155 :     /**
156 :     * compareAndExchangeAcquire succeeds in changing value if equal to
157 :     * expected else fails
158 :     */
159 :     public void testCompareAndExchangeAcquire() {
160 :     AtomicIntegerArray aa = new AtomicIntegerArray(SIZE);
161 :     for (int i = 0; i < SIZE; i++) {
162 :     aa.set(i, 1);
163 :     assertEquals(1, aa.compareAndExchangeAcquire(i, 1, 2));
164 :     assertEquals(2, aa.compareAndExchangeAcquire(i, 2, -4));
165 :     assertEquals(-4, aa.get(i));
166 :     assertEquals(-4, aa.compareAndExchangeAcquire(i,-5, 7));
167 :     assertEquals(-4, aa.get(i));
168 :     assertEquals(-4, aa.compareAndExchangeAcquire(i, -4, 7));
169 :     assertEquals(7, aa.get(i));
170 :     }
171 :     }
172 :    
173 :     /**
174 :     * compareAndExchangeRelease succeeds in changing value if equal to
175 :     * expected else fails
176 :     */
177 :     public void testCompareAndExchangeRelease() {
178 :     AtomicIntegerArray aa = new AtomicIntegerArray(SIZE);
179 :     for (int i = 0; i < SIZE; i++) {
180 :     aa.set(i, 1);
181 :     assertEquals(1, aa.compareAndExchangeRelease(i, 1, 2));
182 :     assertEquals(2, aa.compareAndExchangeRelease(i, 2, -4));
183 :     assertEquals(-4, aa.get(i));
184 :     assertEquals(-4, aa.compareAndExchangeRelease(i,-5, 7));
185 :     assertEquals(-4, aa.get(i));
186 :     assertEquals(-4, aa.compareAndExchangeRelease(i, -4, 7));
187 :     assertEquals(7, aa.get(i));
188 :     }
189 :     }
190 :    
191 :     /**
192 :     * repeated weakCompareAndSetVolatile succeeds in changing value when equal
193 :     * to expected
194 :     */
195 :     public void testWeakCompareAndSetVolatile() {
196 :     AtomicIntegerArray aa = new AtomicIntegerArray(SIZE);
197 :     for (int i = 0; i < SIZE; i++) {
198 :     aa.set(i, 1);
199 :     do {} while (!aa.weakCompareAndSetVolatile(i, 1, 2));
200 :     do {} while (!aa.weakCompareAndSetVolatile(i, 2, -4));
201 :     assertEquals(-4, aa.get(i));
202 :     do {} while (!aa.weakCompareAndSetVolatile(i, -4, 7));
203 :     assertEquals(7, aa.get(i));
204 :     }
205 :     }
206 :    
207 :     /**
208 :     * repeated weakCompareAndSetAcquire succeeds in changing value when equal
209 :     * to expected
210 :     */
211 :     public void testWeakCompareAndSetAcquire() {
212 :     AtomicIntegerArray aa = new AtomicIntegerArray(SIZE);
213 :     for (int i = 0; i < SIZE; i++) {
214 :     aa.set(i, 1);
215 :     do {} while (!aa.weakCompareAndSetAcquire(i, 1, 2));
216 :     do {} while (!aa.weakCompareAndSetAcquire(i, 2, -4));
217 :     assertEquals(-4, aa.get(i));
218 :     do {} while (!aa.weakCompareAndSetAcquire(i, -4, 7));
219 :     assertEquals(7, aa.get(i));
220 :     }
221 :     }
222 :    
223 :     /**
224 :     * repeated weakCompareAndSetRelease succeeds in changing value when equal
225 :     * to expected
226 :     */
227 :     public void testWeakCompareAndSetRelease() {
228 :     AtomicIntegerArray aa = new AtomicIntegerArray(SIZE);
229 :     for (int i = 0; i < SIZE; i++) {
230 :     aa.set(i, 1);
231 :     do {} while (!aa.weakCompareAndSetRelease(i, 1, 2));
232 :     do {} while (!aa.weakCompareAndSetRelease(i, 2, -4));
233 :     assertEquals(-4, aa.get(i));
234 :     do {} while (!aa.weakCompareAndSetRelease(i, -4, 7));
235 :     assertEquals(7, aa.get(i));
236 :     }
237 :     }
238 :    
239 :     }

Doug Lea
ViewVC Help
Powered by ViewVC 1.0.8