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); }
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); }