summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGeir Storli <geirst@verizonmedia.com>2019-02-08 14:18:47 +0000
committerGeir Storli <geirst@verizonmedia.com>2019-02-08 14:18:47 +0000
commit9ae0e25b9a9e88fe2c1b7e85769b9ffe2f00f188 (patch)
treec855407ec11b8b49559f74e218737cad0c0f211e
parent5f807f42708dc47e593131d170c848b5ccc1fe61 (diff)
Create common test function for creating a tensor using default tensor engine.
-rw-r--r--eval/src/tests/tensor/tensor_add_operation/tensor_add_operation_test.cpp16
-rw-r--r--eval/src/tests/tensor/tensor_mapper/tensor_mapper_test.cpp26
-rw-r--r--eval/src/tests/tensor/tensor_modify_operation/tensor_modify_operation_test.cpp24
-rw-r--r--eval/src/vespa/eval/tensor/test/test_utils.h22
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));
+}
+
+}