diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 74a41e4..309e19c 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -33,6 +33,12 @@ file(COPY ${CMAKE_CURRENT_SOURCE_DIR}/data/lzma.bin file(COPY ${CMAKE_CURRENT_SOURCE_DIR}/data/flac.flac DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/data/) +file(COPY ${CMAKE_CURRENT_SOURCE_DIR}/data/audio.bin + DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/data/) + +file(COPY ${CMAKE_CURRENT_SOURCE_DIR}/data/data.bin + DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/data/) + # 'Google_Tests_run' is the target name # 'test1.cpp tests2.cpp' are source files with tests add_executable(tests_run apple_rle.cpp crc32.c crc32.h adc.cpp bzip2.cpp lzip.cpp lzfse.cpp zstd.cpp lzma.cpp flac.cpp) diff --git a/tests/bzip2.cpp b/tests/bzip2.cpp index ff9ed6f..d9ab36e 100644 --- a/tests/bzip2.cpp +++ b/tests/bzip2.cpp @@ -78,3 +78,55 @@ TEST_F(bzip2Fixture, bzip2) EXPECT_EQ(crc, EXPECTED_CRC32); } + +TEST_F(bzip2Fixture, bzip2Compress) +{ + size_t original_len = 8388608; + uint cmp_len = original_len; + uint decmp_len = original_len; + char path[PATH_MAX]; + char filename[PATH_MAX * 2]; + FILE* file; + uint32_t original_crc, decmp_crc; + int bz_err; + const uint8_t* original; + uint8_t* cmp_buffer; + uint8_t* decmp_buffer; + + // Allocate buffers + original = (const uint8_t*)malloc(original_len); + cmp_buffer = (uint8_t*)malloc(cmp_len); + decmp_buffer = (uint8_t*)malloc(decmp_len); + + // Read the file + getcwd(path, PATH_MAX); + snprintf(filename, PATH_MAX, "%s/data/data.bin", path); + + file = fopen(filename, "rb"); + fread((void*)original, 1, original_len, file); + fclose(file); + + // Calculate the CRC + original_crc = crc32_data(original, original_len); + + // Compress + bz_err = BZ2_bzBuffToBuffCompress((char*)(cmp_buffer), &cmp_len, (char*)original, original_len, 9, 0, 0); + + EXPECT_EQ(bz_err, BZ_OK); + + // Decompress + bz_err = BZ2_bzBuffToBuffDecompress((char*)decmp_buffer, &decmp_len, (char*)cmp_buffer, cmp_len, 0, 0); + + EXPECT_EQ(bz_err, BZ_OK); + + EXPECT_EQ(decmp_len, original_len); + + decmp_crc = crc32_data(decmp_buffer, decmp_len); + + // Free buffers + free((void*)original); + free(cmp_buffer); + free(decmp_buffer); + + EXPECT_EQ(decmp_crc, original_crc); +} diff --git a/tests/data/audio.bin b/tests/data/audio.bin new file mode 100644 index 0000000..adcbfbc Binary files /dev/null and b/tests/data/audio.bin differ diff --git a/tests/data/data.bin b/tests/data/data.bin new file mode 100644 index 0000000..c1b79bd Binary files /dev/null and b/tests/data/data.bin differ diff --git a/tests/flac.cpp b/tests/flac.cpp index 9c87392..d78721b 100644 --- a/tests/flac.cpp +++ b/tests/flac.cpp @@ -76,4 +76,54 @@ TEST_F(flacFixture, flac) free(outBuf); EXPECT_EQ(crc, EXPECTED_CRC32); -} \ No newline at end of file +} + +TEST_F(flacFixture, flacCompress) +{ + size_t original_len = 9633792; + uint cmp_len = original_len; + uint decmp_len = original_len; + char path[PATH_MAX]; + char filename[PATH_MAX * 2]; + FILE* file; + uint32_t original_crc, decmp_crc; + const uint8_t* original; + uint8_t* cmp_buffer; + uint8_t* decmp_buffer; + size_t newSize; + + // Allocate buffers + original = (const uint8_t*)malloc(original_len); + cmp_buffer = (uint8_t*)malloc(cmp_len); + decmp_buffer = (uint8_t*)malloc(decmp_len); + + // Read the file + getcwd(path, PATH_MAX); + snprintf(filename, PATH_MAX, "%s/data/audio.bin", path); + + file = fopen(filename, "rb"); + fread((void*)original, 1, original_len, file); + fclose(file); + + // Calculate the CRC + original_crc = crc32_data(original, original_len); + + // Compress + newSize = flac_encode_redbook_buffer(cmp_buffer, cmp_len, original, original_len,4608, 1, 0, "partial_tukey(0/1.0/1.0)", 0, 1, false, 0, 8, "Aaru.Compression.Native.Tests", strlen("Aaru.Compression.Native.Tests")); + cmp_len = newSize; + + // Decompress + newSize = flac_decode_redbook_buffer(decmp_buffer, decmp_len, cmp_buffer, cmp_len); + decmp_len = newSize; + + EXPECT_EQ(decmp_len, original_len); + + decmp_crc = crc32_data(decmp_buffer, decmp_len); + + // Free buffers + free((void*)original); + free(cmp_buffer); + free(decmp_buffer); + + EXPECT_EQ(decmp_crc, original_crc); +} diff --git a/tests/lzfse.cpp b/tests/lzfse.cpp index 007f5b7..c666f44 100644 --- a/tests/lzfse.cpp +++ b/tests/lzfse.cpp @@ -74,3 +74,53 @@ TEST_F(lzfseFixture, lzfse) EXPECT_EQ(crc, EXPECTED_CRC32); } + +TEST_F(lzfseFixture, lzfseCompress) +{ + size_t original_len = 8388608; + uint cmp_len = original_len; + uint decmp_len = original_len; + char path[PATH_MAX]; + char filename[PATH_MAX * 2]; + FILE* file; + uint32_t original_crc, decmp_crc; + const uint8_t* original; + uint8_t* cmp_buffer; + uint8_t* decmp_buffer; + size_t newSize; + + // Allocate buffers + original = (const uint8_t*)malloc(original_len); + cmp_buffer = (uint8_t*)malloc(cmp_len); + decmp_buffer = (uint8_t*)malloc(decmp_len); + + // Read the file + getcwd(path, PATH_MAX); + snprintf(filename, PATH_MAX, "%s/data/data.bin", path); + + file = fopen(filename, "rb"); + fread((void*)original, 1, original_len, file); + fclose(file); + + // Calculate the CRC + original_crc = crc32_data(original, original_len); + + // Compress + newSize = lzfse_encode_buffer(cmp_buffer, cmp_len, original, original_len, nullptr); + cmp_len = newSize; + + // Decompress + newSize = lzfse_decode_buffer(decmp_buffer, decmp_len, cmp_buffer, cmp_len, nullptr); + decmp_len = newSize; + + EXPECT_EQ(decmp_len, original_len); + + decmp_crc = crc32_data(decmp_buffer, decmp_len); + + // Free buffers + free((void*)original); + free(cmp_buffer); + free(decmp_buffer); + + EXPECT_EQ(decmp_crc, original_crc); +} diff --git a/tests/lzip.cpp b/tests/lzip.cpp index 9032d8e..c9a3e9f 100644 --- a/tests/lzip.cpp +++ b/tests/lzip.cpp @@ -76,3 +76,53 @@ TEST_F(lzipFixture, lzip) EXPECT_EQ(crc, EXPECTED_CRC32); } + +TEST_F(lzipFixture, lzipCompress) +{ + int32_t original_len = 8388608; + int32_t cmp_len = original_len; + int32_t decmp_len = original_len; + char path[PATH_MAX]; + char filename[PATH_MAX * 2]; + FILE* file; + uint32_t original_crc, decmp_crc; + const uint8_t* original; + uint8_t* cmp_buffer; + uint8_t* decmp_buffer; + int32_t newSize; + + // Allocate buffers + original = (const uint8_t*)malloc(original_len); + cmp_buffer = (uint8_t*)malloc(cmp_len); + decmp_buffer = (uint8_t*)malloc(decmp_len); + + // Read the file + getcwd(path, PATH_MAX); + snprintf(filename, PATH_MAX, "%s/data/data.bin", path); + + file = fopen(filename, "rb"); + fread((void*)original, 1, original_len, file); + fclose(file); + + // Calculate the CRC + original_crc = crc32_data(original, original_len); + + // Compress + newSize = lzip_encode_buffer(cmp_buffer, cmp_len, original, original_len, 1048576, 273); + cmp_len = newSize; + + // Decompress + newSize = lzip_decode_buffer(decmp_buffer, decmp_len, cmp_buffer, cmp_len); + decmp_len = newSize; + + EXPECT_EQ(decmp_len, original_len); + + decmp_crc = crc32_data(decmp_buffer, decmp_len); + + // Free buffers + free((void*)original); + free(cmp_buffer); + free(decmp_buffer); + + EXPECT_EQ(decmp_crc, original_crc); +} diff --git a/tests/lzma.cpp b/tests/lzma.cpp index 42e9817..b51fd0a 100644 --- a/tests/lzma.cpp +++ b/tests/lzma.cpp @@ -80,3 +80,55 @@ TEST_F(lzmaFixture, lzma) EXPECT_EQ(crc, EXPECTED_CRC32); } + +TEST_F(lzmaFixture, lzmaCompress) +{ + size_t original_len = 8388608; + size_t cmp_len = original_len; + size_t decmp_len = original_len; + char path[PATH_MAX]; + char filename[PATH_MAX * 2]; + FILE* file; + uint32_t original_crc, decmp_crc; + const uint8_t* original; + uint8_t* cmp_buffer; + uint8_t* decmp_buffer; + int err; + uint8_t props[5]; + size_t props_len = 5; + + // Allocate buffers + original = (const uint8_t*)malloc(original_len); + cmp_buffer = (uint8_t*)malloc(cmp_len); + decmp_buffer = (uint8_t*)malloc(decmp_len); + + // Read the file + getcwd(path, PATH_MAX); + snprintf(filename, PATH_MAX, "%s/data/data.bin", path); + + file = fopen(filename, "rb"); + fread((void*)original, 1, original_len, file); + fclose(file); + + // Calculate the CRC + original_crc = crc32_data(original, original_len); + + // Compress + err = LzmaCompress(cmp_buffer, &cmp_len, original, original_len, props, &props_len, 9, 1048576, 3, 0, 2, 273, 2); + EXPECT_EQ(err, 0); + + // Decompress + err = LzmaUncompress(decmp_buffer, &decmp_len, cmp_buffer, &cmp_len, props, props_len); + EXPECT_EQ(err, 0); + + EXPECT_EQ(decmp_len, original_len); + + decmp_crc = crc32_data(decmp_buffer, decmp_len); + + // Free buffers + free((void*)original); + free(cmp_buffer); + free(decmp_buffer); + + EXPECT_EQ(decmp_crc, original_crc); +} diff --git a/tests/zstd.cpp b/tests/zstd.cpp index 8c2ac29..59a8b65 100644 --- a/tests/zstd.cpp +++ b/tests/zstd.cpp @@ -76,3 +76,53 @@ TEST_F(zstdFixture, zstd) EXPECT_EQ(crc, EXPECTED_CRC32); } + +TEST_F(zstdFixture, zstdCompress) +{ + size_t original_len = 8388608; + uint cmp_len = original_len; + uint decmp_len = original_len; + char path[PATH_MAX]; + char filename[PATH_MAX * 2]; + FILE* file; + uint32_t original_crc, decmp_crc; + const uint8_t* original; + uint8_t* cmp_buffer; + uint8_t* decmp_buffer; + size_t newSize; + + // Allocate buffers + original = (const uint8_t*)malloc(original_len); + cmp_buffer = (uint8_t*)malloc(cmp_len); + decmp_buffer = (uint8_t*)malloc(decmp_len); + + // Read the file + getcwd(path, PATH_MAX); + snprintf(filename, PATH_MAX, "%s/data/data.bin", path); + + file = fopen(filename, "rb"); + fread((void*)original, 1, original_len, file); + fclose(file); + + // Calculate the CRC + original_crc = crc32_data(original, original_len); + + // Compress + newSize = ZSTD_compress(cmp_buffer, cmp_len, original, original_len, 22); + cmp_len = newSize; + + // Decompress + newSize = ZSTD_decompress(decmp_buffer, decmp_len, cmp_buffer, cmp_len); + decmp_len = newSize; + + EXPECT_EQ(decmp_len, original_len); + + decmp_crc = crc32_data(decmp_buffer, decmp_len); + + // Free buffers + free((void*)original); + free(cmp_buffer); + free(decmp_buffer); + + EXPECT_EQ(decmp_crc, original_crc); +}