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