cmake_minimum_required(VERSION 3.16)
if(CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR)
    project(snes_diagnostic_writer_tests C)
    enable_testing()
endif()
find_package(Python3 COMPONENTS Interpreter REQUIRED)
set(SNESRECOMP_SDL_BACKEND SDL3 CACHE STRING "SDL3 or SDL2")
if(NOT COMMAND snesrecomp_target_sdl)
    if(SNESRECOMP_SDL_BACKEND STREQUAL "SDL3")
        find_package(SDL3 CONFIG REQUIRED)
    else()
        find_package(SDL2 CONFIG REQUIRED)
    endif()
    function(snesrecomp_target_sdl target)
        if(SNESRECOMP_SDL_BACKEND STREQUAL "SDL3")
            target_compile_definitions(${target} PRIVATE SNESRECOMP_SDL3=1)
            target_link_libraries(${target} PRIVATE SDL3::SDL3)
        else()
            target_link_libraries(${target} PRIVATE SDL2::SDL2)
        endif()
    endfunction()
endif()
foreach(kind trace replay)
    add_executable(snes_${kind}_writer_test test_${kind}_writer.c ../../src/diagnostics/${kind}_writer.c)
    target_include_directories(snes_${kind}_writer_test PRIVATE ../../src)
    target_compile_features(snes_${kind}_writer_test PRIVATE c_std_11)
    string(TOUPPER "${kind}" upper_kind)
    target_compile_definitions(snes_${kind}_writer_test PRIVATE SNES_${upper_kind}_WRITER_TEST=1 SDL_MAIN_HANDLED)
    if(MSVC)
        target_compile_options(snes_${kind}_writer_test PRIVATE /UNDEBUG)
    else()
        target_compile_options(snes_${kind}_writer_test PRIVATE -UNDEBUG)
    endif()
    snesrecomp_target_sdl(snes_${kind}_writer_test)
    add_test(NAME snes_${kind}_writer COMMAND ${Python3_EXECUTABLE}
        ${CMAKE_CURRENT_SOURCE_DIR}/run_writer_test.py $<TARGET_FILE:snes_${kind}_writer_test>)
endforeach()
