private object RoundTrip(IType type, object obj) { var buffer = new MemoryStream(new byte[type.SizeOf(obj)]); type.Write(buffer, obj); //assertFalse("The buffer should now be full.", buffer.hasRemaining()); buffer.Position.Should().Be(buffer.Length); buffer.Position = 0; object read = type.Read(buffer); //assertFalse("All bytes should have been read.", buffer.hasRemaining()); buffer.Position.Should().Be(buffer.Length); return read; }
public void Write(BinaryWriter writer, string name, IType type) { long sizePosition = writer.BaseStream.Position; writer.Seek(4, SeekOrigin.Current); long startPos = writer.BaseStream.Position; writer.WriteLpString(name); writer.Write(type.TypeId); writer.Write(type.NumFields); writer.Write(0); type.Write(writer); long endPos = writer.BaseStream.Position; int length = (int)(endPos - startPos); writer.Seek((int)sizePosition, SeekOrigin.Begin); writer.Write(length); writer.Seek((int)endPos, SeekOrigin.Begin); }