[cvs] / jsr166 / src / test / tck / AtomicIntegerArrayTest.java Repository:
ViewVC logotype

Annotation of /jsr166/src/test/tck/AtomicIntegerArrayTest.java

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.2 - (view) (download)

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 : dl 1.2 import java.io.*;
11 : dl 1.1
12 :     public class AtomicIntegerArrayTest extends TestCase
13 :     {
14 :     static final int N = 10;
15 :    
16 :     public static void main (String[] args) {
17 :     junit.textui.TestRunner.run (suite());
18 :     }
19 :     public static Test suite() {
20 :     return new TestSuite(AtomicIntegerArrayTest.class);
21 :     }
22 :    
23 :     public void testConstructor(){
24 :     AtomicIntegerArray ai = new AtomicIntegerArray(N);
25 :     for (int i = 0; i < N; ++i)
26 :     assertEquals(0,ai.get(i));
27 :     }
28 :    
29 :     public void testGetSet(){
30 :     AtomicIntegerArray ai = new AtomicIntegerArray(N);
31 :     for (int i = 0; i < N; ++i) {
32 :     ai.set(i, 1);
33 :     assertEquals(1,ai.get(i));
34 :     ai.set(i, 2);
35 :     assertEquals(2,ai.get(i));
36 :     ai.set(i, -3);
37 :     assertEquals(-3,ai.get(i));
38 :     }
39 :     }
40 :    
41 :     public void testCompareAndSet(){
42 :     AtomicIntegerArray ai = new AtomicIntegerArray(N);
43 :     for (int i = 0; i < N; ++i) {
44 :     ai.set(i, 1);
45 :     assertTrue(ai.compareAndSet(i, 1,2));
46 :     assertTrue(ai.compareAndSet(i, 2,-4));
47 :     assertEquals(-4,ai.get(i));
48 :     assertFalse(ai.compareAndSet(i, -5,7));
49 :     assertFalse((7 == ai.get(i)));
50 :     assertTrue(ai.compareAndSet(i, -4,7));
51 :     assertEquals(7,ai.get(i));
52 :     }
53 :     }
54 :    
55 :     public void testWeakCompareAndSet(){
56 :     AtomicIntegerArray ai = new AtomicIntegerArray(N);
57 :     for (int i = 0; i < N; ++i) {
58 :     ai.set(i, 1);
59 :     while(!ai.weakCompareAndSet(i, 1,2));
60 :     while(!ai.weakCompareAndSet(i, 2,-4));
61 :     assertEquals(-4,ai.get(i));
62 :     while(!ai.weakCompareAndSet(i, -4,7));
63 :     assertEquals(7,ai.get(i));
64 :     }
65 :     }
66 :    
67 :     public void testGetAndSet(){
68 :     AtomicIntegerArray ai = new AtomicIntegerArray(N);
69 :     for (int i = 0; i < N; ++i) {
70 :     ai.set(i, 1);
71 :     assertEquals(1,ai.getAndSet(i,0));
72 :     assertEquals(0,ai.getAndSet(i,-10));
73 :     assertEquals(-10,ai.getAndSet(i,1));
74 :     }
75 :     }
76 :    
77 :     public void testGetAndAdd(){
78 :     AtomicIntegerArray ai = new AtomicIntegerArray(N);
79 :     for (int i = 0; i < N; ++i) {
80 :     ai.set(i, 1);
81 :     assertEquals(1,ai.getAndAdd(i,2));
82 :     assertEquals(3,ai.get(i));
83 :     assertEquals(3,ai.getAndAdd(i,-4));
84 :     assertEquals(-1,ai.get(i));
85 :     }
86 :     }
87 :    
88 :     public void testGetAndDecrement(){
89 :     AtomicIntegerArray ai = new AtomicIntegerArray(N);
90 :     for (int i = 0; i < N; ++i) {
91 :     ai.set(i, 1);
92 :     assertEquals(1,ai.getAndDecrement(i));
93 :     assertEquals(0,ai.getAndDecrement(i));
94 :     assertEquals(-1,ai.getAndDecrement(i));
95 :     }
96 :     }
97 :    
98 :     public void testGetAndIncrement(){
99 :     AtomicIntegerArray ai = new AtomicIntegerArray(N);
100 :     for (int i = 0; i < N; ++i) {
101 :     ai.set(i, 1);
102 :     assertEquals(1,ai.getAndIncrement(i));
103 :     assertEquals(2,ai.get(i));
104 :     ai.set(i,-2);
105 :     assertEquals(-2,ai.getAndIncrement(i));
106 :     assertEquals(-1,ai.getAndIncrement(i));
107 :     assertEquals(0,ai.getAndIncrement(i));
108 :     assertEquals(1,ai.get(i));
109 :     }
110 :     }
111 :    
112 :     public void testAddAndGet() {
113 :     AtomicIntegerArray ai = new AtomicIntegerArray(N);
114 :     for (int i = 0; i < N; ++i) {
115 :     ai.set(i, 1);
116 :     assertEquals(3,ai.addAndGet(i,2));
117 :     assertEquals(3,ai.get(i));
118 :     assertEquals(-1,ai.addAndGet(i,-4));
119 :     assertEquals(-1,ai.get(i));
120 :     }
121 :     }
122 :    
123 :     public void testDecrementAndGet(){
124 :     AtomicIntegerArray ai = new AtomicIntegerArray(N);
125 :     for (int i = 0; i < N; ++i) {
126 :     ai.set(i, 1);
127 :     assertEquals(0,ai.decrementAndGet(i));
128 :     assertEquals(-1,ai.decrementAndGet(i));
129 :     assertEquals(-2,ai.decrementAndGet(i));
130 :     assertEquals(-2,ai.get(i));
131 :     }
132 :     }
133 :    
134 :     public void testIncrementAndGet() {
135 :     AtomicIntegerArray ai = new AtomicIntegerArray(N);
136 :     for (int i = 0; i < N; ++i) {
137 :     ai.set(i, 1);
138 :     assertEquals(2,ai.incrementAndGet(i));
139 :     assertEquals(2,ai.get(i));
140 :     ai.set(i, -2);
141 :     assertEquals(-1,ai.incrementAndGet(i));
142 :     assertEquals(0,ai.incrementAndGet(i));
143 :     assertEquals(1,ai.incrementAndGet(i));
144 :     assertEquals(1,ai.get(i));
145 : dl 1.2 }
146 :     }
147 :    
148 :     public void testSerialization() {
149 :     AtomicIntegerArray l = new AtomicIntegerArray(N);
150 :     for (int i = 0; i < N; ++i)
151 :     l.set(i, -i);
152 :    
153 :     try {
154 :     ByteArrayOutputStream bout = new ByteArrayOutputStream(10000);
155 :     ObjectOutputStream out = new ObjectOutputStream(new BufferedOutputStream(bout));
156 :     out.writeObject(l);
157 :     out.close();
158 :    
159 :     ByteArrayInputStream bin = new ByteArrayInputStream(bout.toByteArray());
160 :     ObjectInputStream in = new ObjectInputStream(new BufferedInputStream(bin));
161 :     AtomicIntegerArray r = (AtomicIntegerArray) in.readObject();
162 :     for (int i = 0; i < N; ++i) {
163 :     assertEquals(l.get(i), r.get(i));
164 :     }
165 :     } catch(Exception e){
166 :     e.printStackTrace();
167 :     fail("unexpected exception");
168 : dl 1.1 }
169 :     }
170 :    
171 :     }

Doug Lea
ViewVC Help
Powered by ViewVC 1.0.8