mirror of
https://git.mirrors.martin98.com/https://github.com/slic3r/Slic3r.git
synced 2025-04-21 05:09:51 +08:00
74 lines
2.6 KiB
Perl
74 lines
2.6 KiB
Perl
#!/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.';
|
|
}
|
|
|
|
}
|