示例#1
0
        public async Task ReadAckOrNakAsync_WhenDoesNotReceiveByte_ShouldReturnAbort()
        {
            var pipe = await new ByteArrayBuilder().BuildPipeAsync();

            var sut  = new PipeMessageReader(pipe.Reader);
            var @int = await sut.ReadAckOrNakAsync();

            @int.ShouldBe(AcknowledgmentResponseInterruption.Abort);
        }
示例#2
0
        public async Task ReadAckOrNakAsync_WhenReceiveByte_ShouldReturnAccordingly(byte @byte, AcknowledgmentResponseInterruption expected)
        {
            var pipe = await new ByteArrayBuilder()
                       .Add(@byte)
                       .BuildPipeAsync();

            var sut  = new PipeMessageReader(pipe.Reader);
            var @int = await sut.ReadAckOrNakAsync();

            @int.ShouldBe(expected);
        }
示例#3
0
        public async Task ReadMessageAsync_WhenReceiveWrongCRC_ShouldReturnInterruptionInvalidCrc()
        {
            var pipe = await new ByteArrayBuilder()
                       .Add(Bytes.SYN)
                       .Add("ABCDEFG")
                       .Add(Bytes.ETB)
                       .Add(0x11, 0x22)
                       .BuildPipeAsync();

            var sut = new PipeMessageReader(pipe.Reader);
            var msg = await sut.ReadMessageAsync();

            var @int = msg.ShouldBeInterruption();

            @int.ShouldBe(ResponseInterruption.InvalidCrc);
        }
示例#4
0
        public async Task ReadMessageAsync_WhenReceiveMessage_WithLengthAtMost1024_ShouldReturnInterruptInvalidCrc(int length)
        {
            var pipe = await new ByteArrayBuilder()
                       .Add(Bytes.SYN)
                       .Add(new string('a', length))
                       .Add(Bytes.ETB)
                       .Add(0x11, 0x22)
                       .BuildPipeAsync();

            var sut = new PipeMessageReader(pipe.Reader);
            var msg = await sut.ReadMessageAsync();

            var @int = msg.ShouldBeInterruption();

            @int.ShouldBe(ResponseInterruption.InvalidCrc);
        }
示例#5
0
        public async Task ReadMessageAsync_WhenReceiveWellFormattedMessage_ShouldReturnData(string payload, byte crcByte1, byte crcByte2)
        {
            var pipe = await new ByteArrayBuilder()
                       .Add(Bytes.SYN)
                       .Add(payload)
                       .Add(Bytes.ETB)
                       .Add(crcByte1, crcByte2)
                       .BuildPipeAsync();

            var sut = new PipeMessageReader(pipe.Reader);
            var msg = await sut.ReadMessageAsync();

            var data = msg.ShouldBeData();

            data.Length.ShouldBe(payload.Length);
            data.ShouldBeInAscii(payload);
        }
示例#6
0
        public async Task ReadMessageAsync_WhenReceiveMessage_WithByteOutOfRange_ShouldReturnInterruptInvalidMessage(byte byteOutOfRange)
        {
            var pipe = await new ByteArrayBuilder()
                       .Add(Bytes.SYN)
                       .Add("ABCD")
                       .Add(byteOutOfRange)
                       .Add("EFGH")
                       .Add(Bytes.ETB)
                       .Add(0x11, 0x22)
                       .BuildPipeAsync();

            var sut = new PipeMessageReader(pipe.Reader);
            var msg = await sut.ReadMessageAsync();

            var @int = msg.ShouldBeInterruption();

            @int.ShouldBe(ResponseInterruption.InvalidMessage);
        }
示例#7
0
 public WhenReadingNextMessage()
 {
     messageReader = new PipeMessageReader(messageBuffer.Object);
 }