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

# 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 AtomicMarkableReferenceTest 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(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 dl 1.3 /**
25     *
26     */
27 dl 1.1 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 dl 1.3 /**
38     *
39     */
40 dl 1.1 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 dl 1.3 /**
60     *
61     */
62 dl 1.1 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 dl 1.3 /**
73     *
74     */
75 dl 1.1 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 dl 1.3 /**
96     *
97     */
98 dl 1.1 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     }