# ---------------------------------------------------------------------------
# Integrationstests (P1204R0 Regel 7.2).
#
# Unterschied zu den Unit-Tests neben den Modulen: diese hier benutzen
# ausschliesslich die OEFFENTLICHE API -- also <playground/...> und sonst
# nichts. Damit testen sie genau das, was ein Benutzer bekommt, und koennten
# im Prinzip auch gegen eine installierte Version laufen.
#
# Jedes Unterverzeichnis ist ein eigener Testfall mit eigener driver.c/.cpp.
# ---------------------------------------------------------------------------

function(playground_add_integration_test name)
    set(target "integration_${name}")

    if(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/${name}/driver.c")
        add_executable(${target} "${name}/driver.c")
    elseif(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/${name}/driver.cpp")
        add_executable(${target} "${name}/driver.cpp")
    else()
        message(WARNING "tests/${name}: keine driver.c/.cpp gefunden")
        return()
    endif()

    target_link_libraries(${target} PRIVATE playground_core playground_warnings)
    add_test(NAME "integration.${name}" COMMAND ${target})
endfunction()

playground_add_integration_test(basics)
