diff --git a/src/test/org/apache/commons/collections/TestAll.java b/src/test/org/apache/commons/collections/TestAll.java index a68f34ce7..1a8addc82 100644 --- a/src/test/org/apache/commons/collections/TestAll.java +++ b/src/test/org/apache/commons/collections/TestAll.java @@ -1,13 +1,10 @@ /* - * $Header: /home/jerenkrantz/tmp/commons/commons-convert/cvs/home/cvs/jakarta-commons//collections/src/test/org/apache/commons/collections/TestAll.java,v 1.41 2003/03/09 00:07:41 scolebourne Exp $ - * $Revision: 1.41 $ - * $Date: 2003/03/09 00:07:41 $ - * + * $Header: /home/jerenkrantz/tmp/commons/commons-convert/cvs/home/cvs/jakarta-commons//collections/src/test/org/apache/commons/collections/TestAll.java,v 1.42 2003/04/26 15:13:54 scolebourne Exp $ * ==================================================================== * * The Apache Software License, Version 1.1 * - * Copyright (c) 1999-2001 The Apache Software Foundation. All rights + * Copyright (c) 1999-2003 The Apache Software Foundation. All rights * reserved. * * Redistribution and use in source and binary forms, with or without @@ -58,7 +55,6 @@ * . * */ - package org.apache.commons.collections; import junit.framework.Test; @@ -67,8 +63,11 @@ import junit.framework.TestSuite; /** * Entry point for all Collections tests. + * + * @version $Revision: 1.42 $ $Date: 2003/04/26 15:13:54 $ + * * @author Rodney Waldhoff - * @version $Id: TestAll.java,v 1.41 2003/03/09 00:07:41 scolebourne Exp $ + * @author Stephen Colebourne */ public class TestAll extends TestCase { public TestAll(String testName) { @@ -82,6 +81,7 @@ public class TestAll extends TestCase { suite.addTest(TestBinaryHeap.suite()); suite.addTest(TestBoundedFifoBuffer.suite()); suite.addTest(TestBoundedFifoBuffer2.suite()); + suite.addTest(TestCircularFifoBuffer.suite()); suite.addTest(TestCollectionUtils.suite()); suite.addTest(TestCommonsLinkedList.suite()); suite.addTest(TestBufferUtils.suite()); diff --git a/src/test/org/apache/commons/collections/TestCircularFifoBuffer.java b/src/test/org/apache/commons/collections/TestCircularFifoBuffer.java new file mode 100644 index 000000000..5f56dae56 --- /dev/null +++ b/src/test/org/apache/commons/collections/TestCircularFifoBuffer.java @@ -0,0 +1,228 @@ +/* + * $Header: /home/jerenkrantz/tmp/commons/commons-convert/cvs/home/cvs/jakarta-commons//collections/src/test/org/apache/commons/collections/Attic/TestCircularFifoBuffer.java,v 1.1 2003/04/26 15:13:22 scolebourne Exp $ + * ==================================================================== + * + * The Apache Software License, Version 1.1 + * + * Copyright (c) 2003 The Apache Software Foundation. All rights + * reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * 3. The end-user documentation included with the redistribution, if + * any, must include the following acknowlegement: + * "This product includes software developed by the + * Apache Software Foundation (http://www.apache.org/)." + * Alternately, this acknowlegement may appear in the software itself, + * if and wherever such third-party acknowlegements normally appear. + * + * 4. The names "The Jakarta Project", "Commons", and "Apache Software + * Foundation" must not be used to endorse or promote products derived + * from this software without prior written permission. For written + * permission, please contact apache@apache.org. + * + * 5. Products derived from this software may not be called "Apache" + * nor may "Apache" appear in their names without prior written + * permission of the Apache Group. + * + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR + * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF + * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT + * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * ==================================================================== + * + * This software consists of voluntary contributions made by many + * individuals on behalf of the Apache Software Foundation. For more + * information on the Apache Software Foundation, please see + * . + * + */ +package org.apache.commons.collections; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.Iterator; +import java.util.List; + +import junit.framework.Test; + +/** + * Test cases for CircularFifoBuffer. + * + * @version $Revision: 1.1 $ $Date: 2003/04/26 15:13:22 $ + * + * @author Stephen Colebourne + */ +public class TestCircularFifoBuffer extends TestCollection { + + public TestCircularFifoBuffer(String n) { + super(n); + } + + public static Test suite() { + return BulkTest.makeSuite(TestCircularFifoBuffer.class); + } + + /** + * Returns an empty BoundedFifoBuffer that won't overflow. + * + * @return an empty BoundedFifoBuffer + */ + public Collection makeCollection() { + return new CircularFifoBuffer(100); + } + + /** + * Returns an empty ArrayList. + * + * @return an empty ArrayList + */ + public Collection makeConfirmedCollection() { + return new ArrayList(); + } + + /** + * Returns a full ArrayList. + * + * @return a full ArrayList + */ + public Collection makeConfirmedFullCollection() { + Collection c = makeConfirmedCollection(); + c.addAll(java.util.Arrays.asList(getFullElements())); + return c; + } + + /** + * Overridden because CircularFifoBuffer doesn't support null elements. + * + * @return an array of random objects without a null element + */ + public Object[] getFullElements() { + return getFullNonNullElements(); + } + + /** + * Overridden, because CircularFifoBuffer's iterators aren't fail-fast. + */ + public void testCollectionIteratorFailFast() { + } + + /** + * Runs through the regular verifications, but also verifies that + * the buffer contains the same elements in the same sequence as the + * list. + */ + public void verify() { + super.verify(); + Iterator iterator1 = collection.iterator(); + Iterator iterator2 = confirmed.iterator(); + while (iterator2.hasNext()) { + assertTrue(iterator1.hasNext()); + Object o1 = iterator1.next(); + Object o2 = iterator2.next(); + assertEquals(o1, o2); + } + } + + /** + * Tests that the removal operation actually removes the first element. + */ + public void testCircularFifoBufferCircular() { + List list = new ArrayList(); + list.add("A"); + list.add("B"); + list.add("C"); + Buffer buf = new CircularFifoBuffer(list); + + assertEquals(true, buf.contains("A")); + assertEquals(true, buf.contains("B")); + assertEquals(true, buf.contains("C")); + + buf.add("D"); + + assertEquals(false, buf.contains("A")); + assertEquals(true, buf.contains("B")); + assertEquals(true, buf.contains("C")); + assertEquals(true, buf.contains("D")); + + assertEquals("B", buf.get()); + assertEquals("B", buf.remove()); + assertEquals("C", buf.remove()); + assertEquals("D", buf.remove()); + } + + /** + * Tests that the removal operation actually removes the first element. + */ + public void testCircularFifoBufferRemove() { + resetFull(); + int size = confirmed.size(); + for (int i = 0; i < size; i++) { + Object o1 = ((CircularFifoBuffer) collection).remove(); + Object o2 = ((ArrayList) confirmed).remove(0); + assertEquals("Removed objects should be equal", o1, o2); + verify(); + } + + try { + ((CircularFifoBuffer) collection).remove(); + fail("Empty buffer should raise Underflow."); + } catch (BufferUnderflowException e) { + // expected + } + } + + /** + * Tests that the constructor correctly throws an exception. + */ + public void testConstructorException1() { + try { + new CircularFifoBuffer(0); + } catch (IllegalArgumentException ex) { + return; + } + fail(); + } + + /** + * Tests that the constructor correctly throws an exception. + */ + public void testConstructorException2() { + try { + new CircularFifoBuffer(-20); + } catch (IllegalArgumentException ex) { + return; + } + fail(); + } + + /** + * Tests that the constructor correctly throws an exception. + */ + public void testConstructorException3() { + try { + new CircularFifoBuffer(null); + } catch (NullPointerException ex) { + return; + } + fail(); + } +}