From 4c46e1816d2cdfacd8435ad4d55e831929fc99ba Mon Sep 17 00:00:00 2001 From: Jon Bratseth Date: Tue, 10 Dec 2019 11:39:39 -0800 Subject: Tensor parsing improvements - Mixed tensor format parsing (outside expressions) - Validate structure of dense tensor strings --- .../tensor/functions/DynamicTensorTestCase.java | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) (limited to 'vespajlib/src/test/java/com/yahoo/tensor/functions') diff --git a/vespajlib/src/test/java/com/yahoo/tensor/functions/DynamicTensorTestCase.java b/vespajlib/src/test/java/com/yahoo/tensor/functions/DynamicTensorTestCase.java index e16b7b90a1d..7cddeab1641 100644 --- a/vespajlib/src/test/java/com/yahoo/tensor/functions/DynamicTensorTestCase.java +++ b/vespajlib/src/test/java/com/yahoo/tensor/functions/DynamicTensorTestCase.java @@ -9,6 +9,7 @@ import com.yahoo.tensor.evaluation.Name; import org.junit.Test; import java.util.Collections; +import java.util.HashMap; import java.util.List; import static org.junit.Assert.assertEquals; @@ -19,21 +20,36 @@ import static org.junit.Assert.assertEquals; public class DynamicTensorTestCase { @Test - public void testDynamicTensorFunction() { + public void testDynamicIndexedRank1TensorFunction() { TensorType dense = TensorType.fromSpec("tensor(x[3])"); DynamicTensor t1 = DynamicTensor.from(dense, List.of(new Constant(1), new Constant(2), new Constant(3))); assertEquals(Tensor.from(dense, "[1, 2, 3]"), t1.evaluate()); assertEquals("tensor(x[3]):{{x:0}:1.0,{x:1}:2.0,{x:2}:3.0}", t1.toString()); + } + @Test + public void testDynamicMappedRank1TensorFunction() { TensorType sparse = TensorType.fromSpec("tensor(x{})"); DynamicTensor t2 = DynamicTensor.from(sparse, Collections.singletonMap(new TensorAddress.Builder(sparse).add("x", "a").build(), - new Constant(5))); + new Constant(5))); assertEquals(Tensor.from(sparse, "{{x:a}:5}"), t2.evaluate()); assertEquals("tensor(x{}):{{x:a}:5.0}", t2.toString()); } + @Test + public void testDynamicMappedRank2TensorFunction() { + TensorType sparse = TensorType.fromSpec("tensor(x{},y{})"); + HashMap> values = new HashMap<>(); + values.put(new TensorAddress.Builder(sparse).add("x", "a").add("y", "b").build(), + new Constant(5)); + values.put(new TensorAddress.Builder(sparse).add("x", "a").add("y", "c").build(), + new Constant(7)); + DynamicTensor t2 = DynamicTensor.from(sparse, values); + assertEquals(Tensor.from(sparse, "{{x:a,y:b}:5, {x:a,y:c}:7}"), t2.evaluate()); + } + private static class Constant implements ScalarFunction { private final double value; -- cgit v1.2.3