Port ReadOnlyBitStream from Compression, add tests

This commit is contained in:
Matt Nadareski
2024-04-16 20:13:27 -04:00
parent ecaec1d44a
commit cd01e170fe
2 changed files with 292 additions and 0 deletions

View File

@@ -0,0 +1,54 @@
using System.IO;
using SabreTools.IO.Streams;
using Xunit;
namespace SabreTools.IO.Test
{
public class ReadOnlyBitStreamTests
{
[Fact]
public void DefaultConstructorTest()
{
var stream = new ReadOnlyBitStream(new MemoryStream());
Assert.Equal(0, stream.Length);
Assert.Equal(0, stream.Position);
stream = new ReadOnlyBitStream(new MemoryStream(new byte[16]));
Assert.Equal(16, stream.Length);
Assert.Equal(0, stream.Position);
}
[Fact]
public void ReadSingleBitTest()
{
byte[] data = [0b01010101];
var stream = new ReadOnlyBitStream(new MemoryStream(data));
byte? bit = stream.ReadBit();
Assert.NotNull(bit);
Assert.Equal((byte)0b00000001, bit);
Assert.Equal(1, stream.Position);
}
[Fact]
public void ReadBitsLSBTest()
{
byte[] data = [0b01010101, 0b01010101, 0b01010101, 0b01010101];
var stream = new ReadOnlyBitStream(new MemoryStream(data));
uint? bits = stream.ReadBitsLSB(4);
Assert.NotNull(bits);
Assert.Equal((byte)0b00000101, bits);
Assert.Equal(1, stream.Position);
}
[Fact]
public void ReadBitsMSBTest()
{
byte[] data = [0b01010101, 0b01010101, 0b01010101, 0b01010101];
var stream = new ReadOnlyBitStream(new MemoryStream(data));
uint? bits = stream.ReadBitsMSB(4);
Assert.NotNull(bits);
Assert.Equal((byte)0b00001010, bits);
Assert.Equal(1, stream.Position);
}
}
}