diff options
author | bubnikv <bubnikv@gmail.com> | 2018-02-02 13:49:09 +0300 |
---|---|---|
committer | bubnikv <bubnikv@gmail.com> | 2018-02-02 13:49:09 +0300 |
commit | b4483fdcbd28c537ccc7cdf786a317a0addfa3af (patch) | |
tree | d4097249dd58c9021c0a35dd2c301e5c82aaeb7b | |
parent | 8932055ed5262f43697cc0313059ca79a219f583 (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.t | 12 | ||||
-rw-r--r-- | xs/src/libslic3r/PlaceholderParser.cpp | 6 |
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"); |