ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/jsr166/jsr166/src/test/tck/AtomicMarkableReferenceTest.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 -0 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 AtomicMarkableReferenceTest 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(AtomicMarkableReferenceTest.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 /**
25 *
26 */
27 public void testConstructor(){
28 AtomicMarkableReference ai = new AtomicMarkableReference(one, false);
29 assertEquals(one,ai.getReference());
30 assertFalse(ai.isMarked());
31 AtomicMarkableReference a2 = new AtomicMarkableReference(null, true);
32 assertNull(a2.getReference());
33 assertTrue(a2.isMarked());
34
35 }
36
37 /**
38 *
39 */
40 public void testGetSet(){
41 boolean[] mark = new boolean[1];
42 AtomicMarkableReference ai = new AtomicMarkableReference(one, false);
43 assertEquals(one,ai.getReference());
44 assertFalse(ai.isMarked());
45 assertEquals(one, ai.get(mark));
46 assertFalse(mark[0]);
47 ai.set(two, false);
48 assertEquals(two,ai.getReference());
49 assertFalse(ai.isMarked());
50 assertEquals(two, ai.get(mark));
51 assertFalse(mark[0]);
52 ai.set(one, true);
53 assertEquals(one,ai.getReference());
54 assertTrue(ai.isMarked());
55 assertEquals(one, ai.get(mark));
56 assertTrue(mark[0]);
57 }
58
59 /**
60 *
61 */
62 public void testAttemptMark(){
63 boolean[] mark = new boolean[1];
64 AtomicMarkableReference ai = new AtomicMarkableReference(one, false);
65 assertFalse(ai.isMarked());
66 assertTrue(ai.attemptMark(one, true));
67 assertTrue(ai.isMarked());
68 assertEquals(one, ai.get(mark));
69 assertTrue(mark[0]);
70 }
71
72 /**
73 *
74 */
75 public void testCompareAndSet(){
76 boolean[] mark = new boolean[1];
77 AtomicMarkableReference ai = new AtomicMarkableReference(one, false);
78 assertEquals(one, ai.get(mark));
79 assertFalse(ai.isMarked());
80 assertFalse(mark[0]);
81
82 assertTrue(ai.compareAndSet(one, two, false, false));
83 assertEquals(two, ai.get(mark));
84 assertFalse(mark[0]);
85
86 assertTrue(ai.compareAndSet(two, m3, false, true));
87 assertEquals(m3, ai.get(mark));
88 assertTrue(mark[0]);
89
90 assertFalse(ai.compareAndSet(two, m3, true, true));
91 assertEquals(m3, ai.get(mark));
92 assertTrue(mark[0]);
93 }
94
95 /**
96 *
97 */
98 public void testWeakCompareAndSet(){
99 boolean[] mark = new boolean[1];
100 AtomicMarkableReference ai = new AtomicMarkableReference(one, false);
101 assertEquals(one, ai.get(mark));
102 assertFalse(ai.isMarked());
103 assertFalse(mark[0]);
104
105 while(!ai.weakCompareAndSet(one, two, false, false));
106 assertEquals(two, ai.get(mark));
107 assertFalse(mark[0]);
108
109 while(!ai.weakCompareAndSet(two, m3, false, true));
110 assertEquals(m3, ai.get(mark));
111 assertTrue(mark[0]);
112 }
113
114 }