public void TestRoundTripPrimitives() { var stream = new MemoryStream(); var writer = new ObjectWriter(stream); writer.WriteBoolean(true); writer.WriteBoolean(false); writer.WriteByte(Byte.MaxValue); writer.WriteSByte(SByte.MaxValue); writer.WriteInt16(Int16.MaxValue); writer.WriteInt32(Int32.MaxValue); writer.WriteInt32(Byte.MaxValue); writer.WriteInt32(Int16.MaxValue); writer.WriteInt64(Int64.MaxValue); writer.WriteUInt16(UInt16.MaxValue); writer.WriteUInt32(UInt32.MaxValue); writer.WriteUInt64(UInt64.MaxValue); writer.WriteDecimal(Decimal.MaxValue); writer.WriteDouble(Double.MaxValue); writer.WriteSingle(Single.MaxValue); writer.WriteChar('X'); writer.WriteString("YYY"); writer.WriteCompressedUInt(Byte.MaxValue >> 2); // 6 bits writer.WriteCompressedUInt(UInt16.MaxValue >> 2); // 14 bits writer.WriteCompressedUInt(UInt32.MaxValue >> 2); // 30 bits var dt = DateTime.Now; writer.WriteDateTime(dt); writer.Dispose(); stream.Position = 0; var reader = new ObjectReader(stream); Assert.Equal(true, reader.ReadBoolean()); Assert.Equal(false, reader.ReadBoolean()); Assert.Equal(Byte.MaxValue, reader.ReadByte()); Assert.Equal(SByte.MaxValue, reader.ReadSByte()); Assert.Equal(Int16.MaxValue, reader.ReadInt16()); Assert.Equal(Int32.MaxValue, reader.ReadInt32()); Assert.Equal(Byte.MaxValue, reader.ReadInt32()); Assert.Equal(Int16.MaxValue, reader.ReadInt32()); Assert.Equal(Int64.MaxValue, reader.ReadInt64()); Assert.Equal(UInt16.MaxValue, reader.ReadUInt16()); Assert.Equal(UInt32.MaxValue, reader.ReadUInt32()); Assert.Equal(UInt64.MaxValue, reader.ReadUInt64()); Assert.Equal(Decimal.MaxValue, reader.ReadDecimal()); Assert.Equal(Double.MaxValue, reader.ReadDouble()); Assert.Equal(Single.MaxValue, reader.ReadSingle()); Assert.Equal('X', reader.ReadChar()); Assert.Equal("YYY", reader.ReadString()); Assert.Equal((UInt32)(Byte.MaxValue >> 2), reader.ReadCompressedUInt()); Assert.Equal((UInt32)(UInt16.MaxValue >> 2), reader.ReadCompressedUInt()); Assert.Equal(UInt32.MaxValue >> 2, reader.ReadCompressedUInt()); Assert.Equal(dt, reader.ReadDateTime()); reader.Dispose(); }
private void RoundTripCharacter(Char ch) { var stream = new MemoryStream(); var writer = new ObjectWriter(stream); writer.WriteChar(ch); writer.Dispose(); stream.Position = 0; var reader = new ObjectReader(stream); var readch = reader.ReadChar(); reader.Dispose(); Assert.Equal(ch, readch); }
private static void TestReadingPrimitiveAPIs(ObjectReader reader) { Assert.Equal(true, reader.ReadBoolean()); Assert.Equal(false, reader.ReadBoolean()); Assert.Equal(Byte.MaxValue, reader.ReadByte()); Assert.Equal(SByte.MaxValue, reader.ReadSByte()); Assert.Equal(Int16.MaxValue, reader.ReadInt16()); Assert.Equal(Int32.MaxValue, reader.ReadInt32()); Assert.Equal(Byte.MaxValue, reader.ReadInt32()); Assert.Equal(Int16.MaxValue, reader.ReadInt32()); Assert.Equal(Int64.MaxValue, reader.ReadInt64()); Assert.Equal(UInt16.MaxValue, reader.ReadUInt16()); Assert.Equal(UInt32.MaxValue, reader.ReadUInt32()); Assert.Equal(UInt64.MaxValue, reader.ReadUInt64()); Assert.Equal(Decimal.MaxValue, reader.ReadDecimal()); Assert.Equal(Double.MaxValue, reader.ReadDouble()); Assert.Equal(Single.MaxValue, reader.ReadSingle()); Assert.Equal('X', reader.ReadChar()); Assert.Equal("YYY", reader.ReadString()); Assert.Equal("\uD800\uDC00", reader.ReadString()); // valid surrogate pair Assert.Equal("\uDC00\uD800", reader.ReadString()); // invalid surrogate pair Assert.Equal("\uD800", reader.ReadString()); // incomplete surrogate pair }