diff options
author | Jon Bratseth <bratseth@gmail.com> | 2023-01-20 13:54:28 +0100 |
---|---|---|
committer | Jon Bratseth <bratseth@gmail.com> | 2023-01-20 13:54:28 +0100 |
commit | 97707f8b011edf555776b6a6bf36d35458f583ae (patch) | |
tree | aec9c68dd32e39241c34fdc1bfa270cdf19d4aa2 /indexinglanguage/src/test/java | |
parent | 1e29c4da6f91d13a6889d1b71058a09fcbb4eb43 (diff) |
Support choice expressions
Diffstat (limited to 'indexinglanguage/src/test/java')
4 files changed, 52 insertions, 11 deletions
diff --git a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/ChoiceTestCase.java b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/ChoiceTestCase.java new file mode 100644 index 00000000000..6e3964e644e --- /dev/null +++ b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/ChoiceTestCase.java @@ -0,0 +1,46 @@ +package com.yahoo.vespa.indexinglanguage.expressions; + +import com.yahoo.document.DataType; +import com.yahoo.document.Field; +import com.yahoo.document.datatypes.StringFieldValue; +import com.yahoo.vespa.indexinglanguage.SimpleTestAdapter; +import org.junit.Test; + +import static org.junit.Assert.assertEquals; + +/** + * @author bratseth + */ +public class ChoiceTestCase { + + @Test + public void testChoiceExecution() { + var choice = new ChoiceExpression(new InputExpression("foo"), new InputExpression("bar")); + + { // foo only + var adapter = new SimpleTestAdapter(new Field("foo", DataType.STRING)); + adapter.setValue("foo", new StringFieldValue("foo1")); + ExecutionContext context = new ExecutionContext(adapter); + choice.execute(context); + assertEquals("foo1", context.getValue().getWrappedValue()); + } + + { // bar only + var adapter = new SimpleTestAdapter(new Field("bar", DataType.STRING)); + adapter.setValue("bar", new StringFieldValue("bar1")); + ExecutionContext context = new ExecutionContext(adapter); + choice.execute(context); + assertEquals("bar1", context.getValue().getWrappedValue()); + } + + { // both foo and bar + var adapter = new SimpleTestAdapter(new Field("foo", DataType.STRING), new Field("bar", DataType.STRING)); + adapter.setValue("foo", new StringFieldValue("foo1")); + adapter.setValue("bar", new StringFieldValue("bar1")); + ExecutionContext context = new ExecutionContext(adapter); + choice.execute(context); + assertEquals("foo1", context.getValue().getWrappedValue()); + } + } + +} diff --git a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/ExactTestCase.java b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/ExactTestCase.java index 68661c7b341..e993f6cbdee 100644 --- a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/ExactTestCase.java +++ b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/ExactTestCase.java @@ -21,7 +21,7 @@ public class ExactTestCase { @Test public void requireThatHashCodeAndEqualsAreImplemented() { Expression exp = new ExactExpression(); - assertFalse(exp.equals(new Object())); + assertNotEquals(exp, new Object()); assertEquals(exp, new ExactExpression()); assertEquals(exp.hashCode(), new ExactExpression().hashCode()); } diff --git a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/InputTestCase.java b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/InputTestCase.java index 5752c373001..fe16e8d10ab 100644 --- a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/InputTestCase.java +++ b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/InputTestCase.java @@ -24,15 +24,9 @@ public class InputTestCase { @Test public void requireThatHashCodeAndEqualsAreImplemented() { - Expression exp = new InputExpression(null); - assertFalse(exp.equals(new Object())); - assertFalse(exp.equals(new InputExpression("foo"))); - assertEquals(exp, new InputExpression(null)); - assertEquals(exp.hashCode(), new InputExpression(null).hashCode()); - - exp = new InputExpression("foo"); - assertFalse(exp.equals(new Object())); - assertFalse(exp.equals(new InputExpression("bar"))); + Expression exp = new InputExpression("foo"); + assertNotEquals(exp, new Object()); + assertNotEquals(exp, new InputExpression("bar")); assertEquals(exp, new InputExpression("foo")); assertEquals(exp.hashCode(), new InputExpression("foo").hashCode()); } diff --git a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/parser/ExpressionTestCase.java b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/parser/ExpressionTestCase.java index 7db026d43ee..551f770a01e 100644 --- a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/parser/ExpressionTestCase.java +++ b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/parser/ExpressionTestCase.java @@ -37,7 +37,7 @@ public class ExpressionTestCase { assertExpression(IfThenExpression.class, "if (1 < 2) { 3 }"); assertExpression(IfThenExpression.class, "if (1 < 2) { 3 } else { 4 }"); assertExpression(IndexExpression.class, "index"); - assertExpression(InputExpression.class, "input"); + assertExpression(InputExpression.class, "input foo"); assertExpression(InputExpression.class, "input field1"); assertExpression(JoinExpression.class, "join '1'"); assertExpression(LowerCaseExpression.class, "lowercase"); @@ -81,6 +81,7 @@ public class ExpressionTestCase { assertExpression(ToWsetExpression.class, "to_wset remove_if_zero create_if_non_existent"); assertExpression(TrimExpression.class, "trim"); assertExpression(ZCurveExpression.class, "zcurve"); + assertExpression(ChoiceExpression.class, "input foo || \"\""); } private static void assertExpression(Class expectedClass, String str) throws ParseException { |