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() {
      }
  }
  
  
  

Reply via email to