
if(WIN32)
    set(_EXAMPLE_PLATFORM_LIBS ws2_32)
else()
    set(_EXAMPLE_PLATFORM_LIBS dl pthread)
endif()

function(darra_cpp_add_test test_name source_file)
    add_executable(${test_name} ${source_file})
    target_link_libraries(${test_name} PRIVATE ethercat_cpp ${_EXAMPLE_PLATFORM_LIBS})
    set_target_properties(${test_name} PROPERTIES FOLDER "C++ SDK/Tests")
    add_test(NAME ${test_name} COMMAND ${test_name})

    set_tests_properties(${test_name} PROPERTIES
        TIMEOUT 60
        FAIL_REGULAR_EXPRESSION "FAIL;ERROR;Assertion failed"
    )
endfunction()

add_executable(basic_cpp basic.cpp)
target_link_libraries(basic_cpp PRIVATE ethercat_cpp ${_EXAMPLE_PLATFORM_LIBS})
set_target_properties(basic_cpp PROPERTIES FOLDER "C++ SDK/Examples")

darra_cpp_add_test(test_soe_idn_codec      test_soe_idn_codec.cpp)
darra_cpp_add_test(test_aoe_notification   test_aoe_notification.cpp)
darra_cpp_add_test(test_voe                test_voe.cpp)
darra_cpp_add_test(test_hot_connect        test_hot_connect.cpp)
darra_cpp_add_test(test_async_isolation    test_async_isolation.cpp)

message(STATUS "[CPP SDK] examples + 4 ad-hoc 测试已注册 (ctest 可列举)")
message(STATUS "[CPP SDK]   - test_soe_idn_codec   (W17-2: SoE IDN codec)")
message(STATUS "[CPP SDK]   - test_aoe_notification (W18-2: AoE 字节对齐)")
message(STATUS "[CPP SDK]   - test_voe             (W18-3: VoE 帧编解码)")
message(STATUS "[CPP SDK]   - test_hot_connect     (W19-4: Hot-Connect 契约)")
message(STATUS "[CPP SDK]   - test_async_isolation (2026-06-11: 异步隔离层 串行闸/守门/取消/进度/异常)")
