2026-03-13 18:43:14 +08:00
|
|
|
cmake_minimum_required(VERSION 3.15)
|
|
|
|
|
project(XCEngineTests)
|
|
|
|
|
|
2026-04-05 04:55:25 +08:00
|
|
|
set(CMAKE_CXX_STANDARD 20)
|
2026-03-13 18:43:14 +08:00
|
|
|
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
|
|
|
|
|
|
|
|
|
# ============================================================
|
|
|
|
|
# Test Configuration
|
|
|
|
|
# ============================================================
|
|
|
|
|
|
|
|
|
|
option(ENABLE_COVERAGE "Enable code coverage" OFF)
|
|
|
|
|
option(ENABLE_BENCHMARK "Enable benchmark tests" OFF)
|
|
|
|
|
|
|
|
|
|
# ============================================================
|
|
|
|
|
# Dependencies
|
|
|
|
|
# ============================================================
|
|
|
|
|
|
|
|
|
|
include(FetchContent)
|
|
|
|
|
FetchContent_Declare(
|
|
|
|
|
googletest
|
|
|
|
|
GIT_REPOSITORY https://gitee.com/mirrors/googletest.git
|
|
|
|
|
GIT_TAG v1.14.0
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
set(gtest_force_shared_crt ON CACHE BOOL "" FORCE)
|
2026-04-09 01:13:00 +08:00
|
|
|
set(INSTALL_GTEST OFF CACHE BOOL "" FORCE)
|
2026-03-13 18:43:14 +08:00
|
|
|
FetchContent_MakeAvailable(googletest)
|
|
|
|
|
|
2026-04-09 01:13:00 +08:00
|
|
|
if(TARGET gtest AND NOT TARGET GTest::gtest)
|
|
|
|
|
add_library(GTest::gtest ALIAS gtest)
|
|
|
|
|
endif()
|
|
|
|
|
|
|
|
|
|
if(TARGET gtest_main AND NOT TARGET GTest::gtest_main)
|
|
|
|
|
add_library(GTest::gtest_main ALIAS gtest_main)
|
|
|
|
|
endif()
|
|
|
|
|
|
|
|
|
|
if(TARGET gmock AND NOT TARGET GTest::gmock)
|
|
|
|
|
add_library(GTest::gmock ALIAS gmock)
|
|
|
|
|
endif()
|
|
|
|
|
|
|
|
|
|
if(TARGET gmock_main AND NOT TARGET GTest::gmock_main)
|
|
|
|
|
add_library(GTest::gmock_main ALIAS gmock_main)
|
|
|
|
|
endif()
|
|
|
|
|
|
2026-03-13 18:43:14 +08:00
|
|
|
enable_testing()
|
|
|
|
|
|
|
|
|
|
# ============================================================
|
|
|
|
|
# Test Subdirectories
|
|
|
|
|
# ============================================================
|
|
|
|
|
|
2026-03-29 01:36:53 +08:00
|
|
|
add_subdirectory(Core)
|
2026-04-06 03:17:53 +08:00
|
|
|
add_subdirectory(UI)
|
2026-03-29 01:36:53 +08:00
|
|
|
add_subdirectory(Memory)
|
|
|
|
|
add_subdirectory(Threading)
|
|
|
|
|
add_subdirectory(Debug)
|
|
|
|
|
add_subdirectory(Components)
|
|
|
|
|
add_subdirectory(Scene)
|
|
|
|
|
add_subdirectory(Scripting)
|
2026-03-26 20:14:58 +08:00
|
|
|
add_subdirectory(Rendering)
|
2026-03-29 01:36:53 +08:00
|
|
|
add_subdirectory(RHI)
|
|
|
|
|
add_subdirectory(Resources)
|
|
|
|
|
add_subdirectory(Input)
|
|
|
|
|
add_subdirectory(Editor)
|
2026-03-17 02:51:34 +08:00
|
|
|
|
2026-04-02 02:49:27 +08:00
|
|
|
if(WIN32)
|
|
|
|
|
find_program(XCENGINE_POWERSHELL_EXECUTABLE NAMES powershell pwsh REQUIRED)
|
|
|
|
|
|
|
|
|
|
add_custom_target(rendering_phase_regression_build
|
|
|
|
|
DEPENDS
|
|
|
|
|
rendering_all_tests
|
|
|
|
|
editor_tests
|
|
|
|
|
XCEditor
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
add_custom_target(rendering_phase_regression
|
2026-04-02 04:16:03 +08:00
|
|
|
DEPENDS
|
|
|
|
|
rendering_phase_regression_build
|
2026-04-02 02:49:27 +08:00
|
|
|
COMMAND "${XCENGINE_POWERSHELL_EXECUTABLE}"
|
|
|
|
|
-NoProfile
|
|
|
|
|
-ExecutionPolicy Bypass
|
|
|
|
|
-File "${CMAKE_SOURCE_DIR}/scripts/Run-RendererPhaseRegression.ps1"
|
|
|
|
|
-RepoRoot "${CMAKE_SOURCE_DIR}"
|
|
|
|
|
-BuildDir "${CMAKE_BINARY_DIR}"
|
|
|
|
|
-Config $<CONFIG>
|
2026-04-02 04:16:03 +08:00
|
|
|
-SkipBuild
|
2026-04-02 02:49:27 +08:00
|
|
|
USES_TERMINAL
|
|
|
|
|
COMMENT "Run renderer phase regression suite"
|
|
|
|
|
)
|
|
|
|
|
endif()
|
|
|
|
|
|
2026-03-13 18:43:14 +08:00
|
|
|
# ============================================================
|
|
|
|
|
# Test Summary
|
|
|
|
|
# ============================================================
|
|
|
|
|
|
|
|
|
|
add_custom_target(print_tests
|
|
|
|
|
COMMAND ${CMAKE_COMMAND} -E echo "===== XCEngine Test Suite ====="
|
|
|
|
|
COMMAND ${CMAKE_CTEST_COMMAND} -N
|
|
|
|
|
COMMENT "Available tests:"
|
2026-04-05 04:55:25 +08:00
|
|
|
)
|