public void ShouldReadHeaderWithinUnsignedShortRange() { for (var i = 1; i <= UInt16.MaxValue; i = (i << 1) + 1) // i: [0x1, 0xFFFF] { ushort chunkHeaderSize = (ushort)(i & 0xFFFF); var input = new byte[chunkHeaderSize + 2 + 2]; // 0xXX, 0xXX, ..., 0x00, 0x00 input[0] = (byte)((chunkHeaderSize & 0xFF00) >> 8); input[1] = (byte)(chunkHeaderSize & 0xFF); for (int j = 2; j < chunkHeaderSize + 2; j++) { input[j] = Getbyte(); } var clientMock = new Mock <ITcpSocketClient>(); SetupClientReadStream(clientMock, input); var chunkedInput = new ChunkedInputStream(clientMock.Object, null); byte[] actual = new byte[chunkHeaderSize]; chunkedInput.ReadBytes(actual); for (int j = 0; j < actual.Length; j++) { actual[j].Should().Be(input[2 + j]); } } }
public void ShouldReadMessageBiggerThanChunkSize(byte[] input, byte[] correctValue) { var clientMock = new Mock <ITcpSocketClient>(); TestHelper.TcpSocketClientSetup.SetupClientReadStream(clientMock, input); var chunkedInput = new ChunkedInputStream(clientMock.Object, new BigEndianTargetBitConverter(), null, 1); byte[] actual = new byte[3]; chunkedInput.ReadBytes(actual); actual.Should().Equal(correctValue); }
public void ShouldReadMessageAcrossChunks(byte[] input, byte[] correctValue) { var clientMock = new Mock <ITcpSocketClient>(); SetupClientReadStream(clientMock, input); var chunkedInput = new ChunkedInputStream(clientMock.Object, null); byte[] actual = new byte[3]; chunkedInput.ReadBytes(actual); actual.Should().Equal(correctValue); }
public void ShouldLogBytes(byte[] input, byte[] correctValue) { var clientMock = new Mock <ITcpSocketClient>(); var loggerMock = new Mock <ILogger>(); loggerMock.Setup(x => x.Trace(It.IsAny <string>(), It.IsAny <object[]>(), It.IsAny <int>(), It.IsAny <int>())) .Callback <string, object[]>((s, o) => _output.WriteLine(s + ((byte[])o[0]).ToHexString(showX: true))); TestHelper.TcpSocketClientSetup.SetupClientReadStream(clientMock, input); var chunkedInput = new ChunkedInputStream(clientMock.Object, new BigEndianTargetBitConverter(), loggerMock.Object); byte[] actual = new byte[3]; chunkedInput.ReadBytes(actual); actual.Should().Equal(correctValue); loggerMock.Verify(x => x.Trace("S: ", It.IsAny <byte[]>(), It.IsAny <int>(), It.IsAny <int>()), Times.Exactly(4)); }