diff options
author | Henning Baldersheim <balder@yahoo-inc.com> | 2019-04-01 16:27:19 +0200 |
---|---|---|
committer | Henning Baldersheim <balder@yahoo-inc.com> | 2019-04-01 16:27:19 +0200 |
commit | c18de31348936a234a6096740e018ffeb92e6df9 (patch) | |
tree | 8096c81ed514fc089a40f58a08109dc4d38ede1b | |
parent | 06b999904e735420ad5d1a74ae551f88573d2657 (diff) |
Verify serialization of various cell value types.
3 files changed, 31 insertions, 4 deletions
diff --git a/vespajlib/abi-spec.json b/vespajlib/abi-spec.json index ccfe99119ee..239efa0f89c 100644 --- a/vespajlib/abi-spec.json +++ b/vespajlib/abi-spec.json @@ -1295,6 +1295,7 @@ ], "methods": [ "public final com.yahoo.tensor.TensorType$ValueType valueType()", + "public final com.yahoo.tensor.TensorType valueType(com.yahoo.tensor.TensorType$ValueType)", "public static com.yahoo.tensor.TensorType fromSpec(java.lang.String)", "public int rank()", "public java.util.List dimensions()", diff --git a/vespajlib/src/main/java/com/yahoo/tensor/TensorType.java b/vespajlib/src/main/java/com/yahoo/tensor/TensorType.java index d548b13601f..036f5e3ee5d 100644 --- a/vespajlib/src/main/java/com/yahoo/tensor/TensorType.java +++ b/vespajlib/src/main/java/com/yahoo/tensor/TensorType.java @@ -29,10 +29,16 @@ public class TensorType { /** The empty tensor type - which is the same as a double */ public static final TensorType empty = new TensorType(ValueType.DOUBLE, Collections.emptyList()); - private final ValueType valueType; + private ValueType valueType; public final ValueType valueType() { return valueType; } + //TODO Remove once value type is wired in were it should. + public final TensorType valueType(ValueType valueType) { + this.valueType = valueType; + return this; + } + /** Sorted list of the dimensions of this */ private final ImmutableList<Dimension> dimensions; 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 4a975b83ec0..b248603082f 100644 --- a/vespajlib/src/test/java/com/yahoo/tensor/serialization/DenseBinaryFormatTestCase.java +++ b/vespajlib/src/test/java/com/yahoo/tensor/serialization/DenseBinaryFormatTestCase.java @@ -41,7 +41,7 @@ public class DenseBinaryFormatTestCase { } @Test - public void requireThatSerializationFormatDoNotChange() { + public void requireThatDefaultSerializationFormatDoNotChange() { byte[] encodedTensor = new byte[]{2, // binary format type 2, // dimension count 2, (byte) 'x', (byte) 'y', 2, // dimension xy with size @@ -53,11 +53,31 @@ public class DenseBinaryFormatTestCase { Arrays.toString(TypedBinaryFormat.encode(Tensor.from("tensor(xy[],z[]):{{xy:0,z:0}:2.0,{xy:1,z:0}:3.0}")))); } + @Test + public void requireThatFloatSerializationFormatDoNotChange() { + byte[] encodedTensor = new byte[]{4, // binary format type + 1, // float type + 2, // dimension count + 2, (byte) 'x', (byte) 'y', 2, // dimension xy with size + 1, (byte) 'z', 1, // dimension z with size + 64, 0, 0, 0, // value 1 + 64, 64, 0, 0, // value 2 + }; + Tensor tensor = Tensor.from("tensor(xy[],z[]):{{xy:0,z:0}:2.0,{xy:1,z:0}:3.0}"); + tensor.type().valueType(TensorType.ValueType.FLOAT); + assertEquals(Arrays.toString(encodedTensor), + Arrays.toString(TypedBinaryFormat.encode(tensor))); + } + private void assertSerialization(String tensorString) { - assertSerialization(Tensor.from(tensorString)); + assertSerialization(TensorType.ValueType.DOUBLE, Tensor.from(tensorString)); + } + private void assertSerialization(TensorType.ValueType valueType, String tensorString) { + assertSerialization(valueType, Tensor.from(tensorString)); } - private void assertSerialization(Tensor tensor) { + private void assertSerialization(TensorType.ValueType valueType, Tensor tensor) { + tensor.type().valueType(valueType); assertSerialization(tensor, tensor.type()); } |