diff options
author | Vojtech Bubnik <bubnikv@gmail.com> | 2022-01-25 18:54:16 +0300 |
---|---|---|
committer | Vojtech Bubnik <bubnikv@gmail.com> | 2022-01-25 18:54:16 +0300 |
commit | 7ba5a2f5bc3ad74d2dbffed28a8f1b6f08dc153d (patch) | |
tree | 181394b9126c0b58aef14a4cc7835d1b4be4faf4 /tests | |
parent | a7520f47a66551e95a35bfe124c082c54eefb789 (diff) |
GCodeFindReplace - single line option unit tests.
Diffstat (limited to 'tests')
-rw-r--r-- | tests/fff_print/test_gcodefindreplace.cpp | 74 |
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"); + } + } } |