147 lines
5.2 KiB
CMake
147 lines
5.2 KiB
CMake
# tests 子工程最低 CMake 版本要求(与主工程保持一致)
|
||
cmake_minimum_required(VERSION 3.10)
|
||
|
||
# 预留:测试通用源码列表(当前未直接使用,可用于后续统一链接)
|
||
set(DTU_TEST_COMMON_SOURCES
|
||
"${CMAKE_SOURCE_DIR}/src/Drv/lcd/ascii.c"
|
||
"${CMAKE_SOURCE_DIR}/src/Drv/lcd/lcd.c"
|
||
"${CMAKE_SOURCE_DIR}/src/Drv/key.c"
|
||
"${CMAKE_SOURCE_DIR}/src/Drv/menu/app/menu.c"
|
||
"${CMAKE_SOURCE_DIR}/src/Drv/menu/model/display.c"
|
||
"${CMAKE_SOURCE_DIR}/src/TCP/tcp.c"
|
||
"${CMAKE_SOURCE_DIR}/src/thread_utils.c"
|
||
"${CMAKE_SOURCE_DIR}/src/remoteDisplay.c"
|
||
)
|
||
|
||
# 封装测试目标创建逻辑:
|
||
# - add_executable: 生成测试可执行文件
|
||
# - target_include_directories: 注入项目头文件路径
|
||
# - target_link_libraries: 按平台链接系统库
|
||
# - add_test: 注册到 CTest,支持 ctest 统一执行
|
||
function(add_dtu_test test_name)
|
||
add_executable(${test_name} ${ARGN})
|
||
target_sources(${test_name} PRIVATE
|
||
"${CMAKE_SOURCE_DIR}/src/common/utf8.c"
|
||
)
|
||
# 测试目标可见的头文件目录
|
||
target_include_directories(${test_name} PRIVATE
|
||
"${CMAKE_SOURCE_DIR}/include"
|
||
"${CMAKE_SOURCE_DIR}/src"
|
||
"${CMAKE_SOURCE_DIR}/src/TCP"
|
||
"${CMAKE_SOURCE_DIR}/src/Drv"
|
||
"${CMAKE_SOURCE_DIR}/src/Drv/lcd"
|
||
"${CMAKE_SOURCE_DIR}/src/common"
|
||
)
|
||
# 平台差异:Windows 需要 ws2_32,非 Windows 使用 pthread
|
||
if(WIN32)
|
||
target_link_libraries(${test_name} PRIVATE ws2_32)
|
||
else()
|
||
target_link_libraries(${test_name} PRIVATE pthread)
|
||
endif()
|
||
# 将测试程序注册为 CTest 用例,名称与目标名一致
|
||
add_test(NAME ${test_name} COMMAND ${test_name})
|
||
endfunction()
|
||
|
||
# ------------------------------------------------------------
|
||
# Smoke 测试:验证测试框架本身可用
|
||
# ------------------------------------------------------------
|
||
add_dtu_test(test_smoke tests_smoke.c)
|
||
|
||
# ------------------------------------------------------------
|
||
# P0:高价值纯逻辑测试
|
||
# ------------------------------------------------------------
|
||
add_dtu_test(
|
||
test_p0_remote_display
|
||
test_p0_remote_display.c
|
||
"${CMAKE_SOURCE_DIR}/src/Drv/lcd/lcd.c"
|
||
"${CMAKE_SOURCE_DIR}/src/Drv/lcd/lcd_draw.c"
|
||
"${CMAKE_SOURCE_DIR}/src/Drv/lcd/lcd_text.c"
|
||
"${CMAKE_SOURCE_DIR}/src/Drv/lcd/ascii.c"
|
||
"${CMAKE_SOURCE_DIR}/src/Drv/key.c"
|
||
"${CMAKE_SOURCE_DIR}/src/TCP/tcp.c"
|
||
"${CMAKE_SOURCE_DIR}/src/thread_utils.c"
|
||
)
|
||
add_dtu_test(
|
||
test_p0_utf8_hz12_get
|
||
test_p0_utf8_hz12_get.c
|
||
"${CMAKE_SOURCE_DIR}/src/Drv/lcd/ascii.c"
|
||
)
|
||
|
||
# ------------------------------------------------------------
|
||
# P1:业务核心计算/状态流转测试
|
||
# ------------------------------------------------------------
|
||
add_dtu_test(
|
||
test_p1_key
|
||
test_p1_key.c
|
||
"${CMAKE_SOURCE_DIR}/src/Drv/key.c"
|
||
)
|
||
add_dtu_test(
|
||
test_p1_lcd_basic
|
||
test_p1_lcd_basic.c
|
||
"${CMAKE_SOURCE_DIR}/src/Drv/lcd/lcd.c"
|
||
"${CMAKE_SOURCE_DIR}/src/Drv/lcd/lcd_draw.c"
|
||
"${CMAKE_SOURCE_DIR}/src/Drv/lcd/lcd_text.c"
|
||
"${CMAKE_SOURCE_DIR}/src/Drv/lcd/ascii.c"
|
||
)
|
||
add_dtu_test(
|
||
test_p1_menu
|
||
test_p1_menu.c
|
||
"${CMAKE_SOURCE_DIR}/src/Drv/menu/model/menu_tree_builder.c"
|
||
"${CMAKE_SOURCE_DIR}/src/Drv/menu/view/menu_layout.c"
|
||
"${CMAKE_SOURCE_DIR}/src/Drv/lcd/lcd_text.c"
|
||
"${CMAKE_SOURCE_DIR}/src/Drv/lcd/lcd.c"
|
||
"${CMAKE_SOURCE_DIR}/src/Drv/lcd/ascii.c"
|
||
)
|
||
add_dtu_test(
|
||
test_p1_menu_nav_legacy
|
||
test_p1_menu_nav_legacy.c
|
||
"${CMAKE_SOURCE_DIR}/src/Drv/menu/presenter/menu_navigator.c"
|
||
)
|
||
add_dtu_test(
|
||
test_p1_menu_navigator
|
||
test_p1_menu_navigator.c
|
||
"${CMAKE_SOURCE_DIR}/src/Drv/menu/presenter/menu_navigator.c"
|
||
)
|
||
add_dtu_test(
|
||
test_p1_menu_tree_builder
|
||
test_p1_menu_tree_builder.c
|
||
"${CMAKE_SOURCE_DIR}/src/Drv/menu/model/menu_tree_builder.c"
|
||
)
|
||
add_dtu_test(
|
||
test_p1_menu_layout
|
||
test_p1_menu_layout.c
|
||
"${CMAKE_SOURCE_DIR}/src/Drv/menu/view/menu_layout.c"
|
||
"${CMAKE_SOURCE_DIR}/src/Drv/lcd/lcd_text.c"
|
||
"${CMAKE_SOURCE_DIR}/src/Drv/lcd/lcd.c"
|
||
"${CMAKE_SOURCE_DIR}/src/Drv/lcd/lcd_draw.c"
|
||
"${CMAKE_SOURCE_DIR}/src/Drv/lcd/ascii.c"
|
||
)
|
||
|
||
# ------------------------------------------------------------
|
||
# P2:集成测试(网络回环等)
|
||
# ------------------------------------------------------------
|
||
add_dtu_test(
|
||
test_p2_tcp_loopback
|
||
test_p2_tcp_loopback.c
|
||
"${CMAKE_SOURCE_DIR}/src/TCP/tcp.c"
|
||
"${CMAKE_SOURCE_DIR}/src/thread_utils.c"
|
||
)
|
||
add_dtu_test(
|
||
test_p2_menu_runtime_startup
|
||
test_p2_menu_runtime_startup.c
|
||
"${CMAKE_SOURCE_DIR}/src/Drv/menu/app/menu.c"
|
||
"${CMAKE_SOURCE_DIR}/src/Drv/menu/model/display.c"
|
||
"${CMAKE_SOURCE_DIR}/src/Drv/menu/model/menu_model.c"
|
||
"${CMAKE_SOURCE_DIR}/src/Drv/menu/view/menu_view.c"
|
||
"${CMAKE_SOURCE_DIR}/src/Drv/menu/presenter/menu_presenter.c"
|
||
"${CMAKE_SOURCE_DIR}/src/Drv/menu/model/menu_tree_builder.c"
|
||
"${CMAKE_SOURCE_DIR}/src/Drv/menu/view/menu_layout.c"
|
||
"${CMAKE_SOURCE_DIR}/src/Drv/menu/presenter/menu_navigator.c"
|
||
"${CMAKE_SOURCE_DIR}/src/Drv/menu/view/menu_renderer_lcd.c"
|
||
"${CMAKE_SOURCE_DIR}/src/Drv/lcd/lcd.c"
|
||
"${CMAKE_SOURCE_DIR}/src/Drv/lcd/lcd_draw.c"
|
||
"${CMAKE_SOURCE_DIR}/src/Drv/lcd/lcd_text.c"
|
||
"${CMAKE_SOURCE_DIR}/src/Drv/lcd/ascii.c"
|
||
"${CMAKE_SOURCE_DIR}/src/Drv/key.c"
|
||
)
|