diff options
Diffstat (limited to 'indexinglanguage/src')
2 files changed, 47 insertions, 14 deletions
diff --git a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/ScriptTestCase.java b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/ScriptTestCase.java index 2a69f094691..c648bb12ede 100644 --- a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/ScriptTestCase.java +++ b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/ScriptTestCase.java @@ -4,6 +4,7 @@ package com.yahoo.vespa.indexinglanguage.expressions; import com.yahoo.document.DataType; import com.yahoo.document.Field; import com.yahoo.document.datatypes.IntegerFieldValue; +import com.yahoo.document.datatypes.StringFieldValue; import com.yahoo.vespa.indexinglanguage.SimpleTestAdapter; import org.junit.Test; @@ -39,13 +40,13 @@ public class ScriptTestCase { StatementExpression foo = newStatement(new AttributeExpression("foo")); StatementExpression bar = newStatement(new AttributeExpression("bar")); Expression exp = newScript(foo, bar); - assertFalse(exp.equals(new Object())); - assertFalse(exp.equals(new CatExpression(foo, bar))); - assertFalse(exp.equals(newScript(newStatement(new IndexExpression("foo"))))); - assertFalse(exp.equals(newScript(newStatement(new IndexExpression("foo")), - newStatement(new IndexExpression("bar"))))); - assertFalse(exp.equals(newScript(newStatement(foo), - newStatement(new IndexExpression("bar"))))); + assertNotEquals(exp, new Object()); + assertNotEquals(exp, new CatExpression(foo, bar)); + assertNotEquals(exp, newScript(newStatement(new IndexExpression("foo")))); + assertNotEquals(exp, newScript(newStatement(new IndexExpression("foo")), + newStatement(new IndexExpression("bar")))); + assertNotEquals(exp, newScript(newStatement(foo), + newStatement(new IndexExpression("bar")))); assertEquals(exp, newScript(foo, bar)); assertEquals(exp.hashCode(), newScript(foo, bar).hashCode()); } @@ -74,6 +75,19 @@ public class ScriptTestCase { } @Test + public void requireThatStatementsProcessingMissingInputsAreSkipped() { + SimpleTestAdapter adapter = new SimpleTestAdapter(new Field("foo", DataType.STRING), + new Field("bar", DataType.STRING)); + adapter.setValue("foo", new StringFieldValue("foo1")); + ExecutionContext context = new ExecutionContext(adapter); + // The latter expression is not executed, so no exception is thrown + var script = new ScriptExpression(newStatement(new InputExpression("foo"), new AttributeExpression("foo")), + newStatement(new InputExpression("bar"), new ThrowingExpression())); + script.execute(context); + assertEquals("foo1", adapter.getInputValue("foo").getWrappedValue()); + } + + @Test public void requireThatScriptEvaluatesToInputValue() { SimpleTestAdapter adapter = new SimpleTestAdapter(new Field("out", DataType.INT)); newStatement(new SetValueExpression(new IntegerFieldValue(6)), @@ -121,4 +135,24 @@ public class ScriptTestCase { private static StatementExpression newStatement(Expression... args) { return new StatementExpression(args); } + + private static class ThrowingExpression extends Expression { + + public ThrowingExpression() { + super(null); + } + + @Override + protected void doExecute(ExecutionContext context) { + throw new RuntimeException(); + } + + @Override + protected void doVerify(VerificationContext context) {} + + @Override + public DataType createdOutputType() { return null; } + + } + } diff --git a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/StatementTestCase.java b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/StatementTestCase.java index 2bede31d057..1a1442f68ac 100644 --- a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/StatementTestCase.java +++ b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/StatementTestCase.java @@ -39,13 +39,11 @@ public class StatementTestCase { Expression foo = new AttributeExpression("foo"); Expression bar = new AttributeExpression("bar"); Expression exp = newStatement(foo, bar); - assertFalse(exp.equals(new Object())); - assertFalse(exp.equals(new CatExpression(foo, bar))); - assertFalse(exp.equals(newStatement(new IndexExpression("foo")))); - assertFalse(exp.equals(newStatement(new IndexExpression("foo"), - new IndexExpression("bar")))); - assertFalse(exp.equals(newStatement(foo, - new IndexExpression("bar")))); + assertNotEquals(exp, new Object()); + assertNotEquals(exp, new CatExpression(foo, bar)); + assertNotEquals(exp, newStatement(new IndexExpression("foo"))); + assertNotEquals(exp, newStatement(new IndexExpression("foo"), new IndexExpression("bar"))); + assertNotEquals(exp, newStatement(foo, new IndexExpression("bar"))); assertEquals(exp, newStatement(foo, bar)); assertEquals(exp.hashCode(), newStatement(foo, bar).hashCode()); } @@ -117,4 +115,5 @@ public class StatementTestCase { private static StatementExpression newStatement(Expression... args) { return new StatementExpression(args); } + } |