This commit is contained in:
Joseph Lenox 2018-07-30 09:41:27 -05:00
parent adc126067d
commit d514d7adb6
3 changed files with 76 additions and 0 deletions

View File

@ -213,6 +213,7 @@ set(SLIC3R_TEST_SOURCES
${TESTDIR}/libslic3r/test_skirt_brim.cpp
${TESTDIR}/libslic3r/test_test_data.cpp
${TESTDIR}/libslic3r/test_geometry.cpp
${TESTDIR}/libslic3r/test_gcodewriter.cpp
)
add_executable(slic3r slic3r.cpp)

View File

@ -0,0 +1,38 @@
# generated by Slic3r 1.3.1-dev on 2018-07-27 01:40:55
before_layer_gcode =
between_objects_gcode =
end_filament_gcode = "; Filament-specific end gcode \n;END gcode for filament\n"
end_gcode = M104 S0 ; turn off temperature\nG28 X0 ; home X axis\nM84 ; disable motors\n
extrusion_axis = E
extrusion_multiplier = 1
filament_cost = 0
filament_density = 0
filament_diameter = 3
filament_max_volumetric_speed = 0
filament_notes = ""
gcode_comments = 0
gcode_flavor = reprap
label_printed_objects = 0
layer_gcode =
max_print_speed = 80
max_volumetric_speed = 0
notes =
pressure_advance = 0
printer_notes =
retract_length = 2
retract_length_toolchange = 10
retract_lift = 1.5
retract_lift_above = 0
retract_lift_below = 0
retract_restart_extra = 0
retract_restart_extra_toolchange = 0
retract_speed = 40
start_filament_gcode = "; Filament gcode\n"
start_gcode = G28 ; home all axes\nG1 Z5 F5000 ; lift nozzle\n
toolchange_gcode =
travel_speed = 130
use_firmware_retraction = 0
use_relative_e_distances = 0
use_set_and_wait_bed = 0
use_set_and_wait_extruder = 0
use_volumetric_e = 0

View File

@ -0,0 +1,37 @@
#include <catch.hpp>
#include <memory>
#include "GCodeWriter.hpp"
#include "test_options.hpp"
using namespace Slic3r;
using namespace std::literals::string_literals;
SCENARIO("lift() is not ignored after unlift() at large values of Z", "[!mayfail]") {
GIVEN("A config from a file and a single extruder.")
auto writer {std::make_unique(GCodeWriter())}; // ensure cleanup later
auto& config {writer->config};
config.set_defaults();
config.load(std::string(testfile_dir) + "test_gcodewriter/config_lift_unlift.ini"s);
std::vector<unsigned int> extruder_ids {0};
writer->set_extruders(extruder_ids);
writer->set_extruder(0);
double trouble_Z = 9007199254740992;
WHEN("Z is set to 9007199254740992") {
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") {
writer->travel_to_z(trouble_z + config.retract_lift);
AND_WHEN("GCodeWriter::Lift() is called after GCodeWriter::Unlift()") {
REQUIRE(writer->unlift().size() > 0);
THEN("GCodeWriter::Lift() emits gcode.") {
REQUIRE(writer->lift().size() > 0);
}
}
}
}
}
}