scolebourne 2003/07/12 08:11:26 Modified: collections/src/test/org/apache/commons/collections TestList.java TestCollection.java TestBoundedFifoBuffer.java TestCircularFifoBuffer.java TestUnboundedFifoBuffer.java TestSet.java TestBinaryHeap.java collections/src/test/org/apache/commons/collections/decorators TestTransformedCollection.java Log: Added more controlling if methods into Collection test hierarchy - isNullSupported - isFailFastSupported Revision Changes Path 1.18 +74 -75 jakarta-commons/collections/src/test/org/apache/commons/collections/TestList.java Index: TestList.java =================================================================== RCS file: /home/cvs/jakarta-commons/collections/src/test/org/apache/commons/collections/TestList.java,v retrieving revision 1.17 retrieving revision 1.18 diff -u -r1.17 -r1.18 --- TestList.java 26 Apr 2003 10:27:59 -0000 1.17 +++ TestList.java 12 Jul 2003 15:11:25 -0000 1.18 @@ -91,11 +91,77 @@ */ public abstract class TestList extends TestCollection { - + /** + * Constructor. + * @param testName + */ public TestList(String testName) { super(testName); } + //----------------------------------------------------------------------- + /** + * Returns true if the collections produced by + * [EMAIL PROTECTED] #makeCollection()} and [EMAIL PROTECTED] #makeFullCollection()} + * support the <code>set</code> operation.<p> + * Default implementation returns true. Override if your collection + * class does not support set. + */ + protected boolean isSetSupported() { + return true; + } + + //----------------------------------------------------------------------- + /** + * Verifies that the test list implementation matches the confirmed list + * implementation. + */ + protected void verify() { + super.verify(); + + List list1 = getList(); + List list2 = getConfirmedList(); + + assertEquals("List should equal confirmed", list1, list2); + assertEquals("Confirmed should equal list", list2, list1); + + assertEquals("Hash codes should be equal", + list1.hashCode(), list2.hashCode()); + + int i = 0; + Iterator iterator1 = list1.iterator(); + Iterator iterator2 = list2.iterator(); + Object[] array = list1.toArray(); + while (iterator2.hasNext()) { + assertTrue("List iterator should have next", iterator1.hasNext()); + Object o1 = iterator1.next(); + Object o2 = iterator2.next(); + assertEquals("Iterator elements should be equal", o1, o2); + o2 = list1.get(i); + assertEquals("get should return correct element", o1, o2); + o2 = array[i]; + assertEquals("toArray should have correct element", o1, o2); + i++; + } + } + + //----------------------------------------------------------------------- + /** + * Returns an empty [EMAIL PROTECTED] ArrayList}. + */ + protected Collection makeConfirmedCollection() { + ArrayList list = new ArrayList(); + return list; + } + + /** + * Returns a full [EMAIL PROTECTED] ArrayList}. + */ + protected Collection makeConfirmedFullCollection() { + ArrayList list = new ArrayList(); + list.addAll(Arrays.asList(getFullElements())); + return list; + } /** * Return a new, empty [EMAIL PROTECTED] List} to be used for testing. @@ -104,7 +170,6 @@ */ protected abstract List makeEmptyList(); - /** * Return a new, full [EMAIL PROTECTED] List} to be used for testing. * @@ -117,7 +182,6 @@ return list; } - /** * Returns [EMAIL PROTECTED] makeEmptyList()}. * @@ -127,7 +191,6 @@ return makeEmptyList(); } - /** * Returns [EMAIL PROTECTED] makeFullList()}. * @@ -137,19 +200,7 @@ return makeFullList(); } - - /** - * Returns true if the collections produced by - * [EMAIL PROTECTED] #makeCollection()} and [EMAIL PROTECTED] #makeFullCollection()} - * support the <code>set</code> operation.<p> - * Default implementation returns true. Override if your collection - * class does not support set. - */ - protected boolean isSetSupported() { - return true; - } - - + //----------------------------------------------------------------------- /** * Returns the [EMAIL PROTECTED] collection} field cast to a [EMAIL PROTECTED] List}. * @@ -159,7 +210,6 @@ return (List)collection; } - /** * Returns the [EMAIL PROTECTED] confirmed} field cast to a [EMAIL PROTECTED] List}. * @@ -169,7 +219,7 @@ return (List)confirmed; } - + //----------------------------------------------------------------------- /** * Tests bounds checking for [EMAIL PROTECTED] List#add(int, Object)} on an * empty list. @@ -952,60 +1002,7 @@ } } - - /** - * Returns an empty [EMAIL PROTECTED] ArrayList}. - */ - protected Collection makeConfirmedCollection() { - ArrayList list = new ArrayList(); - return list; - } - - - /** - * Returns a full [EMAIL PROTECTED] ArrayList}. - */ - protected Collection makeConfirmedFullCollection() { - ArrayList list = new ArrayList(); - list.addAll(Arrays.asList(getFullElements())); - return list; - } - - - /** - * Verifies that the test list implementation matches the confirmed list - * implementation. - */ - protected void verify() { - super.verify(); - - List list1 = getList(); - List list2 = getConfirmedList(); - - assertEquals("List should equal confirmed", list1, list2); - assertEquals("Confirmed should equal list", list2, list1); - - assertEquals("Hash codes should be equal", - list1.hashCode(), list2.hashCode()); - - int i = 0; - Iterator iterator1 = list1.iterator(); - Iterator iterator2 = list2.iterator(); - Object[] array = list1.toArray(); - while (iterator2.hasNext()) { - assertTrue("List iterator should have next", iterator1.hasNext()); - Object o1 = iterator1.next(); - Object o2 = iterator2.next(); - assertEquals("Iterator elements should be equal", o1, o2); - o2 = list1.get(i); - assertEquals("get should return correct element", o1, o2); - o2 = array[i]; - assertEquals("toArray should have correct element", o1, o2); - i++; - } - } - - + //----------------------------------------------------------------------- /** * Returns a [EMAIL PROTECTED] BulkTest} for testing [EMAIL PROTECTED] List#subList(int,int)}. * The returned bulk test will run through every <Code>TestList</Code> @@ -1095,6 +1092,7 @@ * if elements are added to the original list. */ public void testListSubListFailFastOnAdd() { + if (!isFailFastSupported()) return; if (!isAddSupported()) return; resetFull(); @@ -1126,6 +1124,7 @@ * if elements are removed from the original list. */ public void testListSubListFailFastOnRemove() { + if (!isFailFastSupported()) return; if (!isRemoveSupported()) return; resetFull(); 1.12 +128 -109 jakarta-commons/collections/src/test/org/apache/commons/collections/TestCollection.java Index: TestCollection.java =================================================================== RCS file: /home/cvs/jakarta-commons/collections/src/test/org/apache/commons/collections/TestCollection.java,v retrieving revision 1.11 retrieving revision 1.12 diff -u -r1.11 -r1.12 --- TestCollection.java 9 May 2003 18:34:19 -0000 1.11 +++ TestCollection.java 12 Jul 2003 15:11:25 -0000 1.12 @@ -58,7 +58,6 @@ * <http://www.apache.org/>. * */ - package org.apache.commons.collections; import java.lang.reflect.Array; @@ -73,35 +72,35 @@ import java.util.Map; import java.util.NoSuchElementException; - /** * Tests base [EMAIL PROTECTED] java.util.Collection} methods and contracts. * <p> * You should create a concrete subclass of this class to test any custom * [EMAIL PROTECTED] Collection} implementation. At minimum, you'll have to * implement the [EMAIL PROTECTED] #makeCollection()} method. You might want to - * override some of the additional protected methods as well:<P> - * - * <B>Element Population Methods</B><P> - * + * override some of the additional protected methods as well: + * <p> + * <B>Element Population Methods</B> + * <p> * Override these if your collection restricts what kind of elements are * allowed (for instance, if <Code>null</Code> is not permitted): * <UL> * <Li>[EMAIL PROTECTED] #getFullElements()} * <Li>[EMAIL PROTECTED] #getOtherElements()} * </UL> - * - * <B>Supported Operation Methods</B><P> - * + * <p> + * <B>Supported Operation Methods</B> + * <p> * Override these if your collection doesn't support certain operations: * <UL> * <LI>[EMAIL PROTECTED] #isAddSuppoted()} * <LI>[EMAIL PROTECTED] #isRemoveSupported()} * <li>[EMAIL PROTECTED] #areEqualElementsDistinguishable()} + * <LI>[EMAIL PROTECTED] #isNullSupported()} * </UL> - * - * <B>Fixture Methods</B><P> - * + * <p> + * <B>Fixture Methods</B> + * <p> * Fixtures are used to verify that the the operation results in correct state * for the collection. Basically, the operation is performed against your * collection implementation, and an identical operation is performed against a @@ -113,50 +112,51 @@ * if their state is identical. The comparison is usually much more involved * than a simple <Code>equals</Code> test. This verification is used to ensure * proper modifications are made along with ensuring that the collection does - * not change when read-only modifications are made.<P> - * + * not change when read-only modifications are made. + * <p> * The [EMAIL PROTECTED] #collection} field holds an instance of your collection * implementation; the [EMAIL PROTECTED] #confirmed} field holds an instance of the * confirmed collection implementation. The [EMAIL PROTECTED] #resetEmpty()} and * [EMAIL PROTECTED] #resetFull()} methods set these fields to empty or full collections, - * so that tests can proceed from a known state.<P> - * + * so that tests can proceed from a known state. + * <p> * After a modification operation to both [EMAIL PROTECTED] #collection} and * [EMAIL PROTECTED] #confirmed}, the [EMAIL PROTECTED] #verify()} method is invoked to compare * the results. You may want to override [EMAIL PROTECTED] #verify()} to perform * additional verifications. For instance, when testing the collection * views of a map, [EMAIL PROTECTED] TestMap} would override [EMAIL PROTECTED] #verify()} to make * sure the map is changed after the collection view is changed. - * + * <p> * If you're extending this class directly, you will have to provide * implementations for the following: * <UL> * <LI>[EMAIL PROTECTED] #makeConfirmedCollection()} * <LI>[EMAIL PROTECTED] #makeConfirmedFullCollection()} * </UL> - * + * <p> * Those methods should provide a confirmed collection implementation - * that's compatible with your collection implementation.<P> - * + * that's compatible with your collection implementation. + * <p> * If you're extending [EMAIL PROTECTED] TestList}, [EMAIL PROTECTED] TestSet}, * or [EMAIL PROTECTED] TestBag}, you probably don't have to worry about the * above methods, because those three classes already override the methods * to provide standard JDK confirmed collections.<P> - * - * <B>Other notes</B><P> - * + * <p> + * <B>Other notes</B> + * <p> * If your [EMAIL PROTECTED] Collection} fails one of these tests by design, * you may still use this base set of cases. Simply override the * test case (method) your [EMAIL PROTECTED] Collection} fails. For instance, the * [EMAIL PROTECTED] #testIteratorFailFast()} method is provided since most collections * have fail-fast iterators; however, that's not strictly required by the * collection contract, so you may want to override that method to do - * nothing.<P> + * nothing. * * @author Rodney Waldhoff * @author Paul Jack * @author <a href="mailto:[EMAIL PROTECTED]">Michael A. Smith</a> * @author Neil O'Toole + * @author Stephen Colebourne * @version $Id$ */ public abstract class TestCollection extends TestObject { @@ -190,33 +190,16 @@ */ protected Collection confirmed; - - public TestCollection(String testName) { - super(testName); - } - - - /** - * Resets the [EMAIL PROTECTED] #collection} and [EMAIL PROTECTED] #confirmed} fields to empty - * collections. Invoke this method before performing a modification - * test. - */ - protected void resetEmpty() { - this.collection = makeCollection(); - this.confirmed = makeConfirmedCollection(); - } - - /** - * Resets the [EMAIL PROTECTED] #collection} and [EMAIL PROTECTED] #confirmed} fields to full - * collections. Invoke this method before performing a modification - * test. + * Constructor. + * + * @param testName the test name */ - protected void resetFull() { - this.collection = makeFullCollection(); - this.confirmed = makeConfirmedFullCollection(); + public TestCollection(String testName) { + super(testName); } + //----------------------------------------------------------------------- /** * Specifies whether equal elements in the collection are, in fact, * distinguishable with information not readily available. That is, if a @@ -244,6 +227,48 @@ } /** + * Returns true if the collections produced by + * [EMAIL PROTECTED] #makeCollection()} and [EMAIL PROTECTED] #makeFullCollection()} + * support the <Code>add</Code> and <Code>addAll</Code> + * operations.<P> + * Default implementation returns true. Override if your collection + * class does not support add or addAll. + */ + protected boolean isAddSupported() { + return true; + } + + /** + * Returns true if the collections produced by + * [EMAIL PROTECTED] #makeCollection()} and [EMAIL PROTECTED] #makeFullCollection()} + * support the <Code>remove</Code>, <Code>removeAll</Code>, + * <Code>retainAll</Code>, <Code>clear</Code> and + * <Code>iterator().remove()</Code> methods. + * Default implementation returns true. Override if your collection + * class does not support removal operations. + */ + protected boolean isRemoveSupported() { + return true; + } + + /** + * Returns true to indicate that the collection supports holding null. + * The default implementation returns true; + */ + protected boolean isNullSupported() { + return true; + } + + /** + * Returns true to indicate that the collection supports fail fast iterators. + * The default implementation returns true; + */ + protected boolean isFailFastSupported() { + return false; + } + + //----------------------------------------------------------------------- + /** * Verifies that [EMAIL PROTECTED] #collection} and [EMAIL PROTECTED] #confirmed} have * identical state. */ @@ -315,7 +340,28 @@ } } - + //----------------------------------------------------------------------- + /** + * Resets the [EMAIL PROTECTED] #collection} and [EMAIL PROTECTED] #confirmed} fields to empty + * collections. Invoke this method before performing a modification + * test. + */ + protected void resetEmpty() { + this.collection = makeCollection(); + this.confirmed = makeConfirmedCollection(); + } + + /** + * Resets the [EMAIL PROTECTED] #collection} and [EMAIL PROTECTED] #confirmed} fields to full + * collections. Invoke this method before performing a modification + * test. + */ + protected void resetFull() { + this.collection = makeFullCollection(); + this.confirmed = makeConfirmedFullCollection(); + } + + //----------------------------------------------------------------------- /** * Returns a confirmed empty collection. * For instance, an [EMAIL PROTECTED] java.util.ArrayList} for lists or a @@ -325,8 +371,6 @@ */ protected abstract Collection makeConfirmedCollection(); - - /** * Returns a confirmed full collection. * For instance, an [EMAIL PROTECTED] java.util.ArrayList} for lists or a @@ -337,52 +381,54 @@ */ protected abstract Collection makeConfirmedFullCollection(); + /** + * Return a new, empty [EMAIL PROTECTED] Collection} to be used for testing. + */ + protected abstract Collection makeCollection(); /** - * Returns true if the collections produced by - * [EMAIL PROTECTED] #makeCollection()} and [EMAIL PROTECTED] #makeFullCollection()} - * support the <Code>add</Code> and <Code>addAll</Code> - * operations.<P> - * Default implementation returns true. Override if your collection - * class does not support add or addAll. + * Returns a full collection to be used for testing. The collection + * returned by this method should contain every element returned by + * [EMAIL PROTECTED] #getFullElements()}. The default implementation, in fact, + * simply invokes <Code>addAll</Code> on an empty collection with + * the results of [EMAIL PROTECTED] #getFullElements()}. Override this default + * if your collection doesn't support addAll. */ - protected boolean isAddSupported() { - return true; + protected Collection makeFullCollection() { + Collection c = makeCollection(); + c.addAll(Arrays.asList(getFullElements())); + return c; } - /** - * Returns true if the collections produced by - * [EMAIL PROTECTED] #makeCollection()} and [EMAIL PROTECTED] #makeFullCollection()} - * support the <Code>remove</Code>, <Code>removeAll</Code>, - * <Code>retainAll</Code>, <Code>clear</Code> and - * <Code>iterator().remove()</Code> methods. - * Default implementation returns true. Override if your collection - * class does not support removal operations. + * Returns an empty collection for Object tests. */ - protected boolean isRemoveSupported() { - return true; + protected Object makeObject() { + return makeCollection(); } - + //----------------------------------------------------------------------- /** * Returns an array of objects that are contained in a collection * produced by [EMAIL PROTECTED] #makeFullCollection()}. Every element in the * returned array <I>must</I> be an element in a full collection.<P> * The default implementation returns a heterogenous array of - * objects with some duplicates and with the null element. + * objects with some duplicates. null is added if allowed. * Override if you require specific testing elements. Note that if you * override [EMAIL PROTECTED] #makeFullCollection()}, you <I>must</I> override * this method to reflect the contents of a full collection. */ protected Object[] getFullElements() { - ArrayList list = new ArrayList(); - list.addAll(Arrays.asList(getFullNonNullElements())); - list.add(4, null); - return list.toArray(); + if (isNullSupported()) { + ArrayList list = new ArrayList(); + list.addAll(Arrays.asList(getFullNonNullElements())); + list.add(4, null); + return list.toArray(); + } else { + return (Object[]) getFullNonNullElements().clone(); + } } - /** * Returns an array of elements that are <I>not</I> contained in a * full collection. Every element in the returned array must @@ -396,36 +442,7 @@ return getOtherNonNullElements(); } - - /** - * Return a new, empty [EMAIL PROTECTED] Collection} to be used for testing. - */ - protected abstract Collection makeCollection(); - - - /** - * Returns a full collection to be used for testing. The collection - * returned by this method should contain every element returned by - * [EMAIL PROTECTED] #getFullElements()}. The default implementation, in fact, - * simply invokes <Code>addAll</Code> on an empty collection with - * the results of [EMAIL PROTECTED] #getFullElements()}. Override this default - * if your collection doesn't support addAll. - */ - protected Collection makeFullCollection() { - Collection c = makeCollection(); - c.addAll(Arrays.asList(getFullElements())); - return c; - } - - - /** - * Returns an empty collection for Object tests. - */ - public Object makeObject() { - return makeCollection(); - } - - + //----------------------------------------------------------------------- /** * Tests [EMAIL PROTECTED] Collection#add(Object)}. */ @@ -1137,6 +1154,8 @@ * Tests that the collection's iterator is fail-fast. */ public void testCollectionIteratorFailFast() { + if (!isFailFastSupported()) return; + if (isAddSupported()) { resetFull(); try { 1.6 +41 -36 jakarta-commons/collections/src/test/org/apache/commons/collections/TestBoundedFifoBuffer.java Index: TestBoundedFifoBuffer.java =================================================================== RCS file: /home/cvs/jakarta-commons/collections/src/test/org/apache/commons/collections/TestBoundedFifoBuffer.java,v retrieving revision 1.5 retrieving revision 1.6 diff -u -r1.5 -r1.6 --- TestBoundedFifoBuffer.java 26 Apr 2003 15:12:28 -0000 1.5 +++ TestBoundedFifoBuffer.java 12 Jul 2003 15:11:25 -0000 1.6 @@ -78,21 +78,48 @@ return BulkTest.makeSuite(TestBoundedFifoBuffer.class); } + //----------------------------------------------------------------------- /** - * Returns an empty BoundedFifoBuffer that won't overflow. - * - * @return an empty BoundedFifoBuffer + * Runs through the regular verifications, but also verifies that + * the buffer contains the same elements in the same sequence as the + * list. */ - public Collection makeCollection() { - return new BoundedFifoBuffer(100); + protected 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); + } + } + + //----------------------------------------------------------------------- + /** + * Overridden because UnboundedFifoBuffer doesn't allow null elements. + * @return false + */ + protected boolean isNullSupported() { + return false; + } + + /** + * Overridden because UnboundedFifoBuffer isn't fail fast. + * @return false + */ + protected boolean isFailFastSupported() { + return false; } + //----------------------------------------------------------------------- /** * Returns an empty ArrayList. * * @return an empty ArrayList */ - public Collection makeConfirmedCollection() { + protected Collection makeConfirmedCollection() { return new ArrayList(); } @@ -101,44 +128,22 @@ * * @return a full ArrayList */ - public Collection makeConfirmedFullCollection() { + protected Collection makeConfirmedFullCollection() { Collection c = makeConfirmedCollection(); c.addAll(java.util.Arrays.asList(getFullElements())); return c; } /** - * Overridden because BoundedFifoBuffer doesn't support null elements. - * - * @return an array of random objects without a null element - */ - public Object[] getFullElements() { - return getFullNonNullElements(); - } - - /** - * Overridden, because BoundedFifoBuffer'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. + * Returns an empty BoundedFifoBuffer that won't overflow. + * + * @return an empty BoundedFifoBuffer */ - 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); - } + protected Collection makeCollection() { + return new BoundedFifoBuffer(100); } + //----------------------------------------------------------------------- /** * Tests that the removal operation actually removes the first element. */ 1.2 +42 -37 jakarta-commons/collections/src/test/org/apache/commons/collections/TestCircularFifoBuffer.java Index: TestCircularFifoBuffer.java =================================================================== RCS file: /home/cvs/jakarta-commons/collections/src/test/org/apache/commons/collections/TestCircularFifoBuffer.java,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- TestCircularFifoBuffer.java 26 Apr 2003 15:13:22 -0000 1.1 +++ TestCircularFifoBuffer.java 12 Jul 2003 15:11:25 -0000 1.2 @@ -81,21 +81,48 @@ return BulkTest.makeSuite(TestCircularFifoBuffer.class); } + //----------------------------------------------------------------------- /** - * Returns an empty BoundedFifoBuffer that won't overflow. - * - * @return an empty BoundedFifoBuffer + * Runs through the regular verifications, but also verifies that + * the buffer contains the same elements in the same sequence as the + * list. */ - public Collection makeCollection() { - return new CircularFifoBuffer(100); + protected 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); + } + } + + //----------------------------------------------------------------------- + /** + * Overridden because UnboundedFifoBuffer doesn't allow null elements. + * @return false + */ + protected boolean isNullSupported() { + return false; + } + + /** + * Overridden because UnboundedFifoBuffer isn't fail fast. + * @return false + */ + protected boolean isFailFastSupported() { + return false; } + //----------------------------------------------------------------------- /** * Returns an empty ArrayList. * * @return an empty ArrayList */ - public Collection makeConfirmedCollection() { + protected Collection makeConfirmedCollection() { return new ArrayList(); } @@ -104,44 +131,22 @@ * * @return a full ArrayList */ - public Collection makeConfirmedFullCollection() { + protected 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. + * Returns an empty BoundedFifoBuffer that won't overflow. + * + * @return an empty BoundedFifoBuffer */ - 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); - } + protected Collection makeCollection() { + return new CircularFifoBuffer(100); } + //----------------------------------------------------------------------- /** * Tests that the removal operation actually removes the first element. */ 1.5 +40 -41 jakarta-commons/collections/src/test/org/apache/commons/collections/TestUnboundedFifoBuffer.java Index: TestUnboundedFifoBuffer.java =================================================================== RCS file: /home/cvs/jakarta-commons/collections/src/test/org/apache/commons/collections/TestUnboundedFifoBuffer.java,v retrieving revision 1.4 retrieving revision 1.5 diff -u -r1.4 -r1.5 --- TestUnboundedFifoBuffer.java 19 Feb 2003 20:33:11 -0000 1.4 +++ TestUnboundedFifoBuffer.java 12 Jul 2003 15:11:25 -0000 1.5 @@ -78,72 +78,71 @@ return BulkTest.makeSuite(TestUnboundedFifoBuffer.class); } + //----------------------------------------------------------------------- /** - * Returns an empty UnboundedFifoBuffer with a small capacity. - * - * @return an empty UnboundedFifoBuffer + * Verifies that the ArrayList has the same elements in the same + * sequence as the UnboundedFifoBuffer. */ - public Collection makeCollection() { - return new UnboundedFifoBuffer(5); + protected 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); + } + } + + //----------------------------------------------------------------------- + /** + * Overridden because UnboundedFifoBuffer doesn't allow null elements. + * @return false + */ + protected boolean isNullSupported() { + return false; } + /** + * Overridden because UnboundedFifoBuffer isn't fail fast. + * @return false + */ + protected boolean isFailFastSupported() { + return false; + } + //----------------------------------------------------------------------- /** * Returns an empty ArrayList. * * @return an empty ArrayList */ - public Collection makeConfirmedCollection() { + protected Collection makeConfirmedCollection() { return new ArrayList(); } - /** * Returns a full ArrayList. * * @return a full ArrayList */ - public Collection makeConfirmedFullCollection() { + protected Collection makeConfirmedFullCollection() { Collection c = makeConfirmedCollection(); c.addAll(java.util.Arrays.asList(getFullElements())); return c; } - /** - * Overridden because UnboundedFifoBuffer doesn't allow null elements. + * Returns an empty UnboundedFifoBuffer with a small capacity. * - * @return an array of random elements without the null element - */ - public Object[] getFullElements() { - return getFullNonNullElements(); - } - - - /** - * Overridden because UnboundedFifoBuffer's iterators aren't fail-fast. - */ - public void testCollectionIteratorFailFast() { - } - - - /** - * Verifies that the ArrayList has the same elements in the same - * sequence as the UnboundedFifoBuffer. + * @return an empty UnboundedFifoBuffer */ - 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); - } + protected Collection makeCollection() { + return new UnboundedFifoBuffer(5); } - + //----------------------------------------------------------------------- /** * Tests that UnboundedFifoBuffer removes elements in the right order. */ 1.3 +53 -55 jakarta-commons/collections/src/test/org/apache/commons/collections/TestSet.java Index: TestSet.java =================================================================== RCS file: /home/cvs/jakarta-commons/collections/src/test/org/apache/commons/collections/TestSet.java,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- TestSet.java 18 Jun 2002 03:06:45 -0000 1.2 +++ TestSet.java 12 Jul 2003 15:11:25 -0000 1.3 @@ -85,7 +85,6 @@ */ public abstract class TestSet extends TestCollection { - /** * Constructor. * @@ -95,34 +94,24 @@ super(name); } - - /** - * Makes an empty collection by invoking [EMAIL PROTECTED] #makeEmptySet()}. - * - * @return an empty collection - */ - protected final Collection makeCollection() { - return makeEmptySet(); - } - - - /** - * Makes a full collection by invoking [EMAIL PROTECTED] #makeFullSet()}. - * - * @return a full collection - */ - protected final Collection makeFullCollection() { - return makeFullSet(); - } - + //----------------------------------------------------------------------- /** - * Return the [EMAIL PROTECTED] TestCollection#collection} fixture, but cast as a - * Set. + * Provides additional verifications for sets. */ - protected Set getSet() { - return (Set)collection; + protected void verify() { + super.verify(); + assertEquals("Sets should be equal", confirmed, collection); + assertEquals("Sets should have equal hashCodes", + confirmed.hashCode(), collection.hashCode()); + HashSet set = new HashSet(); + Iterator iterator = collection.iterator(); + while (iterator.hasNext()) { + assertTrue("Set.iterator should only return unique elements", + set.add(iterator.next())); + } } + //----------------------------------------------------------------------- /** * Returns an empty [EMAIL PROTECTED] HashSet} for use in modification testing. * @@ -132,7 +121,6 @@ return new HashSet(); } - /** * Returns a full [EMAIL PROTECTED] HashSet} for use in modification testing. * @@ -145,21 +133,12 @@ } /** - * Return the [EMAIL PROTECTED] TestCollection#confirmed} fixture, but cast as a - * Set. - **/ - protected Set getConfirmedSet() { - return (Set)confirmed; - } - - /** * Makes an empty set. The returned set should have no elements. * * @return an empty set */ protected abstract Set makeEmptySet(); - /** * Makes a full set by first creating an empty set and then adding * all the elements returned by [EMAIL PROTECTED] #getFullElements()}. @@ -174,7 +153,42 @@ return set; } + /** + * Makes an empty collection by invoking [EMAIL PROTECTED] #makeEmptySet()}. + * + * @return an empty collection + */ + protected final Collection makeCollection() { + return makeEmptySet(); + } + + /** + * Makes a full collection by invoking [EMAIL PROTECTED] #makeFullSet()}. + * + * @return a full collection + */ + protected final Collection makeFullCollection() { + return makeFullSet(); + } + + //----------------------------------------------------------------------- + /** + * Return the [EMAIL PROTECTED] TestCollection#collection} fixture, but cast as a + * Set. + */ + protected Set getSet() { + return (Set)collection; + } + + /** + * Return the [EMAIL PROTECTED] TestCollection#confirmed} fixture, but cast as a + * Set. + **/ + protected Set getConfirmedSet() { + return (Set)confirmed; + } + //----------------------------------------------------------------------- /** * Tests [EMAIL PROTECTED] Set#equals(Object)}. */ @@ -213,21 +227,5 @@ getSet().hashCode(), getConfirmedSet().hashCode()); } - - /** - * Provides additional verifications for sets. - */ - protected void verify() { - super.verify(); - assertEquals("Sets should be equal", confirmed, collection); - assertEquals("Sets should have equal hashCodes", - confirmed.hashCode(), collection.hashCode()); - HashSet set = new HashSet(); - Iterator iterator = collection.iterator(); - while (iterator.hasNext()) { - assertTrue("Set.iterator should only return unique elements", - set.add(iterator.next())); - } - } } 1.8 +215 -217 jakarta-commons/collections/src/test/org/apache/commons/collections/TestBinaryHeap.java Index: TestBinaryHeap.java =================================================================== RCS file: /home/cvs/jakarta-commons/collections/src/test/org/apache/commons/collections/TestBinaryHeap.java,v retrieving revision 1.7 retrieving revision 1.8 diff -u -r1.7 -r1.8 --- TestBinaryHeap.java 13 Oct 2002 12:59:52 -0000 1.7 +++ TestBinaryHeap.java 12 Jul 2003 15:11:25 -0000 1.8 @@ -58,7 +58,6 @@ * <http://www.apache.org/>. * */ - package org.apache.commons.collections; import java.util.ArrayList; @@ -80,216 +79,215 @@ * @version $Id$ */ public class TestBinaryHeap extends TestCollection { - - public static Test suite() { - return new TestSuite(TestBinaryHeap.class); - } - - public TestBinaryHeap(String testName) { - super(testName); - } - - /** - * Return a new, empty [EMAIL PROTECTED] Object} to used for testing. - */ - public Collection makeCollection() { - return new BinaryHeap(); - } - - - public Collection makeConfirmedCollection() { - return new ArrayList(); - } - - public Collection makeConfirmedFullCollection() { - ArrayList list = new ArrayList(); - list.addAll(Arrays.asList(getFullElements())); - return list; - } - - public Object[] getFullElements() { - return getFullNonNullStringElements(); - } - - public Object[] getOtherElements() { - return getOtherNonNullStringElements(); - } - - public void testCollectionIteratorFailFast() { - } - - public void testBasicOps() { - BinaryHeap heap = new BinaryHeap(); - - assertTrue("heap should be empty after create", heap.isEmpty()); - - try { - heap.peek(); - fail("NoSuchElementException should be thrown if peek is called " + - "before any elements are inserted"); - } catch (NoSuchElementException e) { - // expected - } - - try { - heap.pop(); - fail("NoSuchElementException should be thrown if pop is called " + - "before any elements are inserted"); - } catch (NoSuchElementException e) { - // expected - } - - heap.insert("a"); - heap.insert("c"); - heap.insert("e"); - heap.insert("b"); - heap.insert("d"); - heap.insert("n"); - heap.insert("m"); - heap.insert("l"); - heap.insert("k"); - heap.insert("j"); - heap.insert("i"); - heap.insert("h"); - heap.insert("g"); - heap.insert("f"); - - assertTrue("heap should not be empty after inserts", !heap.isEmpty()); - - for(int i = 0; i < 14; i++) { - assertEquals("peek using default constructor should return " + - "minimum value in the binary heap", - String.valueOf((char)('a' + i)), heap.peek()); - - assertEquals("pop using default constructor should return minimum " + - "value in the binary heap", - String.valueOf((char)('a' + i)), heap.pop()); - - if(i + 1 < 14) { - assertTrue("heap should not be empty before all elements are popped", - !heap.isEmpty()); - } else { - assertTrue("heap should be empty after all elements are popped", - heap.isEmpty()); - } - } - - try { - heap.peek(); - fail("NoSuchElementException should be thrown if peek is called " + - "after all elements are popped"); - } catch (NoSuchElementException e) { - // expected - } - - try { - heap.pop(); - fail("NoSuchElementException should be thrown if pop is called " + - "after all elements are popped"); - } catch (NoSuchElementException e) { - // expected - } - } - - public void testBasicComparatorOps() { - BinaryHeap heap = - new BinaryHeap(new ReverseComparator(new ComparableComparator())); - - assertTrue("heap should be empty after create", heap.isEmpty()); - - try { - heap.peek(); - fail("NoSuchElementException should be thrown if peek is called " + - "before any elements are inserted"); - } catch (NoSuchElementException e) { - // expected - } - - try { - heap.pop(); - fail("NoSuchElementException should be thrown if pop is called " + - "before any elements are inserted"); - } catch (NoSuchElementException e) { - // expected - } - - heap.insert("a"); - heap.insert("c"); - heap.insert("e"); - heap.insert("b"); - heap.insert("d"); - heap.insert("n"); - heap.insert("m"); - heap.insert("l"); - heap.insert("k"); - heap.insert("j"); - heap.insert("i"); - heap.insert("h"); - heap.insert("g"); - heap.insert("f"); - - assertTrue("heap should not be empty after inserts", !heap.isEmpty()); - - for(int i = 0; i < 14; i++) { - - // note: since we're using a comparator that reverses items, the - // "minimum" item is "n", and the "maximum" item is "a". - - assertEquals("peek using default constructor should return " + - "minimum value in the binary heap", - String.valueOf((char)('n' - i)), heap.peek()); - - assertEquals("pop using default constructor should return minimum " + - "value in the binary heap", - String.valueOf((char)('n' - i)), heap.pop()); - - if(i + 1 < 14) { - assertTrue("heap should not be empty before all elements are popped", - !heap.isEmpty()); - } else { - assertTrue("heap should be empty after all elements are popped", - heap.isEmpty()); - } - } - - try { - heap.peek(); - fail("NoSuchElementException should be thrown if peek is called " + - "after all elements are popped"); - } catch (NoSuchElementException e) { - // expected - } - - try { - heap.pop(); - fail("NoSuchElementException should be thrown if pop is called " + - "after all elements are popped"); - } catch (NoSuchElementException e) { - // expected - } - } - - - public void verify() { - super.verify(); - BinaryHeap heap = (BinaryHeap)collection; - - Comparator c = heap.m_comparator; - if (c == null) c = ComparatorUtils.naturalComparator(); - if (!heap.m_isMinHeap) c = ComparatorUtils.reversedComparator(c); - - Object[] tree = heap.m_elements; - for (int i = 1; i <= heap.m_size; i++) { - Object parent = tree[i]; - if (i * 2 <= heap.m_size) { - assertTrue("Parent is less than or equal to its left child", - c.compare(parent, tree[i * 2]) <= 0); - } - if (i * 2 + 1 < heap.m_size) { - assertTrue("Parent is less than or equal to its right child", - c.compare(parent, tree[i * 2 + 1]) <= 0); - } - } - } -} + public static Test suite() { + return new TestSuite(TestBinaryHeap.class); + } + + public TestBinaryHeap(String testName) { + super(testName); + } + + //----------------------------------------------------------------------- + protected void verify() { + super.verify(); + BinaryHeap heap = (BinaryHeap) collection; + + Comparator c = heap.m_comparator; + if (c == null) + c = ComparatorUtils.naturalComparator(); + if (!heap.m_isMinHeap) + c = ComparatorUtils.reversedComparator(c); + + Object[] tree = heap.m_elements; + for (int i = 1; i <= heap.m_size; i++) { + Object parent = tree[i]; + if (i * 2 <= heap.m_size) { + assertTrue("Parent is less than or equal to its left child", c.compare(parent, tree[i * 2]) <= 0); + } + if (i * 2 + 1 < heap.m_size) { + assertTrue("Parent is less than or equal to its right child", c.compare(parent, tree[i * 2 + 1]) <= 0); + } + } + } + + //----------------------------------------------------------------------- + /** + * Overridden because UnboundedFifoBuffer isn't fail fast. + * @return false + */ + protected boolean isFailFastSupported() { + return false; + } + + //----------------------------------------------------------------------- + protected Collection makeConfirmedCollection() { + return new ArrayList(); + } + + protected Collection makeConfirmedFullCollection() { + ArrayList list = new ArrayList(); + list.addAll(Arrays.asList(getFullElements())); + return list; + } + + /** + * Return a new, empty [EMAIL PROTECTED] Object} to used for testing. + */ + protected Collection makeCollection() { + return new BinaryHeap(); + } + + //----------------------------------------------------------------------- + protected Object[] getFullElements() { + return getFullNonNullStringElements(); + } + + protected Object[] getOtherElements() { + return getOtherNonNullStringElements(); + } + + //----------------------------------------------------------------------- + public void testBasicOps() { + BinaryHeap heap = new BinaryHeap(); + + assertTrue("heap should be empty after create", heap.isEmpty()); + + try { + heap.peek(); + fail("NoSuchElementException should be thrown if peek is called before any elements are inserted"); + } catch (NoSuchElementException e) { + // expected + } + + try { + heap.pop(); + fail("NoSuchElementException should be thrown if pop is called before any elements are inserted"); + } catch (NoSuchElementException e) { + // expected + } + + heap.insert("a"); + heap.insert("c"); + heap.insert("e"); + heap.insert("b"); + heap.insert("d"); + heap.insert("n"); + heap.insert("m"); + heap.insert("l"); + heap.insert("k"); + heap.insert("j"); + heap.insert("i"); + heap.insert("h"); + heap.insert("g"); + heap.insert("f"); + + assertTrue("heap should not be empty after inserts", !heap.isEmpty()); + + for (int i = 0; i < 14; i++) { + assertEquals( + "peek using default constructor should return minimum value in the binary heap", + String.valueOf((char) ('a' + i)), + heap.peek()); + + assertEquals( + "pop using default constructor should return minimum value in the binary heap", + String.valueOf((char) ('a' + i)), + heap.pop()); + + if (i + 1 < 14) { + assertTrue("heap should not be empty before all elements are popped", !heap.isEmpty()); + } else { + assertTrue("heap should be empty after all elements are popped", heap.isEmpty()); + } + } + + try { + heap.peek(); + fail("NoSuchElementException should be thrown if peek is called after all elements are popped"); + } catch (NoSuchElementException e) { + // expected + } + + try { + heap.pop(); + fail("NoSuchElementException should be thrown if pop is called after all elements are popped"); + } catch (NoSuchElementException e) { + // expected + } + } + + public void testBasicComparatorOps() { + BinaryHeap heap = new BinaryHeap(new ReverseComparator(new ComparableComparator())); + + assertTrue("heap should be empty after create", heap.isEmpty()); + + try { + heap.peek(); + fail("NoSuchElementException should be thrown if peek is called before any elements are inserted"); + } catch (NoSuchElementException e) { + // expected + } + + try { + heap.pop(); + fail("NoSuchElementException should be thrown if pop is called before any elements are inserted"); + } catch (NoSuchElementException e) { + // expected + } + + heap.insert("a"); + heap.insert("c"); + heap.insert("e"); + heap.insert("b"); + heap.insert("d"); + heap.insert("n"); + heap.insert("m"); + heap.insert("l"); + heap.insert("k"); + heap.insert("j"); + heap.insert("i"); + heap.insert("h"); + heap.insert("g"); + heap.insert("f"); + + assertTrue("heap should not be empty after inserts", !heap.isEmpty()); + + for (int i = 0; i < 14; i++) { + + // note: since we're using a comparator that reverses items, the + // "minimum" item is "n", and the "maximum" item is "a". + + assertEquals( + "peek using default constructor should return minimum value in the binary heap", + String.valueOf((char) ('n' - i)), + heap.peek()); + + assertEquals( + "pop using default constructor should return minimum value in the binary heap", + String.valueOf((char) ('n' - i)), + heap.pop()); + + if (i + 1 < 14) { + assertTrue("heap should not be empty before all elements are popped", !heap.isEmpty()); + } else { + assertTrue("heap should be empty after all elements are popped", heap.isEmpty()); + } + } + + try { + heap.peek(); + fail("NoSuchElementException should be thrown if peek is called after all elements are popped"); + } catch (NoSuchElementException e) { + // expected + } + + try { + heap.pop(); + fail("NoSuchElementException should be thrown if pop is called after all elements are popped"); + } catch (NoSuchElementException e) { + // expected + } + } + +} 1.2 +5 -2 jakarta-commons/collections/src/test/org/apache/commons/collections/decorators/TestTransformedCollection.java Index: TestTransformedCollection.java =================================================================== RCS file: /home/cvs/jakarta-commons/collections/src/test/org/apache/commons/collections/decorators/TestTransformedCollection.java,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- TestTransformedCollection.java 11 May 2003 13:18:27 -0000 1.1 +++ TestTransformedCollection.java 12 Jul 2003 15:11:26 -0000 1.2 @@ -108,6 +108,7 @@ junit.textui.TestRunner.main(testCaseName); } + //----------------------------------------------------------------------- public Collection makeConfirmedCollection() { return new ArrayList(); } @@ -128,6 +129,7 @@ return TransformedCollection.decorate(list, NOOP_TRANSFORMER); } + //----------------------------------------------------------------------- protected Object[] getFullElements() { return new Object[] {"1", "3", "5", "7", "2", "4", "6"}; } @@ -136,6 +138,7 @@ return new Object[] {"9", "88", "678", "87", "98", "78", "99"}; } + //----------------------------------------------------------------------- public void testTransformedCollection() { Collection coll = TransformedCollection.decorate(new ArrayList(), STRING_TO_INTEGER_TRANSFORMER); assertEquals(0, coll.size());
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]