20 |
|
return new TestSuite(AtomicIntegerFieldUpdaterTest.class); |
21 |
|
} |
22 |
|
|
23 |
+ |
AtomicIntegerFieldUpdater<AtomicIntegerFieldUpdaterTest> updaterFor(String fieldName) { |
24 |
+ |
return AtomicIntegerFieldUpdater.newUpdater |
25 |
+ |
(AtomicIntegerFieldUpdaterTest.class, fieldName); |
26 |
+ |
} |
27 |
+ |
|
28 |
|
/** |
29 |
|
* Construction with non-existent field throws RuntimeException |
30 |
|
*/ |
31 |
|
public void testConstructor() { |
32 |
|
try { |
33 |
< |
AtomicIntegerFieldUpdater<AtomicIntegerFieldUpdaterTest> |
29 |
< |
a = AtomicIntegerFieldUpdater.newUpdater |
30 |
< |
(AtomicIntegerFieldUpdaterTest.class, "y"); |
33 |
> |
updaterFor("y"); |
34 |
|
shouldThrow(); |
35 |
|
} catch (RuntimeException success) {} |
36 |
|
} |
40 |
|
*/ |
41 |
|
public void testConstructor2() { |
42 |
|
try { |
43 |
< |
AtomicIntegerFieldUpdater<AtomicIntegerFieldUpdaterTest> |
41 |
< |
a = AtomicIntegerFieldUpdater.newUpdater |
42 |
< |
(AtomicIntegerFieldUpdaterTest.class, "z"); |
43 |
> |
updaterFor("z"); |
44 |
|
shouldThrow(); |
45 |
|
} catch (RuntimeException success) {} |
46 |
|
} |
50 |
|
*/ |
51 |
|
public void testConstructor3() { |
52 |
|
try { |
53 |
< |
AtomicIntegerFieldUpdater<AtomicIntegerFieldUpdaterTest> |
53 |
< |
a = AtomicIntegerFieldUpdater.newUpdater |
54 |
< |
(AtomicIntegerFieldUpdaterTest.class, "w"); |
53 |
> |
updaterFor("w"); |
54 |
|
shouldThrow(); |
55 |
|
} catch (RuntimeException success) {} |
56 |
|
} |
60 |
|
*/ |
61 |
|
public void testGetSet() { |
62 |
|
AtomicIntegerFieldUpdater<AtomicIntegerFieldUpdaterTest> a; |
63 |
< |
try { |
65 |
< |
a = AtomicIntegerFieldUpdater.newUpdater(AtomicIntegerFieldUpdaterTest.class, "x"); |
66 |
< |
} catch (RuntimeException ok) { |
67 |
< |
return; |
68 |
< |
} |
63 |
> |
a = updaterFor("x"); |
64 |
|
x = 1; |
65 |
|
assertEquals(1, a.get(this)); |
66 |
|
a.set(this, 2); |
74 |
|
*/ |
75 |
|
public void testGetLazySet() { |
76 |
|
AtomicIntegerFieldUpdater<AtomicIntegerFieldUpdaterTest> a; |
77 |
< |
try { |
83 |
< |
a = AtomicIntegerFieldUpdater.newUpdater(AtomicIntegerFieldUpdaterTest.class, "x"); |
84 |
< |
} catch (RuntimeException ok) { |
85 |
< |
return; |
86 |
< |
} |
77 |
> |
a = updaterFor("x"); |
78 |
|
x = 1; |
79 |
|
assertEquals(1, a.get(this)); |
80 |
|
a.lazySet(this, 2); |
88 |
|
*/ |
89 |
|
public void testCompareAndSet() { |
90 |
|
AtomicIntegerFieldUpdater<AtomicIntegerFieldUpdaterTest> a; |
91 |
< |
try { |
101 |
< |
a = AtomicIntegerFieldUpdater.newUpdater(AtomicIntegerFieldUpdaterTest.class, "x"); |
102 |
< |
} catch (RuntimeException ok) { |
103 |
< |
return; |
104 |
< |
} |
91 |
> |
a = updaterFor("x"); |
92 |
|
x = 1; |
93 |
|
assertTrue(a.compareAndSet(this, 1, 2)); |
94 |
|
assertTrue(a.compareAndSet(this, 2, -4)); |
105 |
|
*/ |
106 |
|
public void testCompareAndSetInMultipleThreads() throws Exception { |
107 |
|
x = 1; |
108 |
< |
final AtomicIntegerFieldUpdater<AtomicIntegerFieldUpdaterTest>a; |
109 |
< |
try { |
123 |
< |
a = AtomicIntegerFieldUpdater.newUpdater(AtomicIntegerFieldUpdaterTest.class, "x"); |
124 |
< |
} catch (RuntimeException ok) { |
125 |
< |
return; |
126 |
< |
} |
108 |
> |
final AtomicIntegerFieldUpdater<AtomicIntegerFieldUpdaterTest> a; |
109 |
> |
a = updaterFor("x"); |
110 |
|
|
111 |
|
Thread t = new Thread(new CheckedRunnable() { |
112 |
|
public void realRun() { |
127 |
|
*/ |
128 |
|
public void testWeakCompareAndSet() { |
129 |
|
AtomicIntegerFieldUpdater<AtomicIntegerFieldUpdaterTest> a; |
130 |
< |
try { |
148 |
< |
a = AtomicIntegerFieldUpdater.newUpdater(AtomicIntegerFieldUpdaterTest.class, "x"); |
149 |
< |
} catch (RuntimeException ok) { |
150 |
< |
return; |
151 |
< |
} |
130 |
> |
a = updaterFor("x"); |
131 |
|
x = 1; |
132 |
|
while (!a.weakCompareAndSet(this, 1, 2)); |
133 |
|
while (!a.weakCompareAndSet(this, 2, -4)); |
141 |
|
*/ |
142 |
|
public void testGetAndSet() { |
143 |
|
AtomicIntegerFieldUpdater<AtomicIntegerFieldUpdaterTest> a; |
144 |
< |
try { |
166 |
< |
a = AtomicIntegerFieldUpdater.newUpdater(AtomicIntegerFieldUpdaterTest.class, "x"); |
167 |
< |
} catch (RuntimeException ok) { |
168 |
< |
return; |
169 |
< |
} |
144 |
> |
a = updaterFor("x"); |
145 |
|
x = 1; |
146 |
|
assertEquals(1, a.getAndSet(this, 0)); |
147 |
|
assertEquals(0, a.getAndSet(this, -10)); |
153 |
|
*/ |
154 |
|
public void testGetAndAdd() { |
155 |
|
AtomicIntegerFieldUpdater<AtomicIntegerFieldUpdaterTest> a; |
156 |
< |
try { |
182 |
< |
a = AtomicIntegerFieldUpdater.newUpdater(AtomicIntegerFieldUpdaterTest.class, "x"); |
183 |
< |
} catch (RuntimeException ok) { |
184 |
< |
return; |
185 |
< |
} |
156 |
> |
a = updaterFor("x"); |
157 |
|
x = 1; |
158 |
|
assertEquals(1, a.getAndAdd(this, 2)); |
159 |
|
assertEquals(3, a.get(this)); |
166 |
|
*/ |
167 |
|
public void testGetAndDecrement() { |
168 |
|
AtomicIntegerFieldUpdater<AtomicIntegerFieldUpdaterTest> a; |
169 |
< |
try { |
199 |
< |
a = AtomicIntegerFieldUpdater.newUpdater(AtomicIntegerFieldUpdaterTest.class, "x"); |
200 |
< |
} catch (RuntimeException ok) { |
201 |
< |
return; |
202 |
< |
} |
169 |
> |
a = updaterFor("x"); |
170 |
|
x = 1; |
171 |
|
assertEquals(1, a.getAndDecrement(this)); |
172 |
|
assertEquals(0, a.getAndDecrement(this)); |
178 |
|
*/ |
179 |
|
public void testGetAndIncrement() { |
180 |
|
AtomicIntegerFieldUpdater<AtomicIntegerFieldUpdaterTest> a; |
181 |
< |
try { |
215 |
< |
a = AtomicIntegerFieldUpdater.newUpdater(AtomicIntegerFieldUpdaterTest.class, "x"); |
216 |
< |
} catch (RuntimeException ok) { |
217 |
< |
return; |
218 |
< |
} |
181 |
> |
a = updaterFor("x"); |
182 |
|
x = 1; |
183 |
|
assertEquals(1, a.getAndIncrement(this)); |
184 |
|
assertEquals(2, a.get(this)); |
194 |
|
*/ |
195 |
|
public void testAddAndGet() { |
196 |
|
AtomicIntegerFieldUpdater<AtomicIntegerFieldUpdaterTest> a; |
197 |
< |
try { |
235 |
< |
a = AtomicIntegerFieldUpdater.newUpdater(AtomicIntegerFieldUpdaterTest.class, "x"); |
236 |
< |
} catch (RuntimeException ok) { |
237 |
< |
return; |
238 |
< |
} |
197 |
> |
a = updaterFor("x"); |
198 |
|
x = 1; |
199 |
|
assertEquals(3, a.addAndGet(this, 2)); |
200 |
|
assertEquals(3, a.get(this)); |
207 |
|
*/ |
208 |
|
public void testDecrementAndGet() { |
209 |
|
AtomicIntegerFieldUpdater<AtomicIntegerFieldUpdaterTest> a; |
210 |
< |
try { |
252 |
< |
a = AtomicIntegerFieldUpdater.newUpdater(AtomicIntegerFieldUpdaterTest.class, "x"); |
253 |
< |
} catch (RuntimeException ok) { |
254 |
< |
return; |
255 |
< |
} |
210 |
> |
a = updaterFor("x"); |
211 |
|
x = 1; |
212 |
|
assertEquals(0, a.decrementAndGet(this)); |
213 |
|
assertEquals(-1, a.decrementAndGet(this)); |
220 |
|
*/ |
221 |
|
public void testIncrementAndGet() { |
222 |
|
AtomicIntegerFieldUpdater<AtomicIntegerFieldUpdaterTest> a; |
223 |
< |
try { |
269 |
< |
a = AtomicIntegerFieldUpdater.newUpdater(AtomicIntegerFieldUpdaterTest.class, "x"); |
270 |
< |
} catch (RuntimeException ok) { |
271 |
< |
return; |
272 |
< |
} |
223 |
> |
a = updaterFor("x"); |
224 |
|
x = 1; |
225 |
|
assertEquals(2, a.incrementAndGet(this)); |
226 |
|
assertEquals(2, a.get(this)); |