diff options
6 files changed, 34 insertions, 9 deletions
diff --git a/model-evaluation/src/main/java/ai/vespa/models/evaluation/LazyValue.java b/model-evaluation/src/main/java/ai/vespa/models/evaluation/LazyValue.java index 8ad0714c536..8788eda572d 100644 --- a/model-evaluation/src/main/java/ai/vespa/models/evaluation/LazyValue.java +++ b/model-evaluation/src/main/java/ai/vespa/models/evaluation/LazyValue.java @@ -1,7 +1,6 @@ // Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. package ai.vespa.models.evaluation; -import com.yahoo.searchlib.rankingexpression.ExpressionFunction; import com.yahoo.searchlib.rankingexpression.evaluation.Context; import com.yahoo.searchlib.rankingexpression.evaluation.Value; import com.yahoo.searchlib.rankingexpression.rule.Function; diff --git a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/evaluation/BooleanValue.java b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/evaluation/BooleanValue.java index 1c68962c951..07710797ee2 100644 --- a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/evaluation/BooleanValue.java +++ b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/evaluation/BooleanValue.java @@ -1,9 +1,6 @@ // Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. package com.yahoo.searchlib.rankingexpression.evaluation; -import com.yahoo.searchlib.rankingexpression.rule.Function; -import com.yahoo.searchlib.rankingexpression.rule.TruthOperator; - /** * A value which is either true or false. * In numerical context true is interpreted as 1 and false as 0. diff --git a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/evaluation/DoubleValue.java b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/evaluation/DoubleValue.java index eb808a5a4bd..c925873bd81 100644 --- a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/evaluation/DoubleValue.java +++ b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/evaluation/DoubleValue.java @@ -2,7 +2,6 @@ package com.yahoo.searchlib.rankingexpression.evaluation; import com.yahoo.searchlib.rankingexpression.rule.Function; -import com.yahoo.searchlib.rankingexpression.rule.TruthOperator; /** * A double value result of a ranking expression evaluation. diff --git a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/evaluation/StringValue.java b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/evaluation/StringValue.java index 331a0ac363a..2c2d5eead05 100644 --- a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/evaluation/StringValue.java +++ b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/evaluation/StringValue.java @@ -26,7 +26,7 @@ public class StringValue extends Value { } public StringValue(String value) { - this.value = value; + this.value = UnicodeUtilities.unquote(value); } @Override @@ -35,7 +35,7 @@ public class StringValue extends Value { /** Returns the hashcode of this, to enable strings to be encoded (with reasonable safely) as doubles for optimization */ @Override public double asDouble() { - return UnicodeUtilities.unquote(value).hashCode(); + return value.hashCode(); } @Override @@ -121,7 +121,7 @@ public class StringValue extends Value { @Override public String toString() { - return "\"" + value + "\""; + return UnicodeUtilities.quote(value, '"'); } @Override diff --git a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/evaluation/Value.java b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/evaluation/Value.java index c5ae3acb5c1..793a0516be3 100644 --- a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/evaluation/Value.java +++ b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/evaluation/Value.java @@ -113,7 +113,7 @@ public abstract class Value { else if (value.equals("false")) return new BooleanValue(false); else if (value.startsWith("\"") || value.startsWith("'")) - return new StringValue(UnicodeUtilities.unquote(value)); + return new StringValue(value); else if (value.startsWith("{")) return new TensorValue(Tensor.from(value)); else 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 b769d07e77e..13e19ff4d35 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 @@ -14,6 +14,7 @@ import com.yahoo.tensor.Tensor; import org.junit.Test; import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; /** @@ -25,6 +26,35 @@ public class EvaluationTestCase { private final double tolerance = 0.000001; + private void verifyStringValueToString(String s) { + s = '"' + s + '"'; + Value val = Value.parse(s); + assertTrue(val instanceof StringValue); + assertEquals(s, val.toString()); + } + + @Test + public void testStringValueToString() { + verifyStringValueToString(""); + verifyStringValueToString("something"); + verifyStringValueToString("needs \\\" escape"); + + verifyStringValueToString("\\\\"); + verifyStringValueToString("\\\""); + verifyStringValueToString("\\f"); + verifyStringValueToString("\\female"); + verifyStringValueToString("\\n"); + verifyStringValueToString("\\nude"); + verifyStringValueToString("\\r"); + verifyStringValueToString("fa\\rt"); + verifyStringValueToString("\\t"); + verifyStringValueToString("fe\\tish"); + verifyStringValueToString("\\f"); + verifyStringValueToString("\\\\hx"); + verifyStringValueToString("\\\\xx"); + verifyStringValueToString("\\\\x10081977"); + } + @Test public void testEvaluation() { EvaluationTester tester = new EvaluationTester(); |