cmake_minimum_required(VERSION 3.20)
project(psx_card_manager_tests LANGUAGES CXX)
include(CTest)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
get_filename_component(PSX_ROOT "${CMAKE_CURRENT_LIST_DIR}/../../.." ABSOLUTE)
set(RECOMP_UI_ROOT "" CACHE PATH "recomp-ui containing the optional card-manager contract")
set(CARD_TEST_PRIMARY "" CACHE PATH "Empty disposable test folder on the first local NTFS volume")
set(CARD_TEST_SECONDARY "" CACHE PATH "Empty disposable test folder on a distinct local NTFS volume")
if(NOT WIN32)
    message(STATUS "Persistence suite requires Windows; portable parser has no platform dependency")
    return()
endif()
foreach(name test_cards test_documents test_service)
    add_executable(${name} ${name}.cpp)
    target_include_directories(${name} PRIVATE "${PSX_ROOT}/runtime/include" "${PSX_ROOT}/runtime/include/psx_card_manager" "${RECOMP_UI_ROOT}/src")
    target_link_libraries(${name} PRIVATE advapi32)
    if(name STREQUAL "test_cards")
        add_test(NAME card_parser COMMAND ${name})
    endif()
    if(CARD_TEST_PRIMARY AND CARD_TEST_SECONDARY)
        add_test(NAME ${name} COMMAND ${name} "${CARD_TEST_PRIMARY}/${name}" "${CARD_TEST_SECONDARY}/${name}")
    endif()
endforeach()
