unit test for the whole serialization process

Interface Input DataInput anf DataOutput need to be revised, but I left them unchanged
Yes, that helps to mantain a clean interface.