public void ShouldWriteViaStructHandlerIfThereIsAHandlerRegisteredForSignature() { var structHandler = new StructTypeStructHandler(); var structType = structHandler.WritableTypes.First(); var structHandlerDict = new Dictionary <Type, IPackStreamStructHandler> { { structType, structHandler } }; var writerMachine = CreateWriterMachine(structHandlerDict); writerMachine.Writer().Write(new StructType(new List <object> { 1L, 2L, true, 3.0, "something" })); var readerMachine = CreateReaderMachine(writerMachine.GetOutput()); var reader = readerMachine.Reader(); reader.ReadStructHeader().Should().Be(5); reader.ReadStructSignature().Should().Be((byte)'S'); reader.Read().Should().Be(1L); reader.Read().Should().Be(2L); reader.Read().Should().Be(true); reader.Read().Should().Be(3.0); reader.Read().Should().Be("something"); }
public void ShouldReadViaStructHandlerIfThereIsAHandlerRegisteredForSignature() { var structHandler = new StructTypeStructHandler(); var structSignature = structHandler.ReadableStructs.First(); var structHandlerDict = new Dictionary <byte, IPackStreamStructHandler> { { structSignature, structHandler } }; var writerMachine = CreateWriterMachine(); writerMachine.Writer().WriteStructHeader(5, structSignature); writerMachine.Writer().Write(1L); writerMachine.Writer().Write(2L); writerMachine.Writer().Write(true); writerMachine.Writer().Write(3.0); writerMachine.Writer().Write("something"); var readerMachine = CreateReaderMachine(writerMachine.GetOutput(), structHandlerDict); var value = readerMachine.Reader().Read(); value.Should().NotBeNull(); value.Should().BeOfType <StructType>(); var structValue = (StructType)value; structValue.Values.Should().NotBeNull(); structValue.Values.Should().HaveCount(5); structValue.Values.Should().Equal(new object[] { 1L, 2L, true, 3.0, "something" }); }