mirror of
https://github.com/RGBCube/serenity
synced 2025-07-26 10:17:35 +00:00
Tests: Add a test to codify BitStream behavior beyond stream limits
This commit is contained in:
parent
de49413bdf
commit
270b1176de
1 changed files with 47 additions and 0 deletions
|
@ -132,6 +132,53 @@ TEST_CASE(big_endian_bit_stream_input_output_match)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
TEST_CASE(bit_reads_beyond_stream_limits)
|
||||||
|
{
|
||||||
|
Array<u8, 1> const test_data { 0xFF };
|
||||||
|
|
||||||
|
{
|
||||||
|
// LittleEndianInputBitStream allows reading null bits beyond the original data
|
||||||
|
// for compatibility purposes.
|
||||||
|
auto memory_stream = make<FixedMemoryStream>(test_data);
|
||||||
|
auto bit_stream = make<LittleEndianInputBitStream>(move(memory_stream));
|
||||||
|
|
||||||
|
{
|
||||||
|
auto result = TRY_OR_FAIL(bit_stream->read_bits<u8>(6));
|
||||||
|
EXPECT_EQ(result, 0b111111);
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
auto result = TRY_OR_FAIL(bit_stream->read_bits<u8>(6));
|
||||||
|
EXPECT_EQ(result, 0b000011);
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
auto result = TRY_OR_FAIL(bit_stream->read_bits<u8>(6));
|
||||||
|
EXPECT_EQ(result, 0b000000);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
auto memory_stream = make<FixedMemoryStream>(test_data);
|
||||||
|
auto bit_stream = make<BigEndianInputBitStream>(move(memory_stream));
|
||||||
|
|
||||||
|
{
|
||||||
|
auto result = TRY_OR_FAIL(bit_stream->read_bits<u8>(6));
|
||||||
|
EXPECT_EQ(result, 0b111111);
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
auto result = bit_stream->read_bits<u8>(6);
|
||||||
|
EXPECT(result.is_error());
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
auto result = bit_stream->read_bits<u8>(6);
|
||||||
|
EXPECT(result.is_error());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
RANDOMIZED_TEST_CASE(roundtrip_u8_little_endian)
|
RANDOMIZED_TEST_CASE(roundtrip_u8_little_endian)
|
||||||
{
|
{
|
||||||
GEN(n, Gen::unsigned_int(NumericLimits<u8>::max()));
|
GEN(n, Gen::unsigned_int(NumericLimits<u8>::max()));
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue