Пример #1
0
        public async Task CachesPartialMatch()
        {
            const string body       = "the message\nfoo\r\n";
            var          realStream = new MemoryStream(Encoding.UTF8.GetBytes(body));

            var stream    = new MalformedMultipartFixingStream(realStream, "foo");
            var buffer    = new byte[realStream.Length + 1];
            var bytesRead = await stream.ReadAsync(buffer, 0, "the message\nf".Length);

            bytesRead += await stream.ReadAsync(buffer, bytesRead, buffer.Length - bytesRead);

            Assert.That(Encoding.UTF8.GetString(buffer, 0, bytesRead) + (await ReadToEndAsync(stream)), Is.EqualTo("the message\r\nfoo\r\n"));
        }
Пример #2
0
        public async Task CachesPreviousCharOnPartialMatchBufferOffsetMultiRead()
        {
            const string body       = "the message\nfoo\r\n";
            var          realStream = new MemoryStream(Encoding.UTF8.GetBytes(body));

            var stream    = new MalformedMultipartFixingStream(realStream, "foo");
            var buffer    = new byte[2048];
            var bytesRead = await stream.ReadAsync(buffer, 1024, "the message\nf".Length);

            bytesRead += await stream.ReadAsync(buffer, 1024 + bytesRead, 1024 - bytesRead);

            Assert.That(Encoding.UTF8.GetString(buffer, 1024, bytesRead), Is.EqualTo("the message\r\nfoo\r\n"));
        }
Пример #3
0
        public async Task PreserveCharInBoundRead()
        {
            const string body       = "the message\nfoo\r\n";
            var          realStream = new MemoryStream(Encoding.UTF8.GetBytes(body));

            var stream    = new MalformedMultipartFixingStream(realStream, "foo");
            var buffer    = new byte[realStream.Length + 1];
            var bytesRead = await stream.ReadAsync(buffer, 0, body.Length);

            Assert.That(Encoding.UTF8.GetString(buffer, 0, bytesRead) + (await ReadToEndAsync(stream)), Is.EqualTo("the message\r\nfoo\r\n"));
        }
Пример #4
0
        public async Task FixNewlineAtStartShortRead()
        {
            const string body       = "\nfoo\r\nthe message\r\n";
            var          realStream = new MemoryStream(Encoding.UTF8.GetBytes(body));

            var stream    = new MalformedMultipartFixingStream(realStream, "foo");
            var buffer    = new byte[2];
            var bytesRead = await stream.ReadAsync(buffer, 0, 2);

            Assert.That(bytesRead, Is.EqualTo(2));
            Assert.That(Encoding.UTF8.GetString(buffer, 0, bytesRead) + (await ReadToEndAsync(stream)), Is.EqualTo("\r\nfoo\r\nthe message\r\n"));
        }