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

# 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 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 }