ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/jsr166/jsr166/src/test/tck/AtomicLongTest.java
Revision: 1.4
Committed: Sat Sep 20 18:20:07 2003 UTC (20 years, 7 months ago) by dl
Branch: MAIN
Changes since 1.3: +40 -2 lines
Log Message:
Documentation scaffolding

File Contents

# Content
1 /*
2 * Written by members of JCP JSR-166 Expert Group and released to the
3 * public domain. Use, modify, and redistribute this code in any way
4 * without acknowledgement. Other contributors include Andrew Wright,
5 * Jeffrey Hayes, Pat Fischer, Mike Judd.
6 */
7
8 import junit.framework.*;
9 import java.util.concurrent.atomic.*;
10 import java.io.*;
11
12 public class AtomicLongTest extends JSR166TestCase {
13 public static void main (String[] args) {
14 junit.textui.TestRunner.run (suite());
15 }
16 public static Test suite() {
17 return new TestSuite(AtomicLongTest.class);
18 }
19
20 /**
21 *
22 */
23 public void testConstructor(){
24 AtomicLong ai = new AtomicLong(1);
25 assertEquals(1,ai.get());
26 }
27
28 /**
29 *
30 */
31 public void testConstructor2(){
32 AtomicLong ai = new AtomicLong();
33 assertEquals(0,ai.get());
34 }
35
36 /**
37 *
38 */
39 public void testGetSet(){
40 AtomicLong ai = new AtomicLong(1);
41 assertEquals(1,ai.get());
42 ai.set(2);
43 assertEquals(2,ai.get());
44 ai.set(-3);
45 assertEquals(-3,ai.get());
46
47 }
48 /**
49 *
50 */
51 public void testCompareAndSet(){
52 AtomicLong ai = new AtomicLong(1);
53 assertTrue(ai.compareAndSet(1,2));
54 assertTrue(ai.compareAndSet(2,-4));
55 assertEquals(-4,ai.get());
56 assertFalse(ai.compareAndSet(-5,7));
57 assertFalse((7 == ai.get()));
58 assertTrue(ai.compareAndSet(-4,7));
59 assertEquals(7,ai.get());
60 }
61
62 /**
63 *
64 */
65 public void testWeakCompareAndSet(){
66 AtomicLong ai = new AtomicLong(1);
67 while(!ai.weakCompareAndSet(1,2));
68 while(!ai.weakCompareAndSet(2,-4));
69 assertEquals(-4,ai.get());
70 while(!ai.weakCompareAndSet(-4,7));
71 assertEquals(7,ai.get());
72 }
73
74 /**
75 *
76 */
77 public void testGetAndSet(){
78 AtomicLong ai = new AtomicLong(1);
79 assertEquals(1,ai.getAndSet(0));
80 assertEquals(0,ai.getAndSet(-10));
81 assertEquals(-10,ai.getAndSet(1));
82 }
83
84 /**
85 *
86 */
87 public void testGetAndAdd(){
88 AtomicLong ai = new AtomicLong(1);
89 assertEquals(1,ai.getAndAdd(2));
90 assertEquals(3,ai.get());
91 assertEquals(3,ai.getAndAdd(-4));
92 assertEquals(-1,ai.get());
93 }
94
95 /**
96 *
97 */
98 public void testGetAndDecrement(){
99 AtomicLong ai = new AtomicLong(1);
100 assertEquals(1,ai.getAndDecrement());
101 assertEquals(0,ai.getAndDecrement());
102 assertEquals(-1,ai.getAndDecrement());
103 }
104
105 /**
106 *
107 */
108 public void testGetAndIncrement(){
109 AtomicLong ai = new AtomicLong(1);
110 assertEquals(1,ai.getAndIncrement());
111 assertEquals(2,ai.get());
112 ai.set(-2);
113 assertEquals(-2,ai.getAndIncrement());
114 assertEquals(-1,ai.getAndIncrement());
115 assertEquals(0,ai.getAndIncrement());
116 assertEquals(1,ai.get());
117 }
118
119 /**
120 *
121 */
122 public void testAddAndGet(){
123 AtomicLong ai = new AtomicLong(1);
124 assertEquals(3,ai.addAndGet(2));
125 assertEquals(3,ai.get());
126 assertEquals(-1,ai.addAndGet(-4));
127 assertEquals(-1,ai.get());
128 }
129
130 /**
131 *
132 */
133 public void testDecrementAndGet(){
134 AtomicLong ai = new AtomicLong(1);
135 assertEquals(0,ai.decrementAndGet());
136 assertEquals(-1,ai.decrementAndGet());
137 assertEquals(-2,ai.decrementAndGet());
138 assertEquals(-2,ai.get());
139 }
140
141 /**
142 *
143 */
144 public void testIncrementAndGet(){
145 AtomicLong ai = new AtomicLong(1);
146 assertEquals(2,ai.incrementAndGet());
147 assertEquals(2,ai.get());
148 ai.set(-2);
149 assertEquals(-1,ai.incrementAndGet());
150 assertEquals(0,ai.incrementAndGet());
151 assertEquals(1,ai.incrementAndGet());
152 assertEquals(1,ai.get());
153 }
154
155 /**
156 *
157 */
158 public void testSerialization() {
159 AtomicLong l = new AtomicLong();
160
161 try {
162 l.set(-22);
163 ByteArrayOutputStream bout = new ByteArrayOutputStream(10000);
164 ObjectOutputStream out = new ObjectOutputStream(new BufferedOutputStream(bout));
165 out.writeObject(l);
166 out.close();
167
168 ByteArrayInputStream bin = new ByteArrayInputStream(bout.toByteArray());
169 ObjectInputStream in = new ObjectInputStream(new BufferedInputStream(bin));
170 AtomicLong r = (AtomicLong) in.readObject();
171 assertEquals(l.get(), r.get());
172 } catch(Exception e){
173 unexpectedException();
174 }
175 }
176
177 }