public static async Task AssertStreamEnd(
            this IReadableByteStream stream)
        {
            var headerBytes = new byte[FrameHeader.HeaderSize];
            var res         = await ReadWithTimeout(stream, new ArraySegment <byte>(headerBytes));

            if (!res.EndOfStream)
            {
                var hdr = FrameHeader.DecodeFrom(
                    new ArraySegment <byte>(headerBytes));
                var msg = "Expected end of stream, but got " +
                          FramePrinter.PrintFrameHeader(hdr);
                Assert.True(res.EndOfStream, msg);
            }
            Assert.Equal(0, res.BytesRead);
        }
Example #2
0
        public void FrameHeadersShouldBeDecodable()
        {
            var header = new byte[] { 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x7F, 0xFF, 0xFF, 0xFF };
            var frame  = FrameHeader.DecodeFrom(new ArraySegment <byte>(header));

            Assert.Equal((1 << 24) - 1, frame.Length);
            Assert.Equal(FrameType.Data, frame.Type);
            Assert.Equal(0xFF, frame.Flags);
            Assert.Equal(0x7FFFFFFFu, frame.StreamId);

            header = new byte[] { 0x03, 0x40, 0xF1, 0xFF, 0x09, 0x1A, 0xB8, 0x34, 0x12 };
            frame  = FrameHeader.DecodeFrom(new ArraySegment <byte>(header));
            Assert.Equal(0x0340F1, frame.Length);
            Assert.Equal((FrameType)0xFF, frame.Type);
            Assert.Equal(0x09, frame.Flags);
            Assert.Equal(0x1AB83412u, frame.StreamId);
        }