public async Task SeekAndCopyToAsync() { Random random = new Random(1); var data = GenerateData(54321); using (var memoryStream = new MemoryStream(data, writable: false)) using (var cachingStream = new CachingStream(memoryStream, Ownership.Owns)) { for (int i = 0; i < 100; i++) { int offset = random.Next(data.Length - 100); Assert.AreEqual(offset, cachingStream.Seek(offset, SeekOrigin.Begin)); using (var destination = new MemoryStream(data.Length)) { await cachingStream.CopyToAsync(destination); Assert.AreEqual(data.Skip(offset), destination.ToArray()); } } } }