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, 1 month ago) by jsr166
Branch: MAIN
CVS Tags: HEAD
Changes since 1.3: +3 -5 lines
Log Message:
improve assertThrows tests

File Contents

# Content
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 assertThrows(
28 IndexOutOfBoundsException.class,
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.weakCompareAndSetPlain(j, 1, 2),
39 () -> aa.weakCompareAndSetVolatile(j, 1, 2),
40 () -> aa.weakCompareAndSetAcquire(j, 1, 2),
41 () -> aa.weakCompareAndSetRelease(j, 1, 2));
42 }
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 * 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 * 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 }