# Тесты ядра. Структура зеркалит src: tests/ayla — протоколная часть,
# tests/aircon — конверсии/шаблоны (появятся в M3).
#
# Тесты собираются с исключениями (фреймворк), сама библиотека — без.

include(FetchContent)
FetchContent_Declare(
  doctest
  GIT_REPOSITORY https://github.com/doctest/doctest.git
  GIT_TAG v2.4.12
  GIT_SHALLOW TRUE
)
FetchContent_MakeAvailable(doctest)

function(fgl_add_test name)
  add_executable(test_${name} ${ARGN})
  target_compile_features(test_${name} PRIVATE cxx_std_20)
  target_link_libraries(test_${name} PRIVATE fgl-aircon doctest_with_main)
  target_include_directories(test_${name} PRIVATE "${CMAKE_SOURCE_DIR}/src")
  add_test(NAME ${name} COMMAND test_${name})
endfunction()

fgl_add_test(ayla_platform ayla/test_platform.cpp)
fgl_add_test(ayla_httpd ayla/test_httpd.cpp)
fgl_add_test(ayla_crypto ayla/test_crypto.cpp)
fgl_add_test(ayla_envelope ayla/test_envelope.cpp)
fgl_add_test(ayla_json ayla/test_json.cpp)
fgl_add_test(ayla_httpc ayla/test_httpc.cpp)
