diff options
author | Henning Baldersheim <balder@yahoo-inc.com> | 2021-11-04 00:25:45 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-11-04 00:25:45 +0100 |
commit | 19113f6da3db1abbe8a3e36f081a0ec03f878f12 (patch) | |
tree | ecf3063c4fbde0ef6d2ece92255527aeffa27e53 /searchlib/src/test/java/com/yahoo | |
parent | 7e43b15f2e427ac08af82e2292e8649328f729e5 (diff) | |
parent | 599946ff2d1838914ffbab7d74fdbe6055187189 (diff) |
Merge pull request #19855 from vespa-engine/balder/optimize-negative-constantsv7.495.22
Avoid intermediate NegativeNode in the leaf nodes, adding approximate…
Diffstat (limited to 'searchlib/src/test/java/com/yahoo')
2 files changed, 19 insertions, 1 deletions
diff --git a/searchlib/src/test/java/com/yahoo/searchlib/rankingexpression/evaluation/EvaluationTestCase.java b/searchlib/src/test/java/com/yahoo/searchlib/rankingexpression/evaluation/EvaluationTestCase.java index 13e19ff4d35..efa98fba2eb 100644 --- a/searchlib/src/test/java/com/yahoo/searchlib/rankingexpression/evaluation/EvaluationTestCase.java +++ b/searchlib/src/test/java/com/yahoo/searchlib/rankingexpression/evaluation/EvaluationTestCase.java @@ -815,7 +815,7 @@ public class EvaluationTestCase { try { ExpressionNode e = arguments.expressions().get(index); if (e instanceof ConstantNode) { - return new DoubleValue(new RankingExpression(UnicodeUtilities.unquote(((ConstantNode)e).sourceString())).evaluate(this).asDouble()); + return new DoubleValue(new RankingExpression(UnicodeUtilities.unquote(e.toString())).evaluate(this).asDouble()); } return e.evaluate(this); } diff --git a/searchlib/src/test/java/com/yahoo/searchlib/rankingexpression/transform/SimplifierTestCase.java b/searchlib/src/test/java/com/yahoo/searchlib/rankingexpression/transform/SimplifierTestCase.java index f7735b4f5ca..c93830abda9 100644 --- a/searchlib/src/test/java/com/yahoo/searchlib/rankingexpression/transform/SimplifierTestCase.java +++ b/searchlib/src/test/java/com/yahoo/searchlib/rankingexpression/transform/SimplifierTestCase.java @@ -5,8 +5,11 @@ import com.yahoo.searchlib.rankingexpression.RankingExpression; import com.yahoo.searchlib.rankingexpression.evaluation.Context; import com.yahoo.searchlib.rankingexpression.evaluation.MapContext; import com.yahoo.searchlib.rankingexpression.evaluation.MapTypeContext; +import com.yahoo.searchlib.rankingexpression.evaluation.Value; import com.yahoo.searchlib.rankingexpression.parser.ParseException; import com.yahoo.searchlib.rankingexpression.rule.CompositeNode; +import com.yahoo.searchlib.rankingexpression.rule.ConstantNode; +import com.yahoo.searchlib.rankingexpression.rule.NegativeNode; import org.junit.Test; import java.util.Collections; @@ -83,4 +86,19 @@ public class SimplifierTestCase { assertEquals("a + (b + c) / 1.0E8", transformed.toString()); } + @Test + public void testOptimizingNegativeConstants() throws ParseException { + Simplifier s = new Simplifier(); + TransformContext c = new TransformContext(Collections.emptyMap(), new MapTypeContext()); + assertEquals("-3", s.transform(new RankingExpression("-3"), c).toString()); + assertEquals("-9.0", s.transform(new RankingExpression("-3 + -6"), c).toString()); + assertEquals("-a", s.transform(new RankingExpression("-a"), c).toString()); + assertEquals("-\"a\"", s.transform(new RankingExpression("-'a'"), c).toString()); + + RankingExpression r = new RankingExpression(new NegativeNode(new ConstantNode(Value.parse("3")))); + assertTrue(r.getRoot() instanceof NegativeNode); + r = s.transform(r, c); + assertTrue(r.getRoot() instanceof ConstantNode); + } + } |