Author: tn Date: Thu Apr 25 21:37:18 2013 New Revision: 1475974 URL: http://svn.apache.org/r1475974 Log: Added an AbstractQueueTest as base class for all queue tests.
Added: commons/proper/collections/trunk/src/test/java/org/apache/commons/collections4/queue/AbstractQueueTest.java (with props) Modified: commons/proper/collections/trunk/src/test/java/org/apache/commons/collections4/queue/CircularFifoQueueTest.java commons/proper/collections/trunk/src/test/java/org/apache/commons/collections4/queue/PredicatedQueueTest.java commons/proper/collections/trunk/src/test/java/org/apache/commons/collections4/queue/TransformedQueueTest.java commons/proper/collections/trunk/src/test/java/org/apache/commons/collections4/queue/UnmodifiableQueueTest.java commons/proper/collections/trunk/src/test/resources/data/test/PredicatedQueue.fullCollection.version4.obj Added: commons/proper/collections/trunk/src/test/java/org/apache/commons/collections4/queue/AbstractQueueTest.java URL: http://svn.apache.org/viewvc/commons/proper/collections/trunk/src/test/java/org/apache/commons/collections4/queue/AbstractQueueTest.java?rev=1475974&view=auto ============================================================================== --- commons/proper/collections/trunk/src/test/java/org/apache/commons/collections4/queue/AbstractQueueTest.java (added) +++ commons/proper/collections/trunk/src/test/java/org/apache/commons/collections4/queue/AbstractQueueTest.java Thu Apr 25 21:37:18 2013 @@ -0,0 +1,209 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.commons.collections4.queue; + +import java.io.IOException; +import java.io.Serializable; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collection; +import java.util.Iterator; +import java.util.Queue; + +import org.apache.commons.collections4.collection.AbstractCollectionTest; + +/** + * Abstract test class for {@link java.util.Queue} methods and contracts. + * <p> + * To use, simply extend this class, and implement + * the {@link #makeObject} method. + * <p> + * If your {@link Queue} fails one of these tests by design, + * you may still use this base set of cases. Simply override the + * test case (method) your {@link Queue} fails or override one of the + * protected methods from AbstractCollectionTest. + * + * @since 4.0 + * @version $Id$ + */ +public abstract class AbstractQueueTest<E> extends AbstractCollectionTest<E> { + + /** + * JUnit constructor. + * + * @param testName the test class name + */ + public AbstractQueueTest(final String testName) { + super(testName); + } + + //----------------------------------------------------------------------- + /** + * Returns true if the collections produced by + * {@link #makeObject()} and {@link #makeFullCollection()} + * support the <code>set operation.<p> + * Default implementation returns true. Override if your collection + * class does not support set. + */ + public boolean isSetSupported() { + return true; + } + + //----------------------------------------------------------------------- + /** + * Verifies that the test queue implementation matches the confirmed queue + * implementation. + */ + @Override + public void verify() { + super.verify(); + final Iterator<E> iterator1 = getCollection().iterator(); + final Iterator<E> iterator2 = getConfirmed().iterator(); + while (iterator2.hasNext()) { + assertTrue(iterator1.hasNext()); + final Object o1 = iterator1.next(); + final Object o2 = iterator2.next(); + assertEquals(o1, o2); + } + } + + //----------------------------------------------------------------------- + /** + * Returns an empty {@link ArrayList}. + */ + @Override + public Collection<E> makeConfirmedCollection() { + final ArrayList<E> list = new ArrayList<E>(); + return list; + } + + /** + * Returns a full {@link ArrayList}. + */ + @Override + public Collection<E> makeConfirmedFullCollection() { + final ArrayList<E> list = new ArrayList<E>(); + list.addAll(Arrays.asList(getFullElements())); + return list; + } + + /** + * Returns {@link #makeObject()}. + * + * @return an empty queue to be used for testing + */ + @Override + public abstract Queue<E> makeObject(); + + /** + * {@inheritDoc} + */ + @Override + public Queue<E> makeFullCollection() { + // only works if queue supports optional "addAll(Collection)" + final Queue<E> queue = makeObject(); + queue.addAll(Arrays.asList(getFullElements())); + return queue; + } + + //----------------------------------------------------------------------- + /** + * Returns the {@link #collection} field cast to a {@link Queue}. + * + * @return the collection field as a Queue + */ + @Override + public Queue<E> getCollection() { + return (Queue<E>) super.getCollection(); + } + + //----------------------------------------------------------------------- + @SuppressWarnings("unchecked") + public void testEmptyQueueSerialization() throws IOException, ClassNotFoundException { + final Queue<E> queue = makeObject(); + if (!(queue instanceof Serializable && isTestSerialization())) { + return; + } + + final byte[] objekt = writeExternalFormToBytes((Serializable) queue); + final Queue<E> queue2 = (Queue<E>) readExternalFormFromBytes(objekt); + + assertEquals("Both queues are empty", 0, queue.size()); + assertEquals("Both queues are empty", 0, queue2.size()); + } + + @SuppressWarnings("unchecked") + public void testFullQueueSerialization() throws IOException, ClassNotFoundException { + final Queue<E> queue = makeFullCollection(); + final int size = getFullElements().length; + if (!(queue instanceof Serializable && isTestSerialization())) { + return; + } + + final byte[] objekt = writeExternalFormToBytes((Serializable) queue); + final Queue<E> queue2 = (Queue<E>) readExternalFormFromBytes(objekt); + + assertEquals("Both queues are same size", size, queue.size()); + assertEquals("Both queues are same size", size, queue2.size()); + } + + /** + * Compare the current serialized form of the Queue + * against the canonical version in SVN. + */ + @SuppressWarnings("unchecked") + public void testEmptyQueueCompatibility() throws IOException, ClassNotFoundException { + /** + * Create canonical objects with this code + Queue queue = makeEmptyQueue(); + if (!(queue instanceof Serializable)) return; + + writeExternalFormToDisk((Serializable) queue, getCanonicalEmptyCollectionName(queue)); + */ + + // test to make sure the canonical form has been preserved + final Queue<E> queue = makeObject(); + if (queue instanceof Serializable && !skipSerializedCanonicalTests() + && isTestSerialization()) { + final Queue<E> queue2 = (Queue<E>) readExternalFormFromDisk(getCanonicalEmptyCollectionName(queue)); + assertEquals("Queue is empty", 0, queue2.size()); + } + } + + /** + * Compare the current serialized form of the Queue + * against the canonical version in SVN. + */ + @SuppressWarnings("unchecked") + public void testFullQueueCompatibility() throws IOException, ClassNotFoundException { + /** + * Create canonical objects with this code + Queue queue = makeFullQueue(); + if (!(queue instanceof Serializable)) return; + + writeExternalFormToDisk((Serializable) queue, getCanonicalFullCollectionName(queue)); + */ + + // test to make sure the canonical form has been preserved + final Queue<E> queue = makeFullCollection(); + if(queue instanceof Serializable && !skipSerializedCanonicalTests() && isTestSerialization()) { + final Queue<E> queue2 = (Queue<E>) readExternalFormFromDisk(getCanonicalFullCollectionName(queue)); + assertEquals("Queues is the right size",queue.size(), queue2.size()); + } + } + +} Propchange: commons/proper/collections/trunk/src/test/java/org/apache/commons/collections4/queue/AbstractQueueTest.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: commons/proper/collections/trunk/src/test/java/org/apache/commons/collections4/queue/AbstractQueueTest.java ------------------------------------------------------------------------------ svn:keywords = Id Revision HeadURL Propchange: commons/proper/collections/trunk/src/test/java/org/apache/commons/collections4/queue/AbstractQueueTest.java ------------------------------------------------------------------------------ svn:mime-type = text/plain Modified: commons/proper/collections/trunk/src/test/java/org/apache/commons/collections4/queue/CircularFifoQueueTest.java URL: http://svn.apache.org/viewvc/commons/proper/collections/trunk/src/test/java/org/apache/commons/collections4/queue/CircularFifoQueueTest.java?rev=1475974&r1=1475973&r2=1475974&view=diff ============================================================================== --- commons/proper/collections/trunk/src/test/java/org/apache/commons/collections4/queue/CircularFifoQueueTest.java (original) +++ commons/proper/collections/trunk/src/test/java/org/apache/commons/collections4/queue/CircularFifoQueueTest.java Thu Apr 25 21:37:18 2013 @@ -27,25 +27,16 @@ import java.util.List; import java.util.NoSuchElementException; import java.util.Queue; -import junit.framework.Test; - -import org.apache.commons.collections4.BulkTest; -import org.apache.commons.collections4.collection.AbstractCollectionTest; - /** * Test cases for CircularFifoQueue. * * @since 4.0 * @version $Id$ */ -public class CircularFifoQueueTest<E> extends AbstractCollectionTest<E> { +public class CircularFifoQueueTest<E> extends AbstractQueueTest<E> { - public CircularFifoQueueTest(final String n) { - super(n); - } - - public static Test suite() { - return BulkTest.makeSuite(CircularFifoQueueTest.class); + public CircularFifoQueueTest(final String testName) { + super(testName); } //----------------------------------------------------------------------- @@ -115,7 +106,7 @@ public class CircularFifoQueueTest<E> ex * @return an empty CircularFifoQueue */ @Override - public Collection<E> makeObject() { + public Queue<E> makeObject() { return new CircularFifoQueue<E>(100); } @@ -156,7 +147,7 @@ public class CircularFifoQueueTest<E> ex final int size = getConfirmed().size(); for (int i = 0; i < size; i++) { final Object o1 = getCollection().remove(); - final Object o2 = getConfirmed().remove(0); + final Object o2 = ((List<?>) getConfirmed()).remove(0); assertEquals("Removed objects should be equal", o1, o2); verify(); } @@ -419,7 +410,7 @@ public class CircularFifoQueueTest<E> ex resetFull(); final CircularFifoQueue<E> queue = getCollection(); - final List<E> confirmed = getConfirmed(); + final List<E> confirmed = (List<E>) getConfirmed(); for (int i = 0; i < confirmed.size(); i++) { assertEquals(confirmed.get(i), queue.get(i)); } @@ -453,11 +444,4 @@ public class CircularFifoQueueTest<E> ex return (CircularFifoQueue<E>) super.getCollection(); } - /** - * {@inheritDoc} - */ - @Override - public List<E> getConfirmed() { - return (List<E>) super.getConfirmed(); - } } Modified: commons/proper/collections/trunk/src/test/java/org/apache/commons/collections4/queue/PredicatedQueueTest.java URL: http://svn.apache.org/viewvc/commons/proper/collections/trunk/src/test/java/org/apache/commons/collections4/queue/PredicatedQueueTest.java?rev=1475974&r1=1475973&r2=1475974&view=diff ============================================================================== --- commons/proper/collections/trunk/src/test/java/org/apache/commons/collections4/queue/PredicatedQueueTest.java (original) +++ commons/proper/collections/trunk/src/test/java/org/apache/commons/collections4/queue/PredicatedQueueTest.java Thu Apr 25 21:37:18 2013 @@ -24,6 +24,7 @@ import java.util.Queue; import org.apache.commons.collections4.Predicate; import org.apache.commons.collections4.collection.PredicatedCollectionTest; +import org.apache.commons.collections4.functors.TruePredicate; /** * Extension of {@link PredicatedCollectionTest} for exercising the @@ -32,7 +33,7 @@ import org.apache.commons.collections4.c * @since 4.0 * @version $Id$ */ -public class PredicatedQueueTest<E> extends PredicatedCollectionTest<E> { +public class PredicatedQueueTest<E> extends AbstractQueueTest<E> { public PredicatedQueueTest(final String testName) { super(testName); @@ -40,6 +41,8 @@ public class PredicatedQueueTest<E> exte //--------------------------------------------------------------- + protected Predicate<E> truePredicate = TruePredicate.<E>truePredicate(); + protected Queue<E> decorateCollection(final Queue<E> queue, final Predicate<E> predicate) { return PredicatedQueue.predicatedQueue(queue, predicate); } @@ -50,7 +53,7 @@ public class PredicatedQueueTest<E> exte } @Override - public Collection<E> makeFullCollection() { + public Queue<E> makeFullCollection() { final Queue<E> queue = new LinkedList<E>(); queue.addAll(Arrays.asList(getFullElements())); return decorateCollection(queue, truePredicate); @@ -70,6 +73,13 @@ public class PredicatedQueueTest<E> exte //------------------------------------------------------------ + protected Predicate<E> testPredicate = + new Predicate<E>() { + public boolean evaluate(final E o) { + return o instanceof String; + } + }; + public Queue<E> makeTestQueue() { return decorateCollection(new LinkedList<E>(), testPredicate); } Modified: commons/proper/collections/trunk/src/test/java/org/apache/commons/collections4/queue/TransformedQueueTest.java URL: http://svn.apache.org/viewvc/commons/proper/collections/trunk/src/test/java/org/apache/commons/collections4/queue/TransformedQueueTest.java?rev=1475974&r1=1475973&r2=1475974&view=diff ============================================================================== --- commons/proper/collections/trunk/src/test/java/org/apache/commons/collections4/queue/TransformedQueueTest.java (original) +++ commons/proper/collections/trunk/src/test/java/org/apache/commons/collections4/queue/TransformedQueueTest.java Thu Apr 25 21:37:18 2013 @@ -31,7 +31,7 @@ import org.apache.commons.collections4.c * @since 4.0 * @version $Id$ */ -public class TransformedQueueTest<E> extends AbstractCollectionTest<E> { +public class TransformedQueueTest<E> extends AbstractQueueTest<E> { public TransformedQueueTest(final String testName) { super(testName); Modified: commons/proper/collections/trunk/src/test/java/org/apache/commons/collections4/queue/UnmodifiableQueueTest.java URL: http://svn.apache.org/viewvc/commons/proper/collections/trunk/src/test/java/org/apache/commons/collections4/queue/UnmodifiableQueueTest.java?rev=1475974&r1=1475973&r2=1475974&view=diff ============================================================================== --- commons/proper/collections/trunk/src/test/java/org/apache/commons/collections4/queue/UnmodifiableQueueTest.java (original) +++ commons/proper/collections/trunk/src/test/java/org/apache/commons/collections4/queue/UnmodifiableQueueTest.java Thu Apr 25 21:37:18 2013 @@ -30,7 +30,7 @@ import org.apache.commons.collections4.c * @since 4.0 * @version $Id$ */ -public class UnmodifiableQueueTest<E> extends AbstractCollectionTest<E> { +public class UnmodifiableQueueTest<E> extends AbstractQueueTest<E> { public UnmodifiableQueueTest(final String testName) { super(testName); @@ -38,12 +38,12 @@ public class UnmodifiableQueueTest<E> ex //----------------------------------------------------------------------- @Override - public Collection<E> makeObject() { + public Queue<E> makeObject() { return UnmodifiableQueue.unmodifiableQueue(new LinkedList<E>()); } @Override - public Collection<E> makeFullCollection() { + public Queue<E> makeFullCollection() { final Queue<E> queue = new LinkedList<E>(); queue.addAll(Arrays.asList(getFullElements())); return UnmodifiableQueue.unmodifiableQueue(queue); Modified: commons/proper/collections/trunk/src/test/resources/data/test/PredicatedQueue.fullCollection.version4.obj URL: http://svn.apache.org/viewvc/commons/proper/collections/trunk/src/test/resources/data/test/PredicatedQueue.fullCollection.version4.obj?rev=1475974&r1=1475973&r2=1475974&view=diff ============================================================================== Binary files - no diff available.