diff options
author | Geir Storli <geirst@verizonmedia.com> | 2019-02-08 14:18:47 +0000 |
---|---|---|
committer | Geir Storli <geirst@verizonmedia.com> | 2019-02-08 14:18:47 +0000 |
commit | 9ae0e25b9a9e88fe2c1b7e85769b9ffe2f00f188 (patch) | |
tree | c855407ec11b8b49559f74e218737cad0c0f211e /eval/src | |
parent | 5f807f42708dc47e593131d170c848b5ccc1fe61 (diff) |
Create common test function for creating a tensor using default tensor engine.
Diffstat (limited to 'eval/src')
4 files changed, 50 insertions, 38 deletions
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 index 5d017fdcd5c..5ac1c503b5d 100644 --- 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 @@ -3,27 +3,19 @@ #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/testkit/test_kit.h> using vespalib::eval::Value; using vespalib::eval::TensorSpec; +using vespalib::tensor::test::makeTensor; using namespace vespalib::tensor; -std::unique_ptr<Tensor> -makeTensor(const TensorSpec &spec) -{ - auto value = DefaultTensorEngine::ref().from_spec(spec); - const auto *tensor = dynamic_cast<const Tensor *>(value->as_tensor()); - ASSERT_TRUE(tensor); - value.release(); - return std::unique_ptr<Tensor>(const_cast<Tensor *>(tensor)); -} - void assertAdd(const TensorSpec &source, const TensorSpec &arg, const TensorSpec &expected) { - auto sourceTensor = makeTensor(source); - auto argTensor = makeTensor(arg); + auto sourceTensor = makeTensor<Tensor>(source); + auto argTensor = makeTensor<Tensor>(arg); auto resultTensor = sourceTensor->add(*argTensor); auto actual = resultTensor->toSpec(); EXPECT_EQUAL(actual, expected); diff --git a/eval/src/tests/tensor/tensor_mapper/tensor_mapper_test.cpp b/eval/src/tests/tensor/tensor_mapper/tensor_mapper_test.cpp index e369e09b99a..124295a500d 100644 --- a/eval/src/tests/tensor/tensor_mapper/tensor_mapper_test.cpp +++ b/eval/src/tests/tensor/tensor_mapper/tensor_mapper_test.cpp @@ -1,32 +1,36 @@ // 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/vespalib/util/stringfmt.h> +#include <vespa/eval/eval/simple_tensor.h> +#include <vespa/eval/eval/tensor_spec.h> +#include <vespa/eval/tensor/default_tensor_engine.h> #include <vespa/eval/tensor/tensor_mapper.h> +#include <vespa/eval/tensor/test/test_utils.h> #include <vespa/eval/tensor/wrapped_simple_tensor.h> -#include <vespa/eval/tensor/default_tensor_engine.h> -#include <vespa/eval/eval/tensor_spec.h> -#include <vespa/eval/eval/simple_tensor.h> +#include <vespa/vespalib/testkit/test_kit.h> +#include <vespa/vespalib/util/stringfmt.h> using vespalib::eval::ValueType; using vespalib::eval::Value; using vespalib::eval::TensorSpec; using vespalib::eval::SimpleTensor; +using vespalib::tensor::test::makeTensor; using namespace vespalib::tensor; -void verify_wrapped(const TensorSpec &source, const vespalib::string &type, const TensorSpec &expect) { +void +verify_wrapped(const TensorSpec &source, const vespalib::string &type, const TensorSpec &expect) +{ auto tensor = std::make_unique<WrappedSimpleTensor>(SimpleTensor::create(source)); auto mapped = TensorMapper::mapToWrapped(*tensor, ValueType::from_spec(type)); TensorSpec actual = mapped->toSpec(); EXPECT_EQUAL(actual, expect); } -void verify(const TensorSpec &source, const vespalib::string &type, const TensorSpec &expect) { - Value::UP value = DefaultTensorEngine::ref().from_spec(source); - const Tensor *tensor_impl = dynamic_cast<const Tensor *>(value->as_tensor()); - ASSERT_TRUE(tensor_impl); +void +verify(const TensorSpec &source, const vespalib::string &type, const TensorSpec &expect) +{ + auto tensor = makeTensor<Tensor>(source); TensorMapper mapper(ValueType::from_spec(type)); - auto mapped = mapper.map(*tensor_impl); + auto mapped = mapper.map(*tensor); TensorSpec actual = mapped->toSpec(); EXPECT_EQUAL(actual, expect); TEST_DO(verify_wrapped(source, type, expect)); 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 index c3c817d28c4..5cacff1881b 100644 --- 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 @@ -4,11 +4,13 @@ #include <vespa/vespalib/util/stringfmt.h> #include <vespa/eval/tensor/cell_values.h> #include <vespa/eval/tensor/sparse/sparse_tensor.h> +#include <vespa/eval/tensor/test/test_utils.h> #include <vespa/eval/tensor/default_tensor_engine.h> #include <vespa/eval/eval/tensor_spec.h> using vespalib::eval::Value; using vespalib::eval::TensorSpec; +using vespalib::tensor::test::makeTensor; using namespace vespalib::tensor; namespace { @@ -19,26 +21,18 @@ replace(double, double b) return b; } -template <typename Tensor> -const Tensor *asTensor(Value &value) -{ - auto *tensor = dynamic_cast<const Tensor *>(value.as_tensor()); - ASSERT_TRUE(tensor); - return tensor; -} - } -void checkUpdate(const TensorSpec &source, const TensorSpec &update, const TensorSpec &expect) { - auto sourceValue = DefaultTensorEngine::ref().from_spec(source); - auto sourceTensor = asTensor<Tensor>(*sourceValue); - auto updateValue = DefaultTensorEngine::ref().from_spec(update); - auto updateTensor = asTensor<SparseTensor>(*updateValue); +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(replace, cellValues); auto actual = actualTensor->toSpec(); - auto expectValue = DefaultTensorEngine::ref().from_spec(expect); - auto expectTensor = asTensor<Tensor>(*expectValue); + auto expectTensor = makeTensor<Tensor>(expect); auto expectPadded = expectTensor->toSpec(); EXPECT_EQUAL(actual, expectPadded); } diff --git a/eval/src/vespa/eval/tensor/test/test_utils.h b/eval/src/vespa/eval/tensor/test/test_utils.h new file mode 100644 index 00000000000..61b5c8d2809 --- /dev/null +++ b/eval/src/vespa/eval/tensor/test/test_utils.h @@ -0,0 +1,22 @@ +// Copyright 2019 Oath Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. + +#pragma once + +#include <vespa/eval/eval/tensor_spec.h> +#include <vespa/eval/tensor/default_tensor_engine.h> +#include <vespa/vespalib/testkit/test_kit.h> + +namespace vespalib::tensor::test { + +template <typename T> +std::unique_ptr<T> +makeTensor(const vespalib::eval::TensorSpec &spec) +{ + auto value = DefaultTensorEngine::ref().from_spec(spec); + const T *tensor = dynamic_cast<const T *>(value->as_tensor()); + ASSERT_TRUE(tensor); + value.release(); + return std::unique_ptr<T>(const_cast<T *>(tensor)); +} + +} |