ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/jsr166/jsr166/src/test/tck/AtomicLongArray9Test.java
Revision: 1.3
Committed: Tue Oct 11 20:38:07 2016 UTC (7 years, 6 months ago) by jsr166
Branch: MAIN
Changes since 1.2: +17 -0 lines
Log Message:
sync with openjdk9

File Contents

# User Rev Content
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.AtomicLongArray;
8    
9     import junit.framework.Test;
10     import junit.framework.TestSuite;
11    
12     public class AtomicLongArray9Test extends JSR166TestCase {
13     public static void main(String[] args) {
14     main(suite(), args);
15     }
16     public static Test suite() {
17     return new TestSuite(AtomicLongArray9Test.class);
18     }
19    
20     /**
21     * get and set for out of bound indices throw IndexOutOfBoundsException
22     */
23     public void testIndexing() {
24     AtomicLongArray aa = new AtomicLongArray(SIZE);
25     for (int index : new int[] { -1, SIZE }) {
26     final int j = index;
27     final Runnable[] tasks = {
28     () -> aa.getPlain(j),
29     () -> aa.getOpaque(j),
30     () -> aa.getAcquire(j),
31     () -> aa.setPlain(j, 1),
32     () -> aa.setOpaque(j, 1),
33     () -> aa.setRelease(j, 1),
34     () -> aa.compareAndExchange(j, 1, 2),
35     () -> aa.compareAndExchangeAcquire(j, 1, 2),
36     () -> aa.compareAndExchangeRelease(j, 1, 2),
37 jsr166 1.3 () -> aa.weakCompareAndSetPlain(j, 1, 2),
38 jsr166 1.1 () -> 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     AtomicLongArray aa = new AtomicLongArray(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     AtomicLongArray aa = new AtomicLongArray(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     AtomicLongArray aa = new AtomicLongArray(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     AtomicLongArray aa = new AtomicLongArray(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     AtomicLongArray aa = new AtomicLongArray(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     AtomicLongArray aa = new AtomicLongArray(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     AtomicLongArray aa = new AtomicLongArray(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     AtomicLongArray aa = new AtomicLongArray(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     AtomicLongArray aa = new AtomicLongArray(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 jsr166 1.3 * repeated weakCompareAndSetPlain succeeds in changing value when equal
193     * to expected
194     */
195     public void testWeakCompareAndSetPlain() {
196     AtomicLongArray aa = new AtomicLongArray(SIZE);
197     for (int i = 0; i < SIZE; i++) {
198     aa.set(i, 1);
199     do {} while (!aa.weakCompareAndSetPlain(i, 1, 2));
200     do {} while (!aa.weakCompareAndSetPlain(i, 2, -4));
201     assertEquals(-4, aa.get(i));
202     do {} while (!aa.weakCompareAndSetPlain(i, -4, 7));
203     assertEquals(7, aa.get(i));
204     }
205     }
206    
207     /**
208 jsr166 1.1 * repeated weakCompareAndSetVolatile succeeds in changing value when equal
209     * to expected
210     */
211     public void testWeakCompareAndSetVolatile() {
212     AtomicLongArray aa = new AtomicLongArray(SIZE);
213     for (int i = 0; i < SIZE; i++) {
214     aa.set(i, 1);
215     do {} while (!aa.weakCompareAndSetVolatile(i, 1, 2));
216     do {} while (!aa.weakCompareAndSetVolatile(i, 2, -4));
217     assertEquals(-4, aa.get(i));
218     do {} while (!aa.weakCompareAndSetVolatile(i, -4, 7));
219     assertEquals(7, aa.get(i));
220     }
221     }
222    
223     /**
224     * repeated weakCompareAndSetAcquire succeeds in changing value when equal
225     * to expected
226     */
227     public void testWeakCompareAndSetAcquire() {
228     AtomicLongArray aa = new AtomicLongArray(SIZE);
229     for (int i = 0; i < SIZE; i++) {
230     aa.set(i, 1);
231     do {} while (!aa.weakCompareAndSetAcquire(i, 1, 2));
232     do {} while (!aa.weakCompareAndSetAcquire(i, 2, -4));
233     assertEquals(-4, aa.get(i));
234     do {} while (!aa.weakCompareAndSetAcquire(i, -4, 7));
235     assertEquals(7, aa.get(i));
236     }
237     }
238    
239     /**
240     * repeated weakCompareAndSetRelease succeeds in changing value when equal
241     * to expected
242     */
243     public void testWeakCompareAndSetRelease() {
244     AtomicLongArray aa = new AtomicLongArray(SIZE);
245     for (int i = 0; i < SIZE; i++) {
246     aa.set(i, 1);
247     do {} while (!aa.weakCompareAndSetRelease(i, 1, 2));
248     do {} while (!aa.weakCompareAndSetRelease(i, 2, -4));
249     assertEquals(-4, aa.get(i));
250     do {} while (!aa.weakCompareAndSetRelease(i, -4, 7));
251     assertEquals(7, aa.get(i));
252     }
253     }
254    
255     }