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/11/11 21:28:23 UTC
svn commit: r1540833 [1/2] - in /commons/proper/collections/trunk: ./
src/changes/ src/main/java/org/apache/commons/collections4/bag/
src/site/xdoc/ src/test/java/org/apache/commons/collections4/bag/
src/test/resources/data/test/
Author: tn
Date: Mon Nov 11 20:28:22 2013
New Revision: 1540833
URL: http://svn.apache.org/r1540833
Log:
[COLLECTION-497,498,499] Refactored test framework for bag implementations, added missing tests, added CollectionSortedBag.
Added:
commons/proper/collections/trunk/src/test/java/org/apache/commons/collections4/bag/CollectionSortedBagTest.java (with props)
commons/proper/collections/trunk/src/test/java/org/apache/commons/collections4/bag/SynchronizedBagTest.java (with props)
commons/proper/collections/trunk/src/test/java/org/apache/commons/collections4/bag/UnmodifiableBagTest.java (with props)
commons/proper/collections/trunk/src/test/java/org/apache/commons/collections4/bag/UnmodifiableSortedBagTest.java (with props)
commons/proper/collections/trunk/src/test/resources/data/test/CollectionSortedBag.emptyCollection.version4.obj (with props)
commons/proper/collections/trunk/src/test/resources/data/test/CollectionSortedBag.fullCollection.version4.obj (with props)
commons/proper/collections/trunk/src/test/resources/data/test/SynchronizedBag.emptyCollection.version4.obj (with props)
commons/proper/collections/trunk/src/test/resources/data/test/SynchronizedBag.fullCollection.version4.obj (with props)
commons/proper/collections/trunk/src/test/resources/data/test/UnmodifiableBag.emptyCollection.version4.obj (with props)
commons/proper/collections/trunk/src/test/resources/data/test/UnmodifiableBag.fullCollection.version4.obj (with props)
commons/proper/collections/trunk/src/test/resources/data/test/UnmodifiableSortedBag.emptyCollection.version4.obj (with props)
commons/proper/collections/trunk/src/test/resources/data/test/UnmodifiableSortedBag.fullCollection.version4.obj (with props)
Modified:
commons/proper/collections/trunk/RELEASE-NOTES.txt
commons/proper/collections/trunk/src/changes/changes.xml
commons/proper/collections/trunk/src/main/java/org/apache/commons/collections4/bag/CollectionBag.java
commons/proper/collections/trunk/src/site/xdoc/release_4_0.xml
commons/proper/collections/trunk/src/test/java/org/apache/commons/collections4/bag/AbstractBagTest.java
commons/proper/collections/trunk/src/test/java/org/apache/commons/collections4/bag/AbstractSortedBagTest.java
commons/proper/collections/trunk/src/test/java/org/apache/commons/collections4/bag/CollectionBagTest.java
commons/proper/collections/trunk/src/test/java/org/apache/commons/collections4/bag/HashBagTest.java
commons/proper/collections/trunk/src/test/java/org/apache/commons/collections4/bag/PredicatedBagTest.java
commons/proper/collections/trunk/src/test/java/org/apache/commons/collections4/bag/PredicatedSortedBagTest.java
commons/proper/collections/trunk/src/test/java/org/apache/commons/collections4/bag/TransformedBagTest.java
commons/proper/collections/trunk/src/test/java/org/apache/commons/collections4/bag/TransformedSortedBagTest.java
commons/proper/collections/trunk/src/test/java/org/apache/commons/collections4/bag/TreeBagTest.java
commons/proper/collections/trunk/src/test/resources/data/test/CollectionBag.fullCollection.version4.obj
commons/proper/collections/trunk/src/test/resources/data/test/HashBag.fullCollection.version4.obj
commons/proper/collections/trunk/src/test/resources/data/test/PredicatedBag.fullCollection.version4.obj
commons/proper/collections/trunk/src/test/resources/data/test/PredicatedSortedBag.fullCollection.version4.obj
commons/proper/collections/trunk/src/test/resources/data/test/TransformedBag.fullCollection.version4.obj
commons/proper/collections/trunk/src/test/resources/data/test/TransformedSortedBag.fullCollection.version4.obj
commons/proper/collections/trunk/src/test/resources/data/test/TreeBag.fullCollection.version4.obj
Modified: commons/proper/collections/trunk/RELEASE-NOTES.txt
URL: http://svn.apache.org/viewvc/commons/proper/collections/trunk/RELEASE-NOTES.txt?rev=1540833&r1=1540832&r2=1540833&view=diff
==============================================================================
--- commons/proper/collections/trunk/RELEASE-NOTES.txt (original)
+++ commons/proper/collections/trunk/RELEASE-NOTES.txt Mon Nov 11 20:28:22 2013
@@ -47,6 +47,13 @@ Major changes since 3.2.1
Changes since 4.0-alpha1
------------------------
+ o [COLLECTIONS-499] Refactored the test framework for Bag implementations to extend from
+ "AbstractCollectionTest" by decorating the concrete Bag instance with
+ a CollectionBag or CollectionSortedBag.
+ o [COLLECTIONS-498] "CollectionBag" will now also respect the contract of the decorated bag in case
+ a null argument is provided to either removeAll or retainAll.
+ o [COLLECTIONS-497] Added bag decorator "CollectionSortedBag" which decorates a SortedBag to make it
+ comply with the Collection contract.
o [COLLECTIONS-496] "UnmodifiableBoundedCollection" does now also implement the marker interface "Unmodifiable"
similar as all other unmodifiable decorators.
o [COLLECTIONS-495] "UnmodifiableTrie#unmodifiableTrie(Trie)" will not decorate again an already unmodifiable Trie.
@@ -93,6 +100,7 @@ Removed classes
New classes
-----------
+ o [COLLECTIONS-497] CollectionSortedBag - decorates a SortedBag to make it comply with the Collection contract.
o [COLLECTIONS-468] CollectionBag - decorates another Bag to make it comply with the Collection contract.
o [COLLECTIONS-463] PushbackIterator - supports pushback of elements during iteration. Thanks to Andy Seaborne, Claude Warren.
o [COLLECTIONS-462] PeekingIterator - supports one-element lookahead during iteration. Thanks to Andy Seaborne, Claude Warren.
@@ -163,6 +171,9 @@ New features
Changed classes / methods
-------------------------
+ o [COLLECTIONS-499] Refactored the test framework for Bag implementations to extend from
+ "AbstractCollectionTest" by decorating the concrete Bag instance with
+ a CollectionBag or CollectionSortedBag.
o [COLLECTIONS-496] "UnmodifiableBoundedCollection" does now also implement the marker interface "Unmodifiable"
similar as all other unmodifiable decorators.
o [COLLECTIONS-495] "UnmodifiableTrie#unmodifiableTrie(Trie)" will not decorate again an already unmodifiable Trie.
@@ -231,6 +242,8 @@ Changed classes / methods
Fixed Bugs
----------
+ o [COLLECTIONS-498] "CollectionBag" will now also respect the contract of the decorated bag in case
+ a null argument is provided to either removeAll or retainAll.
o [COLLECTIONS-481] No collision detection/resolution was performed when calling "CompositeSet#addComposited(...)"
with more than one Set as argument. Additionally use varargs parameters instead of arrays
in CompositeSet and CompositeCollection constructor and addComposited method. Thanks to Hollis Waite.
Modified: commons/proper/collections/trunk/src/changes/changes.xml
URL: http://svn.apache.org/viewvc/commons/proper/collections/trunk/src/changes/changes.xml?rev=1540833&r1=1540832&r2=1540833&view=diff
==============================================================================
--- commons/proper/collections/trunk/src/changes/changes.xml (original)
+++ commons/proper/collections/trunk/src/changes/changes.xml Mon Nov 11 20:28:22 2013
@@ -38,39 +38,52 @@ Commons Collections is Java 5.
Users are encouraged to upgrade to this version as, in addition to new
features, this release includes numerous bug fixes.
">
+ <action issue="COLLECTIONS-499" dev="tn" type="update">
+ Refactored the test framework for Bag implementations to extend from
+ "AbstractCollectionTest" by decorating the concrete Bag instance with
+ a CollectionBag or CollectionSortedBag.
+ </action>
+ <action issue="COLLECTIONS-498" dev="tn" type="fix">
+ "CollectionBag" will now also respect the contract of the decorated bag in case
+ a null argument is provided to either removeAll or retainAll.
+ </action>
+ <action issue="COLLECTIONS-497" dev="tn" type="add">
+ Added bag decorator "CollectionSortedBag" which decorates a SortedBag to make it
+ comply with the Collection contract.
+ </action>
<action issue="COLLECTIONS-496" dev="tn" type="update">
- "UnmodifiableBoundedCollection" does now also implement the marker interface "Unmodifiable"
- similar as all other unmodifiable decorators.
+ "UnmodifiableBoundedCollection" does now also implement the marker interface "Unmodifiable"
+ similar as all other unmodifiable decorators.
</action>
<action issue="COLLECTIONS-495" dev="tn" type="fix">
- "UnmodifiableTrie#unmodifiableTrie(Trie)" will not decorate again an already
- unmodifiable Trie. Also the return type has been changed to "Trie" to be consistent
- with other Unmodifiable decorators.
+ "UnmodifiableTrie#unmodifiableTrie(Trie)" will not decorate again an already
+ unmodifiable Trie. Also the return type has been changed to "Trie" to be consistent
+ with other Unmodifiable decorators.
</action>
<action issue="COLLECTIONS-494" dev="tn" type="update" due-to="Emmanuel Bourg">
- Moved "Equator" interface to base package for consistency.
+ Moved "Equator" interface to base package for consistency.
</action>
<action issue="COLLECTIONS-488" dev="tn" type="add" due-to="Josh Cain">
- Added "CollectionsUtils#matchesAll(Iterable, Predicate)" to test if all elements
- of a collection match a given predicate.
+ Added "CollectionsUtils#matchesAll(Iterable, Predicate)" to test if all elements
+ of a collection match a given predicate.
</action>
<action issue="COLLECTIONS-485" dev="tn" type="fix" due-to="Hollis Waite">
- Accept wildcard input where possible, e.g. in copy-constructors, Unmodifiable* decorators
- and iterators.
+ Accept wildcard input where possible, e.g. in copy-constructors, Unmodifiable* decorators
+ and iterators.
</action>
<action issue="COLLECTIONS-481" dev="tn" type="fix" due-to="Hollis Waite">
- No collision detection/resolution was performed when calling "CompositeSet#addComposited(...)"
- with more than one Set as argument. Additionally use varargs parameters instead of arrays
- in CompositeSet and CompositeCollection constructor and addComposited method.
+ No collision detection/resolution was performed when calling "CompositeSet#addComposited(...)"
+ with more than one Set as argument. Additionally use varargs parameters instead of arrays
+ in CompositeSet and CompositeCollection constructor and addComposited method.
</action>
<action issue="COLLECTIONS-480" dev="tn" type="update" due-to="Hollis Waite">
- Narrow return type of "BidiMap#values()" to Set as the values are required to be unique.
+ Narrow return type of "BidiMap#values()" to Set as the values are required to be unique.
</action>
<action issue="COLLECTIONS-475" dev="tn" type="fix">
- Fixed conversion of timeout parameters in "PassiveExpiringMap".
+ Fixed conversion of timeout parameters in "PassiveExpiringMap".
</action>
<action issue="COLLECTIONS-474" dev="sebb" type="fix" due-to="Ning Chen">
- Exception in "ListOrderedMap#putAll" if map contains null values.
+ Exception in "ListOrderedMap#putAll" if map contains null values.
</action>
<action issue="COLLECTIONS-473" dev="tn" type="update" due-to="sebb">
Made field "collection" in class "AbstractCollectionDecorator" private and added
Modified: commons/proper/collections/trunk/src/main/java/org/apache/commons/collections4/bag/CollectionBag.java
URL: http://svn.apache.org/viewvc/commons/proper/collections/trunk/src/main/java/org/apache/commons/collections4/bag/CollectionBag.java?rev=1540833&r1=1540832&r2=1540833&view=diff
==============================================================================
--- commons/proper/collections/trunk/src/main/java/org/apache/commons/collections4/bag/CollectionBag.java (original)
+++ commons/proper/collections/trunk/src/main/java/org/apache/commons/collections4/bag/CollectionBag.java Mon Nov 11 20:28:22 2013
@@ -124,29 +124,35 @@ public final class CollectionBag<E>
@Override
public boolean removeAll(final Collection<?> coll) {
- boolean result = false;
if (coll != null) {
+ boolean result = false;
final Iterator<?> i = coll.iterator();
while (i.hasNext()) {
final Object obj = i.next();
final boolean changed = remove(obj, getCount(obj));
result = result || changed;
}
+ return result;
+ } else {
+ return decorated().removeAll(coll);
}
- return result;
}
@Override
public boolean retainAll(final Collection<?> coll) {
- boolean modified = false;
- final Iterator<E> e = iterator();
- while (e.hasNext()) {
- if (!coll.contains(e.next())) {
- e.remove();
- modified = true;
+ if (coll != null) {
+ boolean modified = false;
+ final Iterator<E> e = iterator();
+ while (e.hasNext()) {
+ if (!coll.contains(e.next())) {
+ e.remove();
+ modified = true;
+ }
}
+ return modified;
+ } else {
+ return decorated().retainAll(coll);
}
- return modified;
}
//-----------------------------------------------------------------------
Modified: commons/proper/collections/trunk/src/site/xdoc/release_4_0.xml
URL: http://svn.apache.org/viewvc/commons/proper/collections/trunk/src/site/xdoc/release_4_0.xml?rev=1540833&r1=1540832&r2=1540833&view=diff
==============================================================================
--- commons/proper/collections/trunk/src/site/xdoc/release_4_0.xml (original)
+++ commons/proper/collections/trunk/src/site/xdoc/release_4_0.xml Mon Nov 11 20:28:22 2013
@@ -98,6 +98,7 @@ have changed.
<center><h3>New Classes</h3></center>
<ul>
+<li>CollectionSortedBag - decorates a SortedBag to make it comply with the Collection contract.</li>
<li>CollectionBag - decorates another Bag to make it comply with the Collection contract.</li>
<li>PushbackIterator - supports pushback of elements during iteration. Thanks to Andy Seaborne, Claude Warren.</li>
<li>PeekingIterator - supports one-element lookahead during iteration. Thanks to Andy Seaborne, Claude Warren.</li>
@@ -155,6 +156,8 @@ have changed.
<center><h3>Changed classes / methods</h3></center>
<ul>
+<li>Refactored the test framework for Bag implementations to extend from "AbstractCollectionTest" by decorating
+ the concrete Bag instance with a CollectionBag or CollectionSortedBag.</li>
<li>"UnmodifiableBoundedCollection" does now also implement the marker interface "Unmodifiable"
similar as all other unmodifiable decorators.</li>
<li>"UnmodifiableTrie#unmodifiableTrie(Trie)" will not decorate again an already unmodifiable Trie.
@@ -197,6 +200,7 @@ have changed.
<center><h3>Bugfixes</h3></center>
<ul>
+<li>"CollectionBag" will now also respect the contract of the decorated bag in case a null argument is provided to either removeAll or retainAll.</li>
<li>Fixed collision detection/resolution when calling "CompositeSet#addComposited(...)" with more than one Set as argument.</li>
<li>Fixed conversion of timeout parameters in "PassiveExpiringMap".</li>
<li>ListOrderedMap#putAll(index, Object, Object) does not throw an exception anymore if the map contains null values. Additionally added javadoc clarification on the supported bounds for the index parameter. Thanks to Ning Chen.</li>
Modified: commons/proper/collections/trunk/src/test/java/org/apache/commons/collections4/bag/AbstractBagTest.java
URL: http://svn.apache.org/viewvc/commons/proper/collections/trunk/src/test/java/org/apache/commons/collections4/bag/AbstractBagTest.java?rev=1540833&r1=1540832&r2=1540833&view=diff
==============================================================================
--- commons/proper/collections/trunk/src/test/java/org/apache/commons/collections4/bag/AbstractBagTest.java (original)
+++ commons/proper/collections/trunk/src/test/java/org/apache/commons/collections4/bag/AbstractBagTest.java Mon Nov 11 20:28:22 2013
@@ -19,13 +19,19 @@ package org.apache.commons.collections4.
import java.io.IOException;
import java.io.Serializable;
import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
import java.util.ConcurrentModificationException;
+import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.NoSuchElementException;
+import java.util.Set;
-import org.apache.commons.collections4.AbstractObjectTest;
import org.apache.commons.collections4.Bag;
+import org.apache.commons.collections4.BulkTest;
+import org.apache.commons.collections4.collection.AbstractCollectionTest;
+import org.apache.commons.collections4.set.AbstractSetTest;
/**
* Abstract test class for {@link org.apache.commons.collections4.Bag Bag} methods and contracts.
@@ -36,14 +42,25 @@ import org.apache.commons.collections4.B
* If your bag fails one of these tests by design,
* you may still use this base set of cases. Simply override the
* test case (method) your bag fails.
+ * <p>
+ * <b>Note:</b> The Bag interface does not conform to the Collection interface
+ * so the generic collection tests from AbstractCollectionTest would normally fail.
+ * As a work-around since 4.0, a CollectionBag decorator can be used
+ * to make any Bag implementation comply to the Collection contract.
+ * <p>
+ * This abstract test class does wrap the concrete bag implementation
+ * with such a decorator, see the overridden {@link #resetEmpty()} and
+ * {@link #resetFull()} methods.
+ * <p>
+ * In addition to the generic collection tests (prefix testCollection) inherited
+ * from AbstractCollectionTest, there are test methods that test the "normal" Bag
+ * interface (prefix testBag). For Bag specific tests use the {@link #makeObject()} and
+ * {@link #makeFullCollection()} methods instead of {@link #resetEmpty()} and resetFull(),
+ * otherwise the collection will be wrapped by a {@link CollectionBag} decorator.
*
* @version $Id$
*/
-public abstract class AbstractBagTest<T> extends AbstractObjectTest {
-// TODO: this class should really extend from AbstractCollectionTest, but the bag
-// implementations currently do not conform to the Collection interface. Once
-// those are fixed or at least a strategy is made for resolving the issue, this
-// can be changed back to extend TestCollection instead.
+public abstract class AbstractBagTest<T> extends AbstractCollectionTest<T> {
/**
* JUnit constructor.
@@ -56,6 +73,25 @@ public abstract class AbstractBagTest<T>
//-----------------------------------------------------------------------
/**
+ * Returns an empty {@link ArrayList}.
+ */
+ @Override
+ public Collection<T> makeConfirmedCollection() {
+ final ArrayList<T> list = new ArrayList<T>();
+ return list;
+ }
+
+ /**
+ * Returns a full collection.
+ */
+ @Override
+ public Collection<T> makeConfirmedFullCollection() {
+ final Collection<T> coll = makeConfirmedCollection();
+ coll.addAll(Arrays.asList(getFullElements()));
+ return coll;
+ }
+
+ /**
* Return a new, empty bag to used for testing.
*
* @return the bag to be tested
@@ -63,9 +99,48 @@ public abstract class AbstractBagTest<T>
@Override
public abstract Bag<T> makeObject();
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public Bag<T> makeFullCollection() {
+ final Bag<T> bag = makeObject();
+ bag.addAll(Arrays.asList(getFullElements()));
+ return bag;
+ }
+
+ //-----------------------------------------------------------------------
+
+ @Override
+ public void resetEmpty() {
+ this.setCollection(CollectionBag.collectionBag(makeObject()));
+ this.setConfirmed(makeConfirmedCollection());
+ }
+
+ @Override
+ public void resetFull() {
+ this.setCollection(CollectionBag.collectionBag(makeFullCollection()));
+ this.setConfirmed(makeConfirmedFullCollection());
+ }
+
+ //-----------------------------------------------------------------------
+ /**
+ * Returns the {@link #collection} field cast to a {@link Bag}.
+ *
+ * @return the collection field as a Bag
+ */
+ @Override
+ public Bag<T> getCollection() {
+ return (Bag<T>) super.getCollection();
+ }
+
//-----------------------------------------------------------------------
@SuppressWarnings("unchecked")
public void testBagAdd() {
+ if (!isAddSupported()) {
+ return;
+ }
+
final Bag<T> bag = makeObject();
bag.add((T) "A");
assertTrue("Should contain 'A'", bag.contains("A"));
@@ -82,6 +157,11 @@ public abstract class AbstractBagTest<T>
public void testBagEqualsSelf() {
final Bag<T> bag = makeObject();
assertTrue(bag.equals(bag));
+
+ if (!isAddSupported()) {
+ return;
+ }
+
bag.add((T) "elt");
assertTrue(bag.equals(bag));
bag.add((T) "elt"); // again
@@ -91,7 +171,11 @@ public abstract class AbstractBagTest<T>
}
@SuppressWarnings("unchecked")
- public void testRemove() {
+ public void testBagRemove() {
+ if (!isRemoveSupported()) {
+ return;
+ }
+
final Bag<T> bag = makeObject();
bag.add((T) "A");
assertEquals("Should have count of 1", 1, bag.getCount("A"));
@@ -111,7 +195,11 @@ public abstract class AbstractBagTest<T>
}
@SuppressWarnings("unchecked")
- public void testRemoveAll() {
+ public void testBagRemoveAll() {
+ if (!isRemoveSupported()) {
+ return;
+ }
+
final Bag<T> bag = makeObject();
bag.add((T) "A", 2);
assertEquals("Should have count of 2", 2, bag.getCount("A"));
@@ -129,7 +217,11 @@ public abstract class AbstractBagTest<T>
}
@SuppressWarnings("unchecked")
- public void testContains() {
+ public void testBagContains() {
+ if (!isAddSupported()) {
+ return;
+ }
+
final Bag<T> bag = makeObject();
assertEquals("Bag does not have at least 1 'A'", false, bag.contains("A"));
@@ -149,7 +241,11 @@ public abstract class AbstractBagTest<T>
}
@SuppressWarnings("unchecked")
- public void testContainsAll() {
+ public void testBagContainsAll() {
+ if (!isAddSupported()) {
+ return;
+ }
+
final Bag<T> bag = makeObject();
final List<String> known = new ArrayList<String>();
final List<String> known1A = new ArrayList<String>();
@@ -199,7 +295,11 @@ public abstract class AbstractBagTest<T>
}
@SuppressWarnings("unchecked")
- public void testSize() {
+ public void testBagSize() {
+ if (!isAddSupported()) {
+ return;
+ }
+
final Bag<T> bag = makeObject();
assertEquals("Should have 0 total items", 0, bag.size());
bag.add((T) "A");
@@ -220,7 +320,11 @@ public abstract class AbstractBagTest<T>
}
@SuppressWarnings("unchecked")
- public void testRetainAll() {
+ public void testBagRetainAll() {
+ if (!isAddSupported()) {
+ return;
+ }
+
final Bag<T> bag = makeObject();
bag.add((T) "A");
bag.add((T) "A");
@@ -236,7 +340,11 @@ public abstract class AbstractBagTest<T>
}
@SuppressWarnings("unchecked")
- public void testIterator() {
+ public void testBagIterator() {
+ if (!isAddSupported()) {
+ return;
+ }
+
final Bag<T> bag = makeObject();
bag.add((T) "A");
bag.add((T) "A");
@@ -263,7 +371,11 @@ public abstract class AbstractBagTest<T>
}
@SuppressWarnings("unchecked")
- public void testIteratorFail() {
+ public void testBagIteratorFail() {
+ if (!isAddSupported()) {
+ return;
+ }
+
final Bag<T> bag = makeObject();
bag.add((T) "A");
bag.add((T) "A");
@@ -280,7 +392,11 @@ public abstract class AbstractBagTest<T>
}
@SuppressWarnings("unchecked")
- public void testIteratorFailNoMore() {
+ public void testBagIteratorFailNoMore() {
+ if (!isAddSupported()) {
+ return;
+ }
+
final Bag<T> bag = makeObject();
bag.add((T) "A");
bag.add((T) "A");
@@ -298,7 +414,11 @@ public abstract class AbstractBagTest<T>
}
@SuppressWarnings("unchecked")
- public void testIteratorFailDoubleRemove() {
+ public void testBagIteratorFailDoubleRemove() {
+ if (!isAddSupported()) {
+ return;
+ }
+
final Bag<T> bag = makeObject();
bag.add((T) "A");
bag.add((T) "A");
@@ -322,7 +442,11 @@ public abstract class AbstractBagTest<T>
}
@SuppressWarnings("unchecked")
- public void testIteratorRemoveProtectsInvariants() {
+ public void testBagIteratorRemoveProtectsInvariants() {
+ if (!isAddSupported()) {
+ return;
+ }
+
final Bag<T> bag = makeObject();
bag.add((T) "A");
bag.add((T) "A");
@@ -344,7 +468,11 @@ public abstract class AbstractBagTest<T>
}
@SuppressWarnings("unchecked")
- public void testToArray() {
+ public void testBagToArray() {
+ if (!isAddSupported()) {
+ return;
+ }
+
final Bag<T> bag = makeObject();
bag.add((T) "A");
bag.add((T) "A");
@@ -364,7 +492,11 @@ public abstract class AbstractBagTest<T>
}
@SuppressWarnings("unchecked")
- public void testToArrayPopulate() {
+ public void testBagToArrayPopulate() {
+ if (!isAddSupported()) {
+ return;
+ }
+
final Bag<T> bag = makeObject();
bag.add((T) "A");
bag.add((T) "A");
@@ -385,7 +517,11 @@ public abstract class AbstractBagTest<T>
//-----------------------------------------------------------------------
@SuppressWarnings("unchecked")
- public void testEquals() {
+ public void testBagEquals() {
+ if (!isAddSupported()) {
+ return;
+ }
+
final Bag<T> bag = makeObject();
final Bag<T> bag2 = makeObject();
assertEquals(true, bag.equals(bag2));
@@ -405,7 +541,11 @@ public abstract class AbstractBagTest<T>
}
@SuppressWarnings("unchecked")
- public void testEqualsHashBag() {
+ public void testBagEqualsHashBag() {
+ if (!isAddSupported()) {
+ return;
+ }
+
final Bag<T> bag = makeObject();
final Bag<T> bag2 = new HashBag<T>();
assertEquals(true, bag.equals(bag2));
@@ -425,7 +565,11 @@ public abstract class AbstractBagTest<T>
}
@SuppressWarnings("unchecked")
- public void testHashCode() {
+ public void testBagHashCode() {
+ if (!isAddSupported()) {
+ return;
+ }
+
final Bag<T> bag = makeObject();
final Bag<T> bag2 = makeObject();
assertEquals(0, bag.hashCode());
@@ -452,39 +596,86 @@ public abstract class AbstractBagTest<T>
}
//-----------------------------------------------------------------------
- public void testEmptyBagSerialization() throws IOException, ClassNotFoundException {
- final Bag<T> bag = makeObject();
- if (!(bag instanceof Serializable && isTestSerialization())) {
- return;
+
+ /**
+ * Bulk test {@link Bag#uniqueSet()}. This method runs through all of
+ * the tests in {@link AbstractSetTest}.
+ * After modification operations, {@link #verify()} is invoked to ensure
+ * that the bag and the other collection views are still valid.
+ *
+ * @return a {@link AbstractSetTest} instance for testing the bag's unique set
+ */
+ public BulkTest bulkTestBagUniqueSet() {
+ return new TestBagUniqueSet();
+ }
+
+ public class TestBagUniqueSet extends AbstractSetTest<T> {
+ public TestBagUniqueSet() {
+ super("");
}
- final byte[] objekt = writeExternalFormToBytes((Serializable) bag);
- final Bag<?> bag2 = (Bag<?>) readExternalFormFromBytes(objekt);
+ @Override
+ public T[] getFullElements() {
+ return AbstractBagTest.this.getFullElements();
+ }
- assertEquals("Bag should be empty",0, bag.size());
- assertEquals("Bag should be empty",0, bag2.size());
- }
+ @Override
+ public T[] getOtherElements() {
+ return AbstractBagTest.this.getOtherElements();
+ }
- @SuppressWarnings("unchecked")
- public void testFullBagSerialization() throws IOException, ClassNotFoundException {
- final Bag<T> bag = makeObject();
- bag.add((T) "A");
- bag.add((T) "A");
- bag.add((T) "B");
- bag.add((T) "B");
- bag.add((T) "C");
- final int size = bag.size();
- if (!(bag instanceof Serializable && isTestSerialization())) {
- return;
+ @Override
+ public Set<T> makeObject() {
+ return AbstractBagTest.this.makeObject().uniqueSet();
}
- final byte[] objekt = writeExternalFormToBytes((Serializable) bag);
- final Bag<?> bag2 = (Bag<?>) readExternalFormFromBytes(objekt);
+ @Override
+ public Set<T> makeFullCollection() {
+ return AbstractBagTest.this.makeFullCollection().uniqueSet();
+ }
+
+ @Override
+ public boolean isNullSupported() {
+ return AbstractBagTest.this.isNullSupported();
+ }
+
+ @Override
+ public boolean isAddSupported() {
+ return false;
+ }
+
+ @Override
+ public boolean isRemoveSupported() {
+ return false;
+ }
- assertEquals("Bag should be same size", size, bag.size());
- assertEquals("Bag should be same size", size, bag2.size());
+ @Override
+ public boolean isTestSerialization() {
+ return false;
+ }
+
+ @Override
+ public void resetEmpty() {
+ AbstractBagTest.this.resetEmpty();
+ TestBagUniqueSet.this.setCollection(AbstractBagTest.this.getCollection().uniqueSet());
+ TestBagUniqueSet.this.setConfirmed(new HashSet<T>(AbstractBagTest.this.getConfirmed()));
+ }
+
+ @Override
+ public void resetFull() {
+ AbstractBagTest.this.resetFull();
+ TestBagUniqueSet.this.setCollection(AbstractBagTest.this.getCollection().uniqueSet());
+ TestBagUniqueSet.this.setConfirmed(new HashSet<T>(AbstractBagTest.this.getConfirmed()));
+ }
+
+ @Override
+ public void verify() {
+ super.verify();
+ }
}
+ //-----------------------------------------------------------------------
+
/**
* Compare the current serialized form of the Bag
* against the canonical version in SVN.
@@ -503,15 +694,9 @@ public abstract class AbstractBagTest<T>
* Compare the current serialized form of the Bag
* against the canonical version in SVN.
*/
- @SuppressWarnings("unchecked")
public void testFullBagCompatibility() throws IOException, ClassNotFoundException {
// test to make sure the canonical form has been preserved
- final Bag<T> bag = makeObject();
- bag.add((T) "A");
- bag.add((T) "A");
- bag.add((T) "B");
- bag.add((T) "B");
- bag.add((T) "C");
+ final Bag<T> bag = makeFullCollection();
if (bag instanceof Serializable && !skipSerializedCanonicalTests() && isTestSerialization()) {
final Bag<?> bag2 = (Bag<?>) readExternalFormFromDisk(getCanonicalFullCollectionName(bag));
assertEquals("Bag is the right size",bag.size(), bag2.size());
Modified: commons/proper/collections/trunk/src/test/java/org/apache/commons/collections4/bag/AbstractSortedBagTest.java
URL: http://svn.apache.org/viewvc/commons/proper/collections/trunk/src/test/java/org/apache/commons/collections4/bag/AbstractSortedBagTest.java?rev=1540833&r1=1540832&r2=1540833&view=diff
==============================================================================
--- commons/proper/collections/trunk/src/test/java/org/apache/commons/collections4/bag/AbstractSortedBagTest.java (original)
+++ commons/proper/collections/trunk/src/test/java/org/apache/commons/collections4/bag/AbstractSortedBagTest.java Mon Nov 11 20:28:22 2013
@@ -16,6 +16,8 @@
*/
package org.apache.commons.collections4.bag;
+import java.util.Iterator;
+
import org.apache.commons.collections4.SortedBag;
/**
@@ -32,11 +34,126 @@ public abstract class AbstractSortedBagT
super(testName);
}
+ //-----------------------------------------------------------------------
+ /**
+ * Verification extension, will check the order of elements,
+ * the sets should already be verified equal.
+ */
+ @Override
+ public void verify() {
+ super.verify();
+
+ // Check that iterator returns elements in order and first() and last()
+ // are consistent
+ final Iterator<T> colliter = getCollection().iterator();
+ final Iterator<T> confiter = getConfirmed().iterator();
+ T first = null;
+ T last = null;
+ while (colliter.hasNext()) {
+ if (first == null) {
+ first = colliter.next();
+ last = first;
+ } else {
+ last = colliter.next();
+ }
+ assertEquals("Element appears to be out of order.", last, confiter.next());
+ }
+ if (getCollection().size() > 0) {
+ assertEquals("Incorrect element returned by first().", first,
+ getCollection().first());
+ assertEquals("Incorrect element returned by last().", last,
+ getCollection().last());
+ }
+ }
+
+ //-----------------------------------------------------------------------
+ /**
+ * Overridden because SortedBags don't allow null elements (normally).
+ * @return false
+ */
+ @Override
+ public boolean isNullSupported() {
+ return false;
+ }
+
/**
* {@inheritDoc}
*/
@Override
public abstract SortedBag<T> makeObject();
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public SortedBag<T> makeFullCollection() {
+ return (SortedBag<T>) super.makeFullCollection();
+ }
+
+ /**
+ * Returns an empty {@link TreeBag} for use in modification testing.
+ *
+ * @return a confirmed empty collection
+ */
+ @Override
+ public SortedBag<T> makeConfirmedCollection() {
+ return new TreeBag<T>();
+ }
+
+ //-----------------------------------------------------------------------
+
+ @Override
+ public void resetEmpty() {
+ this.setCollection(CollectionSortedBag.collectionSortedBag(makeObject()));
+ this.setConfirmed(makeConfirmedCollection());
+ }
+
+ @Override
+ public void resetFull() {
+ this.setCollection(CollectionSortedBag.collectionSortedBag(makeFullCollection()));
+ this.setConfirmed(makeConfirmedFullCollection());
+ }
+
+ //-----------------------------------------------------------------------
+ /**
+ * Override to return comparable objects.
+ */
+ @Override
+ @SuppressWarnings("unchecked")
+ public T[] getFullNonNullElements() {
+ final Object[] elements = new Object[30];
+
+ for (int i = 0; i < 30; i++) {
+ elements[i] = Integer.valueOf(i + i + 1);
+ }
+ return (T[]) elements;
+ }
+
+ /**
+ * Override to return comparable objects.
+ */
+ @Override
+ @SuppressWarnings("unchecked")
+ public T[] getOtherNonNullElements() {
+ final Object[] elements = new Object[30];
+ for (int i = 0; i < 30; i++) {
+ elements[i] = Integer.valueOf(i + i + 2);
+ }
+ return (T[]) elements;
+ }
+
+ //-----------------------------------------------------------------------
+ /**
+ * Returns the {@link #collection} field cast to a {@link SortedBag}.
+ *
+ * @return the collection field as a SortedBag
+ */
+ @Override
+ public SortedBag<T> getCollection() {
+ return (SortedBag<T>) super.getCollection();
+ }
+
+ //-----------------------------------------------------------------------
+
// TODO: Add the SortedBag tests!
}
Modified: commons/proper/collections/trunk/src/test/java/org/apache/commons/collections4/bag/CollectionBagTest.java
URL: http://svn.apache.org/viewvc/commons/proper/collections/trunk/src/test/java/org/apache/commons/collections4/bag/CollectionBagTest.java?rev=1540833&r1=1540832&r2=1540833&view=diff
==============================================================================
--- commons/proper/collections/trunk/src/test/java/org/apache/commons/collections4/bag/CollectionBagTest.java (original)
+++ commons/proper/collections/trunk/src/test/java/org/apache/commons/collections4/bag/CollectionBagTest.java Mon Nov 11 20:28:22 2013
@@ -21,10 +21,6 @@ import java.io.Serializable;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
-import java.util.ConcurrentModificationException;
-import java.util.Iterator;
-import java.util.List;
-import java.util.NoSuchElementException;
import org.apache.commons.collections4.Bag;
import org.apache.commons.collections4.bag.HashBag;
@@ -32,6 +28,9 @@ import org.apache.commons.collections4.c
/**
* Test class for {@link CollectionBag}.
+ * <p>
+ * Note: This test is mainly for serialization support, the CollectionBag decorator
+ * is extensively used and tested in AbstractBagTest.
*
* @version $Id$
* @since 4.0
@@ -82,439 +81,13 @@ public class CollectionBagTest<T> extend
}
// public void testCreate() throws Exception {
-// Bag bag = makeObject();
-// writeExternalFormToDisk((java.io.Serializable) bag, "src/test/resources/data/test/CollectionBag.emptyCollection.version4.obj");
-// bag = makeObject();
-// bag.add("A");
-// bag.add("A");
-// bag.add("B");
-// bag.add("B");
-// bag.add("C");
-// writeExternalFormToDisk((java.io.Serializable) bag, "src/test/resources/data/test/CollectionBag.fullCollection.version4.obj");
+// resetEmpty();
+// writeExternalFormToDisk((java.io.Serializable) getCollection(), "src/test/resources/data/test/CollectionBag.emptyCollection.version4.obj");
+// resetFull();
+// writeExternalFormToDisk((java.io.Serializable) getCollection(), "src/test/resources/data/test/CollectionBag.fullCollection.version4.obj");
// }
-
- //-----------------------------------------------------------------------
- @SuppressWarnings("unchecked")
- public void testBagAdd() {
- final Bag<T> bag = makeObject();
- bag.add((T) "A");
- assertTrue("Should contain 'A'", bag.contains("A"));
- assertEquals("Should have count of 1", 1, bag.getCount("A"));
- bag.add((T) "A");
- assertTrue("Should contain 'A'", bag.contains("A"));
- assertEquals("Should have count of 2", 2, bag.getCount("A"));
- bag.add((T) "B");
- assertTrue(bag.contains("A"));
- assertTrue(bag.contains("B"));
- }
-
- @SuppressWarnings("unchecked")
- public void testBagEqualsSelf() {
- final Bag<T> bag = makeObject();
- assertTrue(bag.equals(bag));
- bag.add((T) "elt");
- assertTrue(bag.equals(bag));
- bag.add((T) "elt"); // again
- assertTrue(bag.equals(bag));
- bag.add((T) "elt2");
- assertTrue(bag.equals(bag));
- }
-
- @SuppressWarnings("unchecked")
- public void testRemove() {
- final Bag<T> bag = makeObject();
- bag.add((T) "A");
- assertEquals("Should have count of 1", 1, bag.getCount("A"));
- bag.remove("A");
- assertEquals("Should have count of 0", 0, bag.getCount("A"));
- bag.add((T) "A");
- bag.add((T) "A");
- bag.add((T) "A");
- bag.add((T) "A");
- assertEquals("Should have count of 4", 4, bag.getCount("A"));
- bag.remove("A", 0);
- assertEquals("Should have count of 4", 4, bag.getCount("A"));
- bag.remove("A", 2);
- assertEquals("Should have count of 2", 2, bag.getCount("A"));
- bag.remove("A");
- assertEquals("Should have count of 1", 1, bag.getCount("A"));
- }
-
- @SuppressWarnings("unchecked")
- public void testRemoveAll() {
- final Bag<T> bag = makeObject();
- bag.add((T) "A", 2);
- assertEquals("Should have count of 2", 2, bag.getCount("A"));
- bag.add((T) "B");
- bag.add((T) "C");
- assertEquals("Should have count of 4", 4, bag.size());
- final List<String> delete = new ArrayList<String>();
- delete.add("A");
- delete.add("B");
- bag.removeAll(delete);
- assertEquals("Should have count of 0", 0, bag.getCount("A"));
- assertEquals("Should have count of 0", 0, bag.getCount("B"));
- assertEquals("Should have count of 1", 1, bag.getCount("C"));
- assertEquals("Should have count of 1", 1, bag.size());
- }
-
- @SuppressWarnings("unchecked")
- public void testContains() {
- final Bag<T> bag = makeObject();
-
- assertEquals("Bag does not have at least 1 'A'", false, bag.contains("A"));
- assertEquals("Bag does not have at least 1 'B'", false, bag.contains("B"));
-
- bag.add((T) "A"); // bag 1A
- assertEquals("Bag has at least 1 'A'", true, bag.contains("A"));
- assertEquals("Bag does not have at least 1 'B'", false, bag.contains("B"));
-
- bag.add((T) "A"); // bag 2A
- assertEquals("Bag has at least 1 'A'", true, bag.contains("A"));
- assertEquals("Bag does not have at least 1 'B'", false, bag.contains("B"));
-
- bag.add((T) "B"); // bag 2A,1B
- assertEquals("Bag has at least 1 'A'", true, bag.contains("A"));
- assertEquals("Bag has at least 1 'B'", true, bag.contains("B"));
- }
-
- @SuppressWarnings("unchecked")
- public void testContainsAll() {
- final Bag<T> bag = makeObject();
- final List<String> known = new ArrayList<String>();
- final List<String> known1A = new ArrayList<String>();
- known1A.add("A");
- final List<String> known2A = new ArrayList<String>();
- known2A.add("A");
- known2A.add("A");
- final List<String> known1B = new ArrayList<String>();
- known1B.add("B");
- final List<String> known1A1B = new ArrayList<String>();
- known1A1B.add("A");
- known1A1B.add("B");
-
- assertEquals("Bag containsAll of empty", true, bag.containsAll(known));
- assertEquals("Bag does not containsAll of 1 'A'", false, bag.containsAll(known1A));
- assertEquals("Bag does not containsAll of 2 'A'", false, bag.containsAll(known2A));
- assertEquals("Bag does not containsAll of 1 'B'", false, bag.containsAll(known1B));
- assertEquals("Bag does not containsAll of 1 'A' 1 'B'", false, bag.containsAll(known1A1B));
-
- bag.add((T) "A"); // bag 1A
- assertEquals("Bag containsAll of empty", true, bag.containsAll(known));
- assertEquals("Bag containsAll of 1 'A'", true, bag.containsAll(known1A));
- assertEquals("Bag does containsAll of 2 'A'", true, bag.containsAll(known2A));
- assertEquals("Bag does not containsAll of 1 'B'", false, bag.containsAll(known1B));
- assertEquals("Bag does not containsAll of 1 'A' 1 'B'", false, bag.containsAll(known1A1B));
-
- bag.add((T) "A"); // bag 2A
- assertEquals("Bag containsAll of empty", true, bag.containsAll(known));
- assertEquals("Bag containsAll of 1 'A'", true, bag.containsAll(known1A));
- assertEquals("Bag containsAll of 2 'A'", true, bag.containsAll(known2A));
- assertEquals("Bag does not containsAll of 1 'B'", false, bag.containsAll(known1B));
- assertEquals("Bag does not containsAll of 1 'A' 1 'B'", false, bag.containsAll(known1A1B));
-
- bag.add((T) "A"); // bag 3A
- assertEquals("Bag containsAll of empty", true, bag.containsAll(known));
- assertEquals("Bag containsAll of 1 'A'", true, bag.containsAll(known1A));
- assertEquals("Bag containsAll of 2 'A'", true, bag.containsAll(known2A));
- assertEquals("Bag does not containsAll of 1 'B'", false, bag.containsAll(known1B));
- assertEquals("Bag does not containsAll of 1 'A' 1 'B'", false, bag.containsAll(known1A1B));
-
- bag.add((T) "B"); // bag 3A1B
- assertEquals("Bag containsAll of empty", true, bag.containsAll(known));
- assertEquals("Bag containsAll of 1 'A'", true, bag.containsAll(known1A));
- assertEquals("Bag containsAll of 2 'A'", true, bag.containsAll(known2A));
- assertEquals("Bag containsAll of 1 'B'", true, bag.containsAll(known1B));
- assertEquals("Bag containsAll of 1 'A' 1 'B'", true, bag.containsAll(known1A1B));
- }
-
- @SuppressWarnings("unchecked")
- public void testSize() {
- final Bag<T> bag = makeObject();
- assertEquals("Should have 0 total items", 0, bag.size());
- bag.add((T) "A");
- assertEquals("Should have 1 total items", 1, bag.size());
- bag.add((T) "A");
- assertEquals("Should have 2 total items", 2, bag.size());
- bag.add((T) "A");
- assertEquals("Should have 3 total items", 3, bag.size());
- bag.add((T) "B");
- assertEquals("Should have 4 total items", 4, bag.size());
- bag.add((T) "B");
- assertEquals("Should have 5 total items", 5, bag.size());
- bag.remove("A", 2);
- assertEquals("Should have 1 'A'", 1, bag.getCount("A"));
- assertEquals("Should have 3 total items", 3, bag.size());
- // this should only remove 1 occurrence of B
- bag.remove("B");
- assertEquals("Should have 2 total item", 2, bag.size());
- }
-
- @SuppressWarnings("unchecked")
- public void testRetainAll() {
- final Bag<T> bag = makeObject();
- bag.add((T) "A");
- bag.add((T) "A");
- bag.add((T) "A");
- bag.add((T) "B");
- bag.add((T) "B");
- bag.add((T) "C");
- final List<String> retains = new ArrayList<String>();
- retains.add("B");
- retains.add("C");
- bag.retainAll(retains);
- assertEquals("Should have 3 total items", 3, bag.size());
- }
-
- @SuppressWarnings("unchecked")
- public void testIterator() {
- final Bag<T> bag = makeObject();
- bag.add((T) "A");
- bag.add((T) "A");
- bag.add((T) "B");
- assertEquals("Bag should have 3 items", 3, bag.size());
- final Iterator<T> i = bag.iterator();
-
- boolean foundA = false;
- while (i.hasNext()) {
- final String element = (String) i.next();
- // ignore the first A, remove the second via Iterator.remove()
- if (element.equals("A")) {
- if (foundA == false) {
- foundA = true;
- } else {
- i.remove();
- }
- }
- }
-
- assertTrue("Bag should still contain 'A'", bag.contains("A"));
- assertEquals("Bag should have 2 items", 2, bag.size());
- assertEquals("Bag should have 1 'A'", 1, bag.getCount("A"));
- }
-
- @SuppressWarnings("unchecked")
- public void testIteratorFail() {
- final Bag<T> bag = makeObject();
- bag.add((T) "A");
- bag.add((T) "A");
- bag.add((T) "B");
- final Iterator<T> it = bag.iterator();
- it.next();
- bag.remove("A");
- try {
- it.next();
- fail("Should throw ConcurrentModificationException");
- } catch (final ConcurrentModificationException e) {
- // expected
- }
- }
-
- @SuppressWarnings("unchecked")
- public void testIteratorFailNoMore() {
- final Bag<T> bag = makeObject();
- bag.add((T) "A");
- bag.add((T) "A");
- bag.add((T) "B");
- final Iterator<T> it = bag.iterator();
- it.next();
- it.next();
- it.next();
- try {
- it.next();
- fail("Should throw NoSuchElementException");
- } catch (final NoSuchElementException ex) {
- // expected
- }
- }
-
- @SuppressWarnings("unchecked")
- public void testIteratorFailDoubleRemove() {
- final Bag<T> bag = makeObject();
- bag.add((T) "A");
- bag.add((T) "A");
- bag.add((T) "B");
- final Iterator<T> it = bag.iterator();
- it.next();
- it.next();
- assertEquals(3, bag.size());
- it.remove();
- assertEquals(2, bag.size());
- try {
- it.remove();
- fail("Should throw IllegalStateException");
- } catch (final IllegalStateException ex) {
- // expected
- }
- assertEquals(2, bag.size());
- it.next();
- it.remove();
- assertEquals(1, bag.size());
- }
-
- @SuppressWarnings("unchecked")
- public void testIteratorRemoveProtectsInvariants() {
- final Bag<T> bag = makeObject();
- bag.add((T) "A");
- bag.add((T) "A");
- assertEquals(2, bag.size());
- final Iterator<T> it = bag.iterator();
- assertEquals("A", it.next());
- assertEquals(true, it.hasNext());
- it.remove();
- assertEquals(1, bag.size());
- assertEquals(true, it.hasNext());
- assertEquals("A", it.next());
- assertEquals(false, it.hasNext());
- it.remove();
- assertEquals(0, bag.size());
- assertEquals(false, it.hasNext());
-
- final Iterator<T> it2 = bag.iterator();
- assertEquals(false, it2.hasNext());
- }
-
- @SuppressWarnings("unchecked")
- public void testToArray() {
- final Bag<T> bag = makeObject();
- bag.add((T) "A");
- bag.add((T) "A");
- bag.add((T) "B");
- bag.add((T) "B");
- bag.add((T) "C");
- final Object[] array = bag.toArray();
- int a = 0, b = 0, c = 0;
- for (final Object element : array) {
- a += element.equals("A") ? 1 : 0;
- b += element.equals("B") ? 1 : 0;
- c += element.equals("C") ? 1 : 0;
- }
- assertEquals(2, a);
- assertEquals(2, b);
- assertEquals(1, c);
- }
-
- @SuppressWarnings("unchecked")
- public void testToArrayPopulate() {
- final Bag<T> bag = makeObject();
- bag.add((T) "A");
- bag.add((T) "A");
- bag.add((T) "B");
- bag.add((T) "B");
- bag.add((T) "C");
- final String[] array = bag.toArray(new String[0]);
- int a = 0, b = 0, c = 0;
- for (final String element : array) {
- a += element.equals("A") ? 1 : 0;
- b += element.equals("B") ? 1 : 0;
- c += element.equals("C") ? 1 : 0;
- }
- assertEquals(2, a);
- assertEquals(2, b);
- assertEquals(1, c);
- }
//-----------------------------------------------------------------------
- @SuppressWarnings("unchecked")
- public void testEquals() {
- final Bag<T> bag = makeObject();
- final Bag<T> bag2 = makeObject();
- assertEquals(true, bag.equals(bag2));
- bag.add((T) "A");
- assertEquals(false, bag.equals(bag2));
- bag2.add((T) "A");
- assertEquals(true, bag.equals(bag2));
- bag.add((T) "A");
- bag.add((T) "B");
- bag.add((T) "B");
- bag.add((T) "C");
- bag2.add((T) "A");
- bag2.add((T) "B");
- bag2.add((T) "B");
- bag2.add((T) "C");
- assertEquals(true, bag.equals(bag2));
- }
-
- @SuppressWarnings("unchecked")
- public void testEqualsHashBag() {
- final Bag<T> bag = makeObject();
- final Bag<T> bag2 = new HashBag<T>();
- assertEquals(true, bag.equals(bag2));
- bag.add((T) "A");
- assertEquals(false, bag.equals(bag2));
- bag2.add((T) "A");
- assertEquals(true, bag.equals(bag2));
- bag.add((T) "A");
- bag.add((T) "B");
- bag.add((T) "B");
- bag.add((T) "C");
- bag2.add((T) "A");
- bag2.add((T) "B");
- bag2.add((T) "B");
- bag2.add((T) "C");
- assertEquals(true, bag.equals(bag2));
- }
-
- @SuppressWarnings("unchecked")
- public void testHashCode() {
- final Bag<T> bag = makeObject();
- final Bag<T> bag2 = makeObject();
- assertEquals(0, bag.hashCode());
- assertEquals(0, bag2.hashCode());
- assertEquals(bag.hashCode(), bag2.hashCode());
- bag.add((T) "A");
- bag.add((T) "A");
- bag.add((T) "B");
- bag.add((T) "B");
- bag.add((T) "C");
- bag2.add((T) "A");
- bag2.add((T) "A");
- bag2.add((T) "B");
- bag2.add((T) "B");
- bag2.add((T) "C");
- assertEquals(bag.hashCode(), bag2.hashCode());
-
- int total = 0;
- total += "A".hashCode() ^ 2;
- total += "B".hashCode() ^ 2;
- total += "C".hashCode() ^ 1;
- assertEquals(total, bag.hashCode());
- assertEquals(total, bag2.hashCode());
- }
-
- //-----------------------------------------------------------------------
- public void testEmptyBagSerialization() throws IOException, ClassNotFoundException {
- final Bag<T> bag = makeObject();
- if (!(bag instanceof Serializable && isTestSerialization())) {
- return;
- }
-
- final byte[] objekt = writeExternalFormToBytes((Serializable) bag);
- final Bag<?> bag2 = (Bag<?>) readExternalFormFromBytes(objekt);
-
- assertEquals("Bag should be empty",0, bag.size());
- assertEquals("Bag should be empty",0, bag2.size());
- }
-
- @SuppressWarnings("unchecked")
- public void testFullBagSerialization() throws IOException, ClassNotFoundException {
- final Bag<T> bag = makeObject();
- bag.add((T) "A");
- bag.add((T) "A");
- bag.add((T) "B");
- bag.add((T) "B");
- bag.add((T) "C");
- final int size = bag.size();
- if (!(bag instanceof Serializable && isTestSerialization())) {
- return;
- }
-
- final byte[] objekt = writeExternalFormToBytes((Serializable) bag);
- final Bag<?> bag2 = (Bag<?>) readExternalFormFromBytes(objekt);
-
- assertEquals("Bag should be same size", size, bag.size());
- assertEquals("Bag should be same size", size, bag2.size());
- }
/**
* Compare the current serialized form of the Bag
@@ -534,15 +107,9 @@ public class CollectionBagTest<T> extend
* Compare the current serialized form of the Bag
* against the canonical version in SVN.
*/
- @SuppressWarnings("unchecked")
public void testFullBagCompatibility() throws IOException, ClassNotFoundException {
// test to make sure the canonical form has been preserved
- final Bag<T> bag = makeObject();
- bag.add((T) "A");
- bag.add((T) "A");
- bag.add((T) "B");
- bag.add((T) "B");
- bag.add((T) "C");
+ final Bag<T> bag = (Bag<T>) makeFullCollection();
if (bag instanceof Serializable && !skipSerializedCanonicalTests() && isTestSerialization()) {
final Bag<?> bag2 = (Bag<?>) readExternalFormFromDisk(getCanonicalFullCollectionName(bag));
assertEquals("Bag is the right size",bag.size(), bag2.size());
Added: commons/proper/collections/trunk/src/test/java/org/apache/commons/collections4/bag/CollectionSortedBagTest.java
URL: http://svn.apache.org/viewvc/commons/proper/collections/trunk/src/test/java/org/apache/commons/collections4/bag/CollectionSortedBagTest.java?rev=1540833&view=auto
==============================================================================
--- commons/proper/collections/trunk/src/test/java/org/apache/commons/collections4/bag/CollectionSortedBagTest.java (added)
+++ commons/proper/collections/trunk/src/test/java/org/apache/commons/collections4/bag/CollectionSortedBagTest.java Mon Nov 11 20:28:22 2013
@@ -0,0 +1,159 @@
+/*
+ * 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.bag;
+
+import java.io.IOException;
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+
+import org.apache.commons.collections4.Bag;
+import org.apache.commons.collections4.SortedBag;
+import org.apache.commons.collections4.collection.AbstractCollectionTest;
+
+/**
+ * Test class for {@link CollectionSortedBag}.
+ * <p>
+ * Note: This test is mainly for serialization support, the CollectionSortedBag decorator
+ * is extensively used and tested in AbstractSortedBagTest.
+ *
+ * @version $Id$
+ * @since 4.0
+ */
+public class CollectionSortedBagTest<T> extends AbstractCollectionTest<T> {
+
+ /**
+ * JUnit constructor.
+ *
+ * @param testName the test class name
+ */
+ public CollectionSortedBagTest(final String testName) {
+ super(testName);
+ }
+
+ //-----------------------------------------------------------------------
+
+ /**
+ * Overridden because SortedBags don't allow null elements (normally).
+ * @return false
+ */
+ @Override
+ public boolean isNullSupported() {
+ return false;
+ }
+
+ @Override
+ public Bag<T> makeObject() {
+ return CollectionSortedBag.collectionSortedBag(new TreeBag<T>());
+ }
+
+ /**
+ * Returns an empty List for use in modification testing.
+ *
+ * @return a confirmed empty collection
+ */
+ @Override
+ public Collection<T> makeConfirmedCollection() {
+ return new ArrayList<T>();
+ }
+
+ /**
+ * Returns a full Set for use in modification testing.
+ *
+ * @return a confirmed full collection
+ */
+ @Override
+ public Collection<T> makeConfirmedFullCollection() {
+ final Collection<T> set = makeConfirmedCollection();
+ set.addAll(Arrays.asList(getFullElements()));
+ return set;
+ }
+
+ //-----------------------------------------------------------------------
+ /**
+ * Override to return comparable objects.
+ */
+ @Override
+ @SuppressWarnings("unchecked")
+ public T[] getFullNonNullElements() {
+ final Object[] elements = new Object[30];
+
+ for (int i = 0; i < 30; i++) {
+ elements[i] = Integer.valueOf(i + i + 1);
+ }
+ return (T[]) elements;
+ }
+
+ /**
+ * Override to return comparable objects.
+ */
+ @Override
+ @SuppressWarnings("unchecked")
+ public T[] getOtherNonNullElements() {
+ final Object[] elements = new Object[30];
+ for (int i = 0; i < 30; i++) {
+ elements[i] = Integer.valueOf(i + i + 2);
+ }
+ return (T[]) elements;
+ }
+
+ //-----------------------------------------------------------------------
+
+ @Override
+ public String getCompatibilityVersion() {
+ return "4";
+ }
+
+// public void testCreate() throws Exception {
+// resetEmpty();
+// writeExternalFormToDisk((java.io.Serializable) getCollection(), "src/test/resources/data/test/CollectionSortedBag.emptyCollection.version4.obj");
+// resetFull();
+// writeExternalFormToDisk((java.io.Serializable) getCollection(), "src/test/resources/data/test/CollectionSortedBag.fullCollection.version4.obj");
+// }
+
+ //-----------------------------------------------------------------------
+
+ /**
+ * Compare the current serialized form of the Bag
+ * against the canonical version in SVN.
+ */
+ public void testEmptyBagCompatibility() throws IOException, ClassNotFoundException {
+ // test to make sure the canonical form has been preserved
+ final Bag<T> bag = makeObject();
+ if (bag instanceof Serializable && !skipSerializedCanonicalTests() && isTestSerialization()) {
+ final Bag<?> bag2 = (Bag<?>) readExternalFormFromDisk(getCanonicalEmptyCollectionName(bag));
+ assertTrue("Bag is empty",bag2.size() == 0);
+ assertEquals(bag, bag2);
+ }
+ }
+
+ /**
+ * Compare the current serialized form of the Bag
+ * against the canonical version in SVN.
+ */
+ public void testFullBagCompatibility() throws IOException, ClassNotFoundException {
+ // test to make sure the canonical form has been preserved
+ final SortedBag<T> bag = (SortedBag<T>) makeFullCollection();
+ if (bag instanceof Serializable && !skipSerializedCanonicalTests() && isTestSerialization()) {
+ final SortedBag<?> bag2 = (SortedBag<?>) readExternalFormFromDisk(getCanonicalFullCollectionName(bag));
+ assertEquals("Bag is the right size", bag.size(), bag2.size());
+ assertEquals(bag, bag2);
+ }
+ }
+
+}
Propchange: commons/proper/collections/trunk/src/test/java/org/apache/commons/collections4/bag/CollectionSortedBagTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: commons/proper/collections/trunk/src/test/java/org/apache/commons/collections4/bag/CollectionSortedBagTest.java
------------------------------------------------------------------------------
svn:keywords = Id Revision HeadURL
Propchange: commons/proper/collections/trunk/src/test/java/org/apache/commons/collections4/bag/CollectionSortedBagTest.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Modified: commons/proper/collections/trunk/src/test/java/org/apache/commons/collections4/bag/HashBagTest.java
URL: http://svn.apache.org/viewvc/commons/proper/collections/trunk/src/test/java/org/apache/commons/collections4/bag/HashBagTest.java?rev=1540833&r1=1540832&r2=1540833&view=diff
==============================================================================
--- commons/proper/collections/trunk/src/test/java/org/apache/commons/collections4/bag/HashBagTest.java (original)
+++ commons/proper/collections/trunk/src/test/java/org/apache/commons/collections4/bag/HashBagTest.java Mon Nov 11 20:28:22 2013
@@ -16,7 +16,10 @@
*/
package org.apache.commons.collections4.bag;
+import junit.framework.Test;
+
import org.apache.commons.collections4.Bag;
+import org.apache.commons.collections4.BulkTest;
/**
* Extension of {@link AbstractBagTest} for exercising the {@link HashBag}
@@ -30,6 +33,12 @@ public class HashBagTest<T> extends Abst
super(testName);
}
+ public static Test suite() {
+ return BulkTest.makeSuite(HashBagTest.class);
+ }
+
+ //-----------------------------------------------------------------------
+
@Override
public Bag<T> makeObject() {
return new HashBag<T>();
@@ -41,14 +50,9 @@ public class HashBagTest<T> extends Abst
}
// public void testCreate() throws Exception {
-// Bag bag = makeObject();
+// Bag<T> bag = makeObject();
// writeExternalFormToDisk((java.io.Serializable) bag, "src/test/resources/data/test/HashBag.emptyCollection.version4.obj");
-// bag = makeObject();
-// bag.add("A");
-// bag.add("A");
-// bag.add("B");
-// bag.add("B");
-// bag.add("C");
+// bag = makeFullCollection();
// writeExternalFormToDisk((java.io.Serializable) bag, "src/test/resources/data/test/HashBag.fullCollection.version4.obj");
// }
}
Modified: commons/proper/collections/trunk/src/test/java/org/apache/commons/collections4/bag/PredicatedBagTest.java
URL: http://svn.apache.org/viewvc/commons/proper/collections/trunk/src/test/java/org/apache/commons/collections4/bag/PredicatedBagTest.java?rev=1540833&r1=1540832&r2=1540833&view=diff
==============================================================================
--- commons/proper/collections/trunk/src/test/java/org/apache/commons/collections4/bag/PredicatedBagTest.java (original)
+++ commons/proper/collections/trunk/src/test/java/org/apache/commons/collections4/bag/PredicatedBagTest.java Mon Nov 11 20:28:22 2013
@@ -18,7 +18,10 @@ package org.apache.commons.collections4.
import java.util.Set;
+import junit.framework.Test;
+
import org.apache.commons.collections4.Bag;
+import org.apache.commons.collections4.BulkTest;
import org.apache.commons.collections4.Predicate;
import org.apache.commons.collections4.functors.TruePredicate;
@@ -35,6 +38,10 @@ public class PredicatedBagTest<T> extend
super(testName);
}
+ public static Test suite() {
+ return BulkTest.makeSuite(PredicatedBagTest.class);
+ }
+
//--------------------------------------------------------------------------
protected Predicate<T> stringPredicate() {
@@ -121,14 +128,9 @@ public class PredicatedBagTest<T> extend
}
// public void testCreate() throws Exception {
-// Bag bag = makeObject();
+// Bag<T> bag = makeObject();
// writeExternalFormToDisk((java.io.Serializable) bag, "src/test/resources/data/test/PredicatedBag.emptyCollection.version4.obj");
-// bag = makeObject();
-// bag.add("A");
-// bag.add("A");
-// bag.add("B");
-// bag.add("B");
-// bag.add("C");
+// bag = makeFullCollection();
// writeExternalFormToDisk((java.io.Serializable) bag, "src/test/resources/data/test/PredicatedBag.fullCollection.version4.obj");
// }
Modified: commons/proper/collections/trunk/src/test/java/org/apache/commons/collections4/bag/PredicatedSortedBagTest.java
URL: http://svn.apache.org/viewvc/commons/proper/collections/trunk/src/test/java/org/apache/commons/collections4/bag/PredicatedSortedBagTest.java?rev=1540833&r1=1540832&r2=1540833&view=diff
==============================================================================
--- commons/proper/collections/trunk/src/test/java/org/apache/commons/collections4/bag/PredicatedSortedBagTest.java (original)
+++ commons/proper/collections/trunk/src/test/java/org/apache/commons/collections4/bag/PredicatedSortedBagTest.java Mon Nov 11 20:28:22 2013
@@ -18,6 +18,9 @@ package org.apache.commons.collections4.
import java.util.Comparator;
+import junit.framework.Test;
+
+import org.apache.commons.collections4.BulkTest;
import org.apache.commons.collections4.Predicate;
import org.apache.commons.collections4.SortedBag;
import org.apache.commons.collections4.functors.TruePredicate;
@@ -37,6 +40,10 @@ public class PredicatedSortedBagTest<T>
super(testName);
}
+ public static Test suite() {
+ return BulkTest.makeSuite(PredicatedSortedBagTest.class);
+ }
+
//--------------------------------------------------------------------------
protected Predicate<T> stringPredicate() {
@@ -98,14 +105,9 @@ public class PredicatedSortedBagTest<T>
}
// public void testCreate() throws Exception {
-// org.apache.commons.collections4.Bag bag = makeObject();
+// Bag<T> bag = makeObject();
// writeExternalFormToDisk((java.io.Serializable) bag, "src/test/resources/data/test/PredicatedSortedBag.emptyCollection.version4.obj");
-// bag = makeObject();
-// bag.add("A");
-// bag.add("A");
-// bag.add("B");
-// bag.add("B");
-// bag.add("C");
+// bag = makeFullCollection();
// writeExternalFormToDisk((java.io.Serializable) bag, "src/test/resources/data/test/PredicatedSortedBag.fullCollection.version4.obj");
// }
Added: commons/proper/collections/trunk/src/test/java/org/apache/commons/collections4/bag/SynchronizedBagTest.java
URL: http://svn.apache.org/viewvc/commons/proper/collections/trunk/src/test/java/org/apache/commons/collections4/bag/SynchronizedBagTest.java?rev=1540833&view=auto
==============================================================================
--- commons/proper/collections/trunk/src/test/java/org/apache/commons/collections4/bag/SynchronizedBagTest.java (added)
+++ commons/proper/collections/trunk/src/test/java/org/apache/commons/collections4/bag/SynchronizedBagTest.java Mon Nov 11 20:28:22 2013
@@ -0,0 +1,60 @@
+/*
+ * 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.bag;
+
+import junit.framework.Test;
+
+import org.apache.commons.collections4.Bag;
+import org.apache.commons.collections4.BulkTest;
+
+/**
+ * Extension of {@link AbstractBagTest} for exercising the {@link SynchronizedBag}
+ * implementation.
+ *
+ * @since 4.0
+ * @version $Id$
+ */
+public class SynchronizedBagTest<T> extends AbstractBagTest<T> {
+
+ public SynchronizedBagTest(final String testName) {
+ super(testName);
+ }
+
+ public static Test suite() {
+ return BulkTest.makeSuite(SynchronizedBagTest.class);
+ }
+
+ //-----------------------------------------------------------------------
+
+ @Override
+ public Bag<T> makeObject() {
+ return SynchronizedBag.synchronizedBag(new HashBag<T>());
+ }
+
+ @Override
+ public String getCompatibilityVersion() {
+ return "4";
+ }
+
+// public void testCreate() throws Exception {
+// Bag<T> bag = makeObject();
+// writeExternalFormToDisk((java.io.Serializable) bag, "src/test/resources/data/test/SynchronizedBag.emptyCollection.version4.obj");
+// bag = makeFullCollection();
+// writeExternalFormToDisk((java.io.Serializable) bag, "src/test/resources/data/test/SynchronizedBag.fullCollection.version4.obj");
+// }
+
+}
Propchange: commons/proper/collections/trunk/src/test/java/org/apache/commons/collections4/bag/SynchronizedBagTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: commons/proper/collections/trunk/src/test/java/org/apache/commons/collections4/bag/SynchronizedBagTest.java
------------------------------------------------------------------------------
svn:keywords = Id Revision HeadURL
Propchange: commons/proper/collections/trunk/src/test/java/org/apache/commons/collections4/bag/SynchronizedBagTest.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Modified: commons/proper/collections/trunk/src/test/java/org/apache/commons/collections4/bag/TransformedBagTest.java
URL: http://svn.apache.org/viewvc/commons/proper/collections/trunk/src/test/java/org/apache/commons/collections4/bag/TransformedBagTest.java?rev=1540833&r1=1540832&r2=1540833&view=diff
==============================================================================
--- commons/proper/collections/trunk/src/test/java/org/apache/commons/collections4/bag/TransformedBagTest.java (original)
+++ commons/proper/collections/trunk/src/test/java/org/apache/commons/collections4/bag/TransformedBagTest.java Mon Nov 11 20:28:22 2013
@@ -16,7 +16,10 @@
*/
package org.apache.commons.collections4.bag;
+import junit.framework.Test;
+
import org.apache.commons.collections4.Bag;
+import org.apache.commons.collections4.BulkTest;
import org.apache.commons.collections4.Transformer;
import org.apache.commons.collections4.collection.TransformedCollectionTest;
@@ -33,6 +36,12 @@ public class TransformedBagTest<T> exten
super(testName);
}
+ public static Test suite() {
+ return BulkTest.makeSuite(TransformedBagTest.class);
+ }
+
+ //-----------------------------------------------------------------------
+
@Override
@SuppressWarnings("unchecked")
public Bag<T> makeObject() {
@@ -83,14 +92,9 @@ public class TransformedBagTest<T> exten
}
// public void testCreate() throws Exception {
-// Bag bag = makeObject();
+// Bag<T> bag = makeObject();
// writeExternalFormToDisk((java.io.Serializable) bag, "src/test/resources/data/test/TransformedBag.emptyCollection.version4.obj");
-// bag = makeObject();
-// bag.add("A");
-// bag.add("A");
-// bag.add("B");
-// bag.add("B");
-// bag.add("C");
+// bag = makeFullCollection();
// writeExternalFormToDisk((java.io.Serializable) bag, "src/test/resources/data/test/TransformedBag.fullCollection.version4.obj");
// }
Modified: commons/proper/collections/trunk/src/test/java/org/apache/commons/collections4/bag/TransformedSortedBagTest.java
URL: http://svn.apache.org/viewvc/commons/proper/collections/trunk/src/test/java/org/apache/commons/collections4/bag/TransformedSortedBagTest.java?rev=1540833&r1=1540832&r2=1540833&view=diff
==============================================================================
--- commons/proper/collections/trunk/src/test/java/org/apache/commons/collections4/bag/TransformedSortedBagTest.java (original)
+++ commons/proper/collections/trunk/src/test/java/org/apache/commons/collections4/bag/TransformedSortedBagTest.java Mon Nov 11 20:28:22 2013
@@ -16,7 +16,10 @@
*/
package org.apache.commons.collections4.bag;
+import junit.framework.Test;
+
import org.apache.commons.collections4.Bag;
+import org.apache.commons.collections4.BulkTest;
import org.apache.commons.collections4.SortedBag;
import org.apache.commons.collections4.Transformer;
import org.apache.commons.collections4.collection.TransformedCollectionTest;
@@ -34,6 +37,12 @@ public class TransformedSortedBagTest<T>
super(testName);
}
+ public static Test suite() {
+ return BulkTest.makeSuite(TransformedSortedBagTest.class);
+ }
+
+ //-----------------------------------------------------------------------
+
@Override
@SuppressWarnings("unchecked")
public SortedBag<T> makeObject() {
@@ -76,14 +85,9 @@ public class TransformedSortedBagTest<T>
}
// public void testCreate() throws Exception {
-// Bag bag = makeObject();
+// Bag<T> bag = makeObject();
// writeExternalFormToDisk((java.io.Serializable) bag, "src/test/resources/data/test/TransformedSortedBag.emptyCollection.version4.obj");
-// bag = makeObject();
-// bag.add("A");
-// bag.add("A");
-// bag.add("B");
-// bag.add("B");
-// bag.add("C");
+// bag = makeFullCollection();
// writeExternalFormToDisk((java.io.Serializable) bag, "src/test/resources/data/test/TransformedSortedBag.fullCollection.version4.obj");
// }
Modified: commons/proper/collections/trunk/src/test/java/org/apache/commons/collections4/bag/TreeBagTest.java
URL: http://svn.apache.org/viewvc/commons/proper/collections/trunk/src/test/java/org/apache/commons/collections4/bag/TreeBagTest.java?rev=1540833&r1=1540832&r2=1540833&view=diff
==============================================================================
--- commons/proper/collections/trunk/src/test/java/org/apache/commons/collections4/bag/TreeBagTest.java (original)
+++ commons/proper/collections/trunk/src/test/java/org/apache/commons/collections4/bag/TreeBagTest.java Mon Nov 11 20:28:22 2013
@@ -16,7 +16,10 @@
*/
package org.apache.commons.collections4.bag;
+import junit.framework.Test;
+
import org.apache.commons.collections4.Bag;
+import org.apache.commons.collections4.BulkTest;
import org.apache.commons.collections4.SortedBag;
/**
@@ -31,6 +34,12 @@ public class TreeBagTest<T> extends Abst
super(testName);
}
+ public static Test suite() {
+ return BulkTest.makeSuite(TreeBagTest.class);
+ }
+
+ //-----------------------------------------------------------------------
+
@Override
public SortedBag<T> makeObject() {
return new TreeBag<T>();
@@ -71,14 +80,9 @@ public class TreeBagTest<T> extends Abst
}
// public void testCreate() throws Exception {
-// Bag bag = makeObject();
+// Bag<T> bag = makeObject();
// writeExternalFormToDisk((java.io.Serializable) bag, "src/test/resources/data/test/TreeBag.emptyCollection.version4.obj");
-// bag = makeObject();
-// bag.add("A");
-// bag.add("A");
-// bag.add("B");
-// bag.add("B");
-// bag.add("C");
+// bag = makeFullCollection();
// writeExternalFormToDisk((java.io.Serializable) bag, "src/test/resources/data/test/TreeBag.fullCollection.version4.obj");
// }
}
Added: commons/proper/collections/trunk/src/test/java/org/apache/commons/collections4/bag/UnmodifiableBagTest.java
URL: http://svn.apache.org/viewvc/commons/proper/collections/trunk/src/test/java/org/apache/commons/collections4/bag/UnmodifiableBagTest.java?rev=1540833&view=auto
==============================================================================
--- commons/proper/collections/trunk/src/test/java/org/apache/commons/collections4/bag/UnmodifiableBagTest.java (added)
+++ commons/proper/collections/trunk/src/test/java/org/apache/commons/collections4/bag/UnmodifiableBagTest.java Mon Nov 11 20:28:22 2013
@@ -0,0 +1,109 @@
+/*
+ * 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.bag;
+
+import java.util.Arrays;
+
+import junit.framework.Test;
+
+import org.apache.commons.collections4.Bag;
+import org.apache.commons.collections4.BulkTest;
+import org.apache.commons.collections4.Unmodifiable;
+import org.apache.commons.collections4.collection.AbstractCollectionTest;
+
+/**
+ * Extension of {@link AbstractCollectionTest} for exercising the
+ * {@link UnmodifiableBag} implementation.
+ *
+ * @since 4.0
+ * @version $Id$
+ */
+public class UnmodifiableBagTest<E> extends AbstractBagTest<E> {
+
+ public UnmodifiableBagTest(final String testName) {
+ super(testName);
+ }
+
+ public static Test suite() {
+ return BulkTest.makeSuite(UnmodifiableBagTest.class);
+ }
+
+ //-----------------------------------------------------------------------
+ @Override
+ public Bag<E> makeObject() {
+ return UnmodifiableBag.unmodifiableBag(new HashBag<E>());
+ }
+
+ @Override
+ public Bag<E> makeFullCollection() {
+ final Bag<E> bag = new HashBag<E>();
+ bag.addAll(Arrays.asList(getFullElements()));
+ return UnmodifiableBag.unmodifiableBag(bag);
+ }
+
+ @Override
+ public Bag<E> getCollection() {
+ return super.getCollection();
+ }
+
+ @Override
+ public boolean isAddSupported() {
+ return false;
+ }
+
+ @Override
+ public boolean isRemoveSupported() {
+ return false;
+ }
+
+ @Override
+ public boolean isNullSupported() {
+ return false;
+ }
+
+ //-----------------------------------------------------------------------
+
+ public void testUnmodifiable() {
+ assertTrue(makeObject() instanceof Unmodifiable);
+ assertTrue(makeFullCollection() instanceof Unmodifiable);
+ }
+
+ public void testDecorateFactory() {
+ final Bag<E> queue = makeFullCollection();
+ assertSame(queue, UnmodifiableBag.unmodifiableBag(queue));
+
+ try {
+ UnmodifiableBag.unmodifiableBag(null);
+ fail();
+ } catch (final IllegalArgumentException ex) {}
+ }
+
+ //-----------------------------------------------------------------------
+
+ @Override
+ public String getCompatibilityVersion() {
+ return "4";
+ }
+
+// public void testCreate() throws Exception {
+// Bag<E> bag = makeObject();
+// writeExternalFormToDisk((java.io.Serializable) bag, "src/test/resources/data/test/UnmodifiableBag.emptyCollection.version4.obj");
+// bag = makeFullCollection();
+// writeExternalFormToDisk((java.io.Serializable) bag, "src/test/resources/data/test/UnmodifiableBag.fullCollection.version4.obj");
+// }
+
+}
Propchange: commons/proper/collections/trunk/src/test/java/org/apache/commons/collections4/bag/UnmodifiableBagTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: commons/proper/collections/trunk/src/test/java/org/apache/commons/collections4/bag/UnmodifiableBagTest.java
------------------------------------------------------------------------------
svn:keywords = Id Revision HeadURL
Propchange: commons/proper/collections/trunk/src/test/java/org/apache/commons/collections4/bag/UnmodifiableBagTest.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Added: commons/proper/collections/trunk/src/test/java/org/apache/commons/collections4/bag/UnmodifiableSortedBagTest.java
URL: http://svn.apache.org/viewvc/commons/proper/collections/trunk/src/test/java/org/apache/commons/collections4/bag/UnmodifiableSortedBagTest.java?rev=1540833&view=auto
==============================================================================
--- commons/proper/collections/trunk/src/test/java/org/apache/commons/collections4/bag/UnmodifiableSortedBagTest.java (added)
+++ commons/proper/collections/trunk/src/test/java/org/apache/commons/collections4/bag/UnmodifiableSortedBagTest.java Mon Nov 11 20:28:22 2013
@@ -0,0 +1,109 @@
+/*
+ * 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.bag;
+
+import java.util.Arrays;
+
+import junit.framework.Test;
+
+import org.apache.commons.collections4.BulkTest;
+import org.apache.commons.collections4.SortedBag;
+import org.apache.commons.collections4.Unmodifiable;
+import org.apache.commons.collections4.collection.AbstractCollectionTest;
+
+/**
+ * Extension of {@link AbstractCollectionTest} for exercising the
+ * {@link UnmodifiableSortedBag} implementation.
+ *
+ * @since 4.0
+ * @version $Id$
+ */
+public class UnmodifiableSortedBagTest<E> extends AbstractSortedBagTest<E> {
+
+ public UnmodifiableSortedBagTest(final String testName) {
+ super(testName);
+ }
+
+ public static Test suite() {
+ return BulkTest.makeSuite(UnmodifiableSortedBagTest.class);
+ }
+
+ //-----------------------------------------------------------------------
+ @Override
+ public SortedBag<E> makeObject() {
+ return UnmodifiableSortedBag.unmodifiableSortedBag(new TreeBag<E>());
+ }
+
+ @Override
+ public SortedBag<E> makeFullCollection() {
+ final SortedBag<E> bag = new TreeBag<E>();
+ bag.addAll(Arrays.asList(getFullElements()));
+ return UnmodifiableSortedBag.unmodifiableSortedBag(bag);
+ }
+
+ @Override
+ public SortedBag<E> getCollection() {
+ return super.getCollection();
+ }
+
+ @Override
+ public boolean isAddSupported() {
+ return false;
+ }
+
+ @Override
+ public boolean isRemoveSupported() {
+ return false;
+ }
+
+ @Override
+ public boolean isNullSupported() {
+ return false;
+ }
+
+ //-----------------------------------------------------------------------
+
+ public void testUnmodifiable() {
+ assertTrue(makeObject() instanceof Unmodifiable);
+ assertTrue(makeFullCollection() instanceof Unmodifiable);
+ }
+
+ public void testDecorateFactory() {
+ final SortedBag<E> queue = makeFullCollection();
+ assertSame(queue, UnmodifiableSortedBag.unmodifiableSortedBag(queue));
+
+ try {
+ UnmodifiableSortedBag.unmodifiableSortedBag(null);
+ fail();
+ } catch (final IllegalArgumentException ex) {}
+ }
+
+ //-----------------------------------------------------------------------
+
+ @Override
+ public String getCompatibilityVersion() {
+ return "4";
+ }
+
+// public void testCreate() throws Exception {
+// SortedBag<E> bag = makeObject();
+// writeExternalFormToDisk((java.io.Serializable) bag, "src/test/resources/data/test/UnmodifiableSortedBag.emptyCollection.version4.obj");
+// bag = makeFullCollection();
+// writeExternalFormToDisk((java.io.Serializable) bag, "src/test/resources/data/test/UnmodifiableSortedBag.fullCollection.version4.obj");
+// }
+
+}
Propchange: commons/proper/collections/trunk/src/test/java/org/apache/commons/collections4/bag/UnmodifiableSortedBagTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: commons/proper/collections/trunk/src/test/java/org/apache/commons/collections4/bag/UnmodifiableSortedBagTest.java
------------------------------------------------------------------------------
svn:keywords = Id Revision HeadURL
Propchange: commons/proper/collections/trunk/src/test/java/org/apache/commons/collections4/bag/UnmodifiableSortedBagTest.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Modified: commons/proper/collections/trunk/src/test/resources/data/test/CollectionBag.fullCollection.version4.obj
URL: http://svn.apache.org/viewvc/commons/proper/collections/trunk/src/test/resources/data/test/CollectionBag.fullCollection.version4.obj?rev=1540833&r1=1540832&r2=1540833&view=diff
==============================================================================
Binary files - no diff available.
Added: commons/proper/collections/trunk/src/test/resources/data/test/CollectionSortedBag.emptyCollection.version4.obj
URL: http://svn.apache.org/viewvc/commons/proper/collections/trunk/src/test/resources/data/test/CollectionSortedBag.emptyCollection.version4.obj?rev=1540833&view=auto
==============================================================================
Binary file - no diff available.
Propchange: commons/proper/collections/trunk/src/test/resources/data/test/CollectionSortedBag.emptyCollection.version4.obj
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream