diff options
author | Jon Bratseth <bratseth@oath.com> | 2018-02-01 11:22:06 +0100 |
---|---|---|
committer | Jon Bratseth <bratseth@oath.com> | 2018-02-01 11:22:06 +0100 |
commit | b6842cba60d3dc329f46498e190e5432d77331f5 (patch) | |
tree | c41a9f50a2f1800055e770a551793fa200614d6a | |
parent | add7f241c1f8e3b2af99d5453c26d99e4179aa74 (diff) |
Require same length on dimensions
3 files changed, 23 insertions, 5 deletions
diff --git a/vespajlib/src/main/java/com/yahoo/tensor/TensorType.java b/vespajlib/src/main/java/com/yahoo/tensor/TensorType.java index 5b98a1b4fb5..7eae9539e77 100644 --- a/vespajlib/src/main/java/com/yahoo/tensor/TensorType.java +++ b/vespajlib/src/main/java/com/yahoo/tensor/TensorType.java @@ -90,7 +90,7 @@ public class TensorType { if ( ! thisDimension.name().equals(generalizationDimension.name())) return false; if (generalizationDimension.size().isPresent()) { if ( ! thisDimension.size().isPresent()) return false; - if (thisDimension.size().get() > generalizationDimension.size().get() ) return false; + if ( ! thisDimension.size().get().equals(generalizationDimension.size().get()) ) return false; } } return true; diff --git a/vespajlib/src/test/java/com/yahoo/tensor/TensorTypeTestCase.java b/vespajlib/src/test/java/com/yahoo/tensor/TensorTypeTestCase.java index ef973d03ccb..c3e31fad2da 100644 --- a/vespajlib/src/test/java/com/yahoo/tensor/TensorTypeTestCase.java +++ b/vespajlib/src/test/java/com/yahoo/tensor/TensorTypeTestCase.java @@ -5,7 +5,9 @@ import org.junit.Test; import static org.hamcrest.Matchers.containsString; import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertThat; +import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; /** @@ -61,6 +63,18 @@ public class TensorTypeTestCase { assertIllegalTensorType("tensor(x{10})", "Failed parsing element 'x{10}' in type spec 'tensor(x{10})'"); } + @Test + public void testAssignableTo() { + assertIsAssignableTo("tensor(x[])", "tensor(x[])"); + assertUnassignableTo("tensor(x[])", "tensor(y[])"); + assertIsAssignableTo("tensor(x[10])", "tensor(x[])"); + assertUnassignableTo("tensor(x[])", "tensor(x[10])"); + assertUnassignableTo("tensor(x[10])", "tensor(x[5])"); + assertUnassignableTo("tensor(x[5])", "tensor(x[10])"); + assertUnassignableTo("tensor(x{})", "tensor(x[])"); + assertIsAssignableTo("tensor(x{},y[10])", "tensor(x{},y[])"); + } + private static void assertTensorType(String typeSpec) { assertTensorType(typeSpec, typeSpec); } @@ -78,4 +92,12 @@ public class TensorTypeTestCase { } } + private void assertIsAssignableTo(String specificType, String generalType) { + assertTrue(TensorType.fromSpec(specificType).isAssignableTo(TensorType.fromSpec(generalType))); + } + + private void assertUnassignableTo(String specificType, String generalType) { + assertFalse(TensorType.fromSpec(specificType).isAssignableTo(TensorType.fromSpec(generalType))); + } + } diff --git a/vespajlib/src/test/java/com/yahoo/tensor/serialization/DenseBinaryFormatTestCase.java b/vespajlib/src/test/java/com/yahoo/tensor/serialization/DenseBinaryFormatTestCase.java index 15a872e439f..4a975b83ec0 100644 --- a/vespajlib/src/test/java/com/yahoo/tensor/serialization/DenseBinaryFormatTestCase.java +++ b/vespajlib/src/test/java/com/yahoo/tensor/serialization/DenseBinaryFormatTestCase.java @@ -1,16 +1,13 @@ // Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. package com.yahoo.tensor.serialization; -import com.google.common.collect.Sets; import com.yahoo.io.GrowableByteBuffer; import com.yahoo.tensor.Tensor; import com.yahoo.tensor.TensorType; -import org.junit.Ignore; import org.junit.Test; import java.util.Arrays; import java.util.Optional; -import java.util.Set; import static org.junit.Assert.assertEquals; import static org.junit.Assert.fail; @@ -34,7 +31,6 @@ public class DenseBinaryFormatTestCase { @Test public void testSerializationToSeparateType() { assertSerialization(Tensor.from("tensor(x[1],y[1]):{{x:0,y:0}:2.0}"), TensorType.fromSpec("tensor(x[],y[])")); - assertSerialization(Tensor.from("tensor(x[1],y[1]):{{x:0,y:0}:2.0}"), TensorType.fromSpec("tensor(x[2],y[2])")); try { assertSerialization(Tensor.from("tensor(x[2],y[2]):{{x:0,y:0}:2.0}"), TensorType.fromSpec("tensor(x[1],y[1])")); fail("Expected exception"); |