コード例 #1
0
        public async Task CopyToAsyncWorksWithFileThreshold()
        {
            var data  = Enumerable.Range(0, 1024).Select(b => (byte)b).Reverse().ToArray();
            var inner = new MemoryStream(data);

            using var stream = new FileBufferingReadStream(inner, 100, bufferLimit: null, GetCurrentDirectory());

            var withoutBufferMs = new MemoryStream();
            await stream.CopyToAsync(withoutBufferMs);

            var withBufferMs = new MemoryStream();

            stream.Position = 0;
            await stream.CopyToAsync(withBufferMs);

            Assert.Equal(data, withoutBufferMs.ToArray());
            Assert.Equal(data, withBufferMs.ToArray());
        }
コード例 #2
0
        public async Task CopyToAsyncWorksWithFileThreshold()
        {
            // 4K is the lower bound on buffer sizes
            var bufferSize         = 4096;
            var mostExpectedWrites = 8;
            var data  = Enumerable.Range(0, bufferSize * mostExpectedWrites).Select(b => (byte)b).Reverse().ToArray();
            var inner = new MemoryStream(data);

            using var stream = new FileBufferingReadStream(inner, 100, bufferLimit: null, GetCurrentDirectory());

            var withoutBufferMs = new NumberOfWritesMemoryStream();
            await stream.CopyToAsync(withoutBufferMs);

            var withBufferMs = new NumberOfWritesMemoryStream();

            stream.Position = 0;
            await stream.CopyToAsync(withBufferMs);

            Assert.Equal(data, withoutBufferMs.ToArray());
            Assert.Equal(mostExpectedWrites, withoutBufferMs.NumberOfWrites);
            Assert.Equal(data, withBufferMs.ToArray());
            Assert.InRange(withBufferMs.NumberOfWrites, 1, mostExpectedWrites);
        }
コード例 #3
0
        public async Task ReadThenCopyToAsyncWorks()
        {
            var data  = Enumerable.Range(0, 1024).Select(b => (byte)b).ToArray();
            var inner = new MemoryStream(data);

            using var stream = new FileBufferingReadStream(inner, 1024 * 1024, bufferLimit: null, GetCurrentDirectory());

            var withoutBufferMs = new MemoryStream();
            var buffer          = new byte[100];
            var read            = stream.Read(buffer);
            await stream.CopyToAsync(withoutBufferMs);

            Assert.Equal(100, read);
            Assert.Equal(data.AsMemory(0, read).ToArray(), buffer);
            Assert.Equal(data.AsMemory(read).ToArray(), withoutBufferMs.ToArray());
        }