The strategic layer does not search for a route: the player or the AI picks the destinations and the engine classifies each consecutive pair, deciding the waypoint kind and whether the order is legal. This models that classifier as pure functions. The waypoint kind of any leg that is neither a gate transit nor a node route is a pure function of the owning species -- which is the whole answer to why kind 2 has never been observed. Kind 2 is the Liir drive; the two node-drive races are Human and Zuul, both of which map to kind 3, and every observation so far was taken on one of those two. Also modelled: the three refusal bits versus the nine advisory ones, the gate transit that waives the grounded-fleet refusal, the projection radius that splits gate-to-gate from gate-to-gateless, the single-hop node line lookup and bore, and the fuel check whose range is squared at full precision while the distance is narrowed -- the one floating-point asymmetry here that flips a decision. The leading-destination drop is reproduced with its original off-by-one behind an explicit flag rather than silently fixed. 120 hand-computed checks. Host ctest 43/43; clean-room check OK.
6 lines
428 B
CMake
6 lines
428 B
CMake
# game/nav tests: hand-computed cases for the fleet path-planning rules.
|
|
add_executable(game_nav_test_pathplan test_pathplan.cpp)
|
|
target_link_libraries(game_nav_test_pathplan PRIVATE sots_game_nav)
|
|
target_include_directories(game_nav_test_pathplan PRIVATE ${CMAKE_CURRENT_SOURCE_DIR})
|
|
target_compile_options(game_nav_test_pathplan PRIVATE -Wall -Wextra -pedantic)
|
|
add_test(NAME game_nav_pathplan COMMAND game_nav_test_pathplan)
|