From 57154fdb32a4853bff458f8014b037d5e41b9858 Mon Sep 17 00:00:00 2001 From: Benoit Steiner Date: Thu, 26 Feb 2015 11:13:42 -0800 Subject: Can now use the tensor 'reverse' operation as a lvalue --- unsupported/test/cxx11_tensor_reverse.cpp | 35 ++++++++++++++++++++++--------- 1 file changed, 25 insertions(+), 10 deletions(-) (limited to 'unsupported/test/cxx11_tensor_reverse.cpp') diff --git a/unsupported/test/cxx11_tensor_reverse.cpp b/unsupported/test/cxx11_tensor_reverse.cpp index 4c0be35da..f96c21fa3 100644 --- a/unsupported/test/cxx11_tensor_reverse.cpp +++ b/unsupported/test/cxx11_tensor_reverse.cpp @@ -94,7 +94,7 @@ static void test_simple_reverse() template -static void test_expr_reverse() +static void test_expr_reverse(bool LValue) { Tensor tensor(2,3,5,7); tensor.setRandom(); @@ -105,9 +105,12 @@ static void test_expr_reverse() dim_rev[2] = false; dim_rev[3] = true; - - Tensor expected; - expected = tensor.reverse(dim_rev); + Tensor expected(2, 3, 5, 7); + if (LValue) { + expected.reverse(dim_rev) = tensor; + } else { + expected = tensor.reverse(dim_rev); + } Tensor result(2,3,5,7); @@ -117,8 +120,13 @@ static void test_expr_reverse() array dst_slice_start{{0,0,0,0}}; for (int i = 0; i < 5; ++i) { - result.slice(dst_slice_start, dst_slice_dim) = - tensor.slice(src_slice_start, src_slice_dim).reverse(dim_rev); + if (LValue) { + result.slice(dst_slice_start, dst_slice_dim).reverse(dim_rev) = + tensor.slice(src_slice_start, src_slice_dim); + } else { + result.slice(dst_slice_start, dst_slice_dim) = + tensor.slice(src_slice_start, src_slice_dim).reverse(dim_rev); + } src_slice_start[2] += 1; dst_slice_start[2] += 1; } @@ -141,8 +149,13 @@ static void test_expr_reverse() dst_slice_start[2] = 0; result.setRandom(); for (int i = 0; i < 5; ++i) { - result.slice(dst_slice_start, dst_slice_dim) = - tensor.reverse(dim_rev).slice(dst_slice_start, dst_slice_dim); + if (LValue) { + result.slice(dst_slice_start, dst_slice_dim).reverse(dim_rev) = + tensor.slice(dst_slice_start, dst_slice_dim); + } else { + result.slice(dst_slice_start, dst_slice_dim) = + tensor.reverse(dim_rev).slice(dst_slice_start, dst_slice_dim); + } dst_slice_start[2] += 1; } @@ -162,6 +175,8 @@ void test_cxx11_tensor_reverse() { CALL_SUBTEST(test_simple_reverse()); CALL_SUBTEST(test_simple_reverse()); - CALL_SUBTEST(test_expr_reverse()); - CALL_SUBTEST(test_expr_reverse()); + CALL_SUBTEST(test_expr_reverse(true)); + CALL_SUBTEST(test_expr_reverse(true)); + CALL_SUBTEST(test_expr_reverse(false)); + CALL_SUBTEST(test_expr_reverse(false)); } -- cgit v1.2.3