ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/jsr166/jsr166/src/test/tck/AtomicLongArray9Test.java
Revision: 1.4
Committed: Fri Feb 22 19:27:47 2019 UTC (5 years, 2 months ago) by jsr166
Branch: MAIN
CVS Tags: HEAD
Changes since 1.3: +3 -5 lines
Log Message:
improve assertThrows tests

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