From 151adf810a1cbfb1cce5c49abc675e5bb74c8b30 Mon Sep 17 00:00:00 2001 From: "D.R.racer" Date: Wed, 10 Nov 2021 08:24:07 +0100 Subject: [PATCH] Add ToolChange Error resolve Button2 unit tests --- src/logic/tool_change.cpp | 6 ++- .../logic/tool_change/test_tool_change.cpp | 50 ++++++++++++++++--- 2 files changed, 47 insertions(+), 9 deletions(-) diff --git a/src/logic/tool_change.cpp b/src/logic/tool_change.cpp index 651984c..3e8279a 100644 --- a/src/logic/tool_change.cpp +++ b/src/logic/tool_change.cpp @@ -114,10 +114,12 @@ bool ToolChange::StepInner() { state = ProgressCode::ERRWaitingForUser; // stand still } else if (!mfs::fsensor.Pressed()) { // printer's filament sensor is still NOT pressed - that smells bad + mg::globals.SetFilamentLoaded(plannedSlot, mg::FilamentLoadState::InSelector); // only assume the filament is in selector error = ErrorCode::FSENSOR_DIDNT_SWITCH_ON; - state = ProgressCode::ERRWaitingForUser; // stand still + state = ProgressCode::ERRWaitingForUser; // stand still - we may even try loading the filament into the nozzle } else { - // all sensors are ok + // all sensors are ok, we assume the user pushed the filament into the nozzle + mg::globals.SetFilamentLoaded(plannedSlot, mg::FilamentLoadState::InNozzle); FinishedCorrectly(); } break; diff --git a/tests/unit/logic/tool_change/test_tool_change.cpp b/tests/unit/logic/tool_change/test_tool_change.cpp index d553735..e9c56c2 100644 --- a/tests/unit/logic/tool_change/test_tool_change.cpp +++ b/tests/unit/logic/tool_change/test_tool_change.cpp @@ -241,18 +241,30 @@ void ToolChangeFailLoadToFindaButton1(logic::ToolChange &tc, uint8_t toSlot) { CheckFinishedCorrectly(tc, toSlot); } -void ToolChangeFailLoadToFindaButton2(logic::ToolChange &tc, uint8_t toSlot) { - // now waiting for user input +void ToolChangeFailLoadToFindaButton2FINDA_FSensor(logic::ToolChange &tc, uint8_t toSlot) { + // now waiting for user input - press FINDA and FSensor + hal::gpio::WritePin(FINDA_PIN, hal::gpio::Level::high); + mfs::fsensor.ProcessMessage(true); PressButtonAndDebounce(tc, 2); - // the user resolved the situation by hand - FeedingToFinda(tc, toSlot); - - FeedingToBondtech(tc, toSlot); - CheckFinishedCorrectly(tc, toSlot); } +void ToolChangeFailLoadToFindaButton2FINDA(logic::ToolChange &tc, uint8_t toSlot) { + // now waiting for user input - press FINDA + hal::gpio::WritePin(FINDA_PIN, hal::gpio::Level::high); + PressButtonAndDebounce(tc, 2); + + REQUIRE(VerifyState(tc, mg::FilamentLoadState::InSelector, mi::Idler::IdleSlotIndex(), toSlot, true, false, ml::off, ml::blink0, ErrorCode::FSENSOR_DIDNT_SWITCH_ON, ProgressCode::ERRWaitingForUser)); +} + +void ToolChangeFailLoadToFindaButton2(logic::ToolChange &tc, uint8_t toSlot) { + // now waiting for user input - do not press anything + PressButtonAndDebounce(tc, 2); + + REQUIRE(VerifyState(tc, mg::FilamentLoadState::InSelector, mi::Idler::IdleSlotIndex(), toSlot, false, false, ml::off, ml::blink0, ErrorCode::FINDA_DIDNT_SWITCH_ON, ProgressCode::ERRWaitingForUser)); +} + TEST_CASE("tool_change::load_fail_FINDA_resolve_btn0", "[tool_change]") { logic::ToolChange tc; for (uint8_t fromSlot = 0; fromSlot < config::toolCount; ++fromSlot) { @@ -276,3 +288,27 @@ TEST_CASE("tool_change::load_fail_FINDA_resolve_btn1", "[tool_change]") { } } } + +TEST_CASE("tool_change::load_fail_FINDA_resolve_btn2_FINDA_FSensor", "[tool_change]") { + logic::ToolChange tc; + for (uint8_t fromSlot = 0; fromSlot < config::toolCount; ++fromSlot) { + for (uint8_t toSlot = 0; toSlot < config::toolCount; ++toSlot) { + if (fromSlot != toSlot) { + ToolChangeFailLoadToFinda(tc, fromSlot, toSlot); + ToolChangeFailLoadToFindaButton2FINDA_FSensor(tc, toSlot); + } + } + } +} + +TEST_CASE("tool_change::load_fail_FINDA_resolve_btn2_FINDA", "[tool_change]") { + logic::ToolChange tc; + for (uint8_t fromSlot = 0; fromSlot < config::toolCount; ++fromSlot) { + for (uint8_t toSlot = 0; toSlot < config::toolCount; ++toSlot) { + if (fromSlot != toSlot) { + ToolChangeFailLoadToFinda(tc, fromSlot, toSlot); + ToolChangeFailLoadToFindaButton2FINDA(tc, toSlot); + } + } + } +}