package net.i2p.data;
/*
* free (adj.): unencumbered; not under the control of others
* Written by jrandom in 2003 and released into the public domain
* with no warranty of any kind, either expressed or implied.
* It probably won't make your computer catch on fire, or eat
* your children, but it might. Use at your own risk.
*
*/
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import junit.framework.TestCase;
/**
* Utility class for wrapping data structure tests
*
* @author jrandom
*/
public abstract class StructureTest extends TestCase{
/** create a populated structure for writing */
public abstract DataStructure createDataStructure() throws DataFormatException;
/** create an unpopulated structure for reading */
public abstract DataStructure createStructureToRead();
public void testStructure() throws Exception{
byte[] temp = null;
DataStructure orig;
ByteArrayOutputStream baos = new ByteArrayOutputStream();
orig = createDataStructure();
orig.writeBytes(baos);
temp = baos.toByteArray();
DataStructure ds;
ByteArrayInputStream bais = new ByteArrayInputStream(temp);
ds = createStructureToRead();
ds.readBytes(bais);
// I2CP message classes don't implement equals()
if (!getClass().getName().startsWith("net.i2p.data.i2cp."))
assertEquals(orig, ds);
// Not all classes implement equals, so write out again
ByteArrayOutputStream baos2 = new ByteArrayOutputStream();
ds.writeBytes(baos2);
byte[] temp2 = baos2.toByteArray();
assert(DataHelper.eq(temp, temp2));
}
}