Add ShrinkWrap 3 SIT2 decompression support and tests

This commit is contained in:
2026-04-20 14:43:39 +01:00
parent 5cfdbe485c
commit 16dd2ce90f
8 changed files with 374 additions and 1 deletions

View File

@@ -391,3 +391,36 @@ TEST_F(StuffitxBlendFixture, stuffitx_blend)
free(outBuf);
EXPECT_EQ(crc, EXPECTED_CRC32);
}
/* ---- ShrinkWrap 3 SIT2 (NDIF chunk type 0xF0) ---- */
#define SHRINKWRAP_SIZE 27219
#define SHRINKWRAP_ORIGSIZE 65536
#define SHRINKWRAP_CRC32 0x93A5E340
class StuffitShrinkwrapFixture : public ::testing::Test
{
protected:
uint8_t *buf = nullptr;
void SetUp() { buf = load_test_file("stuffit_shrinkwrap.bin", SHRINKWRAP_SIZE); }
void TearDown() { free(buf); }
};
TEST_F(StuffitShrinkwrapFixture, stuffit_shrinkwrap)
{
ASSERT_NE(buf, nullptr);
size_t destLen = SHRINKWRAP_ORIGSIZE;
auto *outBuf = (uint8_t *)malloc(SHRINKWRAP_ORIGSIZE);
auto err = AARU_stuffit_shrinkwrap_decode_buffer(outBuf, &destLen, buf, SHRINKWRAP_SIZE);
EXPECT_EQ(err, 0);
EXPECT_EQ(destLen, (size_t)SHRINKWRAP_ORIGSIZE);
auto crc = crc32_data(outBuf, destLen);
free(outBuf);
EXPECT_EQ(crc, (uint32_t)SHRINKWRAP_CRC32);
}