ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/jsr166/jsr166/src/test/tck/AtomicLongArray9Test.java
Revision: 1.2
Committed: Wed Aug 24 22:22:39 2016 UTC (7 years, 8 months ago) by jsr166
Branch: MAIN
Changes since 1.1: +0 -1 lines
Log Message:
fix imports

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     () -> aa.weakCompareAndSetVolatile(j, 1, 2),
38     () -> aa.weakCompareAndSetAcquire(j, 1, 2),
39     () -> aa.weakCompareAndSetRelease(j, 1, 2),
40     };
41    
42     assertThrows(IndexOutOfBoundsException.class, tasks);
43     }
44     }
45    
46     /**
47     * getPlain returns the last value set
48     */
49     public void testGetPlainSet() {
50     AtomicLongArray aa = new AtomicLongArray(SIZE);
51     for (int i = 0; i < SIZE; i++) {
52     aa.set(i, 1);
53     assertEquals(1, aa.getPlain(i));
54     aa.set(i, 2);
55     assertEquals(2, aa.getPlain(i));
56     aa.set(i, -3);
57     assertEquals(-3, aa.getPlain(i));
58     }
59     }
60    
61     /**
62     * getOpaque returns the last value set
63     */
64     public void testGetOpaqueSet() {
65     AtomicLongArray aa = new AtomicLongArray(SIZE);
66     for (int i = 0; i < SIZE; i++) {
67     aa.set(i, 1);
68     assertEquals(1, aa.getOpaque(i));
69     aa.set(i, 2);
70     assertEquals(2, aa.getOpaque(i));
71     aa.set(i, -3);
72     assertEquals(-3, aa.getOpaque(i));
73     }
74     }
75    
76     /**
77     * getAcquire returns the last value set
78     */
79     public void testGetAcquireSet() {
80     AtomicLongArray aa = new AtomicLongArray(SIZE);
81     for (int i = 0; i < SIZE; i++) {
82     aa.set(i, 1);
83     assertEquals(1, aa.getAcquire(i));
84     aa.set(i, 2);
85     assertEquals(2, aa.getAcquire(i));
86     aa.set(i, -3);
87     assertEquals(-3, aa.getAcquire(i));
88     }
89     }
90    
91     /**
92     * get returns the last value setPlain
93     */
94     public void testGetSetPlain() {
95     AtomicLongArray aa = new AtomicLongArray(SIZE);
96     for (int i = 0; i < SIZE; i++) {
97     aa.setPlain(i, 1);
98     assertEquals(1, aa.get(i));
99     aa.setPlain(i, 2);
100     assertEquals(2, aa.get(i));
101     aa.setPlain(i, -3);
102     assertEquals(-3, aa.get(i));
103     }
104     }
105    
106     /**
107     * get returns the last value setOpaque
108     */
109     public void testGetSetOpaque() {
110     AtomicLongArray aa = new AtomicLongArray(SIZE);
111     for (int i = 0; i < SIZE; i++) {
112     aa.setOpaque(i, 1);
113     assertEquals(1, aa.get(i));
114     aa.setOpaque(i, 2);
115     assertEquals(2, aa.get(i));
116     aa.setOpaque(i, -3);
117     assertEquals(-3, aa.get(i));
118     }
119     }
120    
121     /**
122     * get returns the last value setRelease
123     */
124     public void testGetSetRelease() {
125     AtomicLongArray aa = new AtomicLongArray(SIZE);
126     for (int i = 0; i < SIZE; i++) {
127     aa.setRelease(i, 1);
128     assertEquals(1, aa.get(i));
129     aa.setRelease(i, 2);
130     assertEquals(2, aa.get(i));
131     aa.setRelease(i, -3);
132     assertEquals(-3, aa.get(i));
133     }
134     }
135    
136     /**
137     * compareAndExchange succeeds in changing value if equal to
138     * expected else fails
139     */
140     public void testCompareAndExchange() {
141     AtomicLongArray aa = new AtomicLongArray(SIZE);
142     for (int i = 0; i < SIZE; i++) {
143     aa.set(i, 1);
144     assertEquals(1, aa.compareAndExchange(i, 1, 2));
145     assertEquals(2, aa.compareAndExchange(i, 2, -4));
146     assertEquals(-4, aa.get(i));
147     assertEquals(-4, aa.compareAndExchange(i,-5, 7));
148     assertEquals(-4, aa.get(i));
149     assertEquals(-4, aa.compareAndExchange(i, -4, 7));
150     assertEquals(7, aa.get(i));
151     }
152     }
153    
154     /**
155     * compareAndExchangeAcquire succeeds in changing value if equal to
156     * expected else fails
157     */
158     public void testCompareAndExchangeAcquire() {
159     AtomicLongArray aa = new AtomicLongArray(SIZE);
160     for (int i = 0; i < SIZE; i++) {
161     aa.set(i, 1);
162     assertEquals(1, aa.compareAndExchangeAcquire(i, 1, 2));
163     assertEquals(2, aa.compareAndExchangeAcquire(i, 2, -4));
164     assertEquals(-4, aa.get(i));
165     assertEquals(-4, aa.compareAndExchangeAcquire(i,-5, 7));
166     assertEquals(-4, aa.get(i));
167     assertEquals(-4, aa.compareAndExchangeAcquire(i, -4, 7));
168     assertEquals(7, aa.get(i));
169     }
170     }
171    
172     /**
173     * compareAndExchangeRelease succeeds in changing value if equal to
174     * expected else fails
175     */
176     public void testCompareAndExchangeRelease() {
177     AtomicLongArray aa = new AtomicLongArray(SIZE);
178     for (int i = 0; i < SIZE; i++) {
179     aa.set(i, 1);
180     assertEquals(1, aa.compareAndExchangeRelease(i, 1, 2));
181     assertEquals(2, aa.compareAndExchangeRelease(i, 2, -4));
182     assertEquals(-4, aa.get(i));
183     assertEquals(-4, aa.compareAndExchangeRelease(i,-5, 7));
184     assertEquals(-4, aa.get(i));
185     assertEquals(-4, aa.compareAndExchangeRelease(i, -4, 7));
186     assertEquals(7, aa.get(i));
187     }
188     }
189    
190     /**
191     * repeated weakCompareAndSetVolatile succeeds in changing value when equal
192     * to expected
193     */
194     public void testWeakCompareAndSetVolatile() {
195     AtomicLongArray aa = new AtomicLongArray(SIZE);
196     for (int i = 0; i < SIZE; i++) {
197     aa.set(i, 1);
198     do {} while (!aa.weakCompareAndSetVolatile(i, 1, 2));
199     do {} while (!aa.weakCompareAndSetVolatile(i, 2, -4));
200     assertEquals(-4, aa.get(i));
201     do {} while (!aa.weakCompareAndSetVolatile(i, -4, 7));
202     assertEquals(7, aa.get(i));
203     }
204     }
205    
206     /**
207     * repeated weakCompareAndSetAcquire succeeds in changing value when equal
208     * to expected
209     */
210     public void testWeakCompareAndSetAcquire() {
211     AtomicLongArray aa = new AtomicLongArray(SIZE);
212     for (int i = 0; i < SIZE; i++) {
213     aa.set(i, 1);
214     do {} while (!aa.weakCompareAndSetAcquire(i, 1, 2));
215     do {} while (!aa.weakCompareAndSetAcquire(i, 2, -4));
216     assertEquals(-4, aa.get(i));
217     do {} while (!aa.weakCompareAndSetAcquire(i, -4, 7));
218     assertEquals(7, aa.get(i));
219     }
220     }
221    
222     /**
223     * repeated weakCompareAndSetRelease succeeds in changing value when equal
224     * to expected
225     */
226     public void testWeakCompareAndSetRelease() {
227     AtomicLongArray aa = new AtomicLongArray(SIZE);
228     for (int i = 0; i < SIZE; i++) {
229     aa.set(i, 1);
230     do {} while (!aa.weakCompareAndSetRelease(i, 1, 2));
231     do {} while (!aa.weakCompareAndSetRelease(i, 2, -4));
232     assertEquals(-4, aa.get(i));
233     do {} while (!aa.weakCompareAndSetRelease(i, -4, 7));
234     assertEquals(7, aa.get(i));
235     }
236     }
237    
238     }