From bc40d4522c56fdf861fcdab28f4b7db609d8065e Mon Sep 17 00:00:00 2001 From: Eugene Zhulenev Date: Wed, 28 Aug 2019 17:46:05 -0700 Subject: Const correctness in TensorMap> expressions --- unsupported/test/cxx11_tensor_map.cpp | 41 ++++++++++++++++++++++++++++------- 1 file changed, 33 insertions(+), 8 deletions(-) (limited to 'unsupported/test/cxx11_tensor_map.cpp') diff --git a/unsupported/test/cxx11_tensor_map.cpp b/unsupported/test/cxx11_tensor_map.cpp index ce608aca7..dc8532f5c 100644 --- a/unsupported/test/cxx11_tensor_map.cpp +++ b/unsupported/test/cxx11_tensor_map.cpp @@ -19,8 +19,8 @@ static void test_0d() Tensor scalar1; Tensor scalar2; - TensorMap > scalar3(scalar1.data()); - TensorMap > scalar4(scalar2.data()); + TensorMap > scalar3(scalar1.data()); + TensorMap > scalar4(scalar2.data()); scalar1() = 7; scalar2() = 13; @@ -37,8 +37,8 @@ static void test_1d() Tensor vec1(6); Tensor vec2(6); - TensorMap > vec3(vec1.data(), 6); - TensorMap > vec4(vec2.data(), 6); + TensorMap > vec3(vec1.data(), 6); + TensorMap > vec4(vec2.data(), 6); vec1(0) = 4; vec2(0) = 0; vec1(1) = 8; vec2(1) = 1; @@ -85,8 +85,8 @@ static void test_2d() mat2(1,1) = 4; mat2(1,2) = 5; - TensorMap > mat3(mat1.data(), 2, 3); - TensorMap > mat4(mat2.data(), 2, 3); + TensorMap > mat3(mat1.data(), 2, 3); + TensorMap > mat4(mat2.data(), 2, 3); VERIFY_IS_EQUAL(mat3.rank(), 2); VERIFY_IS_EQUAL(mat3.size(), 6); @@ -129,8 +129,8 @@ static void test_3d() } } - TensorMap > mat3(mat1.data(), 2, 3, 7); - TensorMap > mat4(mat2.data(), 2, 3, 7); + TensorMap > mat3(mat1.data(), 2, 3, 7); + TensorMap > mat4(mat2.data(), 2, 3, 7); VERIFY_IS_EQUAL(mat3.rank(), 3); VERIFY_IS_EQUAL(mat3.size(), 2*3*7); @@ -265,6 +265,29 @@ static void test_casting() VERIFY_IS_EQUAL(sum1, 861); } +template +static const T& add_const(T& value) { + return value; +} + +static void test_0d_const_tensor() +{ + Tensor scalar1; + Tensor scalar2; + + TensorMap > scalar3(add_const(scalar1).data()); + TensorMap > scalar4(add_const(scalar2).data()); + + scalar1() = 7; + scalar2() = 13; + + VERIFY_IS_EQUAL(scalar1.rank(), 0); + VERIFY_IS_EQUAL(scalar1.size(), 1); + + VERIFY_IS_EQUAL(scalar3(), 7); + VERIFY_IS_EQUAL(scalar4(), 13); +} + EIGEN_DECLARE_TEST(cxx11_tensor_map) { CALL_SUBTEST(test_0d()); @@ -274,4 +297,6 @@ EIGEN_DECLARE_TEST(cxx11_tensor_map) CALL_SUBTEST(test_from_tensor()); CALL_SUBTEST(test_casting()); + + CALL_SUBTEST(test_0d_const_tensor()); } -- cgit v1.2.3