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

# User Rev Content
1 dl 1.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     }