mirror of
https://git.mirrors.martin98.com/https://github.com/slic3r/Slic3r.git
synced 2025-08-01 02:42:01 +08:00
Added test case to cover https://github.com/slic3r/Slic3r/issues/4497
This commit is contained in:
parent
adc126067d
commit
d514d7adb6
@ -213,6 +213,7 @@ set(SLIC3R_TEST_SOURCES
|
|||||||
${TESTDIR}/libslic3r/test_skirt_brim.cpp
|
${TESTDIR}/libslic3r/test_skirt_brim.cpp
|
||||||
${TESTDIR}/libslic3r/test_test_data.cpp
|
${TESTDIR}/libslic3r/test_test_data.cpp
|
||||||
${TESTDIR}/libslic3r/test_geometry.cpp
|
${TESTDIR}/libslic3r/test_geometry.cpp
|
||||||
|
${TESTDIR}/libslic3r/test_gcodewriter.cpp
|
||||||
)
|
)
|
||||||
|
|
||||||
add_executable(slic3r slic3r.cpp)
|
add_executable(slic3r slic3r.cpp)
|
||||||
|
38
src/test/inputs/test_gcodewriter/config_lift_unlift.ini
Normal file
38
src/test/inputs/test_gcodewriter/config_lift_unlift.ini
Normal 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
|
37
src/test/libslic3r/test_gcodewriter.cpp
Normal file
37
src/test/libslic3r/test_gcodewriter.cpp
Normal 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);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user