From f0253fe498e042cd6426d38d12f118cf91e9586b Mon Sep 17 00:00:00 2001 From: Joseph Lenox Date: Mon, 30 Jul 2018 12:54:19 -0500 Subject: [PATCH] Set the large Z as shouldfail, added normal range tests. --- src/test/libslic3r/test_gcodewriter.cpp | 66 ++++++++++++++++++++++++- 1 file changed, 64 insertions(+), 2 deletions(-) diff --git a/src/test/libslic3r/test_gcodewriter.cpp b/src/test/libslic3r/test_gcodewriter.cpp index bf474b0fe..5f770a6a4 100644 --- a/src/test/libslic3r/test_gcodewriter.cpp +++ b/src/test/libslic3r/test_gcodewriter.cpp @@ -7,7 +7,7 @@ using namespace Slic3r; using namespace std::literals::string_literals; -SCENARIO("lift() is not ignored after unlift() at large values of Z", "[!mayfail]") { +SCENARIO("lift() and unlift() behavior with large values of Z", "[!shouldfail]") { GIVEN("A config from a file and a single extruder.") { GCodeWriter writer; auto& config {writer.config}; @@ -25,7 +25,69 @@ SCENARIO("lift() is not ignored after unlift() at large values of Z", "[!mayfail REQUIRE(writer.lift().size() > 0); AND_WHEN("Z is moved post-lift to the same delta as the config Z lift") { REQUIRE(writer.travel_to_z(trouble_Z + config.retract_lift.values[0]).size() == 0); - AND_WHEN("GCodeWriter::Lift() is called after GCodeWriter::Unlift()") { + AND_WHEN("GCodeWriter::Unlift() is called") { + REQUIRE(writer.unlift().size() == 0); // we're the same height so no additional move happens. + THEN("GCodeWriter::Lift() emits gcode.") { + REQUIRE(writer.lift().size() > 0); + } + } + } + } + } + } +} + +SCENARIO("lift() is not ignored after unlift() at normal values of Z") { + GIVEN("A config from a file and a single extruder.") { + GCodeWriter writer; + auto& config {writer.config}; + config.set_defaults(); + config.load(std::string(testfile_dir) + "test_gcodewriter/config_lift_unlift.ini"s); + + std::vector extruder_ids {0}; + writer.set_extruders(extruder_ids); + writer.set_extruder(0); + + WHEN("Z is set to 203") { + double trouble_Z = 203; + writer.travel_to_z(trouble_Z); + AND_WHEN("GcodeWriter::Lift() is called") { + REQUIRE(writer.lift().size() > 0); + AND_WHEN("Z is moved post-lift to the same delta as the config Z lift") { + REQUIRE(writer.travel_to_z(trouble_Z + config.retract_lift.values[0]).size() == 0); + AND_WHEN("GCodeWriter::Unlift() is called") { + REQUIRE(writer.unlift().size() == 0); // we're the same height so no additional move happens. + THEN("GCodeWriter::Lift() emits gcode.") { + REQUIRE(writer.lift().size() > 0); + } + } + } + } + } + WHEN("Z is set to 500003") { + double trouble_Z = 500003; + writer.travel_to_z(trouble_Z); + AND_WHEN("GcodeWriter::Lift() is called") { + REQUIRE(writer.lift().size() > 0); + AND_WHEN("Z is moved post-lift to the same delta as the config Z lift") { + REQUIRE(writer.travel_to_z(trouble_Z + config.retract_lift.values[0]).size() == 0); + AND_WHEN("GCodeWriter::Unlift() is called") { + REQUIRE(writer.unlift().size() == 0); // we're the same height so no additional move happens. + THEN("GCodeWriter::Lift() emits gcode.") { + REQUIRE(writer.lift().size() > 0); + } + } + } + } + } + WHEN("Z is set to 10.3") { + double trouble_Z = 10.3; + writer.travel_to_z(trouble_Z); + AND_WHEN("GcodeWriter::Lift() is called") { + REQUIRE(writer.lift().size() > 0); + AND_WHEN("Z is moved post-lift to the same delta as the config Z lift") { + REQUIRE(writer.travel_to_z(trouble_Z + config.retract_lift.values[0]).size() == 0); + AND_WHEN("GCodeWriter::Unlift() is called") { REQUIRE(writer.unlift().size() == 0); // we're the same height so no additional move happens. THEN("GCodeWriter::Lift() emits gcode.") { REQUIRE(writer.lift().size() > 0);