From 8124719c3d2744edfc475155f70a286cb45e72ef Mon Sep 17 00:00:00 2001 From: Marco Biscaro Date: Sat, 17 Apr 2021 23:20:56 -0300 Subject: [PATCH] Tests: Reorganize LibCompress unit tests Move LibCompress unit tests to LibCompress/Tests directory and register them with CMake's add_test. This allows us to run these tests with ninja test instead of running a separate executable. Also split the existing tests in 3 test files that better follow the source code structure (inspired by AK tests). --- .../home/anon/tests/run-tests-and-shutdown.sh | 2 +- Meta/Lagom/CMakeLists.txt | 22 ++-- Userland/Libraries/LibCompress/CMakeLists.txt | 2 + .../LibCompress/Tests/CMakeLists.txt | 8 ++ .../LibCompress/Tests/TestDeflate.cpp} | 107 +--------------- .../Libraries/LibCompress/Tests/TestGzip.cpp | 119 ++++++++++++++++++ .../Libraries/LibCompress/Tests/TestZlib.cpp | 47 +++++++ Userland/Utilities/CMakeLists.txt | 1 - 8 files changed, 191 insertions(+), 117 deletions(-) create mode 100644 Userland/Libraries/LibCompress/Tests/CMakeLists.txt rename Userland/{Utilities/test-compress.cpp => Libraries/LibCompress/Tests/TestDeflate.cpp} (62%) create mode 100644 Userland/Libraries/LibCompress/Tests/TestGzip.cpp create mode 100644 Userland/Libraries/LibCompress/Tests/TestZlib.cpp diff --git a/Base/home/anon/tests/run-tests-and-shutdown.sh b/Base/home/anon/tests/run-tests-and-shutdown.sh index 54cf075eb3..82fd6d214e 100755 --- a/Base/home/anon/tests/run-tests-and-shutdown.sh +++ b/Base/home/anon/tests/run-tests-and-shutdown.sh @@ -15,7 +15,7 @@ run(index) { } # TODO: test-web requires the window server -system_tests=((test-js --show-progress=false) test-pthread test-compress /usr/Tests/LibM/test-math (test-crypto -t bigint)) +system_tests=((test-js --show-progress=false) test-pthread /usr/Tests/LibM/test-math (test-crypto -t bigint)) # FIXME: Running too much at once is likely to run into #5541. Remove commented out find below when stable all_tests=${concat_lists $system_tests} #$(find /usr/Tests -type f | grep -v Kernel | grep -v .inc | shuf)) count_of_all_tests=${length $all_tests} diff --git a/Meta/Lagom/CMakeLists.txt b/Meta/Lagom/CMakeLists.txt index 5b21810f42..556345d5ed 100644 --- a/Meta/Lagom/CMakeLists.txt +++ b/Meta/Lagom/CMakeLists.txt @@ -65,6 +65,7 @@ file(GLOB LIBX86_SOURCES CONFIGURE_DEPENDS "../../Userland/Libraries/LibX86/*.cp file(GLOB LIBJS_SOURCES CONFIGURE_DEPENDS "../../Userland/Libraries/LibJS/*.cpp") file(GLOB LIBJS_SUBDIR_SOURCES CONFIGURE_DEPENDS "../../Userland/Libraries/LibJS/*/*.cpp") file(GLOB LIBCOMPRESS_SOURCES CONFIGURE_DEPENDS "../../Userland/Libraries/LibCompress/*.cpp") +file(GLOB LIBCOMPRESS_TESTS CONFIGURE_DEPENDS "../../Userland/Libraries/LibCompress/Tests/*.cpp") file(GLOB LIBCRYPTO_SOURCES CONFIGURE_DEPENDS "../../Userland/Libraries/LibCrypto/*.cpp") file(GLOB LIBCRYPTO_SUBDIR_SOURCES CONFIGURE_DEPENDS "../../Userland/Libraries/LibCrypto/*/*.cpp") file(GLOB LIBTLS_SOURCES CONFIGURE_DEPENDS "../../Userland/Libraries/LibTLS/*.cpp") @@ -140,16 +141,6 @@ if (BUILD_LAGOM) WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} ) - add_executable(test-compress_lagom ../../Userland/Utilities/test-compress.cpp) - set_target_properties(test-compress_lagom PROPERTIES OUTPUT_NAME test-compress) - target_link_libraries(test-compress_lagom Lagom) - target_link_libraries(test-compress_lagom stdc++) - add_test( - NAME Compress - COMMAND test-compress_lagom - WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} - ) - add_executable(disasm_lagom ../../Userland/Utilities/disasm.cpp) set_target_properties(disasm_lagom PROPERTIES OUTPUT_NAME disasm) target_link_libraries(disasm_lagom Lagom) @@ -208,6 +199,17 @@ if (BUILD_LAGOM) ) endforeach() + foreach(source ${LIBCOMPRESS_TESTS}) + get_filename_component(name ${source} NAME_WE) + add_executable(${name}_lagom ${source} ${LIBCOMPRESS_SOURCES}) + target_link_libraries(${name}_lagom Lagom) + add_test( + NAME ${name}_lagom + COMMAND ${name}_lagom + WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} + ) + endforeach() + foreach(source ${LIBSQL_TEST_SOURCES}) get_filename_component(name ${source} NAME_WE) add_executable(${name}_lagom ${source} ${LIBSQL_SOURCES}) diff --git a/Userland/Libraries/LibCompress/CMakeLists.txt b/Userland/Libraries/LibCompress/CMakeLists.txt index 6fbb50fb8f..90242cf195 100644 --- a/Userland/Libraries/LibCompress/CMakeLists.txt +++ b/Userland/Libraries/LibCompress/CMakeLists.txt @@ -6,3 +6,5 @@ set(SOURCES serenity_lib(LibCompress compress) target_link_libraries(LibCompress LibC LibCrypto) + +add_subdirectory(Tests) diff --git a/Userland/Libraries/LibCompress/Tests/CMakeLists.txt b/Userland/Libraries/LibCompress/Tests/CMakeLists.txt new file mode 100644 index 0000000000..8b15789971 --- /dev/null +++ b/Userland/Libraries/LibCompress/Tests/CMakeLists.txt @@ -0,0 +1,8 @@ +file(GLOB TEST_SOURCES CONFIGURE_DEPENDS "*.cpp") + +foreach(source ${TEST_SOURCES}) + get_filename_component(name ${source} NAME_WE) + add_executable(${name} ${source}) + target_link_libraries(${name} LibCore LibCompress) + install(TARGETS ${name} RUNTIME DESTINATION usr/Tests/LibCompress) +endforeach() diff --git a/Userland/Utilities/test-compress.cpp b/Userland/Libraries/LibCompress/Tests/TestDeflate.cpp similarity index 62% rename from Userland/Utilities/test-compress.cpp rename to Userland/Libraries/LibCompress/Tests/TestDeflate.cpp index d51a0f08e2..91f2b39cb1 100644 --- a/Userland/Utilities/test-compress.cpp +++ b/Userland/Libraries/LibCompress/Tests/TestDeflate.cpp @@ -30,9 +30,7 @@ #include #include #include -#include -#include -#include +#include TEST_CASE(canonical_code_simple) { @@ -178,105 +176,4 @@ TEST_CASE(deflate_compress_literals) EXPECT(compressed.has_value()); } -TEST_CASE(zlib_decompress_simple) -{ - const Array compressed { - 0x78, 0x01, 0x01, 0x1D, 0x00, 0xE2, 0xFF, 0x54, 0x68, 0x69, 0x73, 0x20, - 0x69, 0x73, 0x20, 0x61, 0x20, 0x73, 0x69, 0x6D, 0x70, 0x6C, 0x65, 0x20, - 0x74, 0x65, 0x78, 0x74, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x20, 0x3A, 0x29, - 0x99, 0x5E, 0x09, 0xE8 - }; - - const u8 uncompressed[] = "This is a simple text file :)"; - - const auto decompressed = Compress::Zlib::decompress_all(compressed); - EXPECT(decompressed.value().bytes() == (ReadonlyBytes { uncompressed, sizeof(uncompressed) - 1 })); -} - -TEST_CASE(gzip_decompress_simple) -{ - const Array compressed { - 0x1f, 0x8b, 0x08, 0x00, 0x77, 0xff, 0x47, 0x5f, 0x02, 0xff, 0x2b, 0xcf, - 0x2f, 0x4a, 0x31, 0x54, 0x48, 0x4c, 0x4a, 0x56, 0x28, 0x07, 0xb2, 0x8c, - 0x00, 0xc2, 0x1d, 0x22, 0x15, 0x0f, 0x00, 0x00, 0x00 - }; - - const u8 uncompressed[] = "word1 abc word2"; - - const auto decompressed = Compress::GzipDecompressor::decompress_all(compressed); - EXPECT(decompressed.value().bytes() == (ReadonlyBytes { uncompressed, sizeof(uncompressed) - 1 })); -} - -TEST_CASE(gzip_decompress_multiple_members) -{ - const Array compressed { - 0x1f, 0x8b, 0x08, 0x00, 0xe0, 0x03, 0x48, 0x5f, 0x02, 0xff, 0x4b, 0x4c, - 0x4a, 0x4e, 0x4c, 0x4a, 0x06, 0x00, 0x4c, 0x99, 0x6e, 0x72, 0x06, 0x00, - 0x00, 0x00, 0x1f, 0x8b, 0x08, 0x00, 0xe0, 0x03, 0x48, 0x5f, 0x02, 0xff, - 0x4b, 0x4c, 0x4a, 0x4e, 0x4c, 0x4a, 0x06, 0x00, 0x4c, 0x99, 0x6e, 0x72, - 0x06, 0x00, 0x00, 0x00 - }; - - const u8 uncompressed[] = "abcabcabcabc"; - - const auto decompressed = Compress::GzipDecompressor::decompress_all(compressed); - EXPECT(decompressed.value().bytes() == (ReadonlyBytes { uncompressed, sizeof(uncompressed) - 1 })); -} - -TEST_CASE(gzip_decompress_zeroes) -{ - const Array compressed { - 0x1f, 0x8b, 0x08, 0x00, 0x6e, 0x7a, 0x4b, 0x5f, 0x02, 0xff, 0xed, 0xc1, - 0x31, 0x01, 0x00, 0x00, 0x00, 0xc2, 0xa0, 0xf5, 0x4f, 0xed, 0x61, 0x0d, - 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6e, 0xcd, 0xcd, 0xe8, - 0x7e, 0x00, 0x00, 0x02, 0x00 - }; - - const Array uncompressed = { 0 }; - - const auto decompressed = Compress::GzipDecompressor::decompress_all(compressed); - EXPECT(uncompressed == decompressed.value().bytes()); -} - -TEST_CASE(gzip_decompress_repeat_around_buffer) -{ - const Array compressed { - 0x1f, 0x8b, 0x08, 0x00, 0xc6, 0x74, 0x53, 0x5f, 0x02, 0xff, 0xed, 0xc1, - 0x01, 0x0d, 0x00, 0x00, 0x0c, 0x02, 0xa0, 0xdb, 0xbf, 0xf4, 0x37, 0x6b, - 0x08, 0x24, 0xdb, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xca, - 0xb8, 0x07, 0xcd, 0xe5, 0x38, 0xfa, 0x00, 0x80, 0x00, 0x00 - }; - - Array uncompressed; - uncompressed.span().slice(0x0000, 0x0100).fill(1); - uncompressed.span().slice(0x0100, 0x7e00).fill(0); - uncompressed.span().slice(0x7f00, 0x0100).fill(1); - - const auto decompressed = Compress::GzipDecompressor::decompress_all(compressed); - EXPECT(uncompressed == decompressed.value().bytes()); -} - -TEST_CASE(gzip_round_trip) -{ - auto original = ByteBuffer::create_uninitialized(1024); - fill_with_random(original.data(), 1024); - auto compressed = Compress::GzipCompressor::compress_all(original); - EXPECT(compressed.has_value()); - auto uncompressed = Compress::GzipDecompressor::decompress_all(compressed.value()); - EXPECT(uncompressed.has_value()); - EXPECT(uncompressed.value() == original); -} - -TEST_MAIN(Compress) +TEST_MAIN(Deflate) diff --git a/Userland/Libraries/LibCompress/Tests/TestGzip.cpp b/Userland/Libraries/LibCompress/Tests/TestGzip.cpp new file mode 100644 index 0000000000..f816ee3902 --- /dev/null +++ b/Userland/Libraries/LibCompress/Tests/TestGzip.cpp @@ -0,0 +1,119 @@ +/* + * Copyright (c) 2020-2021, the SerenityOS developers. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include + +#include +#include +#include + +TEST_CASE(gzip_decompress_simple) +{ + const Array compressed { + 0x1f, 0x8b, 0x08, 0x00, 0x77, 0xff, 0x47, 0x5f, 0x02, 0xff, 0x2b, 0xcf, + 0x2f, 0x4a, 0x31, 0x54, 0x48, 0x4c, 0x4a, 0x56, 0x28, 0x07, 0xb2, 0x8c, + 0x00, 0xc2, 0x1d, 0x22, 0x15, 0x0f, 0x00, 0x00, 0x00 + }; + + const u8 uncompressed[] = "word1 abc word2"; + + const auto decompressed = Compress::GzipDecompressor::decompress_all(compressed); + EXPECT(decompressed.value().bytes() == (ReadonlyBytes { uncompressed, sizeof(uncompressed) - 1 })); +} + +TEST_CASE(gzip_decompress_multiple_members) +{ + const Array compressed { + 0x1f, 0x8b, 0x08, 0x00, 0xe0, 0x03, 0x48, 0x5f, 0x02, 0xff, 0x4b, 0x4c, + 0x4a, 0x4e, 0x4c, 0x4a, 0x06, 0x00, 0x4c, 0x99, 0x6e, 0x72, 0x06, 0x00, + 0x00, 0x00, 0x1f, 0x8b, 0x08, 0x00, 0xe0, 0x03, 0x48, 0x5f, 0x02, 0xff, + 0x4b, 0x4c, 0x4a, 0x4e, 0x4c, 0x4a, 0x06, 0x00, 0x4c, 0x99, 0x6e, 0x72, + 0x06, 0x00, 0x00, 0x00 + }; + + const u8 uncompressed[] = "abcabcabcabc"; + + const auto decompressed = Compress::GzipDecompressor::decompress_all(compressed); + EXPECT(decompressed.value().bytes() == (ReadonlyBytes { uncompressed, sizeof(uncompressed) - 1 })); +} + +TEST_CASE(gzip_decompress_zeroes) +{ + const Array compressed { + 0x1f, 0x8b, 0x08, 0x00, 0x6e, 0x7a, 0x4b, 0x5f, 0x02, 0xff, 0xed, 0xc1, + 0x31, 0x01, 0x00, 0x00, 0x00, 0xc2, 0xa0, 0xf5, 0x4f, 0xed, 0x61, 0x0d, + 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6e, 0xcd, 0xcd, 0xe8, + 0x7e, 0x00, 0x00, 0x02, 0x00 + }; + + const Array uncompressed = { 0 }; + + const auto decompressed = Compress::GzipDecompressor::decompress_all(compressed); + EXPECT(uncompressed == decompressed.value().bytes()); +} + +TEST_CASE(gzip_decompress_repeat_around_buffer) +{ + const Array compressed { + 0x1f, 0x8b, 0x08, 0x00, 0xc6, 0x74, 0x53, 0x5f, 0x02, 0xff, 0xed, 0xc1, + 0x01, 0x0d, 0x00, 0x00, 0x0c, 0x02, 0xa0, 0xdb, 0xbf, 0xf4, 0x37, 0x6b, + 0x08, 0x24, 0xdb, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xca, + 0xb8, 0x07, 0xcd, 0xe5, 0x38, 0xfa, 0x00, 0x80, 0x00, 0x00 + }; + + Array uncompressed; + uncompressed.span().slice(0x0000, 0x0100).fill(1); + uncompressed.span().slice(0x0100, 0x7e00).fill(0); + uncompressed.span().slice(0x7f00, 0x0100).fill(1); + + const auto decompressed = Compress::GzipDecompressor::decompress_all(compressed); + EXPECT(uncompressed == decompressed.value().bytes()); +} + +TEST_CASE(gzip_round_trip) +{ + auto original = ByteBuffer::create_uninitialized(1024); + fill_with_random(original.data(), 1024); + auto compressed = Compress::GzipCompressor::compress_all(original); + EXPECT(compressed.has_value()); + auto uncompressed = Compress::GzipDecompressor::decompress_all(compressed.value()); + EXPECT(uncompressed.has_value()); + EXPECT(uncompressed.value() == original); +} + +TEST_MAIN(Gzip) diff --git a/Userland/Libraries/LibCompress/Tests/TestZlib.cpp b/Userland/Libraries/LibCompress/Tests/TestZlib.cpp new file mode 100644 index 0000000000..3b1cd37f77 --- /dev/null +++ b/Userland/Libraries/LibCompress/Tests/TestZlib.cpp @@ -0,0 +1,47 @@ +/* + * Copyright (c) 2020-2021, the SerenityOS developers. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include + +#include +#include + +TEST_CASE(zlib_decompress_simple) +{ + const Array compressed { + 0x78, 0x01, 0x01, 0x1D, 0x00, 0xE2, 0xFF, 0x54, 0x68, 0x69, 0x73, 0x20, + 0x69, 0x73, 0x20, 0x61, 0x20, 0x73, 0x69, 0x6D, 0x70, 0x6C, 0x65, 0x20, + 0x74, 0x65, 0x78, 0x74, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x20, 0x3A, 0x29, + 0x99, 0x5E, 0x09, 0xE8 + }; + + const u8 uncompressed[] = "This is a simple text file :)"; + + const auto decompressed = Compress::Zlib::decompress_all(compressed); + EXPECT(decompressed.value().bytes() == (ReadonlyBytes { uncompressed, sizeof(uncompressed) - 1 })); +} + +TEST_MAIN(Zlib) diff --git a/Userland/Utilities/CMakeLists.txt b/Userland/Utilities/CMakeLists.txt index 999a98151b..1b0c424049 100644 --- a/Userland/Utilities/CMakeLists.txt +++ b/Userland/Utilities/CMakeLists.txt @@ -43,7 +43,6 @@ target_link_libraries(su LibCrypt) target_link_libraries(tar LibArchive LibCompress) target_link_libraries(telws LibCrypto LibTLS LibWebSocket LibLine) target_link_libraries(test-crypto LibCrypto LibTLS LibLine) -target_link_libraries(test-compress LibCompress) target_link_libraries(test-fuzz LibCore LibGemini LibGfx LibHTTP LibIPC LibJS LibMarkdown LibShell) target_link_libraries(test-js LibJS LibLine LibCore) target_link_libraries(test-pthread LibThread)