From d10b146e18ccca360c1aba293275ab74fe895c93 Mon Sep 17 00:00:00 2001 From: Rodney Waldhoff Date: Wed, 26 Feb 2003 15:45:19 +0000 Subject: [PATCH] make ArrayIntList serializable add additional tests git-svn-id: https://svn.apache.org/repos/asf/jakarta/commons/proper/collections/trunk@130979 13f79535-47bb-0310-9956-ffa450edef68 --- .../collections/primitives/ArrayIntList.java | 27 ++++++- .../primitives/TestArrayIntList.java | 81 ++++++++++++++++++- .../TestArrayUnsignedShortList.java | 80 +++++++++++++++++- .../collections/primitives/TestIntList.java | 15 +++- 4 files changed, 194 insertions(+), 9 deletions(-) diff --git a/src/java/org/apache/commons/collections/primitives/ArrayIntList.java b/src/java/org/apache/commons/collections/primitives/ArrayIntList.java index 99273c9ab..809355557 100644 --- a/src/java/org/apache/commons/collections/primitives/ArrayIntList.java +++ b/src/java/org/apache/commons/collections/primitives/ArrayIntList.java @@ -1,5 +1,5 @@ /* - * $Header: /home/jerenkrantz/tmp/commons/commons-convert/cvs/home/cvs/jakarta-commons//collections/src/java/org/apache/commons/collections/primitives/Attic/ArrayIntList.java,v 1.5 2003/01/13 21:52:28 rwaldhoff Exp $ + * $Header: /home/jerenkrantz/tmp/commons/commons-convert/cvs/home/cvs/jakarta-commons//collections/src/java/org/apache/commons/collections/primitives/Attic/ArrayIntList.java,v 1.6 2003/02/26 15:45:19 rwaldhoff Exp $ * ==================================================================== * The Apache Software License, Version 1.1 * @@ -57,16 +57,21 @@ package org.apache.commons.collections.primitives; +import java.io.IOException; +import java.io.ObjectInputStream; +import java.io.ObjectOutputStream; +import java.io.Serializable; + /** * An {@link IntList} backed by an array of ints. * This implementation supports all optional methods. * * @since Commons Collections 2.2 - * @version $Revision: 1.5 $ $Date: 2003/01/13 21:52:28 $ + * @version $Revision: 1.6 $ $Date: 2003/02/26 15:45:19 $ * * @author Rodney Waldhoff */ -public class ArrayIntList extends AbstractRandomAccessIntList implements IntList { +public class ArrayIntList extends AbstractRandomAccessIntList implements IntList, Serializable { // constructors //------------------------------------------------------------------------- @@ -223,6 +228,22 @@ public class ArrayIntList extends AbstractRandomAccessIntList implements IntList // private methods //------------------------------------------------------------------------- + private void writeObject(ObjectOutputStream out) throws IOException{ + out.defaultWriteObject(); + out.writeInt(_data.length); + for(int i=0;i<_size;i++) { + out.writeInt(_data[i]); + } + } + + private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException { + in.defaultReadObject(); + _data = new int[in.readInt()]; + for(int i=0;i<_size;i++) { + _data[i] = in.readInt(); + } + } + private final void checkRange(int index) { if(index < 0 || index >= _size) { throw new IndexOutOfBoundsException("Should be at least 0 and less than " + _size + ", found " + index); diff --git a/src/test/org/apache/commons/collections/primitives/TestArrayIntList.java b/src/test/org/apache/commons/collections/primitives/TestArrayIntList.java index 6b2b369f5..938eb2c3c 100644 --- a/src/test/org/apache/commons/collections/primitives/TestArrayIntList.java +++ b/src/test/org/apache/commons/collections/primitives/TestArrayIntList.java @@ -1,5 +1,5 @@ /* - * $Header: /home/jerenkrantz/tmp/commons/commons-convert/cvs/home/cvs/jakarta-commons//collections/src/test/org/apache/commons/collections/primitives/Attic/TestArrayIntList.java,v 1.6 2003/01/12 15:23:20 rwaldhoff Exp $ + * $Header: /home/jerenkrantz/tmp/commons/commons-convert/cvs/home/cvs/jakarta-commons//collections/src/test/org/apache/commons/collections/primitives/Attic/TestArrayIntList.java,v 1.7 2003/02/26 15:45:19 rwaldhoff Exp $ * ==================================================================== * The Apache Software License, Version 1.1 * @@ -63,7 +63,7 @@ import junit.framework.TestSuite; import org.apache.commons.collections.BulkTest; /** - * @version $Revision: 1.6 $ $Date: 2003/01/12 15:23:20 $ + * @version $Revision: 1.7 $ $Date: 2003/02/26 15:45:19 $ * @author Rodney Waldhoff */ public class TestArrayIntList extends TestIntList { @@ -127,4 +127,81 @@ public class TestArrayIntList extends TestIntList { public void testZeroInitialCapacityIsValid() { ArrayIntList list = new ArrayIntList(0); } + + public void testNegativeInitialCapacityIsInvalid() { + try { + ArrayIntList list = new ArrayIntList(-1); + fail("Expected IllegalArgumentException"); + } catch(IllegalArgumentException e) { + // expected + } + } + + public void testCopyConstructor() { + ArrayIntList expected = new ArrayIntList(); + for(int i=0;i<10;i++) { + expected.add(i); + } + ArrayIntList list = new ArrayIntList(expected); + assertEquals(10,list.size()); + assertEquals(expected,list); + } + + public void testCopyConstructorWithNull() { + try { + ArrayIntList list = new ArrayIntList(null); + fail("Expected NullPointerException"); + } catch(NullPointerException e) { + // expected + } + } + + + public void testTrimToSize() { + ArrayIntList list = new ArrayIntList(); + for(int j=0;j<3;j++) { + assertTrue(list.isEmpty()); + + list.trimToSize(); + + assertTrue(list.isEmpty()); + + for(int i=0;i<10;i++) { + list.add(i); + } + + for(int i=0;i<10;i++) { + assertEquals(i,list.get(i)); + } + + list.trimToSize(); + + for(int i=0;i<10;i++) { + assertEquals(i,list.get(i)); + } + + for(int i=0;i<10;i+=2) { + list.removeElement(i); + } + + for(int i=0;i<5;i++) { + assertEquals((2*i)+1,list.get(i)); + } + + list.trimToSize(); + + for(int i=0;i<5;i++) { + assertEquals((2*i)+1,list.get(i)); + } + + list.trimToSize(); + + for(int i=0;i<5;i++) { + assertEquals((2*i)+1,list.get(i)); + } + + list.clear(); + } + } + } diff --git a/src/test/org/apache/commons/collections/primitives/TestArrayUnsignedShortList.java b/src/test/org/apache/commons/collections/primitives/TestArrayUnsignedShortList.java index c2ff1990e..24c620f48 100644 --- a/src/test/org/apache/commons/collections/primitives/TestArrayUnsignedShortList.java +++ b/src/test/org/apache/commons/collections/primitives/TestArrayUnsignedShortList.java @@ -1,5 +1,5 @@ /* - * $Header: /home/jerenkrantz/tmp/commons/commons-convert/cvs/home/cvs/jakarta-commons//collections/src/test/org/apache/commons/collections/primitives/Attic/TestArrayUnsignedShortList.java,v 1.6 2003/01/13 21:52:28 rwaldhoff Exp $ + * $Header: /home/jerenkrantz/tmp/commons/commons-convert/cvs/home/cvs/jakarta-commons//collections/src/test/org/apache/commons/collections/primitives/Attic/TestArrayUnsignedShortList.java,v 1.7 2003/02/26 15:45:19 rwaldhoff Exp $ * ==================================================================== * The Apache Software License, Version 1.1 * @@ -63,7 +63,7 @@ import junit.framework.TestSuite; import org.apache.commons.collections.BulkTest; /** - * @version $Revision: 1.6 $ $Date: 2003/01/13 21:52:28 $ + * @version $Revision: 1.7 $ $Date: 2003/02/26 15:45:19 $ * @author Rodney Waldhoff */ public class TestArrayUnsignedShortList extends TestIntList { @@ -132,4 +132,80 @@ public class TestArrayUnsignedShortList extends TestIntList { } } + public void testNegativeInitialCapacityIsInvalid() { + try { + ArrayUnsignedShortList list = new ArrayUnsignedShortList(-1); + fail("Expected IllegalArgumentException"); + } catch(IllegalArgumentException e) { + // expected + } + } + + public void testCopyConstructor() { + ArrayUnsignedShortList expected = new ArrayUnsignedShortList(); + for(int i=0;i<10;i++) { + expected.add(i); + } + ArrayUnsignedShortList list = new ArrayUnsignedShortList(expected); + assertEquals(10,list.size()); + assertEquals(expected,list); + } + + public void testCopyConstructorWithNull() { + try { + ArrayUnsignedShortList list = new ArrayUnsignedShortList(null); + fail("Expected NullPointerException"); + } catch(NullPointerException e) { + // expected + } + } + + + public void testTrimToSize() { + ArrayUnsignedShortList list = new ArrayUnsignedShortList(); + for(int j=0;j<3;j++) { + assertTrue(list.isEmpty()); + + list.trimToSize(); + + assertTrue(list.isEmpty()); + + for(int i=0;i<10;i++) { + list.add(i); + } + + for(int i=0;i<10;i++) { + assertEquals(i,list.get(i)); + } + + list.trimToSize(); + + for(int i=0;i<10;i++) { + assertEquals(i,list.get(i)); + } + + for(int i=0;i<10;i+=2) { + list.removeElement(i); + } + + for(int i=0;i<5;i++) { + assertEquals((2*i)+1,list.get(i)); + } + + list.trimToSize(); + + for(int i=0;i<5;i++) { + assertEquals((2*i)+1,list.get(i)); + } + + list.trimToSize(); + + for(int i=0;i<5;i++) { + assertEquals((2*i)+1,list.get(i)); + } + + list.clear(); + } + } + } diff --git a/src/test/org/apache/commons/collections/primitives/TestIntList.java b/src/test/org/apache/commons/collections/primitives/TestIntList.java index c5f5f4d13..a833aa760 100644 --- a/src/test/org/apache/commons/collections/primitives/TestIntList.java +++ b/src/test/org/apache/commons/collections/primitives/TestIntList.java @@ -1,5 +1,5 @@ /* - * $Header: /home/jerenkrantz/tmp/commons/commons-convert/cvs/home/cvs/jakarta-commons//collections/src/test/org/apache/commons/collections/primitives/Attic/TestIntList.java,v 1.3 2003/01/12 15:23:20 rwaldhoff Exp $ + * $Header: /home/jerenkrantz/tmp/commons/commons-convert/cvs/home/cvs/jakarta-commons//collections/src/test/org/apache/commons/collections/primitives/Attic/TestIntList.java,v 1.4 2003/02/26 15:45:19 rwaldhoff Exp $ * ==================================================================== * The Apache Software License, Version 1.1 * @@ -57,6 +57,7 @@ package org.apache.commons.collections.primitives; +import java.io.Serializable; import java.util.ArrayList; import java.util.List; @@ -65,7 +66,7 @@ import org.apache.commons.collections.primitives.adapters.IntListList; import org.apache.commons.collections.primitives.adapters.ListIntList; /** - * @version $Revision: 1.3 $ $Date: 2003/01/12 15:23:20 $ + * @version $Revision: 1.4 $ $Date: 2003/02/26 15:45:19 $ * @author Rodney Waldhoff */ public abstract class TestIntList extends TestList { @@ -280,4 +281,14 @@ public abstract class TestIntList extends TestList { } } + public void testIsSerializable() throws Exception { + IntList list = makeFullIntList(); + assertTrue(list instanceof Serializable); + byte[] ser = writeExternalFormToBytes((Serializable)list); + IntList deser = (IntList)(readExternalFormFromBytes(ser)); + assertEquals(list,deser); + assertEquals(deser,list); + } + + }