com.gargoylesoftware.base.testing
Class TestUtil

java.lang.Object
  extended by com.gargoylesoftware.base.testing.TestUtil

public class TestUtil
extends java.lang.Object

Utility methods dealing with JUnit testing.

Version:
$Revision: 1.9 $
Author:
Mike Bowler

Constructor Summary
private TestUtil()
           
 
Method Summary
static boolean appearsEqual(java.lang.Object a, java.lang.Object b)
          Return true if the two objects appear to be equal.
static void assertAppearsEqual(java.lang.String message, java.lang.Object a, java.lang.Object b)
          Assert that a and b appear equal.
static void assertAppearsNotEqual(java.lang.String message, java.lang.Object a, java.lang.Object b)
          Assert that a and b do not appear equal.
static void assertNotNull(java.lang.String fieldName, java.lang.Object fieldValue)
          Verify that the specified value is not null.
private static void checkEquality(java.lang.Object original, java.lang.Object copy)
          Assert that the two objects are equal
static java.lang.Object copyBySerialization(java.lang.Object object)
          Copy an object by serializing it into a buffer and then deserializing it again.
private static boolean isEqual(java.lang.Object a, java.lang.Object b)
           
static void testClone(java.lang.Object object, boolean checkEquality)
          Test the clone() method on an object.
static java.lang.Object testSerialization(java.lang.Object object)
          Same as testSerialization(object, true).
static java.lang.Object testSerialization(java.lang.Object object, boolean checkEquality)
          Serialize the specified object to a stream and then deserialize it again.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

TestUtil

private TestUtil()
Method Detail

testSerialization

public static java.lang.Object testSerialization(java.lang.Object object,
                                                 boolean checkEquality)
                                          throws java.io.IOException
Serialize the specified object to a stream and then deserialize it again. This tests the following things:
  1. Ensures that the original and reconstructed objects are equal.
  2. The object can be serialized

Parameters:
object - The object to test
checkEquality - True if the original and copy should be equal according to the semantics of the equals() method.
Returns:
The copy.
Throws:
java.io.IOException - If an error occcurs during serialization.

testSerialization

public static java.lang.Object testSerialization(java.lang.Object object)
                                          throws java.io.IOException
Same as testSerialization(object, true). Provided as a convenience as the equality check is usually wanted.

Parameters:
object - The object to test
Returns:
The copy.
Throws:
java.io.IOException - If an error occcurs during serialization.

copyBySerialization

public static java.lang.Object copyBySerialization(java.lang.Object object)
                                            throws java.io.IOException
Copy an object by serializing it into a buffer and then deserializing it again.

Parameters:
object - The original.
Returns:
The copy.
Throws:
java.io.IOException - If an error occcurs during serialization.

testClone

public static void testClone(java.lang.Object object,
                             boolean checkEquality)
                      throws java.lang.IllegalAccessException,
                             java.lang.reflect.InvocationTargetException
Test the clone() method on an object.

Parameters:
object - The original object to clone.
checkEquality - True if the original and copy are to be compared for equality after the clone().
Throws:
java.lang.IllegalAccessException - If we do not have authority to call the clone() method.
java.lang.reflect.InvocationTargetException - If an exception is thrown during the processing of the clone() method

checkEquality

private static void checkEquality(java.lang.Object original,
                                  java.lang.Object copy)
Assert that the two objects are equal

Parameters:
original - The original object
copy - The object to compare against

assertAppearsEqual

public static void assertAppearsEqual(java.lang.String message,
                                      java.lang.Object a,
                                      java.lang.Object b)
Assert that a and b appear equal. See appearsEqual(Object,Object) for an explanation of "appears"

Parameters:
message - The message to display if the assert fails.
a - The first object to compare
b - The second object to compare

assertAppearsNotEqual

public static void assertAppearsNotEqual(java.lang.String message,
                                         java.lang.Object a,
                                         java.lang.Object b)
Assert that a and b do not appear equal. See appearsEqual(Object,Object) for an explanation of "appears"

Parameters:
message - The message to display if the assert fails.
a - The first object to compare
b - The second object to compare

appearsEqual

public static boolean appearsEqual(java.lang.Object a,
                                   java.lang.Object b)
Return true if the two objects appear to be equal. Some objects cannot be compared for equality because they don't implement either the equals method or the Comparable interface. An example would be the Event objects used by AWT and Swing.

This method will attempt to determine if the two objects are equal by calling all the public accessor methods on the objects and performing equals checks on the results.

If an exception is thrown during the invocation of any of the getXX() methods then that method will be ignored for the purpose of considering equality.

Parameters:
a - The first object to be compared
b - The second object to be compared
Returns:
True if the two objects appear to be the same.

isEqual

private static boolean isEqual(java.lang.Object a,
                               java.lang.Object b)

assertNotNull

public static final void assertNotNull(java.lang.String fieldName,
                                       java.lang.Object fieldValue)
                                throws DetailedNullPointerException
Verify that the specified value is not null. If it is then throw an exception

Parameters:
fieldName - The name of the field to check
fieldValue - The value of the field to check
Throws:
DetailedNullPointerException - If fieldValue is null