# Render test for src/render/ (see tst_render.cpp). Runs without SteamVR or a
# headset; skips itself without a GPU context. One CTest entry per graphics
# API, because the API is process-wide.

find_package(Qt6 REQUIRED COMPONENTS Test)

qt_add_executable(tst_render
    tst_render.cpp
    ${CMAKE_SOURCE_DIR}/src/render/RenderBackend.cpp
    ${CMAKE_SOURCE_DIR}/src/render/OpenGLRenderBackend.cpp
)
target_include_directories(tst_render PRIVATE
    ${CMAKE_SOURCE_DIR}/src
    ${CMAKE_SOURCE_DIR}/third-party/openvr/headers
)
# Only openvr.h's types are used: nothing links against libopenvr_api.
target_link_libraries(tst_render PRIVATE Qt::Gui Qt::Quick Qt::Qml Qt6::Test)
if (QT_FEATURE_vulkan)
    target_sources(tst_render PRIVATE
        ${CMAKE_SOURCE_DIR}/src/render/VulkanRenderBackend.cpp
    )
    target_compile_definitions(tst_render PRIVATE OVRAS_HAS_VULKAN=1)
else ()
    target_compile_definitions(tst_render PRIVATE OVRAS_HAS_VULKAN=0)
endif ()
qt_add_qml_module(tst_render
    URI RenderTest
    VERSION 1.0
    QML_FILES TwoTone.qml
)

add_test(NAME render_opengl COMMAND tst_render)
set_tests_properties(render_opengl PROPERTIES ENVIRONMENT "OVRAS_TEST_API=opengl")
add_test(NAME render_vulkan COMMAND tst_render)
set_tests_properties(render_vulkan PROPERTIES ENVIRONMENT "OVRAS_TEST_API=vulkan")
