Пример #1
0
        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;
        }
Пример #2
0
        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);
        }