diff options
author | Arne Juul <arnej@yahooinc.com> | 2023-05-19 09:10:29 +0000 |
---|---|---|
committer | Arne Juul <arnej@yahooinc.com> | 2023-05-19 09:29:03 +0000 |
commit | 95d2e5194acd87facd594201dd1db254a41b1f73 (patch) | |
tree | 7db053e118f2c7783c56f4ef931752b9d41bc08d /eval | |
parent | db2de9140b9487e8aa26bbd4ba1aedcad4ecc990 (diff) |
allow array of numbers at top level; unit test short-short forms
Diffstat (limited to 'eval')
-rw-r--r-- | eval/src/tests/eval/value_cache/dense-short1.json | 1 | ||||
-rw-r--r-- | eval/src/tests/eval/value_cache/dense-short2.json (renamed from eval/src/tests/eval/value_cache/dense-short.json) | 0 | ||||
-rw-r--r-- | eval/src/tests/eval/value_cache/sparse-short1.json | 5 | ||||
-rw-r--r-- | eval/src/tests/eval/value_cache/sparse-short2.json (renamed from eval/src/tests/eval/value_cache/sparse-short.json) | 0 | ||||
-rw-r--r-- | eval/src/tests/eval/value_cache/tensor_loader_test.cpp | 6 | ||||
-rw-r--r-- | eval/src/vespa/eval/eval/value_cache/constant_tensor_loader.cpp | 20 |
6 files changed, 18 insertions, 14 deletions
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-short.json b/eval/src/tests/eval/value_cache/dense-short2.json index 40121135544..40121135544 100644 --- a/eval/src/tests/eval/value_cache/dense-short.json +++ b/eval/src/tests/eval/value_cache/dense-short2.json 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-short.json b/eval/src/tests/eval/value_cache/sparse-short2.json index f10b1b6f9fb..f10b1b6f9fb 100644 --- a/eval/src/tests/eval/value_cache/sparse-short.json +++ b/eval/src/tests/eval/value_cache/sparse-short2.json 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<SimpleConstantValue>(value_from_spec(spec, _factory)); } catch (std::exception &) { |