diff options
Diffstat (limited to 'eval/src/tests/tensor')
12 files changed, 0 insertions, 573 deletions
diff --git a/eval/src/tests/tensor/partial_add/partial_add_test.cpp b/eval/src/tests/tensor/partial_add/partial_add_test.cpp index 711bf7a1c49..42db77a311f 100644 --- a/eval/src/tests/tensor/partial_add/partial_add_test.cpp +++ b/eval/src/tests/tensor/partial_add/partial_add_test.cpp @@ -3,7 +3,6 @@ #include <vespa/eval/eval/simple_value.h> #include <vespa/eval/eval/test/tensor_model.hpp> #include <vespa/eval/eval/value_codec.h> -#include <vespa/eval/tensor/default_tensor_engine.h> #include <vespa/eval/tensor/partial_update.h> #include <vespa/eval/tensor/tensor.h> #include <vespa/vespalib/util/stringfmt.h> diff --git a/eval/src/tests/tensor/partial_modify/partial_modify_test.cpp b/eval/src/tests/tensor/partial_modify/partial_modify_test.cpp index ab04f195b1f..a39bcc87ab3 100644 --- a/eval/src/tests/tensor/partial_modify/partial_modify_test.cpp +++ b/eval/src/tests/tensor/partial_modify/partial_modify_test.cpp @@ -3,7 +3,6 @@ #include <vespa/eval/eval/simple_value.h> #include <vespa/eval/eval/test/tensor_model.hpp> #include <vespa/eval/eval/value_codec.h> -#include <vespa/eval/tensor/default_tensor_engine.h> #include <vespa/eval/tensor/partial_update.h> #include <vespa/eval/tensor/tensor.h> #include <vespa/vespalib/util/stringfmt.h> diff --git a/eval/src/tests/tensor/partial_remove/partial_remove_test.cpp b/eval/src/tests/tensor/partial_remove/partial_remove_test.cpp index fc22a364e5c..410331c5eb7 100644 --- a/eval/src/tests/tensor/partial_remove/partial_remove_test.cpp +++ b/eval/src/tests/tensor/partial_remove/partial_remove_test.cpp @@ -3,7 +3,6 @@ #include <vespa/eval/eval/simple_value.h> #include <vespa/eval/eval/test/tensor_model.hpp> #include <vespa/eval/eval/value_codec.h> -#include <vespa/eval/tensor/default_tensor_engine.h> #include <vespa/eval/tensor/partial_update.h> #include <vespa/eval/tensor/tensor.h> #include <vespa/vespalib/util/stringfmt.h> diff --git a/eval/src/tests/tensor/tensor_add_operation/CMakeLists.txt b/eval/src/tests/tensor/tensor_add_operation/CMakeLists.txt deleted file mode 100644 index 275043c8c54..00000000000 --- a/eval/src/tests/tensor/tensor_add_operation/CMakeLists.txt +++ /dev/null @@ -1,9 +0,0 @@ -# Copyright 2019 Oath Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -vespa_add_executable(eval_tensor_add_operation_test_app TEST - SOURCES - tensor_add_operation_test.cpp - DEPENDS - vespaeval - GTest::GTest -) -vespa_add_test(NAME eval_tensor_add_operation_test_app COMMAND eval_tensor_add_operation_test_app) diff --git a/eval/src/tests/tensor/tensor_add_operation/tensor_add_operation_test.cpp b/eval/src/tests/tensor/tensor_add_operation/tensor_add_operation_test.cpp deleted file mode 100644 index 1d39a557114..00000000000 --- a/eval/src/tests/tensor/tensor_add_operation/tensor_add_operation_test.cpp +++ /dev/null @@ -1,85 +0,0 @@ -// Copyright 2019 Oath Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. - -#include <vespa/eval/eval/tensor_spec.h> -#include <vespa/eval/tensor/default_tensor_engine.h> -#include <vespa/eval/tensor/sparse/sparse_tensor.h> -#include <vespa/eval/tensor/test/test_utils.h> -#include <vespa/vespalib/gtest/gtest.h> - -using vespalib::eval::Value; -using vespalib::eval::TensorSpec; -using vespalib::tensor::test::makeTensor; -using namespace vespalib::tensor; - -void -assertAdd(const TensorSpec &source, const TensorSpec &arg, const TensorSpec &expected) -{ - auto sourceTensor = makeTensor<Tensor>(source); - auto argTensor = makeTensor<Tensor>(arg); - auto resultTensor = sourceTensor->add(*argTensor); - auto actual = resultTensor->toSpec(); - EXPECT_EQ(actual, expected); -} - -void -assertNullTensor(const TensorSpec &source, const TensorSpec &arg) -{ - auto sourceTensor = makeTensor<Tensor>(source); - auto argTensor = makeTensor<Tensor>(arg); - auto resultTensor = sourceTensor->add(*argTensor); - EXPECT_FALSE(resultTensor); -} - -TEST(TensorAddTest, cells_can_be_added_to_a_sparse_tensor) -{ - assertAdd(TensorSpec("tensor(x{},y{})") - .add({{"x","a"},{"y","b"}}, 2) - .add({{"x","c"},{"y","d"}}, 3), - TensorSpec("tensor(x{},y{})") - .add({{"x","a"},{"y","b"}}, 5) - .add({{"x","e"},{"y","f"}}, 7), - TensorSpec("tensor(x{},y{})") - .add({{"x","a"},{"y","b"}}, 5) - .add({{"x","c"},{"y","d"}}, 3) - .add({{"x","e"},{"y","f"}}, 7)); -} - -TEST(TensorAddTest, cells_can_be_added_to_a_mixed_tensor) -{ - assertAdd(TensorSpec("tensor(x{},y[2])") - .add({{"x","a"},{"y",0}}, 2) - .add({{"x","a"},{"y",1}}, 3) - .add({{"x","b"},{"y",0}}, 4) - .add({{"x","b"},{"y",1}}, 5), - TensorSpec("tensor(x{},y[2])") - .add({{"x","b"},{"y",0}}, 6) - .add({{"x","b"},{"y",1}}, 7) - .add({{"x","c"},{"y",0}}, 8) - .add({{"x","c"},{"y",1}}, 9), - TensorSpec("tensor(x{},y[2])") - .add({{"x","a"},{"y",0}}, 2) - .add({{"x","a"},{"y",1}}, 3) - .add({{"x","b"},{"y",0}}, 6) - .add({{"x","b"},{"y",1}}, 7) - .add({{"x","c"},{"y",0}}, 8) - .add({{"x","c"},{"y",1}}, 9)); -} - -TEST(TensorAddTest, cells_can_be_added_to_empty_mixed_tensor) -{ - assertAdd(TensorSpec("tensor(x{},y[2])"), - TensorSpec("tensor(x{},y[2])") - .add({{"x","b"},{"y",0}}, 6) - .add({{"x","b"},{"y",1}}, 7), - TensorSpec("tensor(x{},y[2])") - .add({{"x","b"},{"y",0}}, 6) - .add({{"x","b"},{"y",1}}, 7)); -} - -TEST(TensorAddTest, tensors_of_different_types_cannot_be_added_together) -{ - assertNullTensor(TensorSpec("tensor(x{},y[2])"), TensorSpec("tensor(x{},y{})")); - assertNullTensor(TensorSpec("tensor(x{},y[2])"), TensorSpec("tensor(x{},y[3])")); -} - -GTEST_MAIN_RUN_ALL_TESTS() diff --git a/eval/src/tests/tensor/tensor_modify_operation/CMakeLists.txt b/eval/src/tests/tensor/tensor_modify_operation/CMakeLists.txt deleted file mode 100644 index cd4643deae0..00000000000 --- a/eval/src/tests/tensor/tensor_modify_operation/CMakeLists.txt +++ /dev/null @@ -1,9 +0,0 @@ -# Copyright 2019 Oath Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -vespa_add_executable(eval_tensor_modify_operation_test_app TEST - SOURCES - tensor_modify_operation_test.cpp - DEPENDS - vespaeval - GTest::GTest -) -vespa_add_test(NAME eval_tensor_modify_operation_test_app COMMAND eval_tensor_modify_operation_test_app) diff --git a/eval/src/tests/tensor/tensor_modify_operation/tensor_modify_operation_test.cpp b/eval/src/tests/tensor/tensor_modify_operation/tensor_modify_operation_test.cpp deleted file mode 100644 index 00ee55ed7af..00000000000 --- a/eval/src/tests/tensor/tensor_modify_operation/tensor_modify_operation_test.cpp +++ /dev/null @@ -1,111 +0,0 @@ -// Copyright 2019 Oath Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. - -#include <vespa/eval/eval/operation.h> -#include <vespa/eval/eval/tensor_spec.h> -#include <vespa/eval/tensor/cell_values.h> -#include <vespa/eval/tensor/default_tensor_engine.h> -#include <vespa/eval/tensor/sparse/sparse_tensor.h> -#include <vespa/eval/tensor/test/test_utils.h> -#include <vespa/vespalib/gtest/gtest.h> -#include <vespa/vespalib/util/stringfmt.h> - -using vespalib::eval::Value; -using vespalib::eval::TensorSpec; -using vespalib::tensor::test::makeTensor; -using namespace vespalib::tensor; - -void -checkUpdate(const TensorSpec &source, const TensorSpec &update, const TensorSpec &expect) -{ - auto sourceTensor = makeTensor<Tensor>(source); - auto updateTensor = makeTensor<SparseTensor>(update); - const CellValues cellValues(*updateTensor); - - auto actualTensor = sourceTensor->modify(vespalib::eval::operation::Add::f, cellValues); - auto actual = actualTensor->toSpec(); - auto expectTensor = makeTensor<Tensor>(expect); - auto expectPadded = expectTensor->toSpec(); - EXPECT_EQ(actual, expectPadded); -} - -TEST(TensorModifyTest, sparse_tensors_can_be_modified) -{ - checkUpdate(TensorSpec("tensor(x{},y{})") - .add({{"x","8"},{"y","9"}}, 11) - .add({{"x","9"},{"y","9"}}, 11), - TensorSpec("tensor(x{},y{})") - .add({{"x","8"},{"y","9"}}, 2), - TensorSpec("tensor(x{},y{})") - .add({{"x","8"},{"y","9"}}, 13) - .add({{"x","9"},{"y","9"}}, 11)); -} - -TEST(TensorModifyTest, dense_tensors_can_be_modified) -{ - checkUpdate(TensorSpec("tensor(x[10],y[10])") - .add({{"x",8},{"y",9}}, 11) - .add({{"x",9},{"y",9}}, 11), - TensorSpec("tensor(x{},y{})") - .add({{"x","8"},{"y","9"}}, 2), - TensorSpec("tensor(x[10],y[10])") - .add({{"x",8},{"y",9}}, 13) - .add({{"x",9},{"y",9}}, 11)); -} - -TEST(TensorModifyTest, mixed_tensors_can_be_modified) -{ - checkUpdate(TensorSpec("tensor(x{},y[2])") - .add({{"x","a"},{"y",0}}, 2) - .add({{"x","a"},{"y",1}}, 3) - .add({{"x","b"},{"y",0}}, 4) - .add({{"x","b"},{"y",1}}, 5), - TensorSpec("tensor(x{},y{})") - .add({{"x","a"},{"y","0"}}, 6) - .add({{"x","b"},{"y","1"}}, 7), - TensorSpec("tensor(x{},y[2])") - .add({{"x","a"},{"y",0}}, 8) - .add({{"x","a"},{"y",1}}, 3) - .add({{"x","b"},{"y",0}}, 4) - .add({{"x","b"},{"y",1}}, 12)); -} - -TEST(TensorModifyTest, sparse_tensors_ignore_updates_to_missing_cells) -{ - checkUpdate(TensorSpec("tensor(x{},y{})") - .add({{"x","8"},{"y","9"}}, 11) - .add({{"x","9"},{"y","9"}}, 11), - TensorSpec("tensor(x{},y{})") - .add({{"x","7"},{"y","9"}}, 2) - .add({{"x","8"},{"y","9"}}, 2), - TensorSpec("tensor(x{},y{})") - .add({{"x","8"},{"y","9"}}, 13) - .add({{"x","9"},{"y","9"}}, 11)); -} - -TEST(TensorModifyTest, dense_tensors_ignore_updates_to_out_of_range_cells) -{ - checkUpdate(TensorSpec("tensor(x[10],y[10])") - .add({{"x",8},{"y",9}}, 11) - .add({{"x",9},{"y",9}}, 11), - TensorSpec("tensor(x{},y{})") - .add({{"x","8"},{"y","9"}}, 2) - .add({{"x","10"},{"y","9"}}, 2), - TensorSpec("tensor(x[10],y[10])") - .add({{"x",8},{"y",9}}, 13) - .add({{"x",9},{"y",9}}, 11)); -} - -TEST(TensorModifyTest, mixed_tensors_ignore_updates_to_missing_or_out_of_range_cells) -{ - checkUpdate(TensorSpec("tensor(x{},y[2])") - .add({{"x","a"},{"y",0}}, 2) - .add({{"x","a"},{"y",1}}, 3), - TensorSpec("tensor(x{},y{})") - .add({{"x","a"},{"y","2"}}, 4) - .add({{"x","c"},{"y","0"}}, 5), - TensorSpec("tensor(x{},y[2])") - .add({{"x","a"},{"y",0}}, 2) - .add({{"x","a"},{"y",1}}, 3)); -} - -GTEST_MAIN_RUN_ALL_TESTS() diff --git a/eval/src/tests/tensor/tensor_remove_operation/CMakeLists.txt b/eval/src/tests/tensor/tensor_remove_operation/CMakeLists.txt deleted file mode 100644 index a302cc528e0..00000000000 --- a/eval/src/tests/tensor/tensor_remove_operation/CMakeLists.txt +++ /dev/null @@ -1,9 +0,0 @@ -# Copyright 2019 Oath Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -vespa_add_executable(eval_tensor_remove_operation_test_app TEST - SOURCES - tensor_remove_operation_test.cpp - DEPENDS - vespaeval - GTest::GTest -) -vespa_add_test(NAME eval_tensor_remove_operation_test_app COMMAND eval_tensor_remove_operation_test_app) diff --git a/eval/src/tests/tensor/tensor_remove_operation/tensor_remove_operation_test.cpp b/eval/src/tests/tensor/tensor_remove_operation/tensor_remove_operation_test.cpp deleted file mode 100644 index ceeaf2c99da..00000000000 --- a/eval/src/tests/tensor/tensor_remove_operation/tensor_remove_operation_test.cpp +++ /dev/null @@ -1,95 +0,0 @@ -// Copyright 2019 Oath Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. - -#include <vespa/eval/eval/tensor_spec.h> -#include <vespa/eval/tensor/cell_values.h> -#include <vespa/eval/tensor/default_tensor_engine.h> -#include <vespa/eval/tensor/sparse/sparse_tensor.h> -#include <vespa/eval/tensor/test/test_utils.h> -#include <vespa/vespalib/gtest/gtest.h> - -using vespalib::eval::Value; -using vespalib::eval::TensorSpec; -using vespalib::tensor::test::makeTensor; -using namespace vespalib::tensor; - -void -assertRemove(const TensorSpec &source, const TensorSpec &arg, const TensorSpec &expected) -{ - auto sourceTensor = makeTensor<Tensor>(source); - auto argTensor = makeTensor<SparseTensor>(arg); - auto resultTensor = sourceTensor->remove(CellValues(*argTensor)); - auto actual = resultTensor->toSpec(); - EXPECT_EQ(actual, expected); -} - -TEST(TensorRemoveTest, cells_can_be_removed_from_a_sparse_tensor) -{ - assertRemove(TensorSpec("tensor(x{},y{})") - .add({{"x","a"},{"y","b"}}, 2) - .add({{"x","c"},{"y","d"}}, 3), - TensorSpec("tensor(x{},y{})") - .add({{"x","c"},{"y","d"}}, 1) - .add({{"x","e"},{"y","f"}}, 1), - TensorSpec("tensor(x{},y{})") - .add({{"x","a"},{"y","b"}}, 2)); -} - -TEST(TensorRemoveTest, all_cells_can_be_removed_from_a_sparse_tensor) -{ - assertRemove(TensorSpec("tensor(x{},y{})") - .add({{"x","a"},{"y","b"}}, 2), - TensorSpec("tensor(x{},y{})") - .add({{"x","a"},{"y","b"}}, 1), - TensorSpec("tensor(x{},y{})")); -} - -TEST(TensorRemoveTest, cells_can_be_removed_from_a_mixed_tensor) -{ - assertRemove(TensorSpec("tensor(x{},y[2])") - .add({{"x","a"},{"y",0}}, 2) - .add({{"x","a"},{"y",1}}, 3) - .add({{"x","b"},{"y",0}}, 4) - .add({{"x","b"},{"y",1}}, 5), - TensorSpec("tensor(x{})") - .add({{"x","b"}}, 1) - .add({{"x","c"}}, 1), - TensorSpec("tensor(x{},y[2])") - .add({{"x","a"},{"y",0}}, 2) - .add({{"x","a"},{"y",1}}, 3)); - - assertRemove(TensorSpec("tensor(x{},y{},z[2])") - .add({{"x","a"},{"y","c"},{"z",0}}, 2) - .add({{"x","a"},{"y","c"},{"z",1}}, 3) - .add({{"x","b"},{"y","c"},{"z",0}}, 4) - .add({{"x","b"},{"y","c"},{"z",1}}, 5), - TensorSpec("tensor(x{},y{})") - .add({{"x","b"},{"y","c"}}, 1) - .add({{"x","c"},{"y","c"}}, 1), - TensorSpec("tensor(x{},y{},z[2])") - .add({{"x","a"},{"y","c"},{"z",0}}, 2) - .add({{"x","a"},{"y","c"},{"z",1}}, 3)); - - assertRemove(TensorSpec("tensor(x{},y[1],z[2])") - .add({{"x","a"},{"y",0},{"z",0}}, 2) - .add({{"x","a"},{"y",0},{"z",1}}, 3) - .add({{"x","b"},{"y",0},{"z",0}}, 4) - .add({{"x","b"},{"y",0},{"z",1}}, 5), - TensorSpec("tensor(x{})") - .add({{"x","b"}}, 1) - .add({{"x","c"}}, 1), - TensorSpec("tensor(x{},y[1],z[2])") - .add({{"x","a"},{"y",0},{"z",0}}, 2) - .add({{"x","a"},{"y",0},{"z",1}}, 3)); -} - -TEST(TensorRemoveTest, all_cells_can_be_removed_from_a_mixed_tensor) -{ - assertRemove(TensorSpec("tensor(x{},y[2])") - .add({{"x","a"},{"y",0}}, 2) - .add({{"x","a"},{"y",1}}, 3), - TensorSpec("tensor(x{})") - .add({{"x","a"}}, 1), - TensorSpec("tensor(x{},y[2])")); -} - -GTEST_MAIN_RUN_ALL_TESTS() diff --git a/eval/src/tests/tensor/tensor_serialization/.gitignore b/eval/src/tests/tensor/tensor_serialization/.gitignore deleted file mode 100644 index f8525561c6b..00000000000 --- a/eval/src/tests/tensor/tensor_serialization/.gitignore +++ /dev/null @@ -1 +0,0 @@ -vespalib_tensor_serialization_test_app diff --git a/eval/src/tests/tensor/tensor_serialization/CMakeLists.txt b/eval/src/tests/tensor/tensor_serialization/CMakeLists.txt deleted file mode 100644 index b9fc7e0d544..00000000000 --- a/eval/src/tests/tensor/tensor_serialization/CMakeLists.txt +++ /dev/null @@ -1,8 +0,0 @@ -# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -vespa_add_executable(eval_tensor_serialization_test_app TEST - SOURCES - tensor_serialization_test.cpp - DEPENDS - vespaeval -) -vespa_add_test(NAME eval_tensor_serialization_test_app COMMAND eval_tensor_serialization_test_app) diff --git a/eval/src/tests/tensor/tensor_serialization/tensor_serialization_test.cpp b/eval/src/tests/tensor/tensor_serialization/tensor_serialization_test.cpp deleted file mode 100644 index 358f5d36101..00000000000 --- a/eval/src/tests/tensor/tensor_serialization/tensor_serialization_test.cpp +++ /dev/null @@ -1,243 +0,0 @@ -// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. - -#include <vespa/vespalib/testkit/test_kit.h> -#include <vespa/eval/tensor/sparse/sparse_tensor.h> -#include <vespa/eval/tensor/types.h> -#include <vespa/eval/tensor/default_tensor_engine.h> -#include <vespa/eval/tensor/serialization/typed_binary_format.h> -#include <vespa/eval/tensor/serialization/sparse_binary_format.h> -#include <vespa/vespalib/objects/nbostream.h> -#include <vespa/vespalib/objects/hexdump.h> -#include <ostream> -#include <vespa/eval/tensor/dense/dense_tensor_view.h> -#include <vespa/eval/eval/value_codec.h> -#include <vespa/eval/eval/simple_value.h> - -using namespace vespalib::tensor; -using vespalib::eval::TensorSpec; -using vespalib::nbostream; -using ExpBuffer = std::vector<uint8_t>; - -namespace std { - -bool operator==(const std::vector<uint8_t> &exp, const nbostream &stream) -{ - return ((exp.size() == stream.size()) && - (memcmp(&exp[0], stream.peek(), exp.size()) == 0)); -} - -std::ostream &operator<<(std::ostream &out, const std::vector<uint8_t> &rhs) -{ - out << vespalib::HexDump(&rhs[0], rhs.size()); - return out; -} - -} - -//----------------------------------------------------------------------------- - -template <typename T> -void verify_cells_only(const ExpBuffer &exp, const TensorSpec &spec) { - nbostream input(&exp[0], exp.size()); - std::vector<T> cells; - TypedBinaryFormat::deserializeCellsOnlyFromDenseTensors(input, cells); - ASSERT_EQUAL(cells.size(), spec.cells().size()); - size_t i = 0; - for (const auto &cell: spec.cells()) { - EXPECT_EQUAL(cells[i++], cell.second.value); - } - ASSERT_EQUAL(i, cells.size()); -} - -TensorSpec verify_new_value_serialized(const ExpBuffer &exp, const TensorSpec &spec) { - const auto &factory = vespalib::eval::SimpleValueBuilderFactory::get(); - auto new_value = vespalib::eval::value_from_spec(spec, factory); - auto new_value_spec = vespalib::eval::spec_from_value(*new_value); - nbostream actual; - vespalib::eval::encode_value(*new_value, actual); - ASSERT_EQUAL(exp, actual); - auto new_decoded = vespalib::eval::decode_value(actual, factory); - auto new_decoded_spec = vespalib::eval::spec_from_value(*new_decoded); - EXPECT_EQUAL(0u, actual.size()); - EXPECT_EQUAL(new_value_spec, new_decoded_spec); - if (new_value->type().is_dense()) { - TEST_DO(verify_cells_only<float>(exp, new_value_spec)); - TEST_DO(verify_cells_only<double>(exp, new_value_spec)); - } - return new_decoded_spec; -} - -void verify_serialized(const ExpBuffer &exp, const TensorSpec &spec) { - auto &engine = DefaultTensorEngine::ref(); - auto value = engine.from_spec(spec); - auto value_spec = engine.to_spec(*value); - nbostream actual; - engine.encode(*value, actual); - EXPECT_EQUAL(exp, actual); - auto decoded = engine.decode(actual); - auto decoded_spec = engine.to_spec(*decoded); - EXPECT_EQUAL(0u, actual.size()); - EXPECT_EQUAL(value_spec, decoded_spec); - if (value->type().is_dense()) { - TEST_DO(verify_cells_only<float>(exp, value_spec)); - TEST_DO(verify_cells_only<double>(exp, value_spec)); - } - auto new_value_spec = verify_new_value_serialized(exp, spec); - EXPECT_EQUAL(value_spec, new_value_spec); -} - -//----------------------------------------------------------------------------- - -TEST("test tensor serialization for SparseTensor") { - TEST_DO(verify_serialized({ 0x01, 0x01, 0x01, 0x78, 0x00 }, - TensorSpec("tensor(x{})"))); - TEST_DO(verify_serialized({ 0x01, 0x02, 0x01, 0x78, 0x01, 0x79, 0x00 }, - TensorSpec("tensor(x{},y{})"))); - TEST_DO(verify_serialized({ 0x01, 0x01, 0x01, 0x78, 0x01, 0x01, 0x31, 0x40, - 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, - TensorSpec("tensor(x{})") - .add({{"x", "1"}}, 3))); - TEST_DO(verify_serialized({ 0x01, 0x02, 0x01, 0x78, 0x01, 0x79, 0x01, 0x00, - 0x00, 0x40, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00 }, - TensorSpec("tensor(x{},y{})") - .add({{"x", ""}, {"y", ""}}, 3))); - TEST_DO(verify_serialized({ 0x01, 0x02, 0x01, 0x78, 0x01, 0x79, 0x01, 0x01, - 0x31, 0x00, 0x40, 0x08, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00 }, - TensorSpec("tensor(x{},y{})") - .add({{"x", "1"}, {"y", ""}}, 3))); - TEST_DO(verify_serialized({ 0x01, 0x02, 0x01, 0x78, 0x01, 0x79, 0x01, 0x00, - 0x01, 0x33, 0x40, 0x08, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00 }, - TensorSpec("tensor(x{},y{})") - .add({{"x", ""}, {"y", "3"}}, 3))); - TEST_DO(verify_serialized({ 0x01, 0x02, 0x01, 0x78, 0x01, 0x79, 0x01, 0x01, - 0x32, 0x01, 0x34, 0x40, 0x08, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00 }, - TensorSpec("tensor(x{},y{})") - .add({{"x", "2"}, {"y", "4"}}, 3))); - TEST_DO(verify_serialized({ 0x01, 0x02, 0x01, 0x78, 0x01, 0x79, - 0x01, 0x01, 0x31, 0x00, 0x40, 0x08, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, - TensorSpec("tensor(x{},y{})") - .add({{"x", "1"}, {"y", ""}}, 3))); -} - -TEST("test float cells from sparse tensor") { - TEST_DO(verify_serialized({ 0x05, 0x01, - 0x02, 0x01, 0x78, 0x01, 0x79, - 0x01, 0x01, 0x31, 0x00, - 0x40, 0x40, 0x00, 0x00 }, - TensorSpec("tensor<float>(x{},y{})") - .add({{"x", "1"}, {"y", ""}}, 3))); -} - -TEST("test tensor serialization for DenseTensor") { - TEST_DO(verify_serialized({0x02, 0x00, - 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00}, - TensorSpec("double"))); - TEST_DO(verify_serialized({0x02, 0x01, 0x01, 0x78, 0x01, - 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00}, - TensorSpec("tensor(x[1])") - .add({{"x", 0}}, 0))); - TEST_DO(verify_serialized({0x02, 0x02, 0x01, 0x78, 0x01, - 0x01, 0x79, 0x01, - 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00}, - TensorSpec("tensor(x[1],y[1])") - .add({{"x", 0}, {"y", 0}}, 0))); - TEST_DO(verify_serialized({0x02, 0x01, 0x01, 0x78, 0x02, - 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, - 0x40, 0x08, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00}, - TensorSpec("tensor(x[2])") - .add({{"x", 1}}, 3))); - TEST_DO(verify_serialized({0x02, 0x02, 0x01, 0x78, 0x01, - 0x01, 0x79, 0x01, - 0x40, 0x08, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00}, - TensorSpec("tensor(x[1],y[1])") - .add({{"x", 0}, {"y", 0}}, 3))); - TEST_DO(verify_serialized({0x02, 0x02, 0x01, 0x78, 0x02, - 0x01, 0x79, 0x01, - 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, - 0x40, 0x08, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00}, - TensorSpec("tensor(x[2],y[1])") - .add({{"x", 1}, {"y", 0}}, 3))); - TEST_DO(verify_serialized({0x02, 0x02, 0x01, 0x78, 0x01, - 0x01, 0x79, 0x04, - 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, - 0x40, 0x08, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00}, - TensorSpec("tensor(x[1],y[4])") - .add({{"x", 0}, {"y", 3}}, 3))); - TEST_DO(verify_serialized({0x02, 0x02, 0x01, 0x78, 0x03, - 0x01, 0x79, 0x05, - 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, - 0x40, 0x08, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00}, - TensorSpec("tensor(x[3],y[5])") - .add({{"x", 2}, {"y", 4}}, 3))); -} - -TEST("test float cells for dense tensor") { - TEST_DO(verify_serialized({0x06, 0x01, 0x02, 0x01, 0x78, 0x03, - 0x01, 0x79, 0x05, - 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, - 0x40, 0x40, 0x00, 0x00 }, - TensorSpec("tensor<float>(x[3],y[5])") - .add({{"x", 2}, {"y", 4}}, 3))); -} - -TEST_MAIN() { TEST_RUN_ALL(); } |