rwaldhoff 01/04/20 09:54:15
Modified: collections/src/test/org/apache/commons/collections
TestList.java TestFastTreeMap.java
TestFastHashMap.java TestFastArrayList.java
TestCursorableLinkedList.java TestCollection.java
TestArrayStack.java TestAll.java
Added: collections/src/test/org/apache/commons/collections
TestObject.java TestMap.java
Log:
* refactored test framework slightly to support more interesting tests and to make
the contract more enforceable
* added some new tests and test cases
Revision Changes Path
1.2 +127 -9
jakarta-commons/collections/src/test/org/apache/commons/collections/TestList.java
Index: TestList.java
===================================================================
RCS file:
/home/cvs/jakarta-commons/collections/src/test/org/apache/commons/collections/TestList.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- TestList.java 2001/04/14 15:39:53 1.1
+++ TestList.java 2001/04/20 16:54:04 1.2
@@ -1,7 +1,7 @@
/*
- * $Header:
/home/cvs/jakarta-commons/collections/src/test/org/apache/commons/collections/TestList.java,v
1.1 2001/04/14 15:39:53 rwaldhoff Exp $
- * $Revision: 1.1 $
- * $Date: 2001/04/14 15:39:53 $
+ * $Header:
/home/cvs/jakarta-commons/collections/src/test/org/apache/commons/collections/TestList.java,v
1.2 2001/04/20 16:54:04 rwaldhoff Exp $
+ * $Revision: 1.2 $
+ * $Date: 2001/04/20 16:54:04 $
*
* ====================================================================
*
@@ -63,22 +63,140 @@
import junit.framework.*;
import java.util.List;
+import java.util.Collection;
/**
+ * Tests base {@link java.util.List} methods and contracts.
+ * <p>
+ * To use, simply extend this class, and implement
+ * the {@link #makeList} method.
+ * <p>
+ * If your {@link List} fails one of these tests by design,
+ * you may still use this base set of cases. Simply override the
+ * test case (method) your {@link List} fails.
+ *
* @author Rodney Waldhoff
- * @version $Id: TestList.java,v 1.1 2001/04/14 15:39:53 rwaldhoff Exp $
+ * @version $Id: TestList.java,v 1.2 2001/04/20 16:54:04 rwaldhoff Exp $
*/
public abstract class TestList extends TestCollection {
public TestList(String testName) {
super(testName);
}
+
+ /**
+ * Return a new, empty {@link List} to used for testing.
+ */
+ public abstract List makeList();
+
+ public Collection makeCollection() {
+ return makeList();
+ }
+
+ /*
+
+ // optional operation
+ public void testListAddByIndex() {
+ // XXX finish me
+ }
+
+ // optional operation
+ public void testListAdd() {
+ // XXX finish me
+ }
+
+ // optional operation
+ public void testListAddAll() {
+ // XXX finish me
+ }
+
+ // optional operation
+ public void testListClear() {
+ // XXX finish me
+ }
+
+ public void testListContains() {
+ // XXX finish me
+ // is this any different from Collection.contains?
+ }
+
+ public void testListContainsAll() {
+ // XXX finish me
+ // is this any different from Collection.containsAll?
+ }
+
+ public void testListEquals() {
+ // XXX finish me
+ }
+
+ public void testListGetByIndex() {
+ // XXX finish me
+ }
+
+ public void testListHashCode() {
+ // XXX finish me
+ }
- private List _list = null;
+ public void testListIndexOf() {
+ // XXX finish me
+ }
+
+ public void testListIsEmpty() {
+ // XXX finish me
+ // is this any different from Collection.isEmpty?
+ }
+
+ public void testListIterator() {
+ // XXX finish me
+ // is this any different from Collection.iterator?
+ }
+
+ public void testListLastIndexOf() {
+ // XXX finish me
+ }
+
+ public void testListListIterator() {
+ // XXX finish me
+ }
- protected void setList(List l) {
- _list = l;
- setCollection(_list);
+ public void testListListIteratorByIndex() {
+ // XXX finish me
}
+
+ // optional operation
+ public void testListRemoveByIndex() {
+ // XXX finish me
+ }
+
+ // optional operation
+ public void testListRemoveByValue() {
+ // XXX finish me
+ }
+
+ // optional operation
+ public void testListRemoveAll() {
+ // XXX finish me
+ // is this any different from Collection.removeAll?
+ }
+
+ // optional operation
+ public void testListRetainAll() {
+ // XXX finish me
+ // is this any different from Collection.retainAll?
+ }
+
+ // optional operation
+ public void testListSet() {
+ // XXX finish me
+ }
+
+ // size() same as Collection.size() ?
+
+ public void testListSubList() {
+ // XXX finish me
+ }
+
+ // toArray() same as Collection.toArray() ?
+ // toArray(Object[]) same as Collection.toArray(Object[]) ?
- // placeholder. add list contract tests here
+ */
}
1.2 +16 -11
jakarta-commons/collections/src/test/org/apache/commons/collections/TestFastTreeMap.java
Index: TestFastTreeMap.java
===================================================================
RCS file:
/home/cvs/jakarta-commons/collections/src/test/org/apache/commons/collections/TestFastTreeMap.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- TestFastTreeMap.java 2001/04/16 22:42:04 1.1
+++ TestFastTreeMap.java 2001/04/20 16:54:04 1.2
@@ -1,7 +1,7 @@
/*
- * $Header:
/home/cvs/jakarta-commons/collections/src/test/org/apache/commons/collections/TestFastTreeMap.java,v
1.1 2001/04/16 22:42:04 jvanzyl Exp $
- * $Revision: 1.1 $
- * $Date: 2001/04/16 22:42:04 $
+ * $Header:
/home/cvs/jakarta-commons/collections/src/test/org/apache/commons/collections/TestFastTreeMap.java,v
1.2 2001/04/20 16:54:04 rwaldhoff Exp $
+ * $Revision: 1.2 $
+ * $Date: 2001/04/20 16:54:04 $
*
* ====================================================================
*
@@ -64,43 +64,48 @@
import junit.framework.Test;
import junit.framework.TestCase;
import junit.framework.TestSuite;
+import java.util.Map;
/**
* @author <a href="mailto:[EMAIL PROTECTED]">Jason van Zyl</a>
- * @version $Id: TestFastTreeMap.java,v 1.1 2001/04/16 22:42:04 jvanzyl Exp $
+ * @version $Id: TestFastTreeMap.java,v 1.2 2001/04/20 16:54:04 rwaldhoff Exp $
*/
-public class TestFastTreeMap extends TestCase
+public class TestFastTreeMap extends TestMap
{
- public TestFastTreeMap(String testName)
+ public TestFastTreeMap(String testName)
{
super(testName);
}
- public static Test suite()
+ public static Test suite()
{
return new TestSuite(TestFastTreeMap.class);
}
- public static void main(String args[])
+ public static void main(String args[])
{
String[] testCaseName = { TestFastTreeMap.class.getName() };
junit.textui.TestRunner.main(testCaseName);
}
+ public Map makeMap() {
+ return new FastTreeMap();
+ }
+
private FastTreeMap map = null;
- public void setUp()
+ public void setUp()
{
map = new FastTreeMap();
}
- public void testNewMap()
+ public void testNewMap()
{
assert("New map is empty", map.isEmpty());
assertEquals("New map has size zero", map.size(), 0);
}
- public void testSearch()
+ public void testSearch()
{
map.put("first", "First Item");
map.put("second", "Second Item");
1.2 +16 -11
jakarta-commons/collections/src/test/org/apache/commons/collections/TestFastHashMap.java
Index: TestFastHashMap.java
===================================================================
RCS file:
/home/cvs/jakarta-commons/collections/src/test/org/apache/commons/collections/TestFastHashMap.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- TestFastHashMap.java 2001/04/16 22:42:04 1.1
+++ TestFastHashMap.java 2001/04/20 16:54:05 1.2
@@ -1,7 +1,7 @@
/*
- * $Header:
/home/cvs/jakarta-commons/collections/src/test/org/apache/commons/collections/TestFastHashMap.java,v
1.1 2001/04/16 22:42:04 jvanzyl Exp $
- * $Revision: 1.1 $
- * $Date: 2001/04/16 22:42:04 $
+ * $Header:
/home/cvs/jakarta-commons/collections/src/test/org/apache/commons/collections/TestFastHashMap.java,v
1.2 2001/04/20 16:54:05 rwaldhoff Exp $
+ * $Revision: 1.2 $
+ * $Date: 2001/04/20 16:54:05 $
*
* ====================================================================
*
@@ -64,43 +64,48 @@
import junit.framework.Test;
import junit.framework.TestCase;
import junit.framework.TestSuite;
+import java.util.Map;
/**
* @author <a href="mailto:[EMAIL PROTECTED]">Jason van Zyl</a>
- * @version $Id: TestFastHashMap.java,v 1.1 2001/04/16 22:42:04 jvanzyl Exp $
+ * @version $Id: TestFastHashMap.java,v 1.2 2001/04/20 16:54:05 rwaldhoff Exp $
*/
-public class TestFastHashMap extends TestCase
+public class TestFastHashMap extends TestMap
{
- public TestFastHashMap(String testName)
+ public TestFastHashMap(String testName)
{
super(testName);
}
- public static Test suite()
+ public static Test suite()
{
return new TestSuite(TestFastHashMap.class);
}
- public static void main(String args[])
+ public static void main(String args[])
{
String[] testCaseName = { TestFastHashMap.class.getName() };
junit.textui.TestRunner.main(testCaseName);
}
+ public Map makeMap() {
+ return new FastHashMap();
+ }
+
private FastHashMap map = null;
- public void setUp()
+ public void setUp()
{
map = new FastHashMap();
}
- public void testNewMap()
+ public void testNewMap()
{
assert("New map is empty", map.isEmpty());
assertEquals("New map has size zero", map.size(), 0);
}
- public void testSearch()
+ public void testSearch()
{
map.put("first", "First Item");
map.put("second", "Second Item");
1.2 +23 -13
jakarta-commons/collections/src/test/org/apache/commons/collections/TestFastArrayList.java
Index: TestFastArrayList.java
===================================================================
RCS file:
/home/cvs/jakarta-commons/collections/src/test/org/apache/commons/collections/TestFastArrayList.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- TestFastArrayList.java 2001/04/16 22:42:04 1.1
+++ TestFastArrayList.java 2001/04/20 16:54:06 1.2
@@ -1,7 +1,7 @@
/*
- * $Header:
/home/cvs/jakarta-commons/collections/src/test/org/apache/commons/collections/TestFastArrayList.java,v
1.1 2001/04/16 22:42:04 jvanzyl Exp $
- * $Revision: 1.1 $
- * $Date: 2001/04/16 22:42:04 $
+ * $Header:
/home/cvs/jakarta-commons/collections/src/test/org/apache/commons/collections/TestFastArrayList.java,v
1.2 2001/04/20 16:54:06 rwaldhoff Exp $
+ * $Revision: 1.2 $
+ * $Date: 2001/04/20 16:54:06 $
*
* ====================================================================
*
@@ -64,24 +64,25 @@
import junit.framework.Test;
import junit.framework.TestCase;
import junit.framework.TestSuite;
+import java.util.List;
/**
* @author <a href="mailto:[EMAIL PROTECTED]">Jason van Zyl</a>
- * @version $Id: TestFastArrayList.java,v 1.1 2001/04/16 22:42:04 jvanzyl Exp $
+ * @version $Id: TestFastArrayList.java,v 1.2 2001/04/20 16:54:06 rwaldhoff Exp $
*/
-public class TestFastArrayList extends TestCase
+public class TestFastArrayList extends TestList
{
- public TestFastArrayList(String testName)
+ public TestFastArrayList(String testName)
{
super(testName);
}
- public static Test suite()
+ public static Test suite()
{
return new TestSuite(TestFastArrayList.class);
}
- public static void main(String args[])
+ public static void main(String args[])
{
String[] testCaseName = { TestFastArrayList.class.getName() };
junit.textui.TestRunner.main(testCaseName);
@@ -89,32 +90,41 @@
private FastArrayList list = null;
- public void setUp()
+ public void setUp()
{
list = new FastArrayList();
}
- public void testNewFastArrayList()
+ public List makeList()
{
+ return new FastArrayList();
+ }
+
+ public void testNewFastArrayList()
+ {
assert("New list is empty", list.isEmpty());
assertEquals("New list has size zero", list.size(), 0);
- try
+ try
{
list.get(1);
fail("get(int i) should have thrown IndexOutOfBoundsException");
- }
+ }
catch (IndexOutOfBoundsException e)
{
; // Expected result
}
}
- public void testSearch()
+ public void testSearch()
{
list.add("First Item");
list.add("Last Item");
assertEquals("First item is 'First Item'", list.get(0), "First Item");
assertEquals("Last Item is 'Last Item'", list.get(1), "Last Item");
+ }
+
+ public void testCollectionEquals() {
+ // FastArrayList currently doesn't support the List equals contract
}
}
1.2 +8 -5
jakarta-commons/collections/src/test/org/apache/commons/collections/TestCursorableLinkedList.java
Index: TestCursorableLinkedList.java
===================================================================
RCS file:
/home/cvs/jakarta-commons/collections/src/test/org/apache/commons/collections/TestCursorableLinkedList.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- TestCursorableLinkedList.java 2001/04/14 15:39:44 1.1
+++ TestCursorableLinkedList.java 2001/04/20 16:54:07 1.2
@@ -1,7 +1,7 @@
/*
- * $Header:
/home/cvs/jakarta-commons/collections/src/test/org/apache/commons/collections/TestCursorableLinkedList.java,v
1.1 2001/04/14 15:39:44 rwaldhoff Exp $
- * $Revision: 1.1 $
- * $Date: 2001/04/14 15:39:44 $
+ * $Header:
/home/cvs/jakarta-commons/collections/src/test/org/apache/commons/collections/TestCursorableLinkedList.java,v
1.2 2001/04/20 16:54:07 rwaldhoff Exp $
+ * $Revision: 1.2 $
+ * $Date: 2001/04/20 16:54:07 $
*
* ====================================================================
*
@@ -66,7 +66,7 @@
/**
* @author Rodney Waldhoff
- * @version $Id: TestCursorableLinkedList.java,v 1.1 2001/04/14 15:39:44 rwaldhoff
Exp $
+ * @version $Id: TestCursorableLinkedList.java,v 1.2 2001/04/20 16:54:07 rwaldhoff
Exp $
*/
public class TestCursorableLinkedList extends TestList {
public TestCursorableLinkedList(String testName) {
@@ -86,7 +86,10 @@
public void setUp() {
list = new CursorableLinkedList();
- setList(list);
+ }
+
+ public List makeList() {
+ return new CursorableLinkedList();
}
public void testAdd() {
1.2 +199 -172
jakarta-commons/collections/src/test/org/apache/commons/collections/TestCollection.java
Index: TestCollection.java
===================================================================
RCS file:
/home/cvs/jakarta-commons/collections/src/test/org/apache/commons/collections/TestCollection.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- TestCollection.java 2001/04/14 15:39:51 1.1
+++ TestCollection.java 2001/04/20 16:54:08 1.2
@@ -1,7 +1,7 @@
/*
- * $Header:
/home/cvs/jakarta-commons/collections/src/test/org/apache/commons/collections/TestCollection.java,v
1.1 2001/04/14 15:39:51 rwaldhoff Exp $
- * $Revision: 1.1 $
- * $Date: 2001/04/14 15:39:51 $
+ * $Header:
/home/cvs/jakarta-commons/collections/src/test/org/apache/commons/collections/TestCollection.java,v
1.2 2001/04/20 16:54:08 rwaldhoff Exp $
+ * $Revision: 1.2 $
+ * $Date: 2001/04/20 16:54:08 $
*
* ====================================================================
*
@@ -68,60 +68,49 @@
import java.util.NoSuchElementException;
/**
+ * Tests base {@link java.util.Collection} methods and contracts.
+ * <p>
+ * To use, simply extend this class, and implement
+ * the {@link #makeCollection} method.
+ * <p>
+ * If your {@link Collection} fails one of these tests by design,
+ * you may still use this base set of cases. Simply override the
+ * test case (method) your {@link Collection} fails.
+ *
* @author Rodney Waldhoff
- * @version $Id: TestCollection.java,v 1.1 2001/04/14 15:39:51 rwaldhoff Exp $
+ * @version $Id: TestCollection.java,v 1.2 2001/04/20 16:54:08 rwaldhoff Exp $
*/
-public abstract class TestCollection extends TestCase {
+public abstract class TestCollection extends TestObject {
public TestCollection(String testName) {
super(testName);
}
- private Collection _collection = null;
+ /**
+ * Return a new, empty {@link Collection} to used for testing.
+ */
+ public abstract Collection makeCollection();
- protected void setCollection(Collection c) {
- _collection = c;
+ public Object makeObject() {
+ return makeCollection();
}
// optional operation
public void testCollectionAdd() {
- boolean added1 = false;
- try {
- added1 = _collection.add("element1");
- } catch(UnsupportedOperationException e) {
- // ignored, must not be supported
- } catch(ClassCastException e) {
- // ignored, type must not be supported
- } catch(IllegalArgumentException e) {
- // ignored, element must not be supported
- } catch(Throwable t) {
- t.printStackTrace();
- fail("Collection.add should only throw UnsupportedOperationException,
ClassCastException or IllegalArgumentException. Found " + t.toString());
- }
-
- boolean added2 = false;
- try {
- added2 = _collection.add("element2");
- } catch(UnsupportedOperationException e) {
- // ignored, must not be supported
- } catch(ClassCastException e) {
- // ignored, type must not be supported
- } catch(IllegalArgumentException e) {
- // ignored, element must not be supported
- } catch(Throwable t) {
- t.printStackTrace();
- fail("Collection.add should only throw UnsupportedOperationException,
ClassCastException or IllegalArgumentException. Found " + t.toString());
- }
+ Collection c = makeCollection();
+ boolean added1 = tryToAdd(c,"element1");
+ boolean added2 = tryToAdd(c,"element2");
}
// optional operation
public void testCollectionAddAll() {
+ Collection c = makeCollection();
Collection col = new ArrayList();
col.add("element1");
col.add("element2");
col.add("element3");
boolean added = false;
try {
- added = _collection.addAll(col);
+ added = c.addAll(col);
} catch(UnsupportedOperationException e) {
// ignored, must not be supported
} catch(ClassCastException e) {
@@ -136,9 +125,10 @@
// optional operation
public void testCollectionClear() {
+ Collection c = makeCollection();
boolean cleared = false;
try {
- _collection.clear();
+ c.clear();
cleared = true;
} catch(UnsupportedOperationException e) {
// ignored, must not be supported
@@ -148,28 +138,16 @@
}
if(cleared) {
- assert("After Collection.clear(), Collection.isEmpty() should be
true.",_collection.isEmpty());
+ assert("After Collection.clear(), Collection.isEmpty() should be
true.",c.isEmpty());
}
- boolean added = false;
- try {
- added = _collection.add("element1");
- } catch(UnsupportedOperationException e) {
- // ignored, must not be supported
- } catch(ClassCastException e) {
- // ignored, type must not be supported
- } catch(IllegalArgumentException e) {
- // ignored, element must not be supported
- } catch(Throwable t) {
- t.printStackTrace();
- fail("Collection.add should only throw UnsupportedOperationException,
ClassCastException or IllegalArgumentException. Found " + t.toString());
- }
+ boolean added = tryToAdd(c,"element1");
if(added) {
- assert("After element is added, Collection.isEmpty() should be
false.",!_collection.isEmpty());
+ assert("After element is added, Collection.isEmpty() should be
false.",!c.isEmpty());
boolean cleared2 = false;
try {
- _collection.clear();
+ c.clear();
cleared2 = true;
} catch(UnsupportedOperationException e) {
// ignored, must not be supported
@@ -178,127 +156,104 @@
fail("Collection.clear should only throw
UnsupportedOperationException. Found " + t.toString());
}
if(cleared2) {
- assert("After Collection.clear(), Collection.isEmpty() should be
true.",_collection.isEmpty());
+ assert("After Collection.clear(), Collection.isEmpty() should be
true.",c.isEmpty());
}
}
}
public void testCollectionContains() {
- boolean added1 = false;
- try {
- added1 = _collection.add("element1");
- } catch(UnsupportedOperationException e) {
- // ignored, must not be supported
- } catch(ClassCastException e) {
- // ignored, type must not be supported
- } catch(IllegalArgumentException e) {
- // ignored, element must not be supported
- } catch(Throwable t) {
- t.printStackTrace();
- fail("Collection.add should only throw UnsupportedOperationException,
ClassCastException or IllegalArgumentException. Found " + t.toString());
- }
- assert("If an element was added, it should be contained.",added1 ==
_collection.contains("element1"));
-
- boolean added2 = false;
- try {
- added2 = _collection.add("element2");
- } catch(UnsupportedOperationException e) {
- // ignored, must not be supported
- } catch(ClassCastException e) {
- // ignored, type must not be supported
- } catch(IllegalArgumentException e) {
- // ignored, element must not be supported
- } catch(Throwable t) {
- t.printStackTrace();
- fail("Collection.add should only throw UnsupportedOperationException,
ClassCastException or IllegalArgumentException. Found " + t.toString());
- }
- assert("If an element was added, it should be contained.",added1 ==
_collection.contains("element1"));
- assert("If an element was added, it should be contained.",added2 ==
_collection.contains("element2"));
+ Collection c = makeCollection();
+ assert("Empty Collection shouldn't contain
element.",!c.contains("element1"));
+ boolean added1 = tryToAdd(c,"element1");
+ assert("[1] If an element was added, it should be contained, if it wasn't,
it shouldn't.",added1 == c.contains("element1"));
+
+ assert("Shouldn't be contained.",!c.contains("element2"));
+ boolean added2 = tryToAdd(c,"element2");
+ assert("[2] If an element was added, it should be contained, if it wasn't,
it shouldn't.",added1 == c.contains("element1"));
+ assert("[3] If an element was added, it should be contained, if it wasn't,
it shouldn't.",added2 == c.contains("element2"));
}
public void testCollectionContainsAll() {
+ Collection c = makeCollection();
Collection col = new ArrayList();
- assert("Every Collection should contain all elements of an empty
Collection.",_collection.containsAll(col));
+ assert("Every Collection should contain all elements of an empty
Collection.",c.containsAll(col));
col.add("element1");
- assert("Empty Collection shouldn't contain all elements of a non-empty
Collection.",!_collection.containsAll(col));
+ assert("Empty Collection shouldn't contain all elements of a non-empty
Collection.",!c.containsAll(col));
- boolean added1 = false;
- try {
- added1 = _collection.add("element1");
- } catch(UnsupportedOperationException e) {
- // ignored, must not be supported
- } catch(ClassCastException e) {
- // ignored, type must not be supported
- } catch(IllegalArgumentException e) {
- // ignored, element must not be supported
- } catch(Throwable t) {
- t.printStackTrace();
- fail("Collection.add should only throw UnsupportedOperationException,
ClassCastException or IllegalArgumentException. Found " + t.toString());
- }
+ boolean added1 = tryToAdd(c,"element1");
if(added1) {
- assert("Should contain all.",_collection.containsAll(col));
+ assert("[1] Should contain all.",c.containsAll(col));
}
col.add("element2");
- assert("Shouldn't contain all.",!_collection.containsAll(col));
+ assert("Shouldn't contain all.",!c.containsAll(col));
- boolean added2 = false;
- try {
- added2 = _collection.add("element2");
- } catch(UnsupportedOperationException e) {
- // ignored, must not be supported
- } catch(ClassCastException e) {
- // ignored, type must not be supported
- } catch(IllegalArgumentException e) {
- // ignored, element must not be supported
- } catch(Throwable t) {
- t.printStackTrace();
- fail("Collection.add should only throw UnsupportedOperationException,
ClassCastException or IllegalArgumentException. Found " + t.toString());
- }
+ boolean added2 = tryToAdd(c,"element2");
if(added1 && added2) {
- assert("Should contain all.",_collection.containsAll(col));
+ assert("[2] Should contain all.",c.containsAll(col));
}
}
+ public void testCollectionEqualsSelf() {
+ Collection c = makeCollection();
+ assertEquals("A Collection should equal itself",c,c);
+ tryToAdd(c,"element1");
+ assertEquals("A Collection should equal itself",c,c);
+ tryToAdd(c,"element1");
+ tryToAdd(c,"element2");
+ assertEquals("A Collection should equal itself",c,c);
+ }
+
public void testCollectionEquals() {
- assertEquals("A Collection should equal itself",_collection,_collection);
- try {
- _collection.add("element1");
- } catch(UnsupportedOperationException e) {
- // ignored, must not be supported
- } catch(ClassCastException e) {
- // ignored, type must not be supported
- } catch(IllegalArgumentException e) {
- // ignored, element must not be supported
- } catch(Throwable t) {
- t.printStackTrace();
- fail("Collection.add should only throw UnsupportedOperationException,
ClassCastException or IllegalArgumentException. Found " + t.toString());
+ Collection c1 = makeCollection();
+ Collection c2 = makeCollection();
+ assertEquals("Empty Collections are equal.",c1,c2);
+
+ boolean added1_1 = tryToAdd(c1,"element1");
+ if(added1_1) {
+ assert("Empty Collection not equal to non-empty
Collection.",!c2.equals(c1));
+ assert("Non-empty Collection not equal to empty
Collection.",!c1.equals(c2));
}
- assertEquals("A Collection should equal itself",_collection,_collection);
- try {
- _collection.add("element1");
- } catch(UnsupportedOperationException e) {
- // ignored, must not be supported
- } catch(ClassCastException e) {
- // ignored, type must not be supported
- } catch(IllegalArgumentException e) {
- // ignored, element must not be supported
- } catch(Throwable t) {
- t.printStackTrace();
- fail("Collection.add should only throw UnsupportedOperationException,
ClassCastException or IllegalArgumentException. Found " + t.toString());
+
+ boolean added1_2 = tryToAdd(c2,"element1");
+ assertEquals("After duplicate adds, Collections should be equal.",c1,c2);
+
+ boolean added2_1 = tryToAdd(c1,"element2");
+ boolean added3_2 = tryToAdd(c2,"element3");
+ if(added2_1 || added3_2) {
+ assert("Should not be equal.",!c1.equals(c2));
}
- assertEquals("A Collection should equal itself",_collection,_collection);
}
- public void testCollectionHashCode() {
- assertEquals("A Collection's hashCode should equal
itself",_collection.hashCode(),_collection.hashCode());
+ public void testCollectionHashCodeEqualsSelfHashCode() {
+ Collection c = makeCollection();
+ assertEquals("hashCode should be repeatable",c.hashCode(),c.hashCode());
+ tryToAdd(c,"element1");
+ assertEquals("after add, hashCode should be
repeatable",c.hashCode(),c.hashCode());
+ }
+
+ public void testCollectionHashCodeEqualsContract() {
+ Collection c1 = makeCollection();
+ if(c1.equals(c1)) {
+ assertEquals("[1] When two objects are equal, their hashCodes should be
also.",c1.hashCode(),c1.hashCode());
+ }
+ Collection c2 = makeCollection();
+ if(c1.equals(c2)) {
+ assertEquals("[2] When two objects are equal, their hashCodes should be
also.",c1.hashCode(),c2.hashCode());
+ }
+ tryToAdd(c1,"element1");
+ tryToAdd(c2,"element1");
+ if(c1.equals(c2)) {
+ assertEquals("[3] When two objects are equal, their hashCodes should be
also.",c1.hashCode(),c2.hashCode());
+ }
}
public void testCollectionIsEmpty() {
- assert("New Collection should be empty.",_collection.isEmpty());
+ Collection c = makeCollection();
+ assert("New Collection should be empty.",c.isEmpty());
boolean added = false;
try {
- added = _collection.add("element1");
+ added = c.add("element1");
} catch(UnsupportedOperationException e) {
// ignored, must not be supported
} catch(ClassCastException e) {
@@ -310,12 +265,13 @@
fail("Collection.add should only throw UnsupportedOperationException,
ClassCastException or IllegalArgumentException. Found " + t.toString());
}
if(added) {
- assert("If an element was added, the Collection.isEmpty() should return
false.",!_collection.isEmpty());
+ assert("If an element was added, the Collection.isEmpty() should return
false.",!c.isEmpty());
}
}
public void testCollectionIterator() {
- Iterator it1 = _collection.iterator();
+ Collection c = makeCollection();
+ Iterator it1 = c.iterator();
assert("Iterator for empty Collection shouldn't have next.",!it1.hasNext());
try {
it1.next();
@@ -329,7 +285,7 @@
boolean added = false;
try {
- added = _collection.add("element1");
+ added = c.add("element1");
} catch(UnsupportedOperationException e) {
// ignored, must not be supported
} catch(ClassCastException e) {
@@ -341,7 +297,7 @@
fail("Collection.add should only throw UnsupportedOperationException,
ClassCastException or IllegalArgumentException. Found " + t.toString());
}
if(added) {
- Iterator it2 = _collection.iterator();
+ Iterator it2 = c.iterator();
assert("Iterator for non-empty Collection should have
next.",it2.hasNext());
assertEquals("element1",it2.next());
assert("Iterator at end of Collection shouldn't have
next.",!it2.hasNext());
@@ -359,9 +315,10 @@
// optional operation
public void testCollectionRemove() {
+ Collection c = makeCollection();
boolean added = false;
try {
- added = _collection.add("element1");
+ added = c.add("element1");
} catch(UnsupportedOperationException e) {
// ignored, must not be supported
} catch(ClassCastException e) {
@@ -374,7 +331,7 @@
}
try {
- assert("Shouldn't be able to remove an element that wasn't
added.",!_collection.remove("element2"));
+ assert("Shouldn't be able to remove an element that wasn't
added.",!c.remove("element2"));
} catch(UnsupportedOperationException e) {
} catch(Throwable t) {
t.printStackTrace();
@@ -382,8 +339,8 @@
}
try {
- assert("If added, should be removed by call to remove.",added ==
_collection.remove("element1"));
- assert("If removed, shouldn't be
contained.",!_collection.contains("element1"));
+ assert("If added, should be removed by call to remove.",added ==
c.remove("element1"));
+ assert("If removed, shouldn't be contained.",!c.contains("element1"));
} catch(UnsupportedOperationException e) {
} catch(Throwable t) {
t.printStackTrace();
@@ -393,20 +350,21 @@
// optional operation
public void testCollectionRemoveAll() {
- assert("Initial Collection is empty.",_collection.isEmpty());
+ Collection c = makeCollection();
+ assert("Initial Collection is empty.",c.isEmpty());
try {
- _collection.removeAll(_collection);
+ c.removeAll(c);
} catch(UnsupportedOperationException e) {
// expected
} catch(Throwable t) {
t.printStackTrace();
fail("Collection.removeAll should only throw
UnsupportedOperationException. Found " + t.toString());
}
- assert("Collection is still empty.",_collection.isEmpty());
+ assert("Collection is still empty.",c.isEmpty());
boolean added = false;
try {
- added = _collection.add("element1");
+ added = c.add("element1");
} catch(UnsupportedOperationException e) {
// ignored, must not be supported
} catch(ClassCastException e) {
@@ -418,10 +376,10 @@
fail("Collection.add should only throw UnsupportedOperationException,
ClassCastException or IllegalArgumentException. Found " + t.toString());
}
if(added) {
- assert("Collection is not empty.",!_collection.isEmpty());
+ assert("Collection is not empty.",!c.isEmpty());
try {
- _collection.removeAll(_collection);
- assert("Collection is empty.",_collection.isEmpty());
+ c.removeAll(c);
+ assert("Collection is empty.",c.isEmpty());
} catch(UnsupportedOperationException e) {
// expected
} catch(Throwable t) {
@@ -433,15 +391,16 @@
// optional operation
public void testCollectionRemoveAll2() {
+ Collection c = makeCollection();
Collection col = new ArrayList();
col.add("element1");
col.add("element2");
col.add("element3");
boolean added = false;
try {
- added = _collection.addAll(col);
+ added = c.addAll(col);
if(added) {
- added = _collection.add("element0");
+ added = c.add("element0");
}
} catch(UnsupportedOperationException e) {
// ignored, must not be supported
@@ -455,15 +414,15 @@
}
col.add("element4");
if(added) {
- assert("Collection is not empty.",!_collection.isEmpty());
+ assert("Collection is not empty.",!c.isEmpty());
try {
- assert("Should be changed",_collection.removeAll(col));
- assert("Collection is not empty.",!_collection.isEmpty());
- assert("Collection should contain
element",_collection.contains("element0"));
- assert("Collection shouldn't contain removed
element",!_collection.contains("element1"));
- assert("Collection shouldn't contain removed
element",!_collection.contains("element2"));
- assert("Collection shouldn't contain removed
element",!_collection.contains("element3"));
- assert("Collection shouldn't contain removed
element",!_collection.contains("element4"));
+ assert("Should be changed",c.removeAll(col));
+ assert("Collection is not empty.",!c.isEmpty());
+ assert("Collection should contain element",c.contains("element0"));
+ assert("Collection shouldn't contain removed
element",!c.contains("element1"));
+ assert("Collection shouldn't contain removed
element",!c.contains("element2"));
+ assert("Collection shouldn't contain removed
element",!c.contains("element3"));
+ assert("Collection shouldn't contain removed
element",!c.contains("element4"));
} catch(UnsupportedOperationException e) {
// expected
} catch(Throwable t) {
@@ -475,13 +434,15 @@
// optional operation
public void testCollectionRetainAll() {
+ // XXX finish me
}
public void testCollectionSize() {
- assertEquals("Size of new Collection is 0.",0,_collection.size());
+ Collection c = makeCollection();
+ assertEquals("Size of new Collection is 0.",0,c.size());
boolean added = false;
try {
- added = _collection.add("element1");
+ added = c.add("element1");
} catch(UnsupportedOperationException e) {
// ignored, must not be supported
} catch(ClassCastException e) {
@@ -493,13 +454,79 @@
fail("Collection.add should only throw UnsupportedOperationException,
ClassCastException or IllegalArgumentException. Found " + t.toString());
}
if(added) {
- assertEquals("If one element was added, the Collection.size() should be
1.",1,_collection.size());
+ assertEquals("If one element was added, the Collection.size() should be
1.",1,c.size());
}
}
public void testCollectionToArray() {
+ Collection c = makeCollection();
+ assertEquals("Empty Collection should return empty array for
toArray",0,c.toArray().length);
+ boolean added = false;
+ try {
+ added = c.add("element1");
+ } catch(UnsupportedOperationException e) {
+ // ignored, must not be supported
+ } catch(ClassCastException e) {
+ // ignored, type must not be supported
+ } catch(IllegalArgumentException e) {
+ // ignored, element must not be supported
+ } catch(Throwable t) {
+ t.printStackTrace();
+ fail("Collection.add should only throw UnsupportedOperationException,
ClassCastException or IllegalArgumentException. Found " + t.toString());
+ }
+ if(added) {
+ assertEquals("If an element was added, the Collection.toArray().length
should be 1.",1,c.toArray().length);
+ } else {
+ assertEquals("Empty Collection should return empty array for
toArray",0,c.toArray().length);
+ }
+
+ boolean added2 = false;
+ try {
+ added2 = c.add("element1");
+ } catch(UnsupportedOperationException e) {
+ // ignored, must not be supported
+ } catch(ClassCastException e) {
+ // ignored, type must not be supported
+ } catch(IllegalArgumentException e) {
+ // ignored, element must not be supported
+ } catch(Throwable t) {
+ t.printStackTrace();
+ fail("Collection.add should only throw UnsupportedOperationException,
ClassCastException or IllegalArgumentException. Found " + t.toString());
+ }
+ if(added && added2) {
+ assertEquals("If another element was added, the
Collection.toArray().length should be 2.",2,c.toArray().length);
+ } else if(added2) {
+ assertEquals("If an element was added, the Collection.toArray().length
should be 1.",1,c.toArray().length);
+ } else {
+ assertEquals("Empty Collection should return empty array for
toArray",0,c.toArray().length);
+ }
}
public void testCollectionToArray2() {
+ // XXX finish me
+ }
+
+ /**
+ * Try to add the given object to the given Collection.
+ * Returns <tt>true</tt> if the element was added,
+ * <tt>false</tt> otherwise.
+ *
+ * Fails any Throwable except UnsupportedOperationException,
+ * ClassCastException, or IllegalArgumentException is thrown.
+ */
+ protected boolean tryToAdd(Collection c,Object obj) {
+ try {
+ return c.add(obj);
+ } catch(UnsupportedOperationException e) {
+ return false;
+ } catch(ClassCastException e) {
+ return false;
+ } catch(IllegalArgumentException e) {
+ return false;
+ } catch(Throwable t) {
+ t.printStackTrace();
+ fail("Collection.add should only throw UnsupportedOperationException,
ClassCastException or IllegalArgumentException. Found " + t.toString());
+ return false; // never get here, since fail throws exception
+ }
}
}
1.3 +8 -6
jakarta-commons/collections/src/test/org/apache/commons/collections/TestArrayStack.java
Index: TestArrayStack.java
===================================================================
RCS file:
/home/cvs/jakarta-commons/collections/src/test/org/apache/commons/collections/TestArrayStack.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- TestArrayStack.java 2001/04/14 19:50:31 1.2
+++ TestArrayStack.java 2001/04/20 16:54:08 1.3
@@ -1,7 +1,7 @@
/*
- * $Header:
/home/cvs/jakarta-commons/collections/src/test/org/apache/commons/collections/TestArrayStack.java,v
1.2 2001/04/14 19:50:31 craigmcc Exp $
- * $Revision: 1.2 $
- * $Date: 2001/04/14 19:50:31 $
+ * $Header:
/home/cvs/jakarta-commons/collections/src/test/org/apache/commons/collections/TestArrayStack.java,v
1.3 2001/04/20 16:54:08 rwaldhoff Exp $
+ * $Revision: 1.3 $
+ * $Date: 2001/04/20 16:54:08 $
*
* ====================================================================
*
@@ -66,7 +66,7 @@
/**
* @author Craig McClanahan
- * @version $Id: TestArrayStack.java,v 1.2 2001/04/14 19:50:31 craigmcc Exp $
+ * @version $Id: TestArrayStack.java,v 1.3 2001/04/20 16:54:08 rwaldhoff Exp $
*/
public class TestArrayStack extends TestList {
@@ -84,13 +84,15 @@
junit.textui.TestRunner.main(testCaseName);
}
+ public List makeList() {
+ return new ArrayStack();
+ }
+
private ArrayStack stack = null;
public void setUp() {
stack = new ArrayStack();
- setList(stack);
}
-
public void testNewStack() {
1.4 +5 -4
jakarta-commons/collections/src/test/org/apache/commons/collections/TestAll.java
Index: TestAll.java
===================================================================
RCS file:
/home/cvs/jakarta-commons/collections/src/test/org/apache/commons/collections/TestAll.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- TestAll.java 2001/04/16 22:42:04 1.3
+++ TestAll.java 2001/04/20 16:54:10 1.4
@@ -1,7 +1,7 @@
/*
- * $Header:
/home/cvs/jakarta-commons/collections/src/test/org/apache/commons/collections/TestAll.java,v
1.3 2001/04/16 22:42:04 jvanzyl Exp $
- * $Revision: 1.3 $
- * $Date: 2001/04/16 22:42:04 $
+ * $Header:
/home/cvs/jakarta-commons/collections/src/test/org/apache/commons/collections/TestAll.java,v
1.4 2001/04/20 16:54:10 rwaldhoff Exp $
+ * $Revision: 1.4 $
+ * $Date: 2001/04/20 16:54:10 $
*
* ====================================================================
*
@@ -64,8 +64,9 @@
import junit.framework.*;
/**
+ * Entry point for all Collections tests.
* @author Rodney Waldhoff
- * @version $Id: TestAll.java,v 1.3 2001/04/16 22:42:04 jvanzyl Exp $
+ * @version $Id: TestAll.java,v 1.4 2001/04/20 16:54:10 rwaldhoff Exp $
*/
public class TestAll extends TestCase {
public TestAll(String testName) {
1.1
jakarta-commons/collections/src/test/org/apache/commons/collections/TestObject.java
Index: TestObject.java
===================================================================
/*
* $Header:
/home/cvs/jakarta-commons/collections/src/test/org/apache/commons/collections/TestObject.java,v
1.1 2001/04/20 16:54:03 rwaldhoff Exp $
* $Revision: 1.1 $
* $Date: 2001/04/20 16:54:03 $
*
* ====================================================================
*
* The Apache Software License, Version 1.1
*
* Copyright (c) 1999-2001 The Apache Software Foundation. All rights
* reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* 3. The end-user documentation included with the redistribution, if
* any, must include the following acknowlegement:
* "This product includes software developed by the
* Apache Software Foundation (http://www.apache.org/)."
* Alternately, this acknowlegement may appear in the software itself,
* if and wherever such third-party acknowlegements normally appear.
*
* 4. The names "The Jakarta Project", "Commons", and "Apache Software
* Foundation" must not be used to endorse or promote products derived
* from this software without prior written permission. For written
* permission, please contact [EMAIL PROTECTED]
*
* 5. Products derived from this software may not be called "Apache"
* nor may "Apache" appear in their names without prior written
* permission of the Apache Group.
*
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
* USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
* ====================================================================
*
* This software consists of voluntary contributions made by many
* individuals on behalf of the Apache Software Foundation. For more
* information on the Apache Software Foundation, please see
* <http://www.apache.org/>.
*
*/
package org.apache.commons.collections;
import junit.framework.*;
import java.util.Collection;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.NoSuchElementException;
/**
* Tests base {@link java.util.Object} methods and contracts.
* <p>
* To use, simply extend this class, and implement
* the {@link #makeObject} method.
* <p>
* If your {@link Object} fails one of these tests by design,
* you may still use this base set of cases. Simply override the
* test case (method) your {@link Object} fails.
*
* @author Rodney Waldhoff
* @version $Id: TestObject.java,v 1.1 2001/04/20 16:54:03 rwaldhoff Exp $
*/
public abstract class TestObject extends TestCase {
public TestObject(String testName) {
super(testName);
}
/**
* Return a new, empty {@link Object} to used for testing.
*/
public abstract Object makeObject();
public void testObjectEqualsSelf() {
Object obj = makeObject();
assertEquals("A Object should equal itself",obj,obj);
}
public void testObjectHashCodeEqualsSelfHashCode() {
Object obj = makeObject();
assertEquals("hashCode should be repeatable",obj.hashCode(),obj.hashCode());
}
public void testObjectHashCodeEqualsContract() {
Object obj1 = makeObject();
if(obj1.equals(obj1)) {
assertEquals("[1] When two objects are equal, their hashCodes should be
also.",obj1.hashCode(),obj1.hashCode());
}
Object obj2 = makeObject();
if(obj1.equals(obj2)) {
assertEquals("[2] When two objects are equal, their hashCodes should be
also.",obj1.hashCode(),obj2.hashCode());
}
}
}
1.1
jakarta-commons/collections/src/test/org/apache/commons/collections/TestMap.java
Index: TestMap.java
===================================================================
/*
* $Header:
/home/cvs/jakarta-commons/collections/src/test/org/apache/commons/collections/TestMap.java,v
1.1 2001/04/20 16:54:04 rwaldhoff Exp $
* $Revision: 1.1 $
* $Date: 2001/04/20 16:54:04 $
*
* ====================================================================
*
* The Apache Software License, Version 1.1
*
* Copyright (c) 1999-2001 The Apache Software Foundation. All rights
* reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* 3. The end-user documentation included with the redistribution, if
* any, must include the following acknowlegement:
* "This product includes software developed by the
* Apache Software Foundation (http://www.apache.org/)."
* Alternately, this acknowlegement may appear in the software itself,
* if and wherever such third-party acknowlegements normally appear.
*
* 4. The names "The Jakarta Project", "Commons", and "Apache Software
* Foundation" must not be used to endorse or promote products derived
* from this software without prior written permission. For written
* permission, please contact [EMAIL PROTECTED]
*
* 5. Products derived from this software may not be called "Apache"
* nor may "Apache" appear in their names without prior written
* permission of the Apache Group.
*
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
* USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
* ====================================================================
*
* This software consists of voluntary contributions made by many
* individuals on behalf of the Apache Software Foundation. For more
* information on the Apache Software Foundation, please see
* <http://www.apache.org/>.
*
*/
package org.apache.commons.collections;
import junit.framework.*;
import java.util.Map;
import java.util.Collection;
/**
* Tests base {@link java.util.Map} methods and contracts.
* <p>
* To use, simply extend this class, and implement
* the {@link #makeMap} method.
* <p>
* If your {@link Map} fails one of these tests by design,
* you may still use this base set of cases. Simply override the
* test case (method) your {@link Map} fails.
*
* @author Rodney Waldhoff
* @version $Id: TestMap.java,v 1.1 2001/04/20 16:54:04 rwaldhoff Exp $
*/
public abstract class TestMap extends TestObject {
public TestMap(String testName) {
super(testName);
}
/**
* Return a new, empty {@link Map} to used for testing.
*/
public abstract Map makeMap();
public Object makeObject() {
return makeMap();
}
/*
// optional operation
public void testMapClear() {
// XXX finish me
}
public void testMapContainsKey() {
// XXX finish me
}
public void testMapContainsValue() {
// XXX finish me
}
public void testMapEntrySet() {
// XXX finish me
}
public void testMapEquals() {
// XXX finish me
}
public void testMapGet() {
// XXX finish me
}
public void testMapHashCode() {
// XXX finish me
}
public void testMapIsEmpty() {
// XXX finish me
}
public void testMapKeySet() {
// XXX finish me
}
// optional operation
public void testMapPut() {
// XXX finish me
}
// optional operation
public void testMapPutAll() {
// XXX finish me
}
// optional operation
public void testMapRemove() {
// XXX finish me
}
public void testMapSize() {
// XXX finish me
}
public void testMapValues() {
// XXX finish me
}
*/
/**
* Try to put the given pair into the given Collection.
*
* Fails any Throwable except UnsupportedOperationException,
* ClassCastException, or IllegalArgumentException
* or NullPointerException is thrown.
*/
protected Object tryToPut(Map map, Object key, Object val) {
try {
return map.put(key,val);
} catch(UnsupportedOperationException e) {
return null;
} catch(ClassCastException e) {
return null;
} catch(IllegalArgumentException e) {
return null;
} catch(NullPointerException e) {
return null;
} catch(Throwable t) {
t.printStackTrace();
fail("Map.put should only throw UnsupportedOperationException,
ClassCastException, IllegalArgumentException or NullPointerException. Found " +
t.toString());
return null; // never get here, since fail throws exception
}
}
}