diff options
author | Arne H Juul <arnej27959@users.noreply.github.com> | 2023-10-18 13:57:10 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-10-18 13:57:10 +0200 |
commit | e3331084c7c91985f7acfe90e4e4478dfe4a5661 (patch) | |
tree | 2979b78b923a5b6378687b944997ac11f58e198a /container-search/src/test/java | |
parent | 1af6ba2fd534e0f7b499fded6d6d24aaa7c0d533 (diff) | |
parent | 27c83bea57f67d03042a60666f1ce7bcb6c04fe7 (diff) |
Merge pull request #29004 from vespa-engine/arnej/add-get-as-tensor-with-defaults
add getAsTensor() API in RankProperties
Diffstat (limited to 'container-search/src/test/java')
-rw-r--r-- | container-search/src/test/java/com/yahoo/search/query/ranking/RankPropertiesTestCase.java | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/container-search/src/test/java/com/yahoo/search/query/ranking/RankPropertiesTestCase.java b/container-search/src/test/java/com/yahoo/search/query/ranking/RankPropertiesTestCase.java new file mode 100644 index 00000000000..81c657f6323 --- /dev/null +++ b/container-search/src/test/java/com/yahoo/search/query/ranking/RankPropertiesTestCase.java @@ -0,0 +1,49 @@ +// Copyright Vespa.ai. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. +package com.yahoo.search.query.ranking; + +import com.yahoo.search.Query; +import com.yahoo.search.query.Ranking; +import com.yahoo.tensor.Tensor; +import com.yahoo.tensor.TensorType; +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertThrows; + +/** + * @author arnej + */ +public class RankPropertiesTestCase { + + @Test + void requireThatGetAsTensorCanGetDoublesAndTensors() { + TensorType ttype = new TensorType.Builder().mapped("cat").build(); + Tensor mappedTensor = Tensor.from(ttype, "{ {cat:foo}:2.5, {cat:bar}:1.25 }"); + RankFeatures f = new RankFeatures(new Ranking(new Query())); + f.put("query(myDouble)", 42.75); + f.put("query(myTensor)", mappedTensor); + RankProperties p = new RankProperties(); + f.prepare(p); + var optT = p.getAsTensor("myDouble"); + assertEquals(true, optT.isPresent()); + assertEquals(TensorType.empty, optT.get().type()); + assertEquals(42.75, optT.get().asDouble()); + optT = p.getAsTensor("myTensor"); + assertEquals(true, optT.isPresent()); + assertEquals(mappedTensor, optT.get()); + } + + @Test + void requireThatGetAsTensorFailsOnStrings() { + RankFeatures f = new RankFeatures(new Ranking(new Query())); + // common mistake: + f.put("query(myTensor)", "{ {cat:foo}:2.5, {cat:bar}:1.25 }"); + RankProperties p = new RankProperties(); + f.prepare(p); + var ex = assertThrows(IllegalArgumentException.class, () -> p.getAsTensor("myTensor")); + assertEquals("Expected 'myTensor' to be a tensor or double, " + + "but it is '{ {cat:foo}:2.5, {cat:bar}:1.25 }', " + + "this usually means that 'myTensor' is not defined in the schema. " + + "See https://docs.vespa.ai/en/tensor-user-guide.html#querying-with-tensors", ex.getMessage()); + } +} |