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