# ---------------------------------------------------------------------------
# Integrationstests der Bibliothek (P1204R0 Regel 7.2).
#
# Unterschied zu den Unit-Tests neben den Modulen: diese benutzen
# ausschliesslich die OEFFENTLICHE API -- <libpda/...> und sonst nichts. Kein
# doctest, kein Unity, kein Blick in details/.
#
# Der Grund fuer das eigene Verzeichnis steht in P1204R0: solche Tests sollen
# auch gegen eine INSTALLIERTE Bibliothek laufen koennen. Was hier gruen ist,
# ist gruen fuer einen Benutzer.
# ---------------------------------------------------------------------------

function(libpda_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 pda::pda pda_warnings)
    add_test(NAME "integration.${name}" COMMAND ${target})
endfunction()

libpda_add_integration_test(basics)
