aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--model-evaluation/src/main/java/ai/vespa/models/evaluation/LazyValue.java1
-rw-r--r--searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/evaluation/BooleanValue.java3
-rw-r--r--searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/evaluation/DoubleValue.java1
-rw-r--r--searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/evaluation/StringValue.java6
-rw-r--r--searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/evaluation/Value.java2
-rw-r--r--searchlib/src/test/java/com/yahoo/searchlib/rankingexpression/evaluation/EvaluationTestCase.java30
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();