diff options
author | Arne Juul <arnej@yahooinc.com> | 2023-11-30 13:48:01 +0000 |
---|---|---|
committer | Arne Juul <arnej@yahooinc.com> | 2023-12-11 08:47:15 +0000 |
commit | 055b84652f6a0c9b517c76588c145d92216f6e02 (patch) | |
tree | 635c1763de83261409293d6ae9edb8fc03e9a51d /document | |
parent | 18e3fb5c91e9e40d46fccc1b8988c445f27ec19e (diff) |
add parsing of special strings for inf/nan cell values
Diffstat (limited to 'document')
-rw-r--r-- | document/src/main/java/com/yahoo/document/json/readers/TensorReader.java | 4 | ||||
-rw-r--r-- | document/src/test/java/com/yahoo/document/json/JsonReaderTestCase.java | 4 |
2 files changed, 6 insertions, 2 deletions
diff --git a/document/src/main/java/com/yahoo/document/json/readers/TensorReader.java b/document/src/main/java/com/yahoo/document/json/readers/TensorReader.java index e487fd2ec57..0b7b1ae9996 100644 --- a/document/src/main/java/com/yahoo/document/json/readers/TensorReader.java +++ b/document/src/main/java/com/yahoo/document/json/readers/TensorReader.java @@ -14,6 +14,7 @@ import com.yahoo.tensor.TensorType; import static com.yahoo.document.json.readers.JsonParserHelpers.*; import static com.yahoo.tensor.serialization.JsonFormat.decodeHexString; +import static com.yahoo.tensor.serialization.JsonFormat.decodeNumberString; /** * Reads the tensor format defined at @@ -243,6 +244,9 @@ public class TensorReader { private static double readDouble(TokenBuffer buffer) { try { + if (buffer.current() == JsonToken.VALUE_STRING) { + return decodeNumberString(buffer.currentText()); + } return Double.parseDouble(buffer.currentText()); } catch (NumberFormatException e) { diff --git a/document/src/test/java/com/yahoo/document/json/JsonReaderTestCase.java b/document/src/test/java/com/yahoo/document/json/JsonReaderTestCase.java index 28e5293e96b..8a45fe95fa2 100644 --- a/document/src/test/java/com/yahoo/document/json/JsonReaderTestCase.java +++ b/document/src/test/java/com/yahoo/document/json/JsonReaderTestCase.java @@ -1462,14 +1462,14 @@ public class JsonReaderTestCase { builder.cell().label("x", 0).label("y", 0).value(2.0); builder.cell().label("x", 0).label("y", 1).value(3.0); builder.cell().label("x", 0).label("y", 2).value(4.0); - builder.cell().label("x", 1).label("y", 0).value(5.0); + builder.cell().label("x", 1).label("y", 0).value(Double.POSITIVE_INFINITY); builder.cell().label("x", 1).label("y", 1).value(6.0); builder.cell().label("x", 1).label("y", 2).value(7.0); Tensor expected = builder.build(); Tensor tensor = assertTensorField(expected, createPutWithTensor(inputJson("{", - " 'values': [2.0, 3.0, 4.0, 5.0, 6.0, 7.0]", + " 'values': [2.0, 3.0, 4.0, 'inf', 6.0, 7.0]", "}"), "dense_tensor"), "dense_tensor"); assertTrue(tensor instanceof IndexedTensor); // this matters for performance } |