package lsr.paxos.messages;
import static org.junit.Assert.assertEquals;
import java.io.ByteArrayInputStream;
import java.io.DataInputStream;
/**
* Base test class for message tests.
*/
public abstract class AbstractMessageTestCase<T extends Message> {
@SuppressWarnings("unchecked")
protected void verifySerialization(T message) {
byte[] bytes = MessageFactory.serialize(message);
assertEquals(bytes.length, message.byteSize());
T deserialized = (T) MessageFactory.readByteArray(bytes);
compare(message, deserialized);
DataInputStream stream = new DataInputStream(new ByteArrayInputStream(bytes));
deserialized = (T) MessageFactory.create(stream);
compare(message, deserialized);
}
protected abstract void compare(T first, T second);
}