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, 7 months ago) by dl
Branch: MAIN
Changes since 1.2: +15 -5 lines
Log Message:
Documentation scaffolding

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
11 public class AtomicStampedReferenceTest extends JSR166TestCase{
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 /**
20 *
21 */
22 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 /**
33 *
34 */
35 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 /**
55 *
56 */
57 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 /**
68 *
69 */
70 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 /**
91 *
92 */
93 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 }