public void ListBackedStreamReads() { var stream = new ListBackedStream(); var writeBuffer = new byte[100]; for (byte i = 1; i < 100; i++) { writeBuffer[i] = i; } stream.Write(writeBuffer, 0, 100); stream.Write(writeBuffer, 0, 100); stream.Write(writeBuffer, 0, 50); Assert.AreEqual(250, stream.Length); stream.Position = 0; var buffer = new byte[220]; stream.Read(buffer, 0, buffer.Length); Assert.True(buffer.Take(100).SequenceEqual(writeBuffer), "The buffers do not contain the same values"); Assert.True(buffer.Skip(100).Take(100).SequenceEqual(writeBuffer), "The buffers do not contain the same values"); Assert.True(buffer.Skip(200).Take(20).SequenceEqual(writeBuffer.Take(20)), "The buffers do not contain the same values"); stream = new ListBackedStream(); stream.Write(writeBuffer, 50, 50); stream.Position = 0; buffer = new byte[50]; stream.Read(buffer, 0, buffer.Length); Assert.True(buffer.SequenceEqual(writeBuffer.Skip(50).Take(50)), "The buffers do not contain the same values"); stream = new ListBackedStream(); stream.Write(writeBuffer, 0, 100); stream.Position = 0; Assert.AreEqual(100, stream.Length); buffer = new byte[10]; stream.Read(buffer, 0, buffer.Length); stream.Read(buffer, 0, buffer.Length); Assert.AreEqual(buffer, writeBuffer.Skip(10).Take(10)); }