cmake_minimum_required(VERSION 3.21)

# ── Catch2 ────────────────────────────────────────────────────────────────────
find_package(Catch2 3 QUIET)
if(NOT Catch2_FOUND)
    include(FetchContent)
    FetchContent_Declare(
        Catch2
        GIT_REPOSITORY https://github.com/catchorg/Catch2.git
        GIT_TAG        v3.5.3
    )
    FetchContent_MakeAvailable(Catch2)
endif()

# ── Google Test ───────────────────────────────────────────────────────────────
find_package(GTest QUIET)
if(NOT GTest_FOUND)
    include(FetchContent)
    FetchContent_Declare(
        googletest
        GIT_REPOSITORY https://github.com/google/googletest.git
        GIT_TAG        v1.14.0
    )
    FetchContent_MakeAvailable(googletest)
endif()

# ── Test executable ───────────────────────────────────────────────────────────
add_executable(kpn_tests
    test_fixed_string.cpp
    test_traits.cpp
    test_channel.cpp
    test_node.cpp
    test_network.cpp
)

target_link_libraries(kpn_tests PRIVATE
    kpn
    Catch2::Catch2WithMain
    GTest::gtest
)

include(CTest)
include(Catch)
catch_discover_tests(kpn_tests)
