/**
* Tests serialization of an <code>IdTable</code>.
*/
public void testSerialization()
throws Exception {
IdTable idTable = new IdTable();
TestObject testObject = new TestObject();
String id = testObject.getRenderId();
idTable.register(testObject);
ByteArrayOutputStream byteOut = new ByteArrayOutputStream();
ObjectOutputStream objectOut = new ObjectOutputStream(byteOut);
objectOut.writeObject(idTable);
objectOut.close();
byte[] data = byteOut.toByteArray();
ByteArrayInputStream byteIn = new ByteArrayInputStream(data);
ObjectInputStream objectIn = new ObjectInputStream(byteIn);
IdTable newIdTable = (IdTable) objectIn.readObject();
TestObject newTestObject = (TestObject) newIdTable.getObject(id);
assertEquals(id, newTestObject.getRenderId());
objectIn.close();
testObject = null;
for (int i = 0; i < 10; ++i) {
System.gc();
}
assertNull(idTable.getObject(id));
assertNotNull(newIdTable.getObject(id));
newTestObject = null;
for (int i = 0; i < 10; ++i) {
System.gc();
}
assertNull(newIdTable.getObject(id));
}