示例#1
0
            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]);
                    }
                }
            }
示例#2
0
            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);
            }
示例#3
0
            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);
            }
示例#4
0
            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));
            }