add_executable(test_profile_repository
    test_profile_repository.cpp
    ${CMAKE_SOURCE_DIR}/src/profile_repository.cpp
)
target_include_directories(test_profile_repository PRIVATE ${CMAKE_SOURCE_DIR}/src)
target_link_libraries(test_profile_repository PRIVATE Qt6::Core Qt6::Sql Qt6::Test)
add_test(NAME test_profile_repository COMMAND test_profile_repository)

add_executable(test_mremoteng_importer
    test_mremoteng_importer.cpp
    ${CMAKE_SOURCE_DIR}/src/mremoteng_importer.cpp
)
target_include_directories(test_mremoteng_importer PRIVATE ${CMAKE_SOURCE_DIR}/src)
target_link_libraries(test_mremoteng_importer PRIVATE Qt6::Core Qt6::Test)
add_test(NAME test_mremoteng_importer COMMAND test_mremoteng_importer)

add_executable(test_ssh_session_backend
    test_ssh_session_backend.cpp
    ${CMAKE_SOURCE_DIR}/src/ssh_session_backend.cpp
    ${CMAKE_SOURCE_DIR}/src/session_backend.h
)
target_include_directories(test_ssh_session_backend PRIVATE ${CMAKE_SOURCE_DIR}/src)
target_link_libraries(test_ssh_session_backend PRIVATE Qt6::Core Qt6::Gui Qt6::Test)
target_compile_definitions(test_ssh_session_backend PRIVATE
    ORBITHUB_TEST_FIXTURES_DIR="${CMAKE_CURRENT_SOURCE_DIR}/fixtures"
)
add_test(NAME test_ssh_session_backend COMMAND test_ssh_session_backend)

add_executable(test_vnc_session_backend
    test_vnc_session_backend.cpp
    ${CMAKE_SOURCE_DIR}/src/vnc_session_backend.cpp
    ${CMAKE_SOURCE_DIR}/src/vnc_pixel_codecs.cpp
    ${CMAKE_SOURCE_DIR}/src/session_backend.h
)
target_include_directories(test_vnc_session_backend PRIVATE ${CMAKE_SOURCE_DIR}/src)
target_link_libraries(test_vnc_session_backend PRIVATE
    Qt6::Core Qt6::Gui Qt6::Network Qt6::Test OpenSSL::Crypto
)
add_test(NAME test_vnc_session_backend COMMAND test_vnc_session_backend)

if(TARGET freerdp AND TARGET winpr)
    add_executable(test_rdp_session_backend
        test_rdp_session_backend.cpp
        ${CMAKE_SOURCE_DIR}/src/rdp_session_backend.cpp
        ${CMAKE_SOURCE_DIR}/src/session_backend.h
    )
    target_include_directories(test_rdp_session_backend PRIVATE
        ${CMAKE_SOURCE_DIR}/src
        ${CMAKE_SOURCE_DIR}/third_party/FreeRDP/include
        ${CMAKE_SOURCE_DIR}/third_party/FreeRDP/winpr/include
        ${CMAKE_BINARY_DIR}/third_party/FreeRDP/include
        ${CMAKE_BINARY_DIR}/third_party/FreeRDP/winpr/include
    )
    target_compile_definitions(test_rdp_session_backend PRIVATE ORBITHUB_HAS_FREERDP)
    target_link_libraries(test_rdp_session_backend PRIVATE Qt6::Core Qt6::Gui Qt6::Test freerdp winpr)
    if(TARGET freerdp-client)
        target_link_libraries(test_rdp_session_backend PRIVATE freerdp-client)
    endif()
    add_test(NAME test_rdp_session_backend COMMAND test_rdp_session_backend)
else()
    message(STATUS "FreeRDP targets not available -- skipping test_rdp_session_backend")
endif()
