Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/prusa3d/PrusaSlicer.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorVojtech Bubnik <bubnikv@gmail.com>2022-01-25 18:54:16 +0300
committerVojtech Bubnik <bubnikv@gmail.com>2022-01-25 18:54:16 +0300
commit7ba5a2f5bc3ad74d2dbffed28a8f1b6f08dc153d (patch)
tree181394b9126c0b58aef14a4cc7835d1b4be4faf4 /tests
parenta7520f47a66551e95a35bfe124c082c54eefb789 (diff)
GCodeFindReplace - single line option unit tests.
Diffstat (limited to 'tests')
-rw-r--r--tests/fff_print/test_gcodefindreplace.cpp74
1 files changed, 74 insertions, 0 deletions
diff --git a/tests/fff_print/test_gcodefindreplace.cpp b/tests/fff_print/test_gcodefindreplace.cpp
index be0dd8a01..e8a69bee2 100644
--- a/tests/fff_print/test_gcodefindreplace.cpp
+++ b/tests/fff_print/test_gcodefindreplace.cpp
@@ -215,4 +215,78 @@ SCENARIO("Find/Replace with regexp", "[GCodeFindReplace]") {
"G1 X0 Y0.33 Z0.431 E1.2; perimeter\n");
}
}
+
+ GIVEN("Single layer G-code block with extrusion types") {
+ const std::string gcode =
+ // Start of a layer.
+ "G1 Z1.21; move up\n"
+ ";TYPE:Infill\n"
+ "G1 X0 Y.33 Z.431 E1.2\n"
+ ";TYPE:Solid infill\n"
+ "G1 X1 Y.3 Z.431 E0.1\n"
+ ";TYPE:Top solid infill\n"
+ "G1 X1 Y.3 Z.431 E0.1\n"
+ ";TYPE:Top solid infill\n"
+ "G1 X1 Y.3 Z.431 E0.1\n"
+ ";TYPE:Perimeter\n"
+ "G1 X0 Y.2 Z.431 E0.2\n"
+ ";TYPE:External perimeter\n"
+ "G1 X1 Y.3 Z.431 E0.1\n"
+ ";TYPE:Top solid infill\n"
+ "G1 X1 Y.3 Z.431 E0.1\n"
+ ";TYPE:External perimeter\n"
+ "G1 X1 Y.3 Z.431 E0.1\n";
+ WHEN("Change extrusion rate of top solid infill, single line modifier") {
+ GCodeFindReplace find_replace({ "(;TYPE:Top solid infill\\n)(.*?)(;TYPE:[^T][^o][^p][^ ][^s]|$)", "${1}M221 S98\\n${2}M221 S95\\n${3}", "rs" });
+ REQUIRE(find_replace.process_layer(gcode) ==
+ "G1 Z1.21; move up\n"
+ ";TYPE:Infill\n"
+ "G1 X0 Y.33 Z.431 E1.2\n"
+ ";TYPE:Solid infill\n"
+ "G1 X1 Y.3 Z.431 E0.1\n"
+ ";TYPE:Top solid infill\n"
+ "M221 S98\n"
+ "G1 X1 Y.3 Z.431 E0.1\n"
+ ";TYPE:Top solid infill\n"
+ "G1 X1 Y.3 Z.431 E0.1\n"
+ "M221 S95\n"
+ ";TYPE:Perimeter\n"
+ "G1 X0 Y.2 Z.431 E0.2\n"
+ ";TYPE:External perimeter\n"
+ "G1 X1 Y.3 Z.431 E0.1\n"
+ ";TYPE:Top solid infill\n"
+ "M221 S98\n"
+ "G1 X1 Y.3 Z.431 E0.1\n"
+ "M221 S95\n"
+ ";TYPE:External perimeter\n"
+ "G1 X1 Y.3 Z.431 E0.1\n");
+ }
+ WHEN("Change extrusion rate of top solid infill, no single line modifier (incorrect)") {
+ GCodeFindReplace find_replace({ "(;TYPE:Top solid infill\\n)(.*?)(;TYPE:[^T][^o][^p][^ ][^s]|$)", "${1}M221 S98\\n${2}\\nM221 S95${3}", "r" });
+ REQUIRE(find_replace.process_layer(gcode) ==
+ "G1 Z1.21; move up\n"
+ ";TYPE:Infill\n"
+ "G1 X0 Y.33 Z.431 E1.2\n"
+ ";TYPE:Solid infill\n"
+ "G1 X1 Y.3 Z.431 E0.1\n"
+ ";TYPE:Top solid infill\n"
+ "M221 S98\n"
+ "G1 X1 Y.3 Z.431 E0.1\n"
+ "M221 S95\n"
+ ";TYPE:Top solid infill\n"
+ "M221 S98\n"
+ "G1 X1 Y.3 Z.431 E0.1\n"
+ "M221 S95\n"
+ ";TYPE:Perimeter\n"
+ "G1 X0 Y.2 Z.431 E0.2\n"
+ ";TYPE:External perimeter\n"
+ "G1 X1 Y.3 Z.431 E0.1\n"
+ ";TYPE:Top solid infill\n"
+ "M221 S98\n"
+ "G1 X1 Y.3 Z.431 E0.1\n"
+ "M221 S95\n"
+ ";TYPE:External perimeter\n"
+ "G1 X1 Y.3 Z.431 E0.1\n");
+ }
+ }
}