Class AbstractTestObject

java.lang.Object
junit.framework.Assert
junit.framework.TestCase
org.apache.commons.collections.BulkTest
org.apache.commons.collections.AbstractTestObject
All Implemented Interfaces:
Cloneable, junit.framework.Test
Direct Known Subclasses:
AbstractTestBag, AbstractTestCollection, AbstractTestComparator, AbstractTestIterator, AbstractTestMap

public abstract class AbstractTestObject extends BulkTest
Abstract test class for Object methods and contracts.

To use, simply extend this class, and implement the makeObject() method.

If your Object fails one of these tests by design, you may still use this base set of cases. Simply override the test case (method) your Object fails.

  • Field Details

    • COLLECTIONS_MAJOR_VERSION

      public static final int COLLECTIONS_MAJOR_VERSION
      Current major release for Collections
      See Also:
  • Constructor Details

    • AbstractTestObject

      public AbstractTestObject(String testName)
      JUnit constructor.
      Parameters:
      testName - the test class name
  • Method Details

    • makeObject

      public abstract Object makeObject()
      Implement this method to return the object to test.
      Returns:
      the object to test
    • supportsEmptyCollections

      public boolean supportsEmptyCollections()
      Override this method if a subclass is testing an object that cannot serialize an "empty" Collection. (e.g. Comparators have no contents)
      Returns:
      true
    • supportsFullCollections

      public boolean supportsFullCollections()
      Override this method if a subclass is testing an object that cannot serialize a "full" Collection. (e.g. Comparators have no contents)
      Returns:
      true
    • isTestSerialization

      public boolean isTestSerialization()
      Is serialization testing supported. Default is true.
    • isEqualsCheckable

      public boolean isEqualsCheckable()
      Returns true to indicate that the collection supports equals() comparisons. This implementation returns true;
    • testObjectEqualsSelf

      public void testObjectEqualsSelf()
    • testEqualsNull

      public void testEqualsNull()
    • testObjectHashCodeEqualsSelfHashCode

      public void testObjectHashCodeEqualsSelfHashCode()
    • testObjectHashCodeEqualsContract

      public void testObjectHashCodeEqualsContract()
    • testSerializeDeserializeThenCompare

      public void testSerializeDeserializeThenCompare() throws Exception
      Throws:
      Exception
    • testSimpleSerialization

      public void testSimpleSerialization() throws Exception
      Sanity check method, makes sure that any Serializable class can be serialized and de-serialized in memory, using the handy makeObject() method
      Throws:
      IOException
      ClassNotFoundException
      Exception
    • testCanonicalEmptyCollectionExists

      public void testCanonicalEmptyCollectionExists()
      Tests serialization by comparing against a previously stored version in CVS. If the test object is serializable, confirm that a canonical form exists.
    • testCanonicalFullCollectionExists

      public void testCanonicalFullCollectionExists()
      Tests serialization by comparing against a previously stored version in CVS. If the test object is serializable, confirm that a canonical form exists.
    • getCompatibilityVersion

      public String getCompatibilityVersion()
      Get the version of Collections that this object tries to maintain serialization compatibility with. Defaults to 1, the earliest Collections version. (Note: some collections did not even exist in this version). This constant makes it possible for TestMap (and other subclasses, if necessary) to automatically check CVS for a versionX copy of a Serialized object, so we can make sure that compatibility is maintained. See, for example, TestMap.getCanonicalFullMapName(Map map). Subclasses can override this variable, indicating compatibility with earlier Collections versions.
      Returns:
      The version, or null if this object shouldn't be tested for compatibility with previous versions.
    • getCanonicalEmptyCollectionName

      protected String getCanonicalEmptyCollectionName(Object object)
    • getCanonicalFullCollectionName

      protected String getCanonicalFullCollectionName(Object object)
    • writeExternalFormToDisk

      protected void writeExternalFormToDisk(Serializable o, String path) throws IOException
      Write a Serializable or Externalizable object as a file at the given path. NOT USEFUL as part of a unit test; this is just a utility method for creating disk-based objects in CVS that can become the basis for compatibility tests using readExternalFormFromDisk(String path)
      Parameters:
      o - Object to serialize
      path - path to write the serialized Object
      Throws:
      IOException
    • writeExternalFormToBytes

      protected byte[] writeExternalFormToBytes(Serializable o) throws IOException
      Converts a Serializable or Externalizable object to bytes. Useful for in-memory tests of serialization
      Parameters:
      o - Object to convert to bytes
      Returns:
      serialized form of the Object
      Throws:
      IOException
    • readExternalFormFromDisk

      protected Object readExternalFormFromDisk(String path) throws IOException, ClassNotFoundException
      Reads a Serialized or Externalized Object from disk. Useful for creating compatibility tests between different CVS versions of the same class
      Parameters:
      path - path to the serialized Object
      Returns:
      the Object at the given path
      Throws:
      IOException
      ClassNotFoundException
    • readExternalFormFromBytes

      protected Object readExternalFormFromBytes(byte[] b) throws IOException, ClassNotFoundException
      Read a Serialized or Externalized Object from bytes. Useful for verifying serialization in memory.
      Parameters:
      b - byte array containing a serialized Object
      Returns:
      Object contained in the bytes
      Throws:
      IOException
      ClassNotFoundException
    • skipSerializedCanonicalTests

      protected boolean skipSerializedCanonicalTests()