From 95d2e5194acd87facd594201dd1db254a41b1f73 Mon Sep 17 00:00:00 2001 From: Arne Juul Date: Fri, 19 May 2023 09:10:29 +0000 Subject: allow array of numbers at top level; unit test short-short forms --- eval/src/tests/eval/value_cache/dense-short.json | 3 --- eval/src/tests/eval/value_cache/dense-short1.json | 1 + eval/src/tests/eval/value_cache/dense-short2.json | 3 +++ eval/src/tests/eval/value_cache/sparse-short.json | 7 ------- eval/src/tests/eval/value_cache/sparse-short1.json | 5 +++++ eval/src/tests/eval/value_cache/sparse-short2.json | 7 +++++++ .../tests/eval/value_cache/tensor_loader_test.cpp | 6 ++++-- .../eval/eval/value_cache/constant_tensor_loader.cpp | 20 ++++++++------------ 8 files changed, 28 insertions(+), 24 deletions(-) delete mode 100644 eval/src/tests/eval/value_cache/dense-short.json create mode 100644 eval/src/tests/eval/value_cache/dense-short1.json create mode 100644 eval/src/tests/eval/value_cache/dense-short2.json delete mode 100644 eval/src/tests/eval/value_cache/sparse-short.json create mode 100644 eval/src/tests/eval/value_cache/sparse-short1.json create mode 100644 eval/src/tests/eval/value_cache/sparse-short2.json diff --git a/eval/src/tests/eval/value_cache/dense-short.json b/eval/src/tests/eval/value_cache/dense-short.json deleted file mode 100644 index 40121135544..00000000000 --- a/eval/src/tests/eval/value_cache/dense-short.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "values": [ 1, 2.0, 3.5 ] -} diff --git a/eval/src/tests/eval/value_cache/dense-short1.json b/eval/src/tests/eval/value_cache/dense-short1.json new file mode 100644 index 00000000000..4e170001c96 --- /dev/null +++ b/eval/src/tests/eval/value_cache/dense-short1.json @@ -0,0 +1 @@ +[ 1, 2.0, 3.5 ] diff --git a/eval/src/tests/eval/value_cache/dense-short2.json b/eval/src/tests/eval/value_cache/dense-short2.json new file mode 100644 index 00000000000..40121135544 --- /dev/null +++ b/eval/src/tests/eval/value_cache/dense-short2.json @@ -0,0 +1,3 @@ +{ + "values": [ 1, 2.0, 3.5 ] +} diff --git a/eval/src/tests/eval/value_cache/sparse-short.json b/eval/src/tests/eval/value_cache/sparse-short.json deleted file mode 100644 index f10b1b6f9fb..00000000000 --- a/eval/src/tests/eval/value_cache/sparse-short.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "cells": { - "foo": 1.0, - "bar": 2.0, - "three": 3.0 - } -} diff --git a/eval/src/tests/eval/value_cache/sparse-short1.json b/eval/src/tests/eval/value_cache/sparse-short1.json new file mode 100644 index 00000000000..949b7b2b8bd --- /dev/null +++ b/eval/src/tests/eval/value_cache/sparse-short1.json @@ -0,0 +1,5 @@ +{ + "foo": 1.0, + "bar": 2.0, + "three": 3.0 +} diff --git a/eval/src/tests/eval/value_cache/sparse-short2.json b/eval/src/tests/eval/value_cache/sparse-short2.json new file mode 100644 index 00000000000..f10b1b6f9fb --- /dev/null +++ b/eval/src/tests/eval/value_cache/sparse-short2.json @@ -0,0 +1,7 @@ +{ + "cells": { + "foo": 1.0, + "bar": 2.0, + "three": 3.0 + } +} diff --git a/eval/src/tests/eval/value_cache/tensor_loader_test.cpp b/eval/src/tests/eval/value_cache/tensor_loader_test.cpp index ed35b8b108f..4b4ba3fc0d3 100644 --- a/eval/src/tests/eval/value_cache/tensor_loader_test.cpp +++ b/eval/src/tests/eval/value_cache/tensor_loader_test.cpp @@ -90,11 +90,13 @@ TEST_F("require that lz4 compressed sparse tensor can be loaded", ConstantTensor } TEST_F("require that sparse tensor short form can be loaded", ConstantTensorLoader(factory)) { - TEST_DO(verify_tensor(make_simple_sparse_tensor(), f1.create(TEST_PATH("sparse-short.json"), "tensor(mydim{})"))); + TEST_DO(verify_tensor(make_simple_sparse_tensor(), f1.create(TEST_PATH("sparse-short1.json"), "tensor(mydim{})"))); + TEST_DO(verify_tensor(make_simple_sparse_tensor(), f1.create(TEST_PATH("sparse-short2.json"), "tensor(mydim{})"))); } TEST_F("require that dense tensor short form can be loaded", ConstantTensorLoader(factory)) { - TEST_DO(verify_tensor(make_simple_dense_tensor(), f1.create(TEST_PATH("dense-short.json"), "tensor(z[3])"))); + TEST_DO(verify_tensor(make_simple_dense_tensor(), f1.create(TEST_PATH("dense-short1.json"), "tensor(z[3])"))); + TEST_DO(verify_tensor(make_simple_dense_tensor(), f1.create(TEST_PATH("dense-short2.json"), "tensor(z[3])"))); } TEST_F("require that bad lz4 file fails to load creating empty result", ConstantTensorLoader(factory)) { diff --git a/eval/src/vespa/eval/eval/value_cache/constant_tensor_loader.cpp b/eval/src/vespa/eval/eval/value_cache/constant_tensor_loader.cpp index a99e6f3b0dd..5654a3abcbe 100644 --- a/eval/src/vespa/eval/eval/value_cache/constant_tensor_loader.cpp +++ b/eval/src/vespa/eval/eval/value_cache/constant_tensor_loader.cpp @@ -137,30 +137,26 @@ ConstantTensorLoader::create(const vespalib::string &path, const vespalib::strin Slime slime; decode_json(path, slime); TensorSpec spec(type); + bool isSingleDenseType = value_type.is_dense() && (value_type.count_indexed_dimensions() == 1); + bool isSingleMappedType = value_type.is_sparse() && (value_type.count_mapped_dimensions() == 1); const Inspector &root = slime.get(); const Inspector &cells = root["cells"]; const Inspector &values = root["values"]; if (cells.type().getId() == vespalib::slime::ARRAY::ID) { decodeLiteralForm(cells, value_type, spec); } - else if (cells.type().getId() == vespalib::slime::OBJECT::ID - && value_type.is_sparse() - && value_type.count_mapped_dimensions() == 1) - { + else if (cells.type().getId() == vespalib::slime::OBJECT::ID && isSingleMappedType) { decodeSingleMappedForm(cells, value_type, spec); } - else if (values.type().getId() == vespalib::slime::ARRAY::ID - && value_type.is_dense() - && value_type.count_indexed_dimensions() == 1) - { + else if (values.type().getId() == vespalib::slime::ARRAY::ID && isSingleDenseType) { decodeSingleDenseForm(values, value_type, spec); } - else if (root.type().getId() == vespalib::slime::OBJECT::ID - && value_type.is_sparse() - && value_type.count_mapped_dimensions() == 1) - { + else if (root.type().getId() == vespalib::slime::OBJECT::ID && isSingleMappedType) { decodeSingleMappedForm(root, value_type, spec); } + else if (root.type().getId() == vespalib::slime::ARRAY::ID && isSingleDenseType) { + decodeSingleDenseForm(root, value_type, spec); + } try { return std::make_unique(value_from_spec(spec, _factory)); } catch (std::exception &) { -- cgit v1.2.3