You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@commons.apache.org by rw...@apache.org on 2003/01/08 00:44:21 UTC

cvs commit: jakarta-commons/collections/src/test/org/apache/commons/collections/comparators TestComparatorChain.java TestNullComparator.java TestReverseComparator.java

rwaldhoff    2003/01/07 15:44:20

  Modified:    collections/src/test/org/apache/commons/collections
                        TestBeanMap.java TestCursorableLinkedList.java
                        TestObject.java
               collections/src/test/org/apache/commons/collections/comparators
                        TestComparatorChain.java TestNullComparator.java
                        TestReverseComparator.java
  Log:
  add base testSerializeDeserializeThenCompare test, modify concrete TestCases so that they pass this test (or when necessary, skip them)
  this tests the Comparator.equals contract, among others
  
  Revision  Changes    Path
  1.8       +10 -7     jakarta-commons/collections/src/test/org/apache/commons/collections/TestBeanMap.java
  
  Index: TestBeanMap.java
  ===================================================================
  RCS file: /home/cvs/jakarta-commons/collections/src/test/org/apache/commons/collections/TestBeanMap.java,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- TestBeanMap.java	10 Aug 2002 02:05:20 -0000	1.7
  +++ TestBeanMap.java	7 Jan 2003 23:44:19 -0000	1.8
  @@ -7,7 +7,7 @@
    *
    * The Apache Software License, Version 1.1
    *
  - * Copyright (c) 1999-2001 The Apache Software Foundation.  All rights
  + * Copyright (c) 1999-2003 The Apache Software Foundation.  All rights
    * reserved.
    *
    * Redistribution and use in source and binary forms, with or without
  @@ -60,9 +60,10 @@
    */
   package org.apache.commons.collections;
   
  +import java.io.Serializable;
   import java.util.Map;
   
  -import junit.framework.*;
  +import junit.framework.Test;
   
   /**
    * Test cases for BeanMap
  @@ -98,7 +99,7 @@
   */
   
   
  -    public static class BeanWithProperties {
  +    public static class BeanWithProperties implements Serializable {
           private int someInt;
           private long someLong;
           private double someDouble;
  @@ -328,7 +329,9 @@
            "TestBeanMap.bulkTestMapValues.testCanonicalEmptyCollectionExists",
            "TestBeanMap.bulkTestMapValues.testCanonicalFullCollectionExists",
            "TestBeanMap.bulkTestMapEntrySet.testSimpleSerialization",
  -         "TestBeanMap.bulkTestMapKeySet.testSimpleSerialization"
  +         "TestBeanMap.bulkTestMapKeySet.testSimpleSerialization",
  +         "TestBeanMap.bulkTestMapEntrySet.testSerializeDeserializeThenCompare",
  +         "TestBeanMap.bulkTestMapKeySet.testSerializeDeserializeThenCompare"
           };
       }
   
  
  
  
  1.7       +6 -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.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- TestCursorableLinkedList.java	21 Jun 2002 03:32:06 -0000	1.6
  +++ TestCursorableLinkedList.java	7 Jan 2003 23:44:19 -0000	1.7
  @@ -966,7 +966,8 @@
             ".testFullListCompatibility", 
             ".testSimpleSerialization",
             ".testCanonicalEmptyCollectionExists",
  -          ".testCanonicalFullCollectionExists"
  +          ".testCanonicalFullCollectionExists",
  +          ".testSerializeDeserializeThenCompare"
           };
           for (int i = 0; i < ignored.length; i++) {
               list.add(prefix + bulk + ignored[i]);
  
  
  
  1.17      +19 -4     jakarta-commons/collections/src/test/org/apache/commons/collections/TestObject.java
  
  Index: TestObject.java
  ===================================================================
  RCS file: /home/cvs/jakarta-commons/collections/src/test/org/apache/commons/collections/TestObject.java,v
  retrieving revision 1.16
  retrieving revision 1.17
  diff -u -r1.16 -r1.17
  --- TestObject.java	7 Jan 2003 15:18:15 -0000	1.16
  +++ TestObject.java	7 Jan 2003 23:44:19 -0000	1.17
  @@ -84,7 +84,7 @@
    * test case (method) your {@link Object} fails.
    *
    * @author Rodney Waldhoff
  - * @version $Id$
  + * @version $Revision$ $Date$
    */
   public abstract class TestObject extends BulkTest {
       public TestObject(String testName) {
  @@ -138,6 +138,21 @@
           if(obj1.equals(obj2)) {
               assertEquals("[2] When two objects are equal, their hashCodes should be also.",obj1.hashCode(),obj2.hashCode());
               assertTrue("When obj1.equals(obj2) is true, then obj2.equals(obj1) should also be true", obj2.equals(obj1));
  +        }
  +    }
  +
  +    public void testSerializeDeserializeThenCompare() throws Exception {
  +        Object obj = makeObject();
  +        if(obj instanceof Serializable) {
  +            ByteArrayOutputStream buffer = new ByteArrayOutputStream();
  +            ObjectOutputStream out = new ObjectOutputStream(buffer);
  +            out.writeObject(obj);
  +            out.close();
  +            
  +            ObjectInputStream in = new ObjectInputStream(new ByteArrayInputStream(buffer.toByteArray()));
  +            Object dest = in.readObject();
  +            in.close();
  +            assertEquals("obj != deserialize(serialize(obj))",obj,dest);
           }
       }
   
  
  
  
  1.4       +70 -4     jakarta-commons/collections/src/test/org/apache/commons/collections/comparators/TestComparatorChain.java
  
  Index: TestComparatorChain.java
  ===================================================================
  RCS file: /home/cvs/jakarta-commons/collections/src/test/org/apache/commons/collections/comparators/TestComparatorChain.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- TestComparatorChain.java	12 Oct 2002 22:36:23 -0000	1.3
  +++ TestComparatorChain.java	7 Jan 2003 23:44:20 -0000	1.4
  @@ -1,3 +1,59 @@
  +/* 
  + * $Id$
  + * ====================================================================
  + * The Apache Software License, Version 1.1
  + *
  + * Copyright (c) 2001-2003 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 acknowledgment:
  + *       "This product includes software developed by the
  + *        Apache Software Foundation (http://www.apache.org/)."
  + *    Alternately, this acknowledgment may appear in the software itself,
  + *    if and wherever such third-party acknowledgments normally appear.
  + *
  + * 4. The names "Apache" and "Apache Software Foundation" and
  + *    "Apache Commons" must not be used to endorse or promote products
  + *    derived from this software without prior written permission. For
  + *    written permission, please contact apache@apache.org.
  + *
  + * 5. Products derived from this software may not be called "Apache",
  + *    "Apache Turbine", nor may "Apache" appear in their name, without
  + *    prior written permission of the Apache Software Foundation.
  + *
  + * 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.comparators;
   
   import java.io.Serializable;
  @@ -18,10 +74,6 @@
           return new TestSuite(TestComparatorChain.class);
       }
   
  -    /**
  -     * 
  -     * @return 
  -     */
       public Comparator makeComparator() {
           ComparatorChain chain = new ComparatorChain(new ColumnComparator(0));
           chain.addComparator(new ColumnComparator(1),true); // reverse the second column
  @@ -159,5 +211,19 @@
   
               return 0;
           }
  +        
  +        public int hashCode() {
  +            return colIndex;
  +        }
  +        
  +        public boolean equals(Object that) {
  +            if(that instanceof ColumnComparator) {
  +                return colIndex == ((ColumnComparator)that).colIndex;
  +            } else {
  +                return false;
  +            }
  +        }
  +        
  +        private static final long serialVersionUID = -2284880866328872105L;
       }
   }
  
  
  
  1.4       +29 -29    jakarta-commons/collections/src/test/org/apache/commons/collections/comparators/TestNullComparator.java
  
  Index: TestNullComparator.java
  ===================================================================
  RCS file: /home/cvs/jakarta-commons/collections/src/test/org/apache/commons/collections/comparators/TestNullComparator.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- TestNullComparator.java	12 Oct 2002 22:36:23 -0000	1.3
  +++ TestNullComparator.java	7 Jan 2003 23:44:20 -0000	1.4
  @@ -74,10 +74,10 @@
       }
   
       public static Test suite() {
  -	TestSuite suite = new TestSuite(TestNullComparator.class.getName());
  -	suite.addTest(new TestSuite(TestNullComparator1.class));
  -	suite.addTest(new TestSuite(TestNullComparator2.class));
  -	return suite;
  +        TestSuite suite = new TestSuite(TestNullComparator.class.getName());
  +        suite.addTest(new TestSuite(TestNullComparator1.class));
  +        suite.addTest(new TestSuite(TestNullComparator2.class));
  +        return suite;
       }
   
       /**
  @@ -94,7 +94,7 @@
   	}
   	
   	public List getComparableObjectsOrdered() {
  -	    List list = new LinkedList();
  +        List list = new LinkedList();
   	    list.add(new Integer(1));
   	    list.add(new Integer(2));
   	    list.add(new Integer(3));
  @@ -113,28 +113,28 @@
        *  Test the NullComparator with nulls low using the comparable comparator
        **/
       public static class TestNullComparator2 extends TestNullComparator {
  -
  -	public TestNullComparator2(String testName) {
  -	    super(testName);
  -	}
  -
  -	public Comparator makeComparator() {
  -	    return new NullComparator(false);
  -	}
  -	
  -	public List getComparableObjectsOrdered() {
  -	    List list = new LinkedList();
  -	    list.add(null);
  -	    list.add(new Integer(1));
  -	    list.add(new Integer(2));
  -	    list.add(new Integer(3));
  -	    list.add(new Integer(4));
  -	    list.add(new Integer(5));
  -	    return list;
  -	}
  -
  -	public String getCanonicalComparatorName(Object object) {
  -	    return super.getCanonicalComparatorName(object) + "2";
  -	}
  +        
  +        public TestNullComparator2(String testName) {
  +            super(testName);
  +        }
  +        
  +        public Comparator makeComparator() {
  +            return new NullComparator(false);
  +        }
  +        
  +        public List getComparableObjectsOrdered() {
  +            List list = new LinkedList();
  +            list.add(null);
  +            list.add(new Integer(1));
  +            list.add(new Integer(2));
  +            list.add(new Integer(3));
  +            list.add(new Integer(4));
  +            list.add(new Integer(5));
  +            return list;
  +        }
  +        
  +        public String getCanonicalComparatorName(Object object) {
  +            return super.getCanonicalComparatorName(object) + "2";
  +        }
       }
   }
  
  
  
  1.4       +80 -1     jakarta-commons/collections/src/test/org/apache/commons/collections/comparators/TestReverseComparator.java
  
  Index: TestReverseComparator.java
  ===================================================================
  RCS file: /home/cvs/jakarta-commons/collections/src/test/org/apache/commons/collections/comparators/TestReverseComparator.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- TestReverseComparator.java	12 Oct 2002 22:36:23 -0000	1.3
  +++ TestReverseComparator.java	7 Jan 2003 23:44:20 -0000	1.4
  @@ -1,5 +1,65 @@
  +/* 
  + * $Id$
  + * ====================================================================
  + * The Apache Software License, Version 1.1
  + *
  + * Copyright (c) 2001-2003 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 acknowledgment:
  + *       "This product includes software developed by the
  + *        Apache Software Foundation (http://www.apache.org/)."
  + *    Alternately, this acknowledgment may appear in the software itself,
  + *    if and wherever such third-party acknowledgments normally appear.
  + *
  + * 4. The names "Apache" and "Apache Software Foundation" and
  + *    "Apache Commons" must not be used to endorse or promote products
  + *    derived from this software without prior written permission. For
  + *    written permission, please contact apache@apache.org.
  + *
  + * 5. Products derived from this software may not be called "Apache",
  + *    "Apache Turbine", nor may "Apache" appear in their name, without
  + *    prior written permission of the Apache Software Foundation.
  + *
  + * 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.comparators;
   
  +import java.io.ByteArrayInputStream;
  +import java.io.ByteArrayOutputStream;
  +import java.io.ObjectInputStream;
  +import java.io.ObjectOutputStream;
   import java.util.Collections;
   import java.util.Comparator;
   import java.util.LinkedList;
  @@ -21,7 +81,7 @@
       /**
        * For the purposes of this test, return a 
        * ReverseComparator that wraps the java.util.Collections.reverseOrder()
  -     * Comparator.  The resulting comparator shouls
  +     * Comparator.  The resulting comparator should
        * sort according to natural Order.  (Note: we wrap
        * a Comparator taken from the JDK so that we can
        * save a "canonical" form in CVS.
  @@ -40,6 +100,25 @@
           list.add(new Integer(4));
           list.add(new Integer(5));
           return list;
  +    }
  +
  +    /** 
  +     * Override this inherited test since Collections.reverseOrder
  +     * doesn't adhere to the "soft" Comparator contract, and we've
  +     * already "cannonized" the comparator returned by makeComparator.
  +     */
  +    public void testSerializeDeserializeThenCompare() throws Exception {
  +        Comparator comp = new ReverseComparator(new ComparableComparator());
  +
  +        ByteArrayOutputStream buffer = new ByteArrayOutputStream();
  +        ObjectOutputStream out = new ObjectOutputStream(buffer);
  +        out.writeObject(comp);
  +        out.close();
  +            
  +        ObjectInputStream in = new ObjectInputStream(new ByteArrayInputStream(buffer.toByteArray()));
  +        Object dest = in.readObject();
  +        in.close();
  +        assertEquals("obj != deserialize(serialize(obj))",comp,dest);
       }
   
   }
  
  
  

--
To unsubscribe, e-mail:   <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>