You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by tn...@apache.org on 2013/04/25 23:37:18 UTC
svn commit: r1475974 - in /commons/proper/collections/trunk/src/test:
java/org/apache/commons/collections4/queue/ resources/data/test/
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.