aboutsummaryrefslogtreecommitdiffhomepage
path: root/unsupported/test/cxx11_tensor_shuffling.cpp
diff options
context:
space:
mode:
authorGravatar Benoit Steiner <benoit.steiner.goog@gmail.com>2014-09-04 20:27:28 -0700
committerGravatar Benoit Steiner <benoit.steiner.goog@gmail.com>2014-09-04 20:27:28 -0700
commit1abe4ed14c0012d85e833c5f507f282cf26edc36 (patch)
treec9d8e8fc6f6fdcba6d3101a2e3baf5634ebffd8c /unsupported/test/cxx11_tensor_shuffling.cpp
parentd43f737b4ad52e84a3b4d954d9bfb4c40cf9e819 (diff)
Created more regression tests
Diffstat (limited to 'unsupported/test/cxx11_tensor_shuffling.cpp')
-rw-r--r--unsupported/test/cxx11_tensor_shuffling.cpp47
1 files changed, 47 insertions, 0 deletions
diff --git a/unsupported/test/cxx11_tensor_shuffling.cpp b/unsupported/test/cxx11_tensor_shuffling.cpp
index 92dd01a52..5ab8b6821 100644
--- a/unsupported/test/cxx11_tensor_shuffling.cpp
+++ b/unsupported/test/cxx11_tensor_shuffling.cpp
@@ -106,11 +106,58 @@ static void test_expr_shuffling()
}
}
}
+
+ dst_slice_start[0] = 0;
+ result.setRandom();
+ for (int i = 0; i < 5; ++i) {
+ result.slice(dst_slice_start, dst_slice_dim) =
+ tensor.shuffle(shuffles).slice(dst_slice_start, dst_slice_dim);
+ dst_slice_start[0] += 1;
+ }
+
+ for (int i = 0; i < expected.dimension(0); ++i) {
+ for (int j = 0; j < expected.dimension(1); ++j) {
+ for (int k = 0; k < expected.dimension(2); ++k) {
+ for (int l = 0; l < expected.dimension(3); ++l) {
+ VERIFY_IS_EQUAL(result(i,j,k,l), expected(i,j,k,l));
+ }
+ }
+ }
+ }
}
+static void test_shuffling_as_value()
+{
+ Tensor<float, 4> tensor(2,3,5,7);
+ tensor.setRandom();
+ array<ptrdiff_t, 4> shuffles;
+ shuffles[2] = 0;
+ shuffles[3] = 1;
+ shuffles[1] = 2;
+ shuffles[0] = 3;
+ Tensor<float, 4> shuffle(5,7,3,2);
+ shuffle.shuffle(shuffles) = tensor;
+
+ VERIFY_IS_EQUAL(shuffle.dimension(0), 5);
+ VERIFY_IS_EQUAL(shuffle.dimension(1), 7);
+ VERIFY_IS_EQUAL(shuffle.dimension(2), 3);
+ VERIFY_IS_EQUAL(shuffle.dimension(3), 2);
+
+ for (int i = 0; i < 2; ++i) {
+ for (int j = 0; j < 3; ++j) {
+ for (int k = 0; k < 5; ++k) {
+ for (int l = 0; l < 7; ++l) {
+ VERIFY_IS_EQUAL(tensor(i,j,k,l), shuffle(k,l,j,i));
+ }
+ }
+ }
+ }
+}
+
void test_cxx11_tensor_shuffling()
{
CALL_SUBTEST(test_simple_shuffling());
CALL_SUBTEST(test_expr_shuffling());
+ CALL_SUBTEST(test_shuffling_as_value());
}