ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/jsr166/jsr166/src/test/tck/AtomicLongTest.java
Revision: 1.2
Committed: Sun Sep 7 20:39:11 2003 UTC (20 years, 8 months ago) by dl
Branch: MAIN
Changes since 1.1: +20 -0 lines
Log Message:
Added serialization and lock tests

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 TestCase {
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 public void testConstructor(){
21 AtomicLong ai = new AtomicLong(1);
22 assertEquals(1,ai.get());
23 }
24
25 public void testConstructor2(){
26 AtomicLong ai = new AtomicLong();
27 assertEquals(0,ai.get());
28 }
29
30 public void testGetSet(){
31 AtomicLong ai = new AtomicLong(1);
32 assertEquals(1,ai.get());
33 ai.set(2);
34 assertEquals(2,ai.get());
35 ai.set(-3);
36 assertEquals(-3,ai.get());
37
38 }
39 public void testCompareAndSet(){
40 AtomicLong ai = new AtomicLong(1);
41 assertTrue(ai.compareAndSet(1,2));
42 assertTrue(ai.compareAndSet(2,-4));
43 assertEquals(-4,ai.get());
44 assertFalse(ai.compareAndSet(-5,7));
45 assertFalse((7 == ai.get()));
46 assertTrue(ai.compareAndSet(-4,7));
47 assertEquals(7,ai.get());
48 }
49
50 public void testWeakCompareAndSet(){
51 AtomicLong ai = new AtomicLong(1);
52 while(!ai.weakCompareAndSet(1,2));
53 while(!ai.weakCompareAndSet(2,-4));
54 assertEquals(-4,ai.get());
55 while(!ai.weakCompareAndSet(-4,7));
56 assertEquals(7,ai.get());
57 }
58
59 public void testGetAndSet(){
60 AtomicLong ai = new AtomicLong(1);
61 assertEquals(1,ai.getAndSet(0));
62 assertEquals(0,ai.getAndSet(-10));
63 assertEquals(-10,ai.getAndSet(1));
64 }
65
66 public void testGetAndAdd(){
67 AtomicLong ai = new AtomicLong(1);
68 assertEquals(1,ai.getAndAdd(2));
69 assertEquals(3,ai.get());
70 assertEquals(3,ai.getAndAdd(-4));
71 assertEquals(-1,ai.get());
72 }
73
74 public void testGetAndDecrement(){
75 AtomicLong ai = new AtomicLong(1);
76 assertEquals(1,ai.getAndDecrement());
77 assertEquals(0,ai.getAndDecrement());
78 assertEquals(-1,ai.getAndDecrement());
79 }
80
81 public void testGetAndIncrement(){
82 AtomicLong ai = new AtomicLong(1);
83 assertEquals(1,ai.getAndIncrement());
84 assertEquals(2,ai.get());
85 ai.set(-2);
86 assertEquals(-2,ai.getAndIncrement());
87 assertEquals(-1,ai.getAndIncrement());
88 assertEquals(0,ai.getAndIncrement());
89 assertEquals(1,ai.get());
90 }
91
92 public void testAddAndGet(){
93 AtomicLong ai = new AtomicLong(1);
94 assertEquals(3,ai.addAndGet(2));
95 assertEquals(3,ai.get());
96 assertEquals(-1,ai.addAndGet(-4));
97 assertEquals(-1,ai.get());
98 }
99
100 public void testDecrementAndGet(){
101 AtomicLong ai = new AtomicLong(1);
102 assertEquals(0,ai.decrementAndGet());
103 assertEquals(-1,ai.decrementAndGet());
104 assertEquals(-2,ai.decrementAndGet());
105 assertEquals(-2,ai.get());
106 }
107
108 public void testIncrementAndGet(){
109 AtomicLong ai = new AtomicLong(1);
110 assertEquals(2,ai.incrementAndGet());
111 assertEquals(2,ai.get());
112 ai.set(-2);
113 assertEquals(-1,ai.incrementAndGet());
114 assertEquals(0,ai.incrementAndGet());
115 assertEquals(1,ai.incrementAndGet());
116 assertEquals(1,ai.get());
117 }
118
119 public void testSerialization() {
120 AtomicLong l = new AtomicLong();
121
122 try {
123 l.set(-22);
124 ByteArrayOutputStream bout = new ByteArrayOutputStream(10000);
125 ObjectOutputStream out = new ObjectOutputStream(new BufferedOutputStream(bout));
126 out.writeObject(l);
127 out.close();
128
129 ByteArrayInputStream bin = new ByteArrayInputStream(bout.toByteArray());
130 ObjectInputStream in = new ObjectInputStream(new BufferedInputStream(bin));
131 AtomicLong r = (AtomicLong) in.readObject();
132 assertEquals(l.get(), r.get());
133 } catch(Exception e){
134 e.printStackTrace();
135 fail("unexpected exception");
136 }
137 }
138
139 }