# Copyright (C) 2009-2025 Robin Stuart <rstuart114@gmail.com>
# Adapted from qrencode/tests/CMakeLists.txt
# Copyright (C) 2006-2017 Kentaro Fukuchi <kentaro@fukuchi.org>
# vim: set ts=4 sw=4 et :

cmake_minimum_required(VERSION 3.10)
project(zint_backend_tests)

enable_testing()

include(${zint-package_SOURCE_DIR}/cmake/zint_add_test.cmake)

set(BWIPP_TAR ${CMAKE_CURRENT_SOURCE_DIR}/tools/bwipp_dump.ps.tar.xz)
set(BWIPP_PS ${CMAKE_CURRENT_BINARY_DIR}/tools/bwipp_dump.ps)

if(NOT EXISTS ${BWIPP_PS})
    file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/tools)
    execute_process(COMMAND ${CMAKE_COMMAND} -E tar -xf ${BWIPP_TAR}
                    WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/tools)
endif()

check_function_exists(arc4random_uniform HAVE_ARC4RANDOM_UNIFORM)

set(testcommon_SRCS testcommon.c testcommon.h)

if(ZINT_SHARED)
    add_library(testcommon ${testcommon_SRCS})
    target_link_libraries(testcommon zint)
    target_include_directories(testcommon PUBLIC ${zint_backend_tests_SOURCE_DIR})
    if(NOT (ZINT_USE_PNG AND PNG_FOUND))
        target_compile_definitions(testcommon PRIVATE ZINT_NO_PNG)
    endif()
endif()

if(ZINT_STATIC)
    add_library(testcommon-static ${testcommon_SRCS})
    target_link_libraries(testcommon-static zint-static)
    target_include_directories(testcommon-static PUBLIC ${zint_backend_tests_SOURCE_DIR})
    if(NOT (ZINT_USE_PNG AND PNG_FOUND))
        target_compile_definitions(testcommon-static PRIVATE ZINT_NO_PNG)
    endif()
endif()

zint_add_test(2of5 test_2of5)
zint_add_test(auspost test_auspost)
zint_add_test(aztec test_aztec)
zint_add_test(bc412 test_bc412)
zint_add_test(big5 test_big5)
zint_add_test(bmp test_bmp)
if(HAVE_ARC4RANDOM_UNIFORM)
zint_add_test(bwipp test_bwipp)
endif()
zint_add_test(channel test_channel)
zint_add_test(codabar test_codabar)
zint_add_test(codablock test_codablock)
zint_add_test(code test_code)
zint_add_test(code1 test_code1)
zint_add_test(code11 test_code11)
zint_add_test(code128 test_code128)
zint_add_test(code16k test_code16k)
zint_add_test(code49 test_code49)
zint_add_test(common test_common)
zint_add_test(composite test_composite)
zint_add_test(dmatrix test_dmatrix)
zint_add_test(dotcode test_dotcode)
zint_add_test(dxfilmedge test_dxfilmedge)
zint_add_test(eci test_eci)
zint_add_test(emf test_emf)
zint_add_test(filemem test_filemem)
zint_add_test(gb18030 test_gb18030)
zint_add_test(gb2312 test_gb2312)
zint_add_test(gif test_gif)
zint_add_test(gridmtx test_gridmtx)
zint_add_test(gs1 test_gs1)
if(ZINT_USE_GS1SE AND GS1SE)
zint_add_test(gs1se test_gs1se)
endif()
zint_add_test(hanxin test_hanxin)
zint_add_test(imail test_imail)
zint_add_test(iso3166 test_iso3166)
zint_add_test(iso4217 test_iso4217)
zint_add_test(ksx1001 test_ksx1001)
zint_add_test(large test_large)
zint_add_test(library test_library)
zint_add_test(mailmark test_mailmark)
zint_add_test(maxicode test_maxicode)
zint_add_test(medical test_medical)
zint_add_test(output test_output)
zint_add_test(pcx test_pcx)
zint_add_test(pdf417 test_pdf417)
zint_add_test(perf test_perf)
zint_add_test(plessey test_plessey)
if(ZINT_USE_PNG AND PNG_FOUND)
zint_add_test(png test_png)
endif()
zint_add_test(postal test_postal)
zint_add_test(print test_print)
zint_add_test(ps test_ps)
zint_add_test(qr test_qr)
if(HAVE_ARC4RANDOM_UNIFORM)
zint_add_test(random test_random)
endif()
zint_add_test(raster test_raster)
zint_add_test(reedsol test_reedsol)
zint_add_test(rss test_rss)
zint_add_test(sjis test_sjis)
zint_add_test(svg test_svg)
zint_add_test(telepen test_telepen)
zint_add_test(tif test_tif)
zint_add_test(ultra test_ultra)
zint_add_test(upcean test_upcean)
zint_add_test(vector test_vector)
