Cockatrice/tests/command_zone/CMakeLists.txt
DawnFire42 3c2e4a3fb2 feat(command-zone): add state machine with tests
Implement CommandZoneState - a pure C++ state machine managing zone
visibility transitions (Hidden, Revealed, Peeking states).

The state machine is intentionally decoupled from Qt graphics:
- Pure logic with no Qt dependencies in the state class
- Testable in isolation without a GUI
- Clear state transition table with StateChangeResult outcomes

Test coverage verifies:
- Initial state is Hidden
- Valid transitions: Hidden->Revealed, Hidden->Peeking, etc.
- Invalid transitions return NoChange
- Peek timeout triggers return to previous state

This establishes the foundation for command zone visibility management
while keeping graphics concerns separate.
2026-02-26 20:13:32 -05:00

40 lines
1.2 KiB
CMake

# ------------------------
# Qt modules for command zone tests
# Qt::Gui required for QColor in z_values.h
# Qt::Widgets required for QGraphicsItem in abstract_card_item.h
# ------------------------
set(TEST_QT_MODULES
${COCKATRICE_QT_VERSION_NAME}::Core
${COCKATRICE_QT_VERSION_NAME}::Test
${COCKATRICE_QT_VERSION_NAME}::Gui
${COCKATRICE_QT_VERSION_NAME}::Widgets
)
# ------------------------
# Command Zone State Test
# Tests the extracted CommandZoneState pure state machine
# ------------------------
add_executable(command_zone_state_test
command_zone_state_test.cpp
${CMAKE_SOURCE_DIR}/cockatrice/src/game/zones/command_zone_state.cpp
)
target_include_directories(command_zone_state_test
PRIVATE ${CMAKE_SOURCE_DIR}
PRIVATE ${CMAKE_SOURCE_DIR}/cockatrice/src/game/zones
)
target_link_libraries(command_zone_state_test
PRIVATE Threads::Threads
PRIVATE ${GTEST_BOTH_LIBRARIES}
PRIVATE ${TEST_QT_MODULES}
)
add_test(NAME command_zone_state_test COMMAND command_zone_state_test)
# ------------------------
# Dependencies on gtest
# ------------------------
if(NOT GTEST_FOUND)
add_dependencies(command_zone_state_test gtest)
endif()