ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/jsr166/jsr166/src/test/tck/AtomicReference9Test.java
Revision: 1.3
Committed: Tue Jan 26 13:33:05 2021 UTC (3 years, 3 months ago) by dl
Branch: MAIN
CVS Tags: HEAD
Changes since 1.2: +74 -74 lines
Log Message:
Replace Integer with Item class

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