ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/jsr166/jsr166/src/test/tck/AtomicStampedReferenceTest.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 junit.framework.*;
9     import java.util.concurrent.atomic.*;
10    
11     public class AtomicStampedReferenceTest extends TestCase{
12     public static void main (String[] args) {
13     junit.textui.TestRunner.run (suite());
14     }
15     public static Test suite() {
16     return new TestSuite(AtomicStampedReferenceTest.class);
17     }
18    
19     static final Integer zero = new Integer(0);
20     static final Integer one = new Integer(1);
21     static final Integer two = new Integer(2);
22     static final Integer m3 = new Integer(-3);
23    
24     public void testConstructor(){
25     AtomicStampedReference ai = new AtomicStampedReference(one, 0);
26     assertEquals(one,ai.getReference());
27     assertEquals(0, ai.getStamp());
28     AtomicStampedReference a2 = new AtomicStampedReference(null, 1);
29     assertNull(a2.getReference());
30     assertEquals(1, a2.getStamp());
31    
32     }
33    
34     public void testGetSet(){
35     int[] mark = new int[1];
36     AtomicStampedReference ai = new AtomicStampedReference(one, 0);
37     assertEquals(one,ai.getReference());
38     assertEquals(0, ai.getStamp());
39     assertEquals(one, ai.get(mark));
40     assertEquals(0, mark[0]);
41     ai.set(two, 0);
42     assertEquals(two,ai.getReference());
43     assertEquals(0, ai.getStamp());
44     assertEquals(two, ai.get(mark));
45     assertEquals(0, mark[0]);
46     ai.set(one, 1);
47     assertEquals(one,ai.getReference());
48     assertEquals(1, ai.getStamp());
49     assertEquals(one, ai.get(mark));
50     assertEquals(1,mark[0]);
51     }
52    
53     public void testAttemptStamp(){
54     int[] mark = new int[1];
55     AtomicStampedReference ai = new AtomicStampedReference(one, 0);
56     assertEquals(0, ai.getStamp());
57     assertTrue(ai.attemptStamp(one, 1));
58     assertEquals(1, ai.getStamp());
59     assertEquals(one, ai.get(mark));
60     assertEquals(1, mark[0]);
61     }
62    
63     public void testCompareAndSet(){
64     int[] mark = new int[1];
65     AtomicStampedReference ai = new AtomicStampedReference(one, 0);
66     assertEquals(one, ai.get(mark));
67     assertEquals(0, ai.getStamp());
68     assertEquals(0, mark[0]);
69    
70     assertTrue(ai.compareAndSet(one, two, 0, 0));
71     assertEquals(two, ai.get(mark));
72     assertEquals(0, mark[0]);
73    
74     assertTrue(ai.compareAndSet(two, m3, 0, 1));
75     assertEquals(m3, ai.get(mark));
76     assertEquals(1, mark[0]);
77    
78     assertFalse(ai.compareAndSet(two, m3, 1, 1));
79     assertEquals(m3, ai.get(mark));
80     assertEquals(1, mark[0]);
81     }
82    
83     public void testWeakCompareAndSet(){
84     int[] mark = new int[1];
85     AtomicStampedReference ai = new AtomicStampedReference(one, 0);
86     assertEquals(one, ai.get(mark));
87     assertEquals(0, ai.getStamp ());
88     assertEquals(0, mark[0]);
89    
90     while(!ai.weakCompareAndSet(one, two, 0, 0));
91     assertEquals(two, ai.get(mark));
92     assertEquals(0, mark[0]);
93    
94     while(!ai.weakCompareAndSet(two, m3, 0, 1));
95     assertEquals(m3, ai.get(mark));
96     assertEquals(1, mark[0]);
97     }
98    
99     }