public void CompletelyRead() { 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); Assert.AreEqual(false, reader.ReadBoolean()); Assert.AreEqual(false, reader.ReadBoolean()); Assert.AreEqual(true, reader.ReadBoolean()); Assert.AreEqual(true, reader.ReadBoolean()); Assert.AreEqual(true, reader.ReadBoolean()); Assert.AreEqual(true, reader.ReadBoolean()); Assert.AreEqual(false, reader.ReadBoolean()); Assert.AreEqual(false, reader.ReadBoolean()); Assert.AreEqual(0x4b, reader.ReadByte()); var expected = new byte[8]; Array.Copy(data, 2, expected, 0, 8); var result = new byte[8]; int toRead = 8; while (toRead > 0) { int read = reader.Read(result, 8 - toRead, toRead); toRead -= read; } CollectionAssert.AreEqual(expected, result); Assert.AreEqual(80, reader.BitLength); Assert.AreEqual(80, reader.BitPosition); Assert.AreEqual(10, reader.Length); Assert.AreEqual(10, reader.Position); }
public void EightBitsAndOneByteRead() { 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); Assert.AreEqual(false, reader.ReadBoolean()); Assert.AreEqual(false, reader.ReadBoolean()); Assert.AreEqual(true, reader.ReadBoolean()); Assert.AreEqual(true, reader.ReadBoolean()); Assert.AreEqual(true, reader.ReadBoolean()); Assert.AreEqual(true, reader.ReadBoolean()); Assert.AreEqual(false, reader.ReadBoolean()); Assert.AreEqual(false, reader.ReadBoolean()); Assert.AreEqual(0x4b, reader.ReadByte()); Assert.AreEqual(80, reader.BitLength); Assert.AreEqual(16, reader.BitPosition); Assert.AreEqual(10, reader.Length); Assert.AreEqual(2, reader.Position); }
public void SetPosition() { 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.Position = 7; 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(); }
public void LeaveOpen_True() { var data = new byte[] {0x3c, 0x4b, 0x1a, 0x54, 0x22, 0x10, 0xaf, 0x89, 0x97, 0x65}; var stream = new MemoryStream(data); using (var reader = new BitStreamReader(stream, true)) { 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); } stream.Position = 0; using (var reader = new BitStreamReader(stream, false)) { 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); } }