# STM32 Bootloader Unit Tests CMakeLists.txt
cmake_minimum_required(VERSION 3.22)
project(bootloader_tests C)

set(CMAKE_C_STANDARD 99)
set(CMAKE_C_STANDARD_REQUIRED ON)

# 启用所有警告
if(CMAKE_C_COMPILER_ID MATCHES "GNU|Clang")
    add_compile_options(-Wall -Wextra -Wpedantic)
endif()

# CRC32 测试
add_executable(test_crc unit/test_crc_check.c)

# AES 测试
add_executable(test_aes unit/test_aes_crypto.c)

# Boot Jump 测试
add_executable(test_boot_jump unit/test_boot_jump.c)

# Protocol 测试
add_executable(test_protocol unit/test_protocol.c)

# 整合测试（需要修改各个测试文件以支持外部调用）
# add_executable(test_all unit/test_all.c
#     unit/test_crc_check.c
#     unit/test_aes_crypto.c
#     unit/test_boot_jump.c
#     unit/test_protocol.c)

# 注册测试
enable_testing()

add_test(NAME CRC32_Test COMMAND test_crc)
add_test(NAME AES_Test COMMAND test_aes)
add_test(NAME BootJump_Test COMMAND test_boot_jump)
add_test(NAME Protocol_Test COMMAND test_protocol)
# add_test(NAME All_Tests COMMAND test_all)

# 自定义目标：运行所有测试
add_custom_target(run_tests
    COMMAND ${CMAKE_CTEST_COMMAND} --output-on-failure
    DEPENDS test_crc test_aes test_boot_jump test_protocol
    COMMENT "Running all unit tests..."
)
