ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/jsr166/jsr166/src/test/tck/AtomicIntegerFieldUpdaterTest.java
Revision: 1.1
Committed: Sun Aug 31 19:24:53 2003 UTC (20 years, 8 months ago) by dl
Branch: MAIN
Log Message:
First check-in of tests to be in tck

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 java.util.concurrent.atomic.*;
9 import junit.framework.*;
10 import java.util.*;
11
12 public class AtomicIntegerFieldUpdaterTest extends TestCase{
13 volatile int x = 0;
14
15 public static void main(String[] args){
16 junit.textui.TestRunner.run(suite());
17 }
18
19
20 public static Test suite() {
21 return new TestSuite(AtomicIntegerFieldUpdaterTest.class);
22 }
23
24 public void testConstructor(){
25 try{
26 AtomicIntegerFieldUpdater<AtomicIntegerFieldUpdaterTest>
27 a = AtomicIntegerFieldUpdater.newUpdater
28 (getClass(), "y");
29 fail("Exception not thrown");
30 }
31 catch (RuntimeException rt) {}
32 }
33
34 public void testGetSet(){
35 AtomicIntegerFieldUpdater<AtomicIntegerFieldUpdaterTest> a = AtomicIntegerFieldUpdater.newUpdater(getClass(), "x");
36 x = 1;
37 assertEquals(1,a.get(this));
38 a.set(this,2);
39 assertEquals(2,a.get(this));
40 a.set(this,-3);
41 assertEquals(-3,a.get(this));
42
43 }
44 public void testCompareAndSet(){
45 AtomicIntegerFieldUpdater<AtomicIntegerFieldUpdaterTest> a = AtomicIntegerFieldUpdater.newUpdater(getClass(), "x");
46 x = 1;
47 assertTrue(a.compareAndSet(this,1,2));
48 assertTrue(a.compareAndSet(this,2,-4));
49 assertEquals(-4,a.get(this));
50 assertFalse(a.compareAndSet(this,-5,7));
51 assertFalse((7 == a.get(this)));
52 assertTrue(a.compareAndSet(this,-4,7));
53 assertEquals(7,a.get(this));
54 }
55
56 public void testWeakCompareAndSet(){
57 AtomicIntegerFieldUpdater<AtomicIntegerFieldUpdaterTest> a = AtomicIntegerFieldUpdater.newUpdater(getClass(), "x");
58 x = 1;
59 while(!a.weakCompareAndSet(this,1,2));
60 while(!a.weakCompareAndSet(this,2,-4));
61 assertEquals(-4,a.get(this));
62 while(!a.weakCompareAndSet(this,-4,7));
63 assertEquals(7,a.get(this));
64 }
65
66 public void testGetAndSet(){
67 AtomicIntegerFieldUpdater<AtomicIntegerFieldUpdaterTest> a = AtomicIntegerFieldUpdater.newUpdater(getClass(), "x");
68 x = 1;
69 assertEquals(1,a.getAndSet(this, 0));
70 assertEquals(0,a.getAndSet(this,-10));
71 assertEquals(-10,a.getAndSet(this,1));
72 }
73
74 public void testGetAndAdd(){
75 AtomicIntegerFieldUpdater<AtomicIntegerFieldUpdaterTest> a = AtomicIntegerFieldUpdater.newUpdater(getClass(), "x");
76 x = 1;
77 assertEquals(1,a.getAndAdd(this,2));
78 assertEquals(3,a.get(this));
79 assertEquals(3,a.getAndAdd(this,-4));
80 assertEquals(-1,a.get(this));
81 }
82
83 public void testGetAndDecrement(){
84 AtomicIntegerFieldUpdater<AtomicIntegerFieldUpdaterTest> a = AtomicIntegerFieldUpdater.newUpdater(getClass(), "x");
85 x = 1;
86 assertEquals(1,a.getAndDecrement(this));
87 assertEquals(0,a.getAndDecrement(this));
88 assertEquals(-1,a.getAndDecrement(this));
89 }
90
91 public void testGetAndIncrement(){
92 AtomicIntegerFieldUpdater<AtomicIntegerFieldUpdaterTest> a = AtomicIntegerFieldUpdater.newUpdater(getClass(), "x");
93 x = 1;
94 assertEquals(1,a.getAndIncrement(this));
95 assertEquals(2,a.get(this));
96 a.set(this,-2);
97 assertEquals(-2,a.getAndIncrement(this));
98 assertEquals(-1,a.getAndIncrement(this));
99 assertEquals(0,a.getAndIncrement(this));
100 assertEquals(1,a.get(this));
101 }
102
103 public void testAddAndGet(){
104 AtomicIntegerFieldUpdater<AtomicIntegerFieldUpdaterTest> a = AtomicIntegerFieldUpdater.newUpdater(getClass(), "x");
105 x = 1;
106 assertEquals(3,a.addAndGet(this,2));
107 assertEquals(3,a.get(this));
108 assertEquals(-1,a.addAndGet(this,-4));
109 assertEquals(-1,a.get(this));
110 }
111
112 public void testDecrementAndGet(){
113 AtomicIntegerFieldUpdater<AtomicIntegerFieldUpdaterTest> a = AtomicIntegerFieldUpdater.newUpdater(getClass(), "x");
114 x = 1;
115 assertEquals(0,a.decrementAndGet(this));
116 assertEquals(-1,a.decrementAndGet(this));
117 assertEquals(-2,a.decrementAndGet(this));
118 assertEquals(-2,a.get(this));
119 }
120
121 public void testIncrementAndGet(){
122 AtomicIntegerFieldUpdater<AtomicIntegerFieldUpdaterTest> a = AtomicIntegerFieldUpdater.newUpdater(getClass(), "x");
123 x = 1;
124 assertEquals(2,a.incrementAndGet(this));
125 assertEquals(2,a.get(this));
126 a.set(this,-2);
127 assertEquals(-1,a.incrementAndGet(this));
128 assertEquals(0,a.incrementAndGet(this));
129 assertEquals(1,a.incrementAndGet(this));
130 assertEquals(1,a.get(this));
131 }
132
133 }