public void Seek()
        {
            var data = new byte[] {0x3c, 0x4b, 0x1a, 0x54, 0x22, 0x10, 0xaf, 0x89, 0x97, 0x65};
            var stream = new MemoryStream(data);
            var reader = new BitStreamReader(stream);
            Assert.AreEqual(true, reader.CanRead);
            Assert.AreEqual(true, reader.CanSeek);
            Assert.AreEqual(false, reader.CanWrite);

            Assert.AreEqual(80, reader.BitLength);
            Assert.AreEqual(0, reader.BitPosition);
            Assert.AreEqual(10, reader.Length);
            Assert.AreEqual(0, reader.Position);

            reader.Seek(7, SeekOrigin.Begin);

            Assert.AreEqual(56, reader.BitPosition);
            Assert.AreEqual(7, reader.Position);

            Assert.AreEqual(0x89, reader.ReadByte());
            Assert.AreEqual(true, reader.ReadBoolean());

            Assert.AreEqual(7, reader.Position = 7);

            Assert.AreEqual(true, reader.ReadBoolean());
            Assert.AreEqual(0x13, reader.ReadByte());

            var buffer = new byte[10];
            Assert.AreEqual(1, reader.Read(buffer, 0, 10));
            Assert.AreEqual(0x2e, buffer[0]);
            Assert.AreEqual(-1, reader.ReadByte());

            Assert.AreEqual(73, reader.BitPosition);
            Assert.AreEqual(9, reader.Position);
        }
        public void ReadBoolean_EndOfStream()
        {
            var data = new byte[] {0x3c, 0x4b, 0x1a, 0x54, 0x22, 0x10, 0xaf, 0x89, 0x97, 0x65};
            var stream = new MemoryStream(data);
            var reader = new BitStreamReader(stream);

            reader.Seek(10, SeekOrigin.Begin);
            reader.ReadBoolean();
        }