ObjectIOInvalidClassException, ObjectIONotSerializableException,
ObjectIODataRecordNotFoundException,
ObjectIOClassNotFoundException, ObjectIODataCorruptedException,
HeapException, BinaryConverterException,
ObjectIOTooBigForSerializationException {
final WithIntField withIntField = new WithIntField();
withIntField.setIntField(0);
final ObjectAndPersistInfo objectAndPersistInfo = createObjectAndItsPersistInfo(withIntField);
/* initial write */
WriteResult writeResult = write(objectAndPersistInfo);
assertValueChangeForFirstWrite(writeResult);
assertNoSonReferenced(writeResult);
assertNoReferenceChange(writeResult);
assertWroteType(writeResult, HelperBinaryConversion.INTEGER_TYPE);
/* second write state not change */
writeResult = write(objectAndPersistInfo);
assertValueNotChangeForSameStateWrite(writeResult);
assertNoSonReferenced(writeResult);
assertNoReferenceChange(writeResult);
/* third write state change */
withIntField.setIntField(1);
writeResult = write(objectAndPersistInfo);
assertValueChangeSinceStateChange(writeResult);
assertNoSonReferenced(writeResult);
assertNoReferenceChange(writeResult);
}