public void FrameHeader_ReadWriteFrameHeader_SucceedOnNonEmptyExtendedHeader()
        {
            // Arrange
            byte[] extendedHeader = new byte[3] {
                0, 1, 2
            };
            FrameHeader frameHeader = new FrameHeader(FrameType.MessageJSON, payloadSize: 20, extendedHeaderSize: 3, extendedHeader: extendedHeader);

            using (MemoryStream memoryStream = new MemoryStream())
                using (BinaryWriter binaryWriter = new BinaryWriter(memoryStream))
                {
                    // Action
                    FrameHeader.WriteFrameHeader(frameHeader, binaryWriter);
                    binaryWriter.Flush();
                    binaryWriter.Seek(0, SeekOrigin.Begin);

                    FrameHeader parsedFrameHeader = FrameHeader.ReadFrameHeader(memoryStream);

                    // Assert
                    Assert.AreEqual(FrameType.MessageJSON, parsedFrameHeader.Type);
                    Assert.AreEqual((ulong)20, parsedFrameHeader.PayloadSize);
                    Assert.AreEqual((uint)3, parsedFrameHeader.ExtendedHeaderSize);
                    CollectionAssert.AreEqual(frameHeader.ExtendedHeader, parsedFrameHeader.ExtendedHeader);
                }
        }