summaryrefslogtreecommitdiffstats
path: root/vespajlib
diff options
context:
space:
mode:
authorJon Bratseth <bratseth@oath.com>2018-02-01 11:22:06 +0100
committerJon Bratseth <bratseth@oath.com>2018-02-01 11:22:06 +0100
commitb6842cba60d3dc329f46498e190e5432d77331f5 (patch)
treec41a9f50a2f1800055e770a551793fa200614d6a /vespajlib
parentadd7f241c1f8e3b2af99d5453c26d99e4179aa74 (diff)
Require same length on dimensions
Diffstat (limited to 'vespajlib')
-rw-r--r--vespajlib/src/main/java/com/yahoo/tensor/TensorType.java2
-rw-r--r--vespajlib/src/test/java/com/yahoo/tensor/TensorTypeTestCase.java22
-rw-r--r--vespajlib/src/test/java/com/yahoo/tensor/serialization/DenseBinaryFormatTestCase.java4
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");