rwaldhoff 01/04/05 11:04:35
Modified: collections/src/org/apache/commons/collections
TestCursorableLinkedList.java
Added: collections/src/org/apache/commons/collections TestList.java
TestCollection.java
Log:
added general Collection/List contract tests
Revision Changes Path
1.2 +5 -4
jakarta-commons-sandbox/collections/src/org/apache/commons/collections/TestCursorableLinkedList.java
Index: TestCursorableLinkedList.java
===================================================================
RCS file:
/home/cvs/jakarta-commons-sandbox/collections/src/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/03 17:12:00 1.1
+++ TestCursorableLinkedList.java 2001/04/05 18:04:34 1.2
@@ -1,7 +1,7 @@
/*
- * $Header:
/home/cvs/jakarta-commons-sandbox/collections/src/org/apache/commons/collections/TestCursorableLinkedList.java,v
1.1 2001/04/03 17:12:00 rwaldhoff Exp $
- * $Revision: 1.1 $
- * $Date: 2001/04/03 17:12:00 $
+ * $Header:
/home/cvs/jakarta-commons-sandbox/collections/src/org/apache/commons/collections/TestCursorableLinkedList.java,v
1.2 2001/04/05 18:04:34 rwaldhoff Exp $
+ * $Revision: 1.2 $
+ * $Date: 2001/04/05 18:04:34 $
*
* ====================================================================
*
@@ -66,9 +66,9 @@
/**
* @author Rodney Waldhoff
- * @version $Id: TestCursorableLinkedList.java,v 1.1 2001/04/03 17:12:00 rwaldhoff
Exp $
+ * @version $Id: TestCursorableLinkedList.java,v 1.2 2001/04/05 18:04:34 rwaldhoff
Exp $
*/
-public class TestCursorableLinkedList extends TestCase {
+public class TestCursorableLinkedList extends TestList {
public TestCursorableLinkedList(String testName) {
super(testName);
}
@@ -86,6 +86,7 @@
public void setUp() {
list = new CursorableLinkedList();
+ setList(list);
}
public void testAdd() {
1.1
jakarta-commons-sandbox/collections/src/org/apache/commons/collections/TestList.java
Index: TestList.java
===================================================================
/*
* $Header:
/home/cvs/jakarta-commons-sandbox/collections/src/org/apache/commons/collections/TestList.java,v
1.1 2001/04/05 18:04:33 rwaldhoff Exp $
* $Revision: 1.1 $
* $Date: 2001/04/05 18:04:33 $
*
* ====================================================================
*
* 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.List;
/**
* @author Rodney Waldhoff
* @version $Id: TestList.java,v 1.1 2001/04/05 18:04:33 rwaldhoff Exp $
*/
public abstract class TestList extends TestCollection {
public TestList(String testName) {
super(testName);
}
private List _list = null;
protected void setList(List l) {
_list = l;
setCollection(_list);
}
// placeholder. add list contract tests here
}
1.1
jakarta-commons-sandbox/collections/src/org/apache/commons/collections/TestCollection.java
Index: TestCollection.java
===================================================================
/*
* $Header:
/home/cvs/jakarta-commons-sandbox/collections/src/org/apache/commons/collections/TestCollection.java,v
1.1 2001/04/05 18:04:34 rwaldhoff Exp $
* $Revision: 1.1 $
* $Date: 2001/04/05 18:04:34 $
*
* ====================================================================
*
* 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;
/**
* @author Rodney Waldhoff
* @version $Id: TestCollection.java,v 1.1 2001/04/05 18:04:34 rwaldhoff Exp $
*/
public abstract class TestCollection extends TestCase {
public TestCollection(String testName) {
super(testName);
}
private Collection _collection = null;
protected void setCollection(Collection c) {
_collection = c;
}
// 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());
}
}
// optional operation
public void testCollectionAddAll() {
Collection col = new ArrayList();
col.add("element1");
col.add("element2");
col.add("element3");
boolean added = false;
try {
added = _collection.addAll(col);
} 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.addAll should only throw UnsupportedOperationException,
ClassCastException or IllegalArgumentException. Found " + t.toString());
}
}
// optional operation
public void testCollectionClear() {
boolean cleared = false;
try {
_collection.clear();
cleared = true;
} catch(UnsupportedOperationException e) {
// ignored, must not be supported
} catch(Throwable t) {
t.printStackTrace();
fail("Collection.clear should only throw UnsupportedOperationException.
Found " + t.toString());
}
if(cleared) {
assert("After Collection.clear(), Collection.isEmpty() should be
true.",_collection.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());
}
if(added) {
assert("After element is added, Collection.isEmpty() should be
false.",!_collection.isEmpty());
boolean cleared2 = false;
try {
_collection.clear();
cleared2 = true;
} catch(UnsupportedOperationException e) {
// ignored, must not be supported
} catch(Throwable t) {
t.printStackTrace();
fail("Collection.clear should only throw
UnsupportedOperationException. Found " + t.toString());
}
if(cleared2) {
assert("After Collection.clear(), Collection.isEmpty() should be
true.",_collection.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"));
}
public void testCollectionContainsAll() {
Collection col = new ArrayList();
assert("Every Collection should contain all elements of an empty
Collection.",_collection.containsAll(col));
col.add("element1");
assert("Empty Collection shouldn't contain all elements of a non-empty
Collection.",!_collection.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());
}
if(added1) {
assert("Should contain all.",_collection.containsAll(col));
}
col.add("element2");
assert("Shouldn't contain all.",!_collection.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());
}
if(added1 && added2) {
assert("Should contain all.",_collection.containsAll(col));
}
}
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());
}
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());
}
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 testCollectionIsEmpty() {
assert("New Collection should be empty.",_collection.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());
}
if(added) {
assert("If an element was added, the Collection.isEmpty() should return
false.",!_collection.isEmpty());
}
}
public void testCollectionIterator() {
Iterator it1 = _collection.iterator();
assert("Iterator for empty Collection shouldn't have next.",!it1.hasNext());
try {
it1.next();
fail("Iterator at end of Collection should throw NoSuchElementException
when next is called.");
} catch(NoSuchElementException e) {
// expected
} catch(Throwable t) {
t.printStackTrace();
fail("Collection.iterator.next() should only throw
NoSuchElementException. Found " + t.toString());
}
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());
}
if(added) {
Iterator it2 = _collection.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());
try {
it2.next();
fail("Iterator at end of Collection should throw
NoSuchElementException when next is called.");
} catch(NoSuchElementException e) {
// expected
} catch(Throwable t) {
t.printStackTrace();
fail("Collection.iterator.next() should only throw
NoSuchElementException. Found " + t.toString());
}
}
}
// optional operation
public void testCollectionRemove() {
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());
}
try {
assert("Shouldn't be able to remove an element that wasn't
added.",!_collection.remove("element2"));
} catch(UnsupportedOperationException e) {
} catch(Throwable t) {
t.printStackTrace();
fail("Collection.remove should only throw UnsupportedOperationException.
Found " + t.toString());
}
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"));
} catch(UnsupportedOperationException e) {
} catch(Throwable t) {
t.printStackTrace();
fail("Collection.remove should only throw UnsupportedOperationException.
Found " + t.toString());
}
}
// optional operation
public void testCollectionRemoveAll() {
assert("Initial Collection is empty.",_collection.isEmpty());
try {
_collection.removeAll(_collection);
} 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());
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());
}
if(added) {
assert("Collection is not empty.",!_collection.isEmpty());
try {
_collection.removeAll(_collection);
assert("Collection is empty.",_collection.isEmpty());
} catch(UnsupportedOperationException e) {
// expected
} catch(Throwable t) {
t.printStackTrace();
fail("Collection.removeAll should only throw
UnsupportedOperationException. Found " + t.toString());
}
}
}
// optional operation
public void testCollectionRemoveAll2() {
Collection col = new ArrayList();
col.add("element1");
col.add("element2");
col.add("element3");
boolean added = false;
try {
added = _collection.addAll(col);
if(added) {
added = _collection.add("element0");
}
} 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.addAll should only throw UnsupportedOperationException,
ClassCastException or IllegalArgumentException. Found " + t.toString());
}
col.add("element4");
if(added) {
assert("Collection is not empty.",!_collection.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"));
} catch(UnsupportedOperationException e) {
// expected
} catch(Throwable t) {
t.printStackTrace();
fail("Collection.removeAll should only throw
UnsupportedOperationException. Found " + t.toString());
}
}
}
// optional operation
public void testCollectionRetainAll() {
}
public void testCollectionSize() {
assertEquals("Size of new Collection is 0.",0,_collection.size());
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());
}
if(added) {
assertEquals("If one element was added, the Collection.size() should be
1.",1,_collection.size());
}
}
public void testCollectionToArray() {
}
public void testCollectionToArray2() {
}
}