include(CTest)
include(Catch)

add_executable(test_reservoir test_reservoir.cpp)
target_link_libraries(test_reservoir PRIVATE rclib_core Catch2::Catch2WithMain)
catch_discover_tests(test_reservoir)

add_executable(test_nvar_reservoir test_nvar_reservoir.cpp)
target_link_libraries(test_nvar_reservoir PRIVATE rclib_core Catch2::Catch2WithMain)
catch_discover_tests(test_nvar_reservoir)

add_executable(test_readout test_readout.cpp)
target_link_libraries(test_readout PRIVATE rclib_core Catch2::Catch2WithMain)
catch_discover_tests(test_readout)

add_executable(test_ridge_dual test_ridge_dual.cpp)
target_link_libraries(test_ridge_dual PRIVATE rclib_core Catch2::Catch2WithMain)
catch_discover_tests(test_ridge_dual)

add_executable(test_rls_readout test_rls_readout.cpp)
target_link_libraries(test_rls_readout PRIVATE rclib_core Catch2::Catch2WithMain)
catch_discover_tests(test_rls_readout)

add_executable(test_rls_minibatch test_rls_minibatch.cpp)
target_link_libraries(test_rls_minibatch PRIVATE rclib_core Catch2::Catch2WithMain)
catch_discover_tests(test_rls_minibatch)

add_executable(test_lms_readout test_lms_readout.cpp)
target_link_libraries(test_lms_readout PRIVATE rclib_core Catch2::Catch2WithMain)
catch_discover_tests(test_lms_readout)

add_executable(test_model test_model.cpp)
target_link_libraries(test_model PRIVATE rclib_core Catch2::Catch2WithMain)
catch_discover_tests(test_model)

add_executable(test_bias_effect test_bias_effect.cpp)
target_link_libraries(test_bias_effect PRIVATE rclib_core Catch2::Catch2WithMain)
catch_discover_tests(test_bias_effect)

add_executable(test_integration_mackey_glass test_integration_mackey_glass.cpp)
target_link_libraries(test_integration_mackey_glass PRIVATE rclib_core Catch2::Catch2WithMain)
catch_discover_tests(test_integration_mackey_glass)

add_executable(test_integration_online_learning test_integration_online_learning.cpp)
target_link_libraries(test_integration_online_learning PRIVATE rclib_core Catch2::Catch2WithMain)
catch_discover_tests(test_integration_online_learning)

add_executable(test_seed_consistency test_seed_consistency.cpp)
target_link_libraries(test_seed_consistency PRIVATE rclib_core Catch2::Catch2WithMain)
catch_discover_tests(test_seed_consistency)

add_executable(test_serialization test_serialization.cpp)
target_link_libraries(test_serialization PRIVATE rclib_core Catch2::Catch2WithMain)
catch_discover_tests(test_serialization)

add_executable(test_model_serialization test_model_serialization.cpp)
target_link_libraries(test_model_serialization PRIVATE rclib_core Catch2::Catch2WithMain)
catch_discover_tests(test_model_serialization)

add_executable(test_serialization_fixtures test_serialization_fixtures.cpp)
target_link_libraries(test_serialization_fixtures PRIVATE rclib_core Catch2::Catch2WithMain)
target_compile_definitions(test_serialization_fixtures PRIVATE RCLIB_TEST_DATA_DIR="${PROJECT_SOURCE_DIR}/tests/data")
catch_discover_tests(test_serialization_fixtures)
