public void Should_read_failing_on_invalid_tokens(
            string data, int bufferSize, string invalidTokens, bool endOfSection,
            bool endOfStream, int read, string expectedData, bool invalid)
        {
            var invalidTokenBytes = invalidTokens.Split(",")
                                    .Select(x => x.Select(y => (byte)y).ToArray()).ToArray();
            var stream     = new MemoryStream(data.ToBytes());
            var buffer     = new DelimitedBuffer(stream, bufferSize);
            var readBuffer = new byte[10];
            var readData   = "";
            var readLength = 0;

            DelimitedBuffer.ReadResult result;

            while (true)
            {
                result      = buffer.Read(readBuffer, 0, 10, invalidTokenBytes);
                readLength += result.Read;
                if (result.Read > 0)
                {
                    readData += readBuffer.ToString(result.Read);
                }
                if (result.Invalid || result.EndOfSection || result.EndOfStream)
                {
                    break;
                }
            }

            result.Invalid.ShouldEqual(invalid);
            result.EndOfSection.ShouldEqual(endOfSection);
            result.EndOfStream.ShouldEqual(endOfStream);
            readLength.ShouldEqual(read);
            readData.ShouldEqual(expectedData);
        }
        private string ReadRemaining(DelimitedBuffer delimitedBuffer)
        {
            var buffer = new byte[10];
            var data   = "";

            while (true)
            {
                var result = delimitedBuffer.Read(buffer, 0, 10);
                if (result.Read > 0)
                {
                    data += buffer.ToString(result.Read);
                }
                if (result.Invalid || result.EndOfSection || result.EndOfStream)
                {
                    break;
                }
            }

            return(data);
        }