Add some catch2 tests
This commit is contained in:
parent
697f010d70
commit
05ab4dc05c
@ -10,7 +10,7 @@ if(CMAKE_MINOR_VERSION LESS 12)
|
||||
project(miniz)
|
||||
# see issue https://gitlab.kitware.com/cmake/cmake/merge_requests/1799
|
||||
else()
|
||||
project(miniz C)
|
||||
project(miniz)
|
||||
set(CMAKE_C_STANDARD 90)
|
||||
set(CMAKE_VERBOSE_MAKEFILE ON)
|
||||
# set(CMAKE_C_VISIBILITY_PRESET hidden)
|
||||
@ -42,6 +42,7 @@ option(BUILD_FUZZERS "Build fuzz targets" OFF)
|
||||
option(AMALGAMATE_SOURCES "Amalgamate sources into miniz.h/c" OFF)
|
||||
option(BUILD_HEADER_ONLY "Build a header-only version" OFF)
|
||||
option(BUILD_SHARED_LIBS "Build shared library instead of static" OFF)
|
||||
option(BUILD_TESTS "Build tests" ${MINIZ_STANDALONE_PROJECT})
|
||||
option(INSTALL_PROJECT "Install project" ${MINIZ_STANDALONE_PROJECT})
|
||||
|
||||
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/bin)
|
||||
@ -296,6 +297,20 @@ if(BUILD_FUZZERS)
|
||||
target_link_libraries(zip_fuzzer miniz)
|
||||
endif()
|
||||
|
||||
if(BUILD_TESTS)
|
||||
set(CMAKE_CXX_STANDARD 20)
|
||||
set(CMAKE_CXX_STANDARD_REQUIRED YES)
|
||||
|
||||
add_executable(catch_tests tests/main.cpp
|
||||
tests/catch_amalgamated.cpp)
|
||||
target_link_libraries(catch_tests miniz)
|
||||
|
||||
enable_testing()
|
||||
|
||||
add_test(NAME catch_tests
|
||||
COMMAND $<TARGET_FILE:catch_tests>)
|
||||
endif()
|
||||
|
||||
set(INCLUDE_INSTALL_DIR "include")
|
||||
|
||||
if(INSTALL_PROJECT)
|
||||
|
||||
17
CMakePresets.json
Normal file
17
CMakePresets.json
Normal file
@ -0,0 +1,17 @@
|
||||
{
|
||||
"version": 1,
|
||||
"cmakeMinimumRequired": {
|
||||
"major": 3,
|
||||
"minor": 5,
|
||||
"patch": 0
|
||||
},
|
||||
"configurePresets": [
|
||||
{
|
||||
"name": "gcc",
|
||||
"displayName": "GCC",
|
||||
"description": "Default build options for GCC",
|
||||
"generator": "Ninja",
|
||||
"binaryDir": "${sourceDir}/build"
|
||||
}
|
||||
]
|
||||
}
|
||||
10795
tests/catch_amalgamated.cpp
Normal file
10795
tests/catch_amalgamated.cpp
Normal file
File diff suppressed because it is too large
Load Diff
13143
tests/catch_amalgamated.hpp
Normal file
13143
tests/catch_amalgamated.hpp
Normal file
File diff suppressed because it is too large
Load Diff
101
tests/main.cpp
Normal file
101
tests/main.cpp
Normal file
@ -0,0 +1,101 @@
|
||||
#include "catch_amalgamated.hpp"
|
||||
#include "../miniz.h"
|
||||
#include <assert.h>
|
||||
#include <string>
|
||||
|
||||
#ifdef _WIN32
|
||||
#define unlink _unlink
|
||||
#endif
|
||||
|
||||
bool create_test_zip()
|
||||
{
|
||||
unlink("test.zip");
|
||||
mz_zip_archive zip_archive = {};
|
||||
auto b = mz_zip_writer_init_file(&zip_archive, "test.zip", 0);
|
||||
if (!b)
|
||||
return false;
|
||||
|
||||
b = mz_zip_writer_add_mem(&zip_archive, "test.txt", "foo", 3, MZ_DEFAULT_COMPRESSION);
|
||||
if (!b)
|
||||
return false;
|
||||
|
||||
b = mz_zip_writer_finalize_archive(&zip_archive);
|
||||
if (!b)
|
||||
return false;
|
||||
|
||||
b = mz_zip_writer_end(&zip_archive);
|
||||
if (!b)
|
||||
return false;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
TEST_CASE("Zip writer tests")
|
||||
{
|
||||
auto b = create_test_zip();
|
||||
REQUIRE(b);
|
||||
|
||||
SECTION("Test test.txt content correct")
|
||||
{
|
||||
mz_zip_archive zip_archive = {};
|
||||
|
||||
auto b = mz_zip_reader_init_file(&zip_archive, "test.zip", 0);
|
||||
REQUIRE(b);
|
||||
|
||||
size_t content_size;
|
||||
auto content = mz_zip_reader_extract_file_to_heap(&zip_archive, "test.txt", &content_size, 0);
|
||||
|
||||
std::string_view content_view(reinterpret_cast<char *>(content), content_size);
|
||||
|
||||
REQUIRE(content_view == "foo");
|
||||
REQUIRE(content_view.size() == 3);
|
||||
|
||||
free(content);
|
||||
}
|
||||
}
|
||||
|
||||
TEST_CASE("Tinfl / tdefl tests")
|
||||
{
|
||||
SECTION("simple_test1")
|
||||
{
|
||||
size_t cmp_len = 0;
|
||||
|
||||
const char *p = "This is a test.This is a test.This is a test.1234567This is a test.This is a test.123456";
|
||||
size_t uncomp_len = strlen(p);
|
||||
|
||||
void *pComp_data = tdefl_compress_mem_to_heap(p, uncomp_len, &cmp_len, TDEFL_WRITE_ZLIB_HEADER);
|
||||
REQUIRE(pComp_data);
|
||||
|
||||
size_t decomp_len = 0;
|
||||
void *pDecomp_data = tinfl_decompress_mem_to_heap(pComp_data, cmp_len, &decomp_len, TINFL_FLAG_PARSE_ZLIB_HEADER);
|
||||
|
||||
REQUIRE(pDecomp_data);
|
||||
REQUIRE(decomp_len == uncomp_len);
|
||||
REQUIRE(memcmp(pDecomp_data, p, uncomp_len) == 0);
|
||||
|
||||
free(pComp_data);
|
||||
free(pDecomp_data);
|
||||
}
|
||||
|
||||
SECTION("simple_test2")
|
||||
{
|
||||
uint8_t cmp_buf[1024], decomp_buf[1024];
|
||||
uLong cmp_len = sizeof(cmp_buf);
|
||||
|
||||
const char *p = "This is a test.This is a test.This is a test.1234567This is a test.This is a test.123456";
|
||||
uLong uncomp_len = (uLong)strlen(p);
|
||||
|
||||
int status = compress(cmp_buf, &cmp_len, (const uint8_t *)p, uncomp_len);
|
||||
REQUIRE(status == Z_OK);
|
||||
|
||||
REQUIRE(cmp_len <= compressBound(uncomp_len));
|
||||
|
||||
uLong decomp_len = sizeof(decomp_buf);
|
||||
status = uncompress(decomp_buf, &decomp_len, cmp_buf, cmp_len);
|
||||
;
|
||||
|
||||
REQUIRE(status == Z_OK);
|
||||
REQUIRE(decomp_len == uncomp_len);
|
||||
REQUIRE(memcmp(decomp_buf, p, uncomp_len) == 0);
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user