public void CanReadComplexObject( ) { var complex = new ComplexObject { Name = "Name", Version = new Version("1.2.3.4"), TypeCode = TypeCode.DBNull }; using var output = new MemoryStream( ); using var writer = new IO.BinaryWriterWith7BitEncoding(output); BinaryFormatWriter.Write(writer, typeof(ComplexObject), complex); using var input = new MemoryStream(output.ToArray( )); using var reader = new IO.BinaryReaderWith7BitEncoding(input); var deserializedComplex = BinaryFormatReader.Read <ComplexObject> (reader); Assert.NotNull(deserializedComplex); if (deserializedComplex == null) { return; } Assert.Equal(complex.Name, deserializedComplex.Name); Assert.Equal(complex.Version, deserializedComplex.Version); Assert.Equal(complex.TypeCode, deserializedComplex.TypeCode); Assert.Null(deserializedComplex.Parent); }
public void CanReadObjectUsingConverter( ) { var surrogate = new BinaryFormatSurrogate( ); surrogate.AddConverter(ReadComplexObjectNameOnly, WriteComplexObjectNameOnly); var complex = new ComplexObject { Name = "Name", Version = new Version("1.2.3.4"), TypeCode = TypeCode.DBNull }; using var output = new MemoryStream( ); using var writer = new IO.BinaryWriterWith7BitEncoding(output); BinaryFormatWriter.Write(writer, typeof(ComplexObject), complex, surrogate); using var input = new MemoryStream(output.ToArray( )); using var reader = new IO.BinaryReaderWith7BitEncoding(input); var deserializedComplex = BinaryFormatReader.Read <ComplexObject> (reader, surrogate); Assert.NotNull(deserializedComplex); if (deserializedComplex == null) { return; } Assert.Equal(complex.Name, deserializedComplex.Name); Assert.Equal(default, deserializedComplex.Version);
public StreamBinaryReader(Stream stream, IBinaryReaderSurrogate?surrogate = default) { BinaryReader = new IO.BinaryReaderWith7BitEncoding(stream, new UTF8Encoding(false, true), true); Surrogate = surrogate; }