Author: bayard Date: Tue Sep 15 05:56:55 2009 New Revision: 815108 URL: http://svn.apache.org/viewvc?rev=815108&view=rev Log: Merging from -r468106:814127 of collections_jdk5_branch - namely where this code was generified; mostly in r738956.
Also see the following revisions: ------------------------------------------------------------------------ r557435 | skestle | 2007-07-18 17:35:50 -0700 (Wed, 18 Jul 2007) | 1 line Skipped failing SerializedCanonicalTests. Marked code to be revisited through collections re-work. ------------------------------------------------------------------------ Modified: commons/proper/collections/trunk/src/test/org/apache/commons/collections/bag/AbstractTestBag.java Modified: commons/proper/collections/trunk/src/test/org/apache/commons/collections/bag/AbstractTestBag.java URL: http://svn.apache.org/viewvc/commons/proper/collections/trunk/src/test/org/apache/commons/collections/bag/AbstractTestBag.java?rev=815108&r1=815107&r2=815108&view=diff ============================================================================== --- commons/proper/collections/trunk/src/test/org/apache/commons/collections/bag/AbstractTestBag.java (original) +++ commons/proper/collections/trunk/src/test/org/apache/commons/collections/bag/AbstractTestBag.java Tue Sep 15 05:56:55 2009 @@ -42,7 +42,7 @@ * @author Chuck Burdick * @author Stephen Colebourne */ -public abstract class AbstractTestBag extends AbstractTestObject { +public abstract class AbstractTestBag<T> extends AbstractTestObject { // TODO: this class should really extend from TestCollection, 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 @@ -63,52 +63,46 @@ * * @return the bag to be tested */ - public abstract Bag makeBag(); - - /** - * Implements the superclass method to return the Bag. - * - * @return the bag to be tested - */ - public Object makeObject() { - return makeBag(); - } + public abstract Bag<T> makeObject(); //----------------------------------------------------------------------- + @SuppressWarnings("unchecked") public void testBagAdd() { - Bag bag = makeBag(); - bag.add("A"); + 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("A"); + bag.add((T) "A"); assertTrue("Should contain 'A'", bag.contains("A")); assertEquals("Should have count of 2", 2, bag.getCount("A")); - bag.add("B"); + bag.add((T) "B"); assertTrue(bag.contains("A")); assertTrue(bag.contains("B")); } + @SuppressWarnings("unchecked") public void testBagEqualsSelf() { - Bag bag = makeBag(); + Bag<T> bag = makeObject(); assertTrue(bag.equals(bag)); - bag.add("elt"); + bag.add((T) "elt"); assertTrue(bag.equals(bag)); - bag.add("elt"); // again + bag.add((T) "elt"); // again assertTrue(bag.equals(bag)); - bag.add("elt2"); + bag.add((T) "elt2"); assertTrue(bag.equals(bag)); } + @SuppressWarnings("unchecked") public void testRemove() { - Bag bag = makeBag(); - bag.add("A"); + 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("A"); - bag.add("A"); - bag.add("A"); - bag.add("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")); @@ -118,14 +112,15 @@ assertEquals("Should have count of 0", 0, bag.getCount("A")); } + @SuppressWarnings("unchecked") public void testRemoveAll() { - Bag bag = makeBag(); - bag.add("A", 2); + Bag<T> bag = makeObject(); + bag.add((T) "A", 2); assertEquals("Should have count of 2", 2, bag.getCount("A")); - bag.add("B"); - bag.add("C"); + bag.add((T) "B"); + bag.add((T) "C"); assertEquals("Should have count of 4", 4, bag.size()); - List delete = new ArrayList(); + List<String> delete = new ArrayList<String>(); delete.add("A"); delete.add("B"); bag.removeAll(delete); @@ -135,36 +130,38 @@ assertEquals("Should have count of 2", 2, bag.size()); } + @SuppressWarnings("unchecked") public void testContains() { - Bag bag = makeBag(); + 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("A"); // bag 1A + 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("A"); // bag 2A + 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("B"); // bag 2A,1B + 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() { - Bag bag = makeBag(); - List known = new ArrayList(); - List known1A = new ArrayList(); + Bag<T> bag = makeObject(); + List<String> known = new ArrayList<String>(); + List<String> known1A = new ArrayList<String>(); known1A.add("A"); - List known2A = new ArrayList(); + List<String> known2A = new ArrayList<String>(); known2A.add("A"); known2A.add("A"); - List known1B = new ArrayList(); + List<String> known1B = new ArrayList<String>(); known1B.add("B"); - List known1A1B = new ArrayList(); + List<String> known1A1B = new ArrayList<String>(); known1A1B.add("A"); known1A1B.add("B"); @@ -174,28 +171,28 @@ 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("A"); // bag 1A + 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 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("A"); // bag 2A + 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("A"); // bag 3A + 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("B"); // bag 3A1B + 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)); @@ -203,18 +200,19 @@ assertEquals("Bag containsAll of 1 'A' 1 'B'", true, bag.containsAll(known1A1B)); } + @SuppressWarnings("unchecked") public void testSize() { - Bag bag = makeBag(); + Bag<T> bag = makeObject(); assertEquals("Should have 0 total items", 0, bag.size()); - bag.add("A"); + bag.add((T) "A"); assertEquals("Should have 1 total items", 1, bag.size()); - bag.add("A"); + bag.add((T) "A"); assertEquals("Should have 2 total items", 2, bag.size()); - bag.add("A"); + bag.add((T) "A"); assertEquals("Should have 3 total items", 3, bag.size()); - bag.add("B"); + bag.add((T) "B"); assertEquals("Should have 4 total items", 4, bag.size()); - bag.add("B"); + 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")); @@ -223,28 +221,30 @@ assertEquals("Should have 1 total item", 1, bag.size()); } + @SuppressWarnings("unchecked") public void testRetainAll() { - Bag bag = makeBag(); - bag.add("A"); - bag.add("A"); - bag.add("A"); - bag.add("B"); - bag.add("B"); - bag.add("C"); - List retains = new ArrayList(); + 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"); + List<String> retains = new ArrayList<String>(); retains.add("B"); retains.add("C"); bag.retainAll(retains); assertEquals("Should have 2 total items", 2, bag.size()); } + @SuppressWarnings("unchecked") public void testIterator() { - Bag bag = makeBag(); - bag.add("A"); - bag.add("A"); - bag.add("B"); + 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()); - Iterator i = bag.iterator(); + Iterator<T> i = bag.iterator(); boolean foundA = false; while (i.hasNext()) { @@ -264,12 +264,13 @@ assertEquals("Bag should have 1 'A'", 1, bag.getCount("A")); } + @SuppressWarnings("unchecked") public void testIteratorFail() { - Bag bag = makeBag(); - bag.add("A"); - bag.add("A"); - bag.add("B"); - Iterator it = bag.iterator(); + Bag<T> bag = makeObject(); + bag.add((T) "A"); + bag.add((T) "A"); + bag.add((T) "B"); + Iterator<T> it = bag.iterator(); it.next(); bag.remove("A"); try { @@ -280,12 +281,13 @@ } } + @SuppressWarnings("unchecked") public void testIteratorFailNoMore() { - Bag bag = makeBag(); - bag.add("A"); - bag.add("A"); - bag.add("B"); - Iterator it = bag.iterator(); + Bag<T> bag = makeObject(); + bag.add((T) "A"); + bag.add((T) "A"); + bag.add((T) "B"); + Iterator<T> it = bag.iterator(); it.next(); it.next(); it.next(); @@ -297,12 +299,13 @@ } } + @SuppressWarnings("unchecked") public void testIteratorFailDoubleRemove() { - Bag bag = makeBag(); - bag.add("A"); - bag.add("A"); - bag.add("B"); - Iterator it = bag.iterator(); + Bag<T> bag = makeObject(); + bag.add((T) "A"); + bag.add((T) "A"); + bag.add((T) "B"); + Iterator<T> it = bag.iterator(); it.next(); it.next(); assertEquals(3, bag.size()); @@ -320,12 +323,13 @@ assertEquals(1, bag.size()); } + @SuppressWarnings("unchecked") public void testIteratorRemoveProtectsInvariants() { - Bag bag = makeBag(); - bag.add("A"); - bag.add("A"); + Bag<T> bag = makeObject(); + bag.add((T) "A"); + bag.add((T) "A"); assertEquals(2, bag.size()); - Iterator it = bag.iterator(); + Iterator<T> it = bag.iterator(); assertEquals("A", it.next()); assertEquals(true, it.hasNext()); it.remove(); @@ -337,17 +341,18 @@ assertEquals(0, bag.size()); assertEquals(false, it.hasNext()); - Iterator it2 = bag.iterator(); + Iterator<T> it2 = bag.iterator(); assertEquals(false, it2.hasNext()); } + @SuppressWarnings("unchecked") public void testToArray() { - Bag bag = makeBag(); - bag.add("A"); - bag.add("A"); - bag.add("B"); - bag.add("B"); - bag.add("C"); + Bag<T> bag = makeObject(); + bag.add((T) "A"); + bag.add((T) "A"); + bag.add((T) "B"); + bag.add((T) "B"); + bag.add((T) "C"); Object[] array = bag.toArray(); int a = 0, b = 0, c = 0; for (int i = 0; i < array.length; i++) { @@ -360,13 +365,14 @@ assertEquals(1, c); } + @SuppressWarnings("unchecked") public void testToArrayPopulate() { - Bag bag = makeBag(); - bag.add("A"); - bag.add("A"); - bag.add("B"); - bag.add("B"); - bag.add("C"); + Bag<T> bag = makeObject(); + bag.add((T) "A"); + bag.add((T) "A"); + bag.add((T) "B"); + bag.add((T) "B"); + bag.add((T) "C"); String[] array = (String[]) bag.toArray(new String[0]); int a = 0, b = 0, c = 0; for (int i = 0; i < array.length; i++) { @@ -380,60 +386,63 @@ } //----------------------------------------------------------------------- + @SuppressWarnings("unchecked") public void testEquals() { - Bag bag = makeBag(); - Bag bag2 = makeBag(); + Bag<T> bag = makeObject(); + Bag<T> bag2 = makeObject(); assertEquals(true, bag.equals(bag2)); - bag.add("A"); + bag.add((T) "A"); assertEquals(false, bag.equals(bag2)); - bag2.add("A"); + bag2.add((T) "A"); assertEquals(true, bag.equals(bag2)); - bag.add("A"); - bag.add("B"); - bag.add("B"); - bag.add("C"); - bag2.add("A"); - bag2.add("B"); - bag2.add("B"); - bag2.add("C"); + 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() { - Bag bag = makeBag(); - Bag bag2 = new HashBag(); + Bag<T> bag = makeObject(); + Bag<T> bag2 = new HashBag<T>(); assertEquals(true, bag.equals(bag2)); - bag.add("A"); + bag.add((T) "A"); assertEquals(false, bag.equals(bag2)); - bag2.add("A"); + bag2.add((T) "A"); assertEquals(true, bag.equals(bag2)); - bag.add("A"); - bag.add("B"); - bag.add("B"); - bag.add("C"); - bag2.add("A"); - bag2.add("B"); - bag2.add("B"); - bag2.add("C"); + 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() { - Bag bag = makeBag(); - Bag bag2 = makeBag(); + Bag<T> bag = makeObject(); + Bag<T> bag2 = makeObject(); assertEquals(0, bag.hashCode()); assertEquals(0, bag2.hashCode()); assertEquals(bag.hashCode(), bag2.hashCode()); - bag.add("A"); - bag.add("A"); - bag.add("B"); - bag.add("B"); - bag.add("C"); - bag2.add("A"); - bag2.add("A"); - bag2.add("B"); - bag2.add("B"); - bag2.add("C"); + 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; @@ -445,8 +454,9 @@ } //----------------------------------------------------------------------- + @SuppressWarnings("unchecked") public void testEmptyBagSerialization() throws IOException, ClassNotFoundException { - Bag bag = makeBag(); + Bag<T> bag = makeObject(); if (!(bag instanceof Serializable && isTestSerialization())) return; byte[] objekt = writeExternalFormToBytes((Serializable) bag); @@ -456,13 +466,14 @@ assertEquals("Bag should be empty",0, bag2.size()); } + @SuppressWarnings("unchecked") public void testFullBagSerialization() throws IOException, ClassNotFoundException { - Bag bag = makeBag(); - bag.add("A"); - bag.add("A"); - bag.add("B"); - bag.add("B"); - bag.add("C"); + Bag<T> bag = makeObject(); + bag.add((T) "A"); + bag.add((T) "A"); + bag.add((T) "B"); + bag.add((T) "B"); + bag.add((T) "C"); int size = bag.size(); if (!(bag instanceof Serializable && isTestSerialization())) return; @@ -474,13 +485,25 @@ } /** + * Skip the serialized cannonical tests for now. + * + * @return true + * + * TODO: store a new serialized object on the disk. + */ + protected boolean skipSerializedCanonicalTests() { + return true; + } + + /** * Compare the current serialized form of the Bag * against the canonical version in SVN. */ + @SuppressWarnings("unchecked") public void testEmptyBagCompatibility() throws IOException, ClassNotFoundException { // test to make sure the canonical form has been preserved - Bag bag = makeBag(); - if(bag instanceof Serializable && !skipSerializedCanonicalTests() && isTestSerialization()) { + Bag<T> bag = makeObject(); + if (bag instanceof Serializable && !skipSerializedCanonicalTests() && isTestSerialization()) { Bag bag2 = (Bag) readExternalFormFromDisk(getCanonicalEmptyCollectionName(bag)); assertTrue("Bag is empty",bag2.size() == 0); assertEquals(bag, bag2); @@ -491,15 +514,16 @@ * 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 - Bag bag = makeBag(); - bag.add("A"); - bag.add("A"); - bag.add("B"); - bag.add("B"); - bag.add("C"); - if(bag instanceof Serializable && !skipSerializedCanonicalTests() && isTestSerialization()) { + Bag<T> bag = makeObject(); + bag.add((T) "A"); + bag.add((T) "A"); + bag.add((T) "B"); + bag.add((T) "B"); + bag.add((T) "C"); + if (bag instanceof Serializable && !skipSerializedCanonicalTests() && isTestSerialization()) { Bag bag2 = (Bag) readExternalFormFromDisk(getCanonicalFullCollectionName(bag)); assertEquals("Bag is the right size",bag.size(), bag2.size()); assertEquals(bag, bag2);