cmake_minimum_required(VERSION 4.0) # Enable testing enable_testing() # Find Qt packages for tests find_package(Qt6 COMPONENTS Core Gui Widgets Multimedia Test REQUIRED) # Define common sources needed by all tests - include only what's actually needed for basic testing set(COMMON_TEST_SOURCES ../src/items/item.h ../src/items/item.cpp ../src/sensors/sensor.h ../src/sensors/sensor.cpp ../src/programmode.h ../src/programmode.cpp ../src/microcontroller.h ../src/microcontroller.cpp ../src/actors/actor.h ../src/actors/actor.cpp ../src/actors/factoractor.h ../src/actors/factoractor.cpp ../src/actors/polynomalactor.h ../src/actors/polynomalactor.cpp ../src/actors/sensoractor.h ../src/actors/sensoractor.cpp ../src/actors/timeractor.h ../src/actors/timeractor.cpp ../src/items/relay.h ../src/items/relay.cpp ../src/items/messageitem.h ../src/items/messageitem.cpp ../src/items/systemitem.h ../src/items/systemitem.cpp ../src/items/auxitem.h ../src/items/auxitem.cpp ../src/items/poweritem.h ../src/items/poweritem.cpp ../src/items/rgbitem.h ../src/items/rgbitem.cpp ../src/actors/alarmtime.h ../src/actors/alarmtime.cpp ../src/actors/regulator.h ../src/actors/regulator.cpp ../src/items/itemsource.h ../src/items/itemsource.cpp ../src/items/itemstore.h ../src/items/itemstore.cpp ../src/items/itemloadersource.h ../src/items/itemloadersource.cpp ) # Add test executables - compile all needed sources into each test add_executable(test_item unit/items/test_item.cpp ${COMMON_TEST_SOURCES}) add_executable(test_sensor unit/sensors/test_sensor.cpp ${COMMON_TEST_SOURCES}) add_executable(test_actor unit/actors/test_actor.cpp ${COMMON_TEST_SOURCES}) add_executable(test_itemstore unit/items/test_itemstore.cpp ${COMMON_TEST_SOURCES}) add_executable(test_itemloadersource unit/items/test_itemloadersource.cpp ${COMMON_TEST_SOURCES}) add_executable(test_tcp unit/service/test_tcp.cpp ${COMMON_TEST_SOURCES} ../src/service/service.h ../src/service/service.cpp ../src/service/server.h ../src/service/server.cpp ../src/service/tcpserver.h ../src/service/tcpserver.cpp ../src/service/tcpclient.h ../src/service/tcpclient.cpp ) # Link libraries for test_item target_link_libraries(test_item Qt6::Core Qt6::Gui Qt6::Widgets Qt6::Multimedia Qt6::Test ) # Include paths for source files target_include_directories(test_item PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/../src ${Qt6Gui_PRIVATE_INCLUDE_DIRS} ) # Link libraries for test_sensor target_link_libraries(test_sensor Qt6::Core Qt6::Gui Qt6::Widgets Qt6::Multimedia Qt6::Test ) # Include paths for source files target_include_directories(test_sensor PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/../src ${Qt6Gui_PRIVATE_INCLUDE_DIRS} ) # Link libraries for test_actor target_link_libraries(test_actor Qt6::Core Qt6::Gui Qt6::Widgets Qt6::Multimedia Qt6::Test ) # Include paths for source files target_include_directories(test_actor PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/../src ${Qt6Gui_PRIVATE_INCLUDE_DIRS} ) # Link libraries for test_itemstore target_link_libraries(test_itemstore Qt6::Core Qt6::Gui Qt6::Widgets Qt6::Multimedia Qt6::Test ) # Include paths for source files target_include_directories(test_itemstore PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/../src ${Qt6Gui_PRIVATE_INCLUDE_DIRS} ) # Link libraries for test_itemloadersource target_link_libraries(test_itemloadersource Qt6::Core Qt6::Gui Qt6::Widgets Qt6::Multimedia Qt6::Test ) # Include paths for source files target_include_directories(test_itemloadersource PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/../src ${Qt6Gui_PRIVATE_INCLUDE_DIRS} ) # Link libraries for test_tcp target_link_libraries(test_tcp Qt6::Core Qt6::Gui Qt6::Widgets Qt6::Multimedia Qt6::Network Qt6::WebSockets Qt6::Test ) # Include paths for source files target_include_directories(test_tcp PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/../src ${Qt6Gui_PRIVATE_INCLUDE_DIRS} ) # Add tests to CTest add_test(NAME test_item COMMAND test_item) add_test(NAME test_sensor COMMAND test_sensor) add_test(NAME test_actor COMMAND test_actor) add_test(NAME test_itemstore COMMAND test_itemstore) add_test(NAME test_itemloadersource COMMAND test_itemloadersource) add_test(NAME test_tcp COMMAND test_tcp)