public void ByteArraySegmentedStream_SeekTest()
        {
            var arr = new byte[100];
            for (byte i = 0; i < 100; i++)
                arr[i] = i;

            var stream = new ByteArraySegmentedStream(false);
            stream.AddSegment(new ArraySegment<byte>(arr, 0, 5));
            stream.AddSegment(new ArraySegment<byte>(arr, 2, 5));
            stream.AddSegment(new ArraySegment<byte>(arr, 10, 10));

            var reader = new BinaryReader(stream);

            long pos = stream.Seek(0, SeekOrigin.Begin);
            Assert.AreEqual(0, pos);

            for (byte i = 0; i < 5; i++)
                Assert.AreEqual(i, reader.ReadByte());

            pos = stream.Seek(0, SeekOrigin.Begin);
            Assert.AreEqual(0, pos);

            for (byte i = 0; i < 5; i++)
                Assert.AreEqual(i, reader.ReadByte());

            pos = stream.Seek(-15, SeekOrigin.End);
            Assert.AreEqual(5, pos);

            for (byte i = 0; i < 5; i++)
                Assert.AreEqual(i + 2, reader.ReadByte());
            for (byte i = 0; i < 10; i++)
                Assert.AreEqual(i + 10, reader.ReadByte());

            Assert.AreEqual(0, reader.ReadBytes(10).Length);

            stream.Position -= 6;
            Assert.AreEqual(14, reader.ReadByte());

            stream.Position += 5;
            Assert.AreEqual(0, reader.ReadBytes(10).Length);
        }