public async Task WhenReadingStreamWithCompressedFramesAndPingsThenReadsAllData()
            {
                var data1            = new MemoryStream(Enumerable.Repeat((byte)1, 1000000).ToArray());
                var frame1Compressed = await(await data1.Compress().ConfigureAwait(false)).ToByteArray().ConfigureAwait(false);
                var frame1           = new WebSocketFrame(Fin.More, Opcode.Binary, frame1Compressed, false, true);
                var data2            = new MemoryStream(Enumerable.Repeat((byte)2, 1000000).ToArray());
                var frame2Compressed = await(await data2.Compress().ConfigureAwait(false)).ToByteArray().ConfigureAwait(false);
                var frame2           = new WebSocketFrame(Fin.Final, Opcode.Cont, frame2Compressed, false, true);
                var frame3           = new WebSocketFrame(Fin.Final, Opcode.Ping, new byte[0], false, true);
                var frame4           = new WebSocketFrame(Fin.Final, Opcode.Binary, frame1Compressed, false, true);
                var frame5           = new WebSocketFrame(Fin.Final, Opcode.Ping, new byte[0], false, true);

                var stream = new MemoryStream(
                    (await frame1.ToByteArray().ConfigureAwait(false))
                    .Concat(await frame2.ToByteArray().ConfigureAwait(false))
                    .Concat(await frame3.ToByteArray().ConfigureAwait(false))
                    .Concat(await frame4.ToByteArray().ConfigureAwait(false))
                    .Concat(await frame5.ToByteArray().ConfigureAwait(false))
                    .ToArray());

                _sut = new WebSocketStreamReader(stream, 100000);

                int messages = 0;
                WebSocketMessage message;

                while ((message = await _sut.Read(CancellationToken.None).ConfigureAwait(false)) != null)
                {
                    await message.Consume().ConfigureAwait(false);

                    messages += 1;
                }


                Assert.AreEqual(4, messages);
            }
            public async Task Setup()
            {
                var data1  = Enumerable.Repeat((byte)1, 1000).ToArray();
                var frame1 = new WebSocketFrame(Fin.More, Opcode.Binary, data1, false, true);
                var data2  = Enumerable.Repeat((byte)2, 1000).ToArray();
                var frame2 = new WebSocketFrame(Fin.Final, Opcode.Cont, data2, false, true);
                var frame3 = new WebSocketFrame(Fin.Final, Opcode.Close, new byte[0], false, true);
                var stream = new MemoryStream(
                    (await frame1.ToByteArray().ConfigureAwait(false))
                    .Concat(await frame2.ToByteArray().ConfigureAwait(false))
                    .Concat(await frame3.ToByteArray().ConfigureAwait(false))
                    .ToArray());

                _sut = new WebSocketStreamReader(stream, 100000);
            }