motion: Add tests for unscheduled moves in AbortPlannedMoves

This catches the previously untested #228
pull/230/head
Yuri D'Elia 2022-10-22 17:21:08 +02:00
parent 0506af08ac
commit 7053755b0e
1 changed files with 31 additions and 0 deletions

View File

@ -271,6 +271,37 @@ TEST_CASE("motion::queue_abort_1", "[motion]") {
REQUIRE(!motion.QueueEmpty()); REQUIRE(!motion.QueueEmpty());
} }
TEST_CASE("motion::queue_abort_2", "[motion]") {
// queue should start empty
ResetMotionSim();
// enqueue two moves on a single axis
motion.PlanMoveTo(Pulley, 10, 1);
motion.PlanMoveTo(Pulley, 20, 1);
REQUIRE(!motion.QueueEmpty(Pulley));
// abort before scheduling and check that both are gone
motion.AbortPlannedMoves(Pulley);
REQUIRE(motion.QueueEmpty(Pulley));
}
TEST_CASE("motion::queue_abort_3", "[motion]") {
// queue should start empty
ResetMotionSim();
// enqueue two moves on a single axis
motion.PlanMoveTo(Pulley, 10, 1);
motion.PlanMoveTo(Pulley, 20, 1);
REQUIRE(!motion.QueueEmpty(Pulley));
// step ~1/3 way through of the first move
REQUIRE(stepUntilDone(3) == -1);
// abort the partial and unscheduled move
motion.AbortPlannedMoves(Pulley);
REQUIRE(motion.QueueEmpty(Pulley));
}
TEST_CASE("motion::long_pulley_move", "[motion]") { TEST_CASE("motion::long_pulley_move", "[motion]") {
ResetMotionSim(); ResetMotionSim();
constexpr auto mm400 = 400._mm; constexpr auto mm400 = 400._mm;