add_library(pp_test_harness INTERFACE)
target_include_directories(pp_test_harness INTERFACE
    "${CMAKE_CURRENT_SOURCE_DIR}")
target_link_libraries(pp_test_harness INTERFACE
    pp_project_options
    pp_project_warnings)

add_executable(pp_foundation_binary_stream_tests
    foundation/binary_stream_tests.cpp
)
target_link_libraries(pp_foundation_binary_stream_tests PRIVATE
    pp_foundation
    pp_test_harness)

add_test(NAME pp_foundation_binary_stream_tests COMMAND pp_foundation_binary_stream_tests)
set_tests_properties(pp_foundation_binary_stream_tests PROPERTIES
    LABELS "foundation;desktop-fast")

add_executable(pp_foundation_parse_tests
    foundation/parse_tests.cpp)
target_link_libraries(pp_foundation_parse_tests PRIVATE
    pp_foundation
    pp_test_harness)

add_test(NAME pp_foundation_parse_tests COMMAND pp_foundation_parse_tests)
set_tests_properties(pp_foundation_parse_tests PROPERTIES
    LABELS "foundation;desktop-fast")

add_executable(pp_foundation_trace_tests
    foundation/trace_tests.cpp)
target_link_libraries(pp_foundation_trace_tests PRIVATE
    pp_foundation
    pp_test_harness)

add_test(NAME pp_foundation_trace_tests COMMAND pp_foundation_trace_tests)
set_tests_properties(pp_foundation_trace_tests PROPERTIES
    LABELS "foundation;desktop-fast")

add_executable(pp_assets_image_format_tests
    assets/image_format_tests.cpp)
target_link_libraries(pp_assets_image_format_tests PRIVATE
    pp_assets
    pp_test_harness)

add_test(NAME pp_assets_image_format_tests COMMAND pp_assets_image_format_tests)
set_tests_properties(pp_assets_image_format_tests PROPERTIES
    LABELS "assets;desktop-fast")

add_executable(pp_paint_blend_tests
    paint/blend_tests.cpp)
target_link_libraries(pp_paint_blend_tests PRIVATE
    pp_paint
    pp_test_harness)

add_test(NAME pp_paint_blend_tests COMMAND pp_paint_blend_tests)
set_tests_properties(pp_paint_blend_tests PROPERTIES
    LABELS "paint;desktop-fast")

add_executable(pp_document_tests
    document/document_tests.cpp)
target_link_libraries(pp_document_tests PRIVATE
    pp_document
    pp_test_harness)

add_test(NAME pp_document_tests COMMAND pp_document_tests)
set_tests_properties(pp_document_tests PROPERTIES
    LABELS "document;desktop-fast")

add_executable(pp_renderer_api_tests
    renderer_api/renderer_api_tests.cpp)
target_link_libraries(pp_renderer_api_tests PRIVATE
    pp_renderer_api
    pp_test_harness)

add_test(NAME pp_renderer_api_tests COMMAND pp_renderer_api_tests)
set_tests_properties(pp_renderer_api_tests PROPERTIES
    LABELS "renderer;desktop-fast")

add_executable(pp_ui_core_layout_value_tests
    ui_core/layout_value_tests.cpp)
target_link_libraries(pp_ui_core_layout_value_tests PRIVATE
    pp_ui_core
    pp_test_harness)

add_test(NAME pp_ui_core_layout_value_tests COMMAND pp_ui_core_layout_value_tests)
set_tests_properties(pp_ui_core_layout_value_tests PROPERTIES
    LABELS "ui;desktop-fast")

if(TARGET pano_cli)
    add_test(NAME pano_cli_create_document_smoke
        COMMAND pano_cli create-document --width 64 --height 32 --layers 2)
    set_tests_properties(pano_cli_create_document_smoke PROPERTIES
        LABELS "integration;desktop-fast")

    add_test(NAME pano_cli_inspect_image_rejects_unsupported
        COMMAND pano_cli inspect-image --path "${CMAKE_CURRENT_SOURCE_DIR}/data/images/unsupported-image.txt")
    set_tests_properties(pano_cli_inspect_image_rejects_unsupported PROPERTIES
        LABELS "assets;integration;desktop-fast"
        WILL_FAIL TRUE)
endif()
