Exemple #1
0
        public void ReadWithSeeking()
        {
            int NumberOfBytes = AsyncFileStream.DefaultBufferSize * 2;

            string path = GetFullPath("file");

            FileStreamValidation.WriteValidatableFile(path, NumberOfBytes);

            byte[] buffer = new byte[NumberOfBytes];
            WithReadableStream(
                path,
                async stream =>
            {
                // Here we ping-pong around in the stream doing reads less than the buffer size.
                // The intent is to verify that seeking properly flushes the partially-full read buffer.

                // Read 1/4 of the stream, starting halfway
                stream.Seek(AsyncFileStream.DefaultBufferSize, SeekOrigin.Begin);
                await Read(stream, buffer, offset: AsyncFileStream.DefaultBufferSize, count: AsyncFileStream.DefaultBufferSize / 2);

                // Read 1/4 of the stream, starting at the beginning
                stream.Seek(0, SeekOrigin.Begin);
                await Read(stream, buffer, offset: 0, count: AsyncFileStream.DefaultBufferSize / 2);

                // Read 1/4 of the stream, again from the second half
                stream.Seek(AsyncFileStream.DefaultBufferSize + (AsyncFileStream.DefaultBufferSize / 2), SeekOrigin.Begin);
                await Read(stream, buffer, offset: AsyncFileStream.DefaultBufferSize + (AsyncFileStream.DefaultBufferSize / 2), count: AsyncFileStream.DefaultBufferSize / 2);

                // Read 1/4 of the stream, again from the first half
                stream.Seek(AsyncFileStream.DefaultBufferSize / 2, SeekOrigin.Begin);
                await Read(stream, buffer, offset: AsyncFileStream.DefaultBufferSize / 2, count: AsyncFileStream.DefaultBufferSize / 2);
            });

            FileStreamValidation.ValidateBuffer(buffer, NumberOfBytes);
        }
Exemple #2
0
        private static void VerifyReadingValidatableFile(string path, int numberOfBytes, int readSize)
        {
            FileStreamValidation.WriteValidatableFile(path, numberOfBytes);

            using (var targetStream = new MemoryStream())
            {
                CopyReadableStream(path, readSize, targetStream);

                FileStreamValidation.ValidateStream(targetStream, numberOfBytes);
            }
        }