diff options
author | Jon Bratseth <bratseth@gmail.com> | 2023-03-24 11:50:56 +0100 |
---|---|---|
committer | Jon Bratseth <bratseth@gmail.com> | 2023-03-24 11:50:56 +0100 |
commit | 4fe77d7309056c81c713a2095339fd463ee604b4 (patch) | |
tree | 1b6c3e52d02856ffbf106412da4fc8c4c1b06c66 /indexinglanguage/src/test/java | |
parent | 6db94ff887b65b10b8c4a8ce10c0d2e195bc0c0a (diff) |
Retrieve execution value explicitly by '_'
Diffstat (limited to 'indexinglanguage/src/test/java')
-rw-r--r-- | indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/ScriptTestCase.java | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/ScriptTestCase.java b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/ScriptTestCase.java index ce42f4e727f..98458dd965c 100644 --- a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/ScriptTestCase.java +++ b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/ScriptTestCase.java @@ -276,6 +276,45 @@ public class ScriptTestCase { } @Test + public void testArrayEmbedWithConcatenation() throws ParseException { + Map<String, Embedder> embedders = Map.of("emb1", new MockEmbedder("myDocument.mySparseTensor")); + + TensorType tensorType = TensorType.fromSpec("tensor(passage{}, d[4])"); + var expression = Expression.fromString("input myTextArray | for_each { input title . \" \" . _ } | embed | attribute 'mySparseTensor'", + new SimpleLinguistics(), + embedders); + + SimpleTestAdapter adapter = new SimpleTestAdapter(); + adapter.createField(new Field("myTextArray", new ArrayDataType(DataType.STRING))); + + var tensorField = new Field("mySparseTensor", new TensorDataType(tensorType)); + adapter.createField(tensorField); + + var array = new Array<StringFieldValue>(new ArrayDataType(DataType.STRING)); + array.add(new StringFieldValue("first")); + array.add(new StringFieldValue("second")); + adapter.setValue("myTextArray", array); + + var titleField = new Field("title", DataType.STRING); + adapter.createField(titleField); + adapter.setValue("title", new StringFieldValue("title1")); + + expression.setStatementOutput(new DocumentType("myDocument"), tensorField); + + // Necessary to resolve output type + VerificationContext verificationContext = new VerificationContext(adapter); + assertEquals(new TensorDataType(tensorType), expression.verify(verificationContext)); + + ExecutionContext context = new ExecutionContext(adapter); + context.setValue(array); + expression.execute(context); + assertTrue(adapter.values.containsKey("mySparseTensor")); + var sparseTensor = (TensorFieldValue)adapter.values.get("mySparseTensor"); + assertEquals(Tensor.from(tensorType, "{ '0':[116.0, 105.0, 116.0, 108.0], 1:[116.0, 105.0, 116.0, 108.0]}"), + sparseTensor.getTensor().get()); + } + + @Test public void testArrayEmbedToSparseTensor() throws ParseException { Map<String, Embedder> embedders = Map.of("emb1", new MockEmbedder("myDocument.mySparseTensor")); |