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

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 dl 1.2 public class AtomicStampedReferenceTest extends JSR166TestCase{
12 dl 1.1 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 dl 1.3 /**
20     *
21     */
22 dl 1.1 public void testConstructor(){
23     AtomicStampedReference ai = new AtomicStampedReference(one, 0);
24     assertEquals(one,ai.getReference());
25     assertEquals(0, ai.getStamp());
26     AtomicStampedReference a2 = new AtomicStampedReference(null, 1);
27     assertNull(a2.getReference());
28     assertEquals(1, a2.getStamp());
29    
30     }
31    
32 dl 1.3 /**
33     *
34     */
35 dl 1.1 public void testGetSet(){
36     int[] mark = new int[1];
37     AtomicStampedReference ai = new AtomicStampedReference(one, 0);
38     assertEquals(one,ai.getReference());
39     assertEquals(0, ai.getStamp());
40     assertEquals(one, ai.get(mark));
41     assertEquals(0, mark[0]);
42     ai.set(two, 0);
43     assertEquals(two,ai.getReference());
44     assertEquals(0, ai.getStamp());
45     assertEquals(two, ai.get(mark));
46     assertEquals(0, mark[0]);
47     ai.set(one, 1);
48     assertEquals(one,ai.getReference());
49     assertEquals(1, ai.getStamp());
50     assertEquals(one, ai.get(mark));
51     assertEquals(1,mark[0]);
52     }
53    
54 dl 1.3 /**
55     *
56     */
57 dl 1.1 public void testAttemptStamp(){
58     int[] mark = new int[1];
59     AtomicStampedReference ai = new AtomicStampedReference(one, 0);
60     assertEquals(0, ai.getStamp());
61     assertTrue(ai.attemptStamp(one, 1));
62     assertEquals(1, ai.getStamp());
63     assertEquals(one, ai.get(mark));
64     assertEquals(1, mark[0]);
65     }
66    
67 dl 1.3 /**
68     *
69     */
70 dl 1.1 public void testCompareAndSet(){
71     int[] mark = new int[1];
72     AtomicStampedReference ai = new AtomicStampedReference(one, 0);
73     assertEquals(one, ai.get(mark));
74     assertEquals(0, ai.getStamp());
75     assertEquals(0, mark[0]);
76    
77     assertTrue(ai.compareAndSet(one, two, 0, 0));
78     assertEquals(two, ai.get(mark));
79     assertEquals(0, mark[0]);
80    
81     assertTrue(ai.compareAndSet(two, m3, 0, 1));
82     assertEquals(m3, ai.get(mark));
83     assertEquals(1, mark[0]);
84    
85     assertFalse(ai.compareAndSet(two, m3, 1, 1));
86     assertEquals(m3, ai.get(mark));
87     assertEquals(1, mark[0]);
88     }
89    
90 dl 1.3 /**
91     *
92     */
93 dl 1.1 public void testWeakCompareAndSet(){
94     int[] mark = new int[1];
95     AtomicStampedReference ai = new AtomicStampedReference(one, 0);
96     assertEquals(one, ai.get(mark));
97     assertEquals(0, ai.getStamp ());
98     assertEquals(0, mark[0]);
99    
100     while(!ai.weakCompareAndSet(one, two, 0, 0));
101     assertEquals(two, ai.get(mark));
102     assertEquals(0, mark[0]);
103    
104     while(!ai.weakCompareAndSet(two, m3, 0, 1));
105     assertEquals(m3, ai.get(mark));
106     assertEquals(1, mark[0]);
107     }
108    
109     }