
org.marketcetera.util.test.SerializableAssert Maven / Gradle / Ivy
The newest version!
package org.marketcetera.util.test;
import java.io.Serializable;
import org.apache.commons.lang.ObjectUtils;
import org.apache.commons.lang.SerializationException;
import org.apache.commons.lang.SerializationUtils;
/**
* Assertions for serialization.
*
* @author [email protected]
* @since 1.0.0
* @version $Id$
*/
/* $License$ */
public final class SerializableAssert
{
// CLASS METHODS.
/**
* Asserts that the given object serializes correctly, i.e. the
* deserialized version of the object is equal to the original
* object. If the assertion does not hold, the {@link
* AssertionError} thrown starts with the given message, which may
* be null if no such custom message prefix is desired.
*
* @param message The message.
* @param o The object.
*/
public static void assertSerializable
(String message,
Serializable o)
{
String content=null;
SerializationException cause=null;
try {
Object oNew=SerializationUtils.deserialize
(SerializationUtils.serialize(o));
if (ObjectUtils.equals(o,oNew)) {
return;
}
content="expected object is '"+o+ //$NON-NLS-1$
"' actual is '"+oNew+"'"; //$NON-NLS-1$ //$NON-NLS-2$
} catch (SerializationException ex) {
content="de/serialization failed"; //$NON-NLS-1$
cause=ex;
}
if (message!=null) {
content=message+" "+content; //$NON-NLS-1$
}
AssertionError error=new AssertionError(content);
if (cause!=null) {
error.initCause(cause);
}
throw error;
}
/**
* Asserts that the given object serializes correctly, i.e. the
* deserialized version of the object is equal to the original
* object.
*
* @param o The object.
*/
public static void assertSerializable
(Serializable o)
{
assertSerializable(null,o);
}
// CONSTRUCTOR.
/**
* Constructor. It is private so that no instances can be created.
*/
private SerializableAssert() {}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy