| 89 | |
| 90 | |
| 91 | static void test_slice() |
| 92 | { |
| 93 | Tensor<float, 5> tensor(2,3,5,7,11); |
| 94 | tensor.setRandom(); |
| 95 | |
| 96 | Eigen::DSizes<ptrdiff_t, 5> indices(1,2,3,4,5); |
| 97 | Eigen::DSizes<ptrdiff_t, 5> sizes(1,1,1,1,1); |
| 98 | TensorRef<Tensor<float, 5>> slice = tensor.slice(indices, sizes); |
| 99 | VERIFY_IS_EQUAL(slice(0,0,0,0,0), tensor(1,2,3,4,5)); |
| 100 | |
| 101 | Eigen::DSizes<ptrdiff_t, 5> indices2(1,1,3,4,5); |
| 102 | Eigen::DSizes<ptrdiff_t, 5> sizes2(1,1,2,2,3); |
| 103 | slice = tensor.slice(indices2, sizes2); |
| 104 | for (int i = 0; i < 2; ++i) { |
| 105 | for (int j = 0; j < 2; ++j) { |
| 106 | for (int k = 0; k < 3; ++k) { |
| 107 | VERIFY_IS_EQUAL(slice(0,0,i,j,k), tensor(1,1,3+i,4+j,5+k)); |
| 108 | } |
| 109 | } |
| 110 | } |
| 111 | |
| 112 | Eigen::DSizes<ptrdiff_t, 5> indices3(0,0,0,0,0); |
| 113 | Eigen::DSizes<ptrdiff_t, 5> sizes3(2,3,1,1,1); |
| 114 | slice = tensor.slice(indices3, sizes3); |
| 115 | VERIFY_IS_EQUAL(slice.data(), tensor.data()); |
| 116 | } |
| 117 | |
| 118 | |
| 119 | static void test_ref_of_ref() |
no test coverage detected