17
0
mirror of https://github.com/MaSzyna-EU07/maszyna.git synced 2026-11-02 04:39:16 +01:00
Files
maszyna/maj0sted/tests/CMakeLists.txt
maj00r 8cd42980e6 Switches: lay the pre-blade lead and the blade, not a tangent arc
A turnout's diverging track does not leave the through track tangentially. It
runs straight along the through track to the blade tip (odcinek przediglicowy),
breaks away there by the blade angle (kąt nagięcia iglicy, beta), runs straight
over the blade to its heel, and only then curves - through alfa - beta, not the
whole crossing angle - to the frog.

Give TurnoutSegment a turn_in: a signed heading break applied before the segment
is laid, which is the only way to express a track leaving by an angle rather than
a tangent. lay_turnout then places the lead, the break and the blade ahead of the
curve and hands the curve the angle that is actually left to spend; a zero blade
length keeps the break and starts the curve at the tip. Reject a blade angle that
is negative or already reaches the crossing angle.

All-zero blade figures lay exactly the old tangent arc from PR, so existing
layouts are untouched. Junction and turnout_preset carry the three new figures
through to the panel; the presets themselves still hold zeros until the Id-1
catalogue numbers are in.

Add test_turnout: the lead sits on the through track, the blade breaks by beta,
and the frog still lands on the full crossing angle and the catalogue length,
mirrored for a right-hand turnout.
2026-08-27 19:36:56 +02:00

55 lines
3.0 KiB
CMake

add_executable(maj0sted_test_map_project test_map_project.cpp)
target_link_libraries(maj0sted_test_map_project PRIVATE maj0sted::maj0sted)
target_include_directories(maj0sted_test_map_project PRIVATE ${CMAKE_CURRENT_SOURCE_DIR})
add_test(NAME map_project COMMAND maj0sted_test_map_project)
add_executable(maj0sted_test_niweleta test_niweleta.cpp)
target_link_libraries(maj0sted_test_niweleta PRIVATE maj0sted::maj0sted)
target_include_directories(maj0sted_test_niweleta PRIVATE ${CMAKE_CURRENT_SOURCE_DIR})
add_test(NAME niweleta COMMAND maj0sted_test_niweleta)
add_executable(maj0sted_test_plan_alignment test_plan_alignment.cpp)
target_link_libraries(maj0sted_test_plan_alignment PRIVATE maj0sted::maj0sted)
target_include_directories(maj0sted_test_plan_alignment PRIVATE ${CMAKE_CURRENT_SOURCE_DIR})
add_test(NAME plan_alignment COMMAND maj0sted_test_plan_alignment)
add_executable(maj0sted_test_parallelism test_parallelism.cpp)
target_link_libraries(maj0sted_test_parallelism PRIVATE maj0sted::maj0sted)
target_include_directories(maj0sted_test_parallelism PRIVATE ${CMAKE_CURRENT_SOURCE_DIR})
add_test(NAME parallelism COMMAND maj0sted_test_parallelism)
add_executable(maj0sted_test_fitting test_fitting.cpp)
target_link_libraries(maj0sted_test_fitting PRIVATE maj0sted::maj0sted)
target_include_directories(maj0sted_test_fitting PRIVATE ${CMAKE_CURRENT_SOURCE_DIR})
add_test(NAME fitting COMMAND maj0sted_test_fitting)
add_executable(maj0sted_test_serialization test_serialization.cpp)
target_link_libraries(maj0sted_test_serialization PRIVATE maj0sted::maj0sted)
target_include_directories(maj0sted_test_serialization PRIVATE ${CMAKE_CURRENT_SOURCE_DIR})
add_test(NAME serialization COMMAND maj0sted_test_serialization)
add_executable(maj0sted_test_render test_render.cpp)
target_link_libraries(maj0sted_test_render PRIVATE maj0sted::maj0sted)
target_include_directories(maj0sted_test_render PRIVATE ${CMAKE_CURRENT_SOURCE_DIR})
add_test(NAME render COMMAND maj0sted_test_render)
add_executable(maj0sted_test_editor test_editor.cpp)
target_link_libraries(maj0sted_test_editor PRIVATE maj0sted::maj0sted)
target_include_directories(maj0sted_test_editor PRIVATE ${CMAKE_CURRENT_SOURCE_DIR})
add_test(NAME editor COMMAND maj0sted_test_editor)
add_executable(maj0sted_test_tile_cache test_tile_cache.cpp)
target_link_libraries(maj0sted_test_tile_cache PRIVATE maj0sted::maj0sted)
target_include_directories(maj0sted_test_tile_cache PRIVATE ${CMAKE_CURRENT_SOURCE_DIR})
add_test(NAME tile_cache COMMAND maj0sted_test_tile_cache)
add_executable(maj0sted_test_document test_document.cpp)
target_link_libraries(maj0sted_test_document PRIVATE maj0sted::maj0sted)
target_include_directories(maj0sted_test_document PRIVATE ${CMAKE_CURRENT_SOURCE_DIR})
add_test(NAME document COMMAND maj0sted_test_document)
add_executable(maj0sted_test_turnout test_turnout.cpp)
target_link_libraries(maj0sted_test_turnout PRIVATE maj0sted::maj0sted)
target_include_directories(maj0sted_test_turnout PRIVATE ${CMAKE_CURRENT_SOURCE_DIR})
add_test(NAME turnout COMMAND maj0sted_test_turnout)