public void ReadBlock(int size)
        {
            var data = GenerateData(size);

            using (var memoryStream = new MemoryStream(data, writable: false))
                using (var cachingStream = new CachingStream(memoryStream, Ownership.Owns))
                {
                    var buffer = new byte[size + 1];
                    var read   = cachingStream.ReadBlock(buffer, 0, buffer.Length);
                    Assert.AreEqual(size, read);
                    Assert.AreEqual(data, buffer.Take(size));
                    Assert.AreEqual(size, (int)cachingStream.Position);
                }
        }