summaryrefslogtreecommitdiffstats
path: root/eval
diff options
context:
space:
mode:
authorArne Juul <arnej@yahooinc.com>2023-05-19 09:10:29 +0000
committerArne Juul <arnej@yahooinc.com>2023-05-19 09:29:03 +0000
commit95d2e5194acd87facd594201dd1db254a41b1f73 (patch)
tree7db053e118f2c7783c56f4ef931752b9d41bc08d /eval
parentdb2de9140b9487e8aa26bbd4ba1aedcad4ecc990 (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.json1
-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.json5
-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.cpp6
-rw-r--r--eval/src/vespa/eval/eval/value_cache/constant_tensor_loader.cpp20
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 &) {