ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/jsr166/jsr166/src/test/tck/AtomicLongArrayTest.java
Revision: 1.1
Committed: Sun Aug 31 19:24:53 2003 UTC (20 years, 8 months ago) by dl
Branch: MAIN
Log Message:
First check-in of tests to be in tck

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     public class AtomicLongArrayTest extends TestCase
12     {
13     static final int N = 10;
14    
15     public static void main (String[] args) {
16     junit.textui.TestRunner.run (suite());
17     }
18     public static Test suite() {
19     return new TestSuite(AtomicLongArrayTest.class);
20     }
21    
22     public void testConstructor(){
23     AtomicLongArray ai = new AtomicLongArray(N);
24     for (int i = 0; i < N; ++i)
25     assertEquals(0,ai.get(i));
26     }
27    
28     public void testGetSet(){
29     AtomicLongArray ai = new AtomicLongArray(N);
30     for (int i = 0; i < N; ++i) {
31     ai.set(i, 1);
32     assertEquals(1,ai.get(i));
33     ai.set(i, 2);
34     assertEquals(2,ai.get(i));
35     ai.set(i, -3);
36     assertEquals(-3,ai.get(i));
37     }
38     }
39    
40     public void testCompareAndSet(){
41     AtomicLongArray ai = new AtomicLongArray(N);
42     for (int i = 0; i < N; ++i) {
43     ai.set(i, 1);
44     assertTrue(ai.compareAndSet(i, 1,2));
45     assertTrue(ai.compareAndSet(i, 2,-4));
46     assertEquals(-4,ai.get(i));
47     assertFalse(ai.compareAndSet(i, -5,7));
48     assertFalse((7 == ai.get(i)));
49     assertTrue(ai.compareAndSet(i, -4,7));
50     assertEquals(7,ai.get(i));
51     }
52     }
53    
54     public void testWeakCompareAndSet(){
55     AtomicLongArray ai = new AtomicLongArray(N);
56     for (int i = 0; i < N; ++i) {
57     ai.set(i, 1);
58     while(!ai.weakCompareAndSet(i, 1,2));
59     while(!ai.weakCompareAndSet(i, 2,-4));
60     assertEquals(-4,ai.get(i));
61     while(!ai.weakCompareAndSet(i, -4,7));
62     assertEquals(7,ai.get(i));
63     }
64     }
65    
66     public void testGetAndSet(){
67     AtomicLongArray ai = new AtomicLongArray(N);
68     for (int i = 0; i < N; ++i) {
69     ai.set(i, 1);
70     assertEquals(1,ai.getAndSet(i,0));
71     assertEquals(0,ai.getAndSet(i,-10));
72     assertEquals(-10,ai.getAndSet(i,1));
73     }
74     }
75    
76     public void testGetAndAdd(){
77     AtomicLongArray ai = new AtomicLongArray(N);
78     for (int i = 0; i < N; ++i) {
79     ai.set(i, 1);
80     assertEquals(1,ai.getAndAdd(i,2));
81     assertEquals(3,ai.get(i));
82     assertEquals(3,ai.getAndAdd(i,-4));
83     assertEquals(-1,ai.get(i));
84     }
85     }
86    
87     public void testGetAndDecrement(){
88     AtomicLongArray ai = new AtomicLongArray(N);
89     for (int i = 0; i < N; ++i) {
90     ai.set(i, 1);
91     assertEquals(1,ai.getAndDecrement(i));
92     assertEquals(0,ai.getAndDecrement(i));
93     assertEquals(-1,ai.getAndDecrement(i));
94     }
95     }
96    
97     public void testGetAndIncrement(){
98     AtomicLongArray ai = new AtomicLongArray(N);
99     for (int i = 0; i < N; ++i) {
100     ai.set(i, 1);
101     assertEquals(1,ai.getAndIncrement(i));
102     assertEquals(2,ai.get(i));
103     ai.set(i,-2);
104     assertEquals(-2,ai.getAndIncrement(i));
105     assertEquals(-1,ai.getAndIncrement(i));
106     assertEquals(0,ai.getAndIncrement(i));
107     assertEquals(1,ai.get(i));
108     }
109     }
110    
111     public void testAddAndGet() {
112     AtomicLongArray ai = new AtomicLongArray(N);
113     for (int i = 0; i < N; ++i) {
114     ai.set(i, 1);
115     assertEquals(3,ai.addAndGet(i,2));
116     assertEquals(3,ai.get(i));
117     assertEquals(-1,ai.addAndGet(i,-4));
118     assertEquals(-1,ai.get(i));
119     }
120     }
121    
122     public void testDecrementAndGet(){
123     AtomicLongArray ai = new AtomicLongArray(N);
124     for (int i = 0; i < N; ++i) {
125     ai.set(i, 1);
126     assertEquals(0,ai.decrementAndGet(i));
127     assertEquals(-1,ai.decrementAndGet(i));
128     assertEquals(-2,ai.decrementAndGet(i));
129     assertEquals(-2,ai.get(i));
130     }
131     }
132    
133     public void testIncrementAndGet() {
134     AtomicLongArray ai = new AtomicLongArray(N);
135     for (int i = 0; i < N; ++i) {
136     ai.set(i, 1);
137     assertEquals(2,ai.incrementAndGet(i));
138     assertEquals(2,ai.get(i));
139     ai.set(i, -2);
140     assertEquals(-1,ai.incrementAndGet(i));
141     assertEquals(0,ai.incrementAndGet(i));
142     assertEquals(1,ai.incrementAndGet(i));
143     assertEquals(1,ai.get(i));
144     }
145     }
146    
147     }