ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/jsr166/jsr166/src/test/tck/AtomicLong9Test.java
Revision: 1.2
Committed: Tue Oct 11 20:38:07 2016 UTC (7 years, 5 months ago) by jsr166
Branch: MAIN
CVS Tags: HEAD
Changes since 1.1: +13 -0 lines
Log Message:
sync with openjdk9

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.AtomicLong;
8
9 import junit.framework.Test;
10 import junit.framework.TestSuite;
11
12 public class AtomicLong9Test extends JSR166TestCase {
13 public static void main(String[] args) {
14 main(suite(), args);
15 }
16 public static Test suite() {
17 return new TestSuite(AtomicLong9Test.class);
18 }
19
20 /**
21 * getPlain returns the last value set
22 */
23 public void testGetPlainSet() {
24 AtomicLong ai = new AtomicLong(1);
25 assertEquals(1, ai.getPlain());
26 ai.set(2);
27 assertEquals(2, ai.getPlain());
28 ai.set(-3);
29 assertEquals(-3, ai.getPlain());
30 }
31
32 /**
33 * getOpaque returns the last value set
34 */
35 public void testGetOpaqueSet() {
36 AtomicLong ai = new AtomicLong(1);
37 assertEquals(1, ai.getOpaque());
38 ai.set(2);
39 assertEquals(2, ai.getOpaque());
40 ai.set(-3);
41 assertEquals(-3, ai.getOpaque());
42 }
43
44 /**
45 * getAcquire returns the last value set
46 */
47 public void testGetAcquireSet() {
48 AtomicLong ai = new AtomicLong(1);
49 assertEquals(1, ai.getAcquire());
50 ai.set(2);
51 assertEquals(2, ai.getAcquire());
52 ai.set(-3);
53 assertEquals(-3, ai.getAcquire());
54 }
55
56 /**
57 * get returns the last value setPlain
58 */
59 public void testGetSetPlain() {
60 AtomicLong ai = new AtomicLong(1);
61 assertEquals(1, ai.get());
62 ai.setPlain(2);
63 assertEquals(2, ai.get());
64 ai.setPlain(-3);
65 assertEquals(-3, ai.get());
66 }
67
68 /**
69 * get returns the last value setOpaque
70 */
71 public void testGetSetOpaque() {
72 AtomicLong ai = new AtomicLong(1);
73 assertEquals(1, ai.get());
74 ai.setOpaque(2);
75 assertEquals(2, ai.get());
76 ai.setOpaque(-3);
77 assertEquals(-3, ai.get());
78 }
79
80 /**
81 * get returns the last value setRelease
82 */
83 public void testGetSetRelease() {
84 AtomicLong ai = new AtomicLong(1);
85 assertEquals(1, ai.get());
86 ai.setRelease(2);
87 assertEquals(2, ai.get());
88 ai.setRelease(-3);
89 assertEquals(-3, ai.get());
90 }
91
92 /**
93 * compareAndExchange succeeds in changing value if equal to
94 * expected else fails
95 */
96 public void testCompareAndExchange() {
97 AtomicLong ai = new AtomicLong(1);
98 assertEquals(1, ai.compareAndExchange(1, 2));
99 assertEquals(2, ai.compareAndExchange(2, -4));
100 assertEquals(-4, ai.get());
101 assertEquals(-4, ai.compareAndExchange(-5, 7));
102 assertEquals(-4, ai.get());
103 assertEquals(-4, ai.compareAndExchange(-4, 7));
104 assertEquals(7, ai.get());
105 }
106
107 /**
108 * compareAndExchangeAcquire succeeds in changing value if equal to
109 * expected else fails
110 */
111 public void testCompareAndExchangeAcquire() {
112 AtomicLong ai = new AtomicLong(1);
113 assertEquals(1, ai.compareAndExchangeAcquire(1, 2));
114 assertEquals(2, ai.compareAndExchangeAcquire(2, -4));
115 assertEquals(-4, ai.get());
116 assertEquals(-4, ai.compareAndExchangeAcquire(-5, 7));
117 assertEquals(-4, ai.get());
118 assertEquals(-4, ai.compareAndExchangeAcquire(-4, 7));
119 assertEquals(7, ai.get());
120 }
121
122 /**
123 * compareAndExchangeRelease succeeds in changing value if equal to
124 * expected else fails
125 */
126 public void testCompareAndExchangeRelease() {
127 AtomicLong ai = new AtomicLong(1);
128 assertEquals(1, ai.compareAndExchangeRelease(1, 2));
129 assertEquals(2, ai.compareAndExchangeRelease(2, -4));
130 assertEquals(-4, ai.get());
131 assertEquals(-4, ai.compareAndExchangeRelease(-5, 7));
132 assertEquals(-4, ai.get());
133 assertEquals(-4, ai.compareAndExchangeRelease(-4, 7));
134 assertEquals(7, ai.get());
135 }
136
137 /**
138 * repeated weakCompareAndSetPlain succeeds in changing value when equal
139 * to expected
140 */
141 public void testWeakCompareAndSetPlain() {
142 AtomicLong ai = new AtomicLong(1);
143 do {} while (!ai.weakCompareAndSetPlain(1, 2));
144 do {} while (!ai.weakCompareAndSetPlain(2, -4));
145 assertEquals(-4, ai.get());
146 do {} while (!ai.weakCompareAndSetPlain(-4, 7));
147 assertEquals(7, ai.get());
148 }
149
150 /**
151 * repeated weakCompareAndSetVolatile succeeds in changing value when equal
152 * to expected
153 */
154 public void testWeakCompareAndSetVolatile() {
155 AtomicLong ai = new AtomicLong(1);
156 do {} while (!ai.weakCompareAndSetVolatile(1, 2));
157 do {} while (!ai.weakCompareAndSetVolatile(2, -4));
158 assertEquals(-4, ai.get());
159 do {} while (!ai.weakCompareAndSetVolatile(-4, 7));
160 assertEquals(7, ai.get());
161 }
162
163 /**
164 * repeated weakCompareAndSetAcquire succeeds in changing value when equal
165 * to expected
166 */
167 public void testWeakCompareAndSetAcquire() {
168 AtomicLong ai = new AtomicLong(1);
169 do {} while (!ai.weakCompareAndSetAcquire(1, 2));
170 do {} while (!ai.weakCompareAndSetAcquire(2, -4));
171 assertEquals(-4, ai.get());
172 do {} while (!ai.weakCompareAndSetAcquire(-4, 7));
173 assertEquals(7, ai.get());
174 }
175
176 /**
177 * repeated weakCompareAndSetRelease succeeds in changing value when equal
178 * to expected
179 */
180 public void testWeakCompareAndSetRelease() {
181 AtomicLong ai = new AtomicLong(1);
182 do {} while (!ai.weakCompareAndSetRelease(1, 2));
183 do {} while (!ai.weakCompareAndSetRelease(2, -4));
184 assertEquals(-4, ai.get());
185 do {} while (!ai.weakCompareAndSetRelease(-4, 7));
186 assertEquals(7, ai.get());
187 }
188
189 }