summaryrefslogtreecommitdiffstats
path: root/searchlib/src/test/java
diff options
context:
space:
mode:
authorJon Bratseth <bratseth@gmail.com>2020-09-21 23:09:03 +0200
committerJon Bratseth <bratseth@gmail.com>2020-09-21 23:09:03 +0200
commitc20e365ef13438169c55911b65e6d201cbef8760 (patch)
tree67b1c1b89b37dbd1f8061b0b9c968f897db22dd9 /searchlib/src/test/java
parent0c260f43b83325821b237a00cb5b69e0ac687ce2 (diff)
Don't fold division by zero
This preserves 0/0 expressions such that NaN can be produced at runtime.
Diffstat (limited to 'searchlib/src/test/java')
-rw-r--r--searchlib/src/test/java/com/yahoo/searchlib/rankingexpression/transform/SimplifierTestCase.java9
1 files changed, 8 insertions, 1 deletions
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 cf761aac2d3..7861da717f3 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
@@ -42,7 +42,14 @@ public class SimplifierTestCase {
assertEquals("attribute(number) * 1.5 - 0.001 * attribute(number)", s.transform(new RankingExpression("attribute(number) * 1.5 - 0.001 * attribute(number)"), c).toString());
}
- // A black box test verifying we are not screwing up real expressions
+ @Test
+ public void testNaNExpression() throws ParseException {
+ Simplifier s = new Simplifier();
+ TransformContext c = new TransformContext(Collections.emptyMap(), new MapTypeContext());
+ assertEquals("0 / 0", s.transform(new RankingExpression("0/0"), c).toString());
+ assertEquals("1 + 0.0 / 0.0", s.transform(new RankingExpression("1 + (1-1)/(2-2)"), c).toString());
+ }
+
@Test
public void testSimplifyComplexExpression() throws ParseException {
RankingExpression initial = new RankingExpression("sqrt(if (if (INFERRED * 0.9 < INFERRED, GMP, (1 + 1.1) * INFERRED) < INFERRED * INFERRED - INFERRED, if (GMP < 85.80799542793133 * GMP, INFERRED, if (GMP < GMP, tanh(INFERRED), log(76.89956221113943))), tanh(tanh(INFERRED))) * sqrt(sqrt(GMP + INFERRED)) * GMP ) + 13.5 * (1 - GMP) * pow(GMP * 0.1, 2 + 1.1 * 0)");