ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/jsr166/jsr166/src/test/tck/AtomicStampedReferenceTest.java
Revision: 1.2
Committed: Sun Sep 14 20:42:40 2003 UTC (20 years, 8 months ago) by dl
Branch: MAIN
Changes since 1.1: +1 -1 lines
Log Message:
New base class JSR166TestCase

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 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 }