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
diff options
context:
space:
mode:
authorbubnikv <bubnikv@gmail.com>2018-02-02 13:49:09 +0300
committerbubnikv <bubnikv@gmail.com>2018-02-02 13:49:09 +0300
commitb4483fdcbd28c537ccc7cdf786a317a0addfa3af (patch)
treed4097249dd58c9021c0a35dd2c301e5c82aaeb7b
parent8932055ed5262f43697cc0313059ca79a219f583 (diff)
Fix of "Conditional gcode with "<=" condition fails"version_1.39.1-alpha
https://github.com/prusa3d/Slic3r/issues/683
-rw-r--r--t/custom_gcode.t12
-rw-r--r--xs/src/libslic3r/PlaceholderParser.cpp6
2 files changed, 12 insertions, 6 deletions
diff --git a/t/custom_gcode.t b/t/custom_gcode.t
index 6a930a38a..bafcd4610 100644
--- a/t/custom_gcode.t
+++ b/t/custom_gcode.t
@@ -1,4 +1,4 @@
-use Test::More tests => 71;
+use Test::More tests => 77;
use strict;
use warnings;
@@ -91,8 +91,14 @@ use Slic3r::Test;
is $parser->evaluate_boolean_expression('(12 == 2 * 6) ? (1 - 1 == 3) : (2 * 2 == 4)'), 0, 'boolean expression parser: ternary true';
is $parser->evaluate_boolean_expression('12 < 3'), 0, 'boolean expression parser: lower than - false';
is $parser->evaluate_boolean_expression('12 < 22'), 1, 'boolean expression parser: lower than - true';
- is $parser->evaluate_boolean_expression('12 > 3'), 1, 'boolean expression parser: lower than - true';
- is $parser->evaluate_boolean_expression('12 > 22'), 0, 'boolean expression parser: lower than - false';
+ is $parser->evaluate_boolean_expression('12 > 3'), 1, 'boolean expression parser: greater than - true';
+ is $parser->evaluate_boolean_expression('12 > 22'), 0, 'boolean expression parser: greater than - false';
+ is $parser->evaluate_boolean_expression('12 <= 3'), 0, 'boolean expression parser: lower than or equal- false';
+ is $parser->evaluate_boolean_expression('12 <= 22'), 1, 'boolean expression parser: lower than or equal - true';
+ is $parser->evaluate_boolean_expression('12 >= 3'), 1, 'boolean expression parser: greater than or equal - true';
+ is $parser->evaluate_boolean_expression('12 >= 22'), 0, 'boolean expression parser: greater than or equal - false';
+ is $parser->evaluate_boolean_expression('12 <= 12'), 1, 'boolean expression parser: lower than or equal (same values) - true';
+ is $parser->evaluate_boolean_expression('12 >= 12'), 1, 'boolean expression parser: greater than or equal (same values) - true';
is $parser->evaluate_boolean_expression('printer_notes=~/.*PRINTER_VENDOR_PRUSA3D.*/ and printer_notes=~/.*PRINTER_MODEL_MK2.*/ and nozzle_diameter[0]==0.6 and num_extruders>1'), 1, 'complex expression';
is $parser->evaluate_boolean_expression('printer_notes=~/.*PRINTER_VEwerfNDOR_PRUSA3D.*/ or printer_notes=~/.*PRINTertER_MODEL_MK2.*/ or (nozzle_diameter[0]==0.6 and num_extruders>1)'), 1, 'complex expression2';
diff --git a/xs/src/libslic3r/PlaceholderParser.cpp b/xs/src/libslic3r/PlaceholderParser.cpp
index b91f4c99c..ba0efd6e4 100644
--- a/xs/src/libslic3r/PlaceholderParser.cpp
+++ b/xs/src/libslic3r/PlaceholderParser.cpp
@@ -974,10 +974,10 @@ namespace client
relational_expression =
additive_expression(_r1) [_val = _1]
- >> *( (lit('<') > additive_expression(_r1) ) [px::bind(&expr<Iterator>::lower, _val, _1)]
- | (lit('>') > additive_expression(_r1) ) [px::bind(&expr<Iterator>::greater, _val, _1)]
- | ("<=" > additive_expression(_r1) ) [px::bind(&expr<Iterator>::leq, _val, _1)]
+ >> *( ("<=" > additive_expression(_r1) ) [px::bind(&expr<Iterator>::leq, _val, _1)]
| (">=" > additive_expression(_r1) ) [px::bind(&expr<Iterator>::geq, _val, _1)]
+ | (lit('<') > additive_expression(_r1) ) [px::bind(&expr<Iterator>::lower, _val, _1)]
+ | (lit('>') > additive_expression(_r1) ) [px::bind(&expr<Iterator>::greater, _val, _1)]
);
relational_expression.name("relational_expression");