12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273 |
- #!/usr/bin/perl
- use strict;
- use warnings;
- use Slic3r::XS;
- use Test::More tests => 10;
- {
- {
- my $test_string = "{if{3 == 4}} string";
- my $result = Slic3r::ConditionalGCode::apply_math($test_string);
- is $result, "", 'If statement with nested bracket removes on false resolution.';
- }
- {
- my $test_string = "{if{3 == 4}} string\notherstring";
- my $result = Slic3r::ConditionalGCode::apply_math($test_string);
- is $result, "otherstring", 'if false only removes up to newline.';
- }
- {
- my $test_string = "{if{3 == 3}} string";
- my $result = Slic3r::ConditionalGCode::apply_math($test_string);
- is $result, " string", 'If statement with nested bracket removes itself only on resulting true, does not strip text outside of brackets.';
- }
- {
- my $test_string = "{if 3 > 2} string";
- my $result = Slic3r::ConditionalGCode::apply_math($test_string);
- is $result, " string", 'If statement with nested bracket removes itself only on resulting true, does not strip text outside of brackets.';
- }
- {
- my $test_string = "{if{3 == 3}}string";
- my $result = Slic3r::ConditionalGCode::apply_math($test_string);
- is $result, "string", 'If statement with nested bracket removes itself only on resulting true.';
- }
- {
- my $test_string = "M104 S{4*5}; Sets temp to {4*5}";
- my $result = Slic3r::ConditionalGCode::apply_math($test_string);
- is $result, "M104 S20; Sets temp to 20", 'Bracket replacement works with math ops';
- }
- {
- my $test_string = "M104 S\\{a\\}; Sets temp to {4*5}";
- my $result = Slic3r::ConditionalGCode::apply_math($test_string);
- is $result, "M104 S{a}; Sets temp to 20", 'Escaped string emittal.';
- }
- {
- my $test_string = "M104 S{a}; Sets temp to {4*5}";
- my $result = Slic3r::ConditionalGCode::apply_math($test_string);
- is $result, "M104 S{a}; Sets temp to 20", 'string (minus brackets) on failure to parse.';
- }
- {
- my $config = Slic3r::Config->new;
- $config->set('infill_extruder', 2);
- $config->normalize;
- my $test_string = "{if [infill_extruder] == 2}M104 S210";
- my $pp = Slic3r::GCode::PlaceholderParser->new;
- $pp->apply_config($config);
- my $interim = $pp->process($test_string);
- is $interim, "{if 2 == 2}M104 S210", 'Placeholder parser works inside conditional gcode.';
- my $result = Slic3r::ConditionalGCode::apply_math($interim);
- is $result, "M104 S210", 'If statement with nested bracket removes itself only on resulting true, does not strip text outside of brackets.';
- }
- }
|