# The shell backends' tests. Each runs on the test main's loop and, with
# DBUS, on a private session bus.
function(lingmo_add_shell_test name)
    cmake_parse_arguments(PARSE_ARGV 1 arg "DBUS" "" "")
    add_executable(${name} ${name}.cpp ${PROJECT_SOURCE_DIR}/tests/gtest_toolkit_main.cpp)
    target_include_directories(${name} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR} ${PROJECT_SOURCE_DIR}/tests)
    target_link_libraries(${name} PRIVATE GTest::gtest lingmo-core lingmo-test-loop
        ${arg_UNPARSED_ARGUMENTS})
    if(arg_DBUS)
        add_test(NAME ${name} COMMAND ${DBUS_RUN_SESSION} -- $<TARGET_FILE:${name}>)
    else()
        add_test(NAME ${name} COMMAND ${name})
    endif()
endfunction()

lingmo_add_shell_test(shell_common_test DBUS lingmo-shell-common)
lingmo_add_shell_test(notification_service_test DBUS lingmo-shell-notification)
lingmo_add_shell_test(statusbar_test DBUS lingmo-shell-statusbar)
lingmo_add_shell_test(dock_test DBUS lingmo-shell-dock)
lingmo_add_shell_test(launcher_test DBUS lingmo-shell-launcher)
lingmo_add_shell_test(clipboard_history_test lingmo-shell-clipboard)
lingmo_add_shell_test(wm_task_windows_test lingmo-shell-common)
lingmo_add_shell_test(shell_components_test DBUS lingmo-shell-osd lingmo-shell-dock-view)
target_compile_definitions(shell_components_test PRIVATE LINGMO_SOURCE_DIR="${PROJECT_SOURCE_DIR}")
lingmo_add_shell_test(clipboard_picker_test lingmo-shell-clipboard-view)
lingmo_add_shell_test(not_responding_test lingmo-shell-notresponding)
lingmo_add_shell_test(screenshot_test DBUS lingmo-shell-screenshot)
target_compile_definitions(screenshot_test PRIVATE LINGMO_SOURCE_DIR="${PROJECT_SOURCE_DIR}"
    SCREENSHOT_EXECUTABLE="$<TARGET_FILE:lingmo-screenshot>")
add_dependencies(screenshot_test lingmo-screenshot)
# Its fake services answer through sd-bus fallback handlers.
pkg_check_modules(Libsystemd REQUIRED IMPORTED_TARGET libsystemd)
lingmo_add_shell_test(secret_prompts_test DBUS lingmo-shell-secrets PkgConfig::Libsystemd)
lingmo_add_shell_test(notification_view_test DBUS lingmo-shell-notification-view)
target_compile_definitions(notification_view_test PRIVATE LINGMO_SOURCE_DIR="${PROJECT_SOURCE_DIR}")
lingmo_add_shell_test(launcher_window_test DBUS lingmo-shell-launcher-view)
lingmo_add_shell_test(wallpaper_test lingmo-shell-wallpaper)
lingmo_add_shell_test(controlcenter_test lingmo-shell-controlcenter lingmo-shell-statusbar-view)
target_compile_definitions(controlcenter_test PRIVATE LINGMO_SOURCE_DIR="${PROJECT_SOURCE_DIR}")
lingmo_add_shell_test(statusbar_view_test DBUS lingmo-shell-statusbar-view)
target_compile_definitions(statusbar_view_test PRIVATE LINGMO_SOURCE_DIR="${PROJECT_SOURCE_DIR}")
lingmo_add_shell_test(menubar_test DBUS lingmo-shell-menubar)
