2026-03-18 14:24:01 -04:00
|
|
|
using System.IO;
|
|
|
|
|
using System.Linq;
|
|
|
|
|
using Xunit;
|
|
|
|
|
|
2026-03-18 15:47:44 -04:00
|
|
|
namespace SabreTools.IO.Extensions.Test
|
2026-03-18 14:24:01 -04:00
|
|
|
{
|
|
|
|
|
public class ReadOnlyBitStreamExtensionsTests
|
|
|
|
|
{
|
|
|
|
|
[Fact]
|
|
|
|
|
public void ReadByteTest()
|
|
|
|
|
{
|
|
|
|
|
byte[] data = [0b01010101, 0b01010101, 0b01010101, 0b01010101];
|
|
|
|
|
byte expected = 0b01010101;
|
|
|
|
|
|
|
|
|
|
var stream = new ReadOnlyBitStream(new MemoryStream(data));
|
|
|
|
|
byte? actual = stream.ReadByte();
|
|
|
|
|
Assert.NotNull(actual);
|
|
|
|
|
Assert.Equal(expected, actual);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
[Fact]
|
|
|
|
|
public void ReadUInt16Test()
|
|
|
|
|
{
|
|
|
|
|
byte[] data = [0b01010101, 0b01010101, 0b01010101, 0b01010101];
|
|
|
|
|
ushort expected = 0b0101010101010101;
|
|
|
|
|
|
|
|
|
|
var stream = new ReadOnlyBitStream(new MemoryStream(data));
|
|
|
|
|
ushort? actual = stream.ReadUInt16();
|
|
|
|
|
Assert.NotNull(actual);
|
|
|
|
|
Assert.Equal(expected, actual);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
[Fact]
|
|
|
|
|
public void ReadUInt32Test()
|
|
|
|
|
{
|
|
|
|
|
byte[] data = [0b01010101, 0b01010101, 0b01010101, 0b01010101];
|
|
|
|
|
uint expected = 0b01010101010101010101010101010101;
|
|
|
|
|
|
|
|
|
|
var stream = new ReadOnlyBitStream(new MemoryStream(data));
|
|
|
|
|
uint? actual = stream.ReadUInt32();
|
|
|
|
|
Assert.NotNull(actual);
|
|
|
|
|
Assert.Equal(expected, actual);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
[Fact]
|
|
|
|
|
public void ReadUInt64Test()
|
|
|
|
|
{
|
|
|
|
|
byte[] data = [0b01010101, 0b01010101, 0b01010101, 0b01010101];
|
|
|
|
|
|
|
|
|
|
var stream = new ReadOnlyBitStream(new MemoryStream(data));
|
|
|
|
|
ulong? actual = stream.ReadUInt64();
|
|
|
|
|
Assert.Null(actual);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
[Fact]
|
|
|
|
|
public void ReadBytesTest()
|
|
|
|
|
{
|
|
|
|
|
byte[] data = [0b01010101, 0b01010101, 0b01010101, 0b01010101];
|
|
|
|
|
|
|
|
|
|
var stream = new ReadOnlyBitStream(new MemoryStream(data));
|
|
|
|
|
byte[]? actual = stream.ReadBytes(4);
|
|
|
|
|
Assert.NotNull(actual);
|
|
|
|
|
Assert.True(data.SequenceEqual(actual));
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|