mirror of
https://github.com/RGBCube/serenity
synced 2025-07-25 14:37:46 +00:00
Tests: Add a zlib test for "missing end bits"
The actual cause for the "missing bits" is currently unknown, and this test case doesn't actually start obviously breaking yet unless we start reporting errors about missing bits. However, since we are touching the BitStream implementation already, let's add the test early to make extra sure that we aren't breaking anything.
This commit is contained in:
parent
98badc1466
commit
00ac73be57
1 changed files with 35 additions and 0 deletions
|
@ -42,3 +42,38 @@ TEST_CASE(zlib_compress_simple)
|
|||
auto const freshly_pressed = Compress::ZlibCompressor::compress_all({ uncompressed, sizeof(uncompressed) - 1 });
|
||||
EXPECT(freshly_pressed.value().bytes() == compressed.span());
|
||||
}
|
||||
|
||||
TEST_CASE(zlib_decompress_with_missing_end_bits)
|
||||
{
|
||||
// This test case has been extracted from compressed PNG data of `/res/icons/16x16/app-masterword.png`.
|
||||
// The decompression results have been confirmed using the `zlib-flate` tool.
|
||||
// Note: It is unconfirmed whether there are actually bits missing.
|
||||
// However, our decompressor implementation ends up in a weird state nonetheless.
|
||||
|
||||
Array<u8, 72> const compressed {
|
||||
0x08, 0xD7, 0x63, 0x30, 0x86, 0x00, 0x01, 0x06, 0x23, 0x25, 0x30, 0x00,
|
||||
0x32, 0x42, 0x95, 0x54, 0x83, 0xD0, 0x18, 0x41, 0xA1, 0x50, 0x46, 0x28,
|
||||
0x8C, 0xA1, 0x8A, 0xA1, 0x46, 0xC5, 0x35, 0x48, 0xC9, 0x05, 0x99, 0xA1,
|
||||
0xA4, 0xE2, 0x02, 0x44, 0x60, 0x93, 0x5D, 0x54, 0x54, 0x9C, 0x20, 0x0C,
|
||||
0x17, 0x17, 0x08, 0x43, 0xC5, 0xC9, 0x05, 0xA8, 0x4B, 0x50, 0x50, 0x50,
|
||||
0xC4, 0xD1, 0x45, 0x50, 0x80, 0x01, 0x06, 0x00, 0xB6, 0x1F, 0x15, 0xEF
|
||||
};
|
||||
Array<u8, 144> const decompressed {
|
||||
0x00, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x10, 0x00, 0x32, 0x22,
|
||||
0x22, 0x22, 0x22, 0x22, 0x22, 0x10, 0x00, 0x32, 0x55, 0x22, 0x25, 0x52,
|
||||
0x22, 0x22, 0x10, 0x00, 0x32, 0x55, 0x22, 0x25, 0x52, 0x22, 0x22, 0x10,
|
||||
0x00, 0x32, 0x55, 0x52, 0x55, 0x52, 0x22, 0x22, 0x10, 0x00, 0x32, 0x55,
|
||||
0x55, 0x55, 0x52, 0x22, 0x22, 0x10, 0x00, 0x32, 0x55, 0x25, 0x25, 0x52,
|
||||
0x22, 0x22, 0x10, 0x00, 0x32, 0x55, 0x22, 0x25, 0x52, 0x22, 0x22, 0x10,
|
||||
0x00, 0x32, 0x55, 0x24, 0x45, 0x52, 0x22, 0x44, 0x10, 0x00, 0x32, 0x55,
|
||||
0x24, 0x45, 0x52, 0x22, 0x44, 0x10, 0x00, 0x32, 0x22, 0x24, 0x44, 0x22,
|
||||
0x24, 0x44, 0x10, 0x00, 0x32, 0x22, 0x22, 0x44, 0x24, 0x24, 0x42, 0x10,
|
||||
0x00, 0x32, 0x22, 0x22, 0x44, 0x44, 0x44, 0x42, 0x10, 0x00, 0x32, 0x22,
|
||||
0x22, 0x24, 0x42, 0x44, 0x22, 0x10, 0x00, 0x11, 0x11, 0x11, 0x14, 0x41,
|
||||
0x44, 0x11, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
||||
};
|
||||
|
||||
auto const maybe_decompressed = Compress::ZlibDecompressor::decompress_all(compressed);
|
||||
EXPECT(maybe_decompressed.has_value());
|
||||
EXPECT_EQ(maybe_decompressed.value().span(), decompressed.span());
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue