mirror of
https://github.com/GerbilSoft/zlib-ng.git
synced 2025-06-18 19:45:37 -04:00
69 lines
2.3 KiB
CMake
69 lines
2.3 KiB
CMake
# test-data.cmake - Tests targeting data files in the data directory
|
|
|
|
# Test compress and verify test against data file using extra args
|
|
macro(test_minigzip name path)
|
|
# Construct compression arguments for minigzip
|
|
set(compress_args -k -c)
|
|
foreach(extra_arg IN ITEMS "${ARGN}")
|
|
list(APPEND compress_args ${extra_arg})
|
|
endforeach()
|
|
|
|
# Create unique friendly string for test
|
|
string(REPLACE ";" "" arg_list "${ARGN}")
|
|
string(REPLACE " " "" arg_list "${arg_list}")
|
|
string(REPLACE "-" "" arg_list "${arg_list}")
|
|
|
|
set(test_id minigzip-${name}-${arg_list})
|
|
|
|
if(NOT TEST ${test_id})
|
|
add_test(NAME ${test_id}
|
|
COMMAND ${CMAKE_COMMAND}
|
|
"-DTARGET=${MINIGZIP_COMMAND}"
|
|
"-DCOMPRESS_ARGS=${compress_args}"
|
|
"-DDECOMPRESS_ARGS=-d;-c"
|
|
-DINPUT=${CMAKE_CURRENT_SOURCE_DIR}/${path}
|
|
-DTEST_NAME=${test_id}
|
|
-P ${CMAKE_CURRENT_SOURCE_DIR}/cmake/compress-and-verify.cmake)
|
|
endif()
|
|
endmacro()
|
|
|
|
# List of arg combinations to use during compression
|
|
set(TEST_CONFIGS
|
|
-R # Z_RLE
|
|
-h # Z_HUFFMAN_ONLY
|
|
-T # Direct store
|
|
-0 # No compression
|
|
-1 # Deflate quick
|
|
-2 # Deflate fast
|
|
-4 # Deflate medium (lazy matches)
|
|
"-5;-F" # Deflate medium (Z_FIXED)
|
|
-6 # Deflate medium
|
|
-9 # Deflate slow
|
|
"-9;-f" # Deflate slow (Z_FILTERED)
|
|
)
|
|
|
|
# Enumerate all files in data directory to run tests against
|
|
file(GLOB_RECURSE TEST_FILE_PATHS
|
|
LIST_DIRECTORIES false
|
|
RELATIVE ${CMAKE_CURRENT_SOURCE_DIR}
|
|
${CMAKE_CURRENT_SOURCE_DIR}/data/*)
|
|
|
|
# For all files in the data directory, run tests against them
|
|
foreach(test_file_path ${TEST_FILE_PATHS})
|
|
if("${test_file_path}" MATCHES ".gz$" OR "${test_file_path}" MATCHES ".out$" OR
|
|
"${test_file_path}" MATCHES "/.git/" OR "${test_file_path}" MATCHES ".md$")
|
|
continue()
|
|
endif()
|
|
foreach(test_config ${TEST_CONFIGS})
|
|
get_filename_component(test_name ${test_file_path} NAME)
|
|
if (test_name STREQUAL "")
|
|
continue()
|
|
endif()
|
|
test_minigzip(${test_name} ${test_file_path} ${test_config})
|
|
endforeach()
|
|
endforeach()
|
|
|
|
# Additional tests to verify with automatic data type detection arg
|
|
test_minigzip("detect-text" "data/lcet10.txt" -A)
|
|
test_minigzip("detect-binary" "data/paper-100k.pdf" -A)
|