mirror of
https://github.com/Cockatrice/Cockatrice.git
synced 2026-07-08 09:03:57 -07:00
Implement CommandZoneLogic - the card data management layer for zones. This layer handles card insertion, removal, and ordering independently of Qt graphics rendering. Key components: - CommandZoneLogic: manages card data within a zone - AddCardAlgorithm: generic insertion algorithm for ordered zones - CardZoneLogic modifications: integrate with existing zone hierarchy Design decisions: - Separation of data logic from graphics enables unit testing - addCardImpl uses a stable insertion algorithm for consistent ordering - Mock card items enable testing without Qt graphics dependencies Test coverage verifies card insertion behavior across edge cases.
62 lines
1.8 KiB
CMake
62 lines
1.8 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 Logic Test
|
|
# Tests addCardImpl insertion behavior
|
|
# ------------------------
|
|
add_executable(command_zone_logic_test
|
|
mocks/mock_card_item.cpp
|
|
command_zone_logic_test.cpp
|
|
)
|
|
|
|
target_include_directories(command_zone_logic_test
|
|
PRIVATE ${CMAKE_SOURCE_DIR}/cockatrice/src/game/zones/logic
|
|
)
|
|
|
|
target_link_libraries(command_zone_logic_test
|
|
PRIVATE Threads::Threads
|
|
PRIVATE ${GTEST_BOTH_LIBRARIES}
|
|
PRIVATE ${TEST_QT_MODULES}
|
|
)
|
|
|
|
add_test(NAME command_zone_logic_test COMMAND command_zone_logic_test)
|
|
|
|
# ------------------------
|
|
# 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_logic_test gtest)
|
|
add_dependencies(command_zone_state_test gtest)
|
|
endif()
|