ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/jsr166/jsr166/src/test/tck/AtomicBoolean9Test.java
Revision: 1.1
Committed: Fri Jun 17 19:00:48 2016 UTC (7 years, 10 months ago) by jsr166
Branch: MAIN
Log Message:
split jdk9 Atomic tests into separate *9Test.java files

File Contents

# User Rev Content
1 jsr166 1.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 weakCompareAndSetVolatile succeeds in changing value when equal
139     * to expected
140     */
141     public void testWeakCompareAndSetVolatile() {
142     AtomicBoolean ai = new AtomicBoolean(true);
143     do {} while (!ai.weakCompareAndSetVolatile(true, false));
144     do {} while (!ai.weakCompareAndSetVolatile(false, false));
145     assertEquals(false, ai.get());
146     do {} while (!ai.weakCompareAndSetVolatile(false, true));
147     assertEquals(true, ai.get());
148     }
149    
150     /**
151     * repeated weakCompareAndSetAcquire succeeds in changing value when equal
152     * to expected
153     */
154     public void testWeakCompareAndSetAcquire() {
155     AtomicBoolean ai = new AtomicBoolean(true);
156     do {} while (!ai.weakCompareAndSetAcquire(true, false));
157     do {} while (!ai.weakCompareAndSetAcquire(false, false));
158     assertEquals(false, ai.get());
159     do {} while (!ai.weakCompareAndSetAcquire(false, true));
160     assertEquals(true, ai.get());
161     }
162    
163     /**
164     * repeated weakCompareAndSetRelease succeeds in changing value when equal
165     * to expected
166     */
167     public void testWeakCompareAndSetRelease() {
168     AtomicBoolean ai = new AtomicBoolean(true);
169     do {} while (!ai.weakCompareAndSetRelease(true, false));
170     do {} while (!ai.weakCompareAndSetRelease(false, false));
171     assertEquals(false, ai.get());
172     do {} while (!ai.weakCompareAndSetRelease(false, true));
173     assertEquals(true, ai.get());
174     }
175    
176     }