--- jsr166/src/test/tck/AtomicReferenceArrayTest.java 2003/08/31 19:24:53 1.1 +++ jsr166/src/test/tck/AtomicReferenceArrayTest.java 2003/09/14 20:42:40 1.3 @@ -7,20 +7,10 @@ import junit.framework.*; import java.util.concurrent.atomic.*; +import java.io.*; -public class AtomicReferenceArrayTest extends TestCase +public class AtomicReferenceArrayTest extends JSR166TestCase { - static final int N = 10; - - static final Integer zero = new Integer(0); - static final Integer one = new Integer(1); - static final Integer two = new Integer(2); - static final Integer m3 = new Integer(-3); - static final Integer m4 = new Integer(-4); - static final Integer m5 = new Integer(-5); - static final Integer seven = new Integer(7); - static final Integer m10 = new Integer(-10); - public static void main (String[] args) { junit.textui.TestRunner.run (suite()); } @@ -29,15 +19,15 @@ public class AtomicReferenceArrayTest ex } public void testConstructor(){ - AtomicReferenceArray ai = new AtomicReferenceArray(N); - for (int i = 0; i < N; ++i) { + AtomicReferenceArray ai = new AtomicReferenceArray(SIZE); + for (int i = 0; i < SIZE; ++i) { assertNull(ai.get(i)); } } public void testGetSet(){ - AtomicReferenceArray ai = new AtomicReferenceArray(N); - for (int i = 0; i < N; ++i) { + AtomicReferenceArray ai = new AtomicReferenceArray(SIZE); + for (int i = 0; i < SIZE; ++i) { ai.set(i, one); assertEquals(one,ai.get(i)); ai.set(i, two); @@ -48,8 +38,8 @@ public class AtomicReferenceArrayTest ex } public void testCompareAndSet(){ - AtomicReferenceArray ai = new AtomicReferenceArray(N); - for (int i = 0; i < N; ++i) { + AtomicReferenceArray ai = new AtomicReferenceArray(SIZE); + for (int i = 0; i < SIZE; ++i) { ai.set(i, one); assertTrue(ai.compareAndSet(i, one,two)); assertTrue(ai.compareAndSet(i, two,m4)); @@ -62,8 +52,8 @@ public class AtomicReferenceArrayTest ex } public void testWeakCompareAndSet(){ - AtomicReferenceArray ai = new AtomicReferenceArray(N); - for (int i = 0; i < N; ++i) { + AtomicReferenceArray ai = new AtomicReferenceArray(SIZE); + for (int i = 0; i < SIZE; ++i) { ai.set(i, one); while(!ai.weakCompareAndSet(i, one,two)); while(!ai.weakCompareAndSet(i, two,m4)); @@ -74,8 +64,8 @@ public class AtomicReferenceArrayTest ex } public void testGetAndSet(){ - AtomicReferenceArray ai = new AtomicReferenceArray(N); - for (int i = 0; i < N; ++i) { + AtomicReferenceArray ai = new AtomicReferenceArray(SIZE); + for (int i = 0; i < SIZE; ++i) { ai.set(i, one); assertEquals(one,ai.getAndSet(i,zero)); assertEquals(0,ai.getAndSet(i,m10)); @@ -83,5 +73,29 @@ public class AtomicReferenceArrayTest ex } } + public void testSerialization() { + AtomicReferenceArray l = new AtomicReferenceArray(SIZE); + for (int i = 0; i < SIZE; ++i) { + l.set(i, new Integer(-i)); + } + + try { + ByteArrayOutputStream bout = new ByteArrayOutputStream(10000); + ObjectOutputStream out = new ObjectOutputStream(new BufferedOutputStream(bout)); + out.writeObject(l); + out.close(); + + ByteArrayInputStream bin = new ByteArrayInputStream(bout.toByteArray()); + ObjectInputStream in = new ObjectInputStream(new BufferedInputStream(bin)); + AtomicReferenceArray r = (AtomicReferenceArray) in.readObject(); + assertEquals(l.length(), r.length()); + for (int i = 0; i < SIZE; ++i) { + assertEquals(r.get(i), l.get(i)); + } + } catch(Exception e){ + e.printStackTrace(); + fail("unexpected exception"); + } + } }