diff options
author | Benoit Steiner <benoit.steiner.goog@gmail.com> | 2015-10-29 17:56:48 -0700 |
---|---|---|
committer | Benoit Steiner <benoit.steiner.goog@gmail.com> | 2015-10-29 17:56:48 -0700 |
commit | 31bdafac67268ace9c4eeda4a225379609ce8b99 (patch) | |
tree | 4319272836a27e6f126b84876596205e112df143 /unsupported/test | |
parent | ce19e38c1f1f31f7b7588504b3ce93c34bbd7a12 (diff) |
Added a few tests to cover rank-0 tensors
Diffstat (limited to 'unsupported/test')
-rw-r--r-- | unsupported/test/cxx11_tensor_fixed_size.cpp | 28 | ||||
-rw-r--r-- | unsupported/test/cxx11_tensor_map.cpp | 19 | ||||
-rw-r--r-- | unsupported/test/cxx11_tensor_simple.cpp | 30 |
3 files changed, 77 insertions, 0 deletions
diff --git a/unsupported/test/cxx11_tensor_fixed_size.cpp b/unsupported/test/cxx11_tensor_fixed_size.cpp index 5252e4d72..1c33fefb3 100644 --- a/unsupported/test/cxx11_tensor_fixed_size.cpp +++ b/unsupported/test/cxx11_tensor_fixed_size.cpp @@ -15,6 +15,33 @@ using Eigen::Tensor; using Eigen::RowMajor; +static void test_0d() +{ + TensorFixedSize<float, Sizes<> > scalar1; + TensorFixedSize<float, Sizes<>, RowMajor> scalar2; + VERIFY_IS_EQUAL(scalar1.rank(), 0); + + scalar1() = 7.0; + scalar2() = 13.0; + + // Test against shallow copy. + TensorFixedSize<float, Sizes<> > copy = scalar1; + VERIFY_IS_NOT_EQUAL(scalar1.data(), copy.data()); + VERIFY_IS_APPROX(scalar1(), copy()); + copy = scalar1; + VERIFY_IS_NOT_EQUAL(scalar1.data(), copy.data()); + VERIFY_IS_APPROX(scalar1(), copy()); + + TensorFixedSize<float, Sizes<> > scalar3 = scalar1.sqrt(); + TensorFixedSize<float, Sizes<>, RowMajor> scalar4 = scalar2.sqrt(); + VERIFY_IS_EQUAL(scalar3.rank(), 0); + VERIFY_IS_APPROX(scalar3(), sqrtf(7.0)); + VERIFY_IS_APPROX(scalar4(), sqrtf(13.0)); + + scalar3 = scalar1 + scalar2; + VERIFY_IS_APPROX(scalar3(), 7.0f + 13.0f); +} + static void test_1d() { TensorFixedSize<float, Sizes<6> > vec1; @@ -223,6 +250,7 @@ static void test_array() void test_cxx11_tensor_fixed_size() { + CALL_SUBTEST(test_0d()); CALL_SUBTEST(test_1d()); CALL_SUBTEST(test_tensor_map()); CALL_SUBTEST(test_2d()); diff --git a/unsupported/test/cxx11_tensor_map.cpp b/unsupported/test/cxx11_tensor_map.cpp index 4c4e10df2..9e79209bb 100644 --- a/unsupported/test/cxx11_tensor_map.cpp +++ b/unsupported/test/cxx11_tensor_map.cpp @@ -14,6 +14,24 @@ using Eigen::Tensor; using Eigen::RowMajor; +static void test_0d() +{ + Tensor<int, 0> scalar1; + Tensor<int, 0, RowMajor> scalar2; + + TensorMap<Tensor<const int, 0>> scalar3(scalar1.data()); + TensorMap<Tensor<const int, 0, RowMajor>> scalar4(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); +} + static void test_1d() { Tensor<int, 1> vec1(6); @@ -242,6 +260,7 @@ static void test_casting() void test_cxx11_tensor_map() { + CALL_SUBTEST(test_0d()); CALL_SUBTEST(test_1d()); CALL_SUBTEST(test_2d()); CALL_SUBTEST(test_3d()); diff --git a/unsupported/test/cxx11_tensor_simple.cpp b/unsupported/test/cxx11_tensor_simple.cpp index 0ce92eed9..47d4d8636 100644 --- a/unsupported/test/cxx11_tensor_simple.cpp +++ b/unsupported/test/cxx11_tensor_simple.cpp @@ -14,6 +14,35 @@ using Eigen::Tensor; using Eigen::RowMajor; +static void test_0d() +{ + Tensor<int, 0> scalar1; + Tensor<int, 0, RowMajor> scalar2; + Tensor<int, 0> scalar3; + Tensor<int, 0, RowMajor> scalar4; + + scalar3.resize(); + scalar4.resize(); + + scalar1() = 7; + scalar2() = 13; + scalar3.setValues(17); + scalar4.setZero(); + + VERIFY_IS_EQUAL(scalar1.rank(), 0); + VERIFY_IS_EQUAL(scalar1.size(), 1); + + VERIFY_IS_EQUAL(scalar1(), 7); + VERIFY_IS_EQUAL(scalar2(), 13); + VERIFY_IS_EQUAL(scalar3(), 17); + VERIFY_IS_EQUAL(scalar4(), 0); + + Tensor<int, 0> scalar5(scalar1); + + VERIFY_IS_EQUAL(scalar5(), 7); + VERIFY_IS_EQUAL(scalar5.data()[0], 7); +} + static void test_1d() { Tensor<int, 1> vec1(6); @@ -287,6 +316,7 @@ static void test_resize() void test_cxx11_tensor_simple() { + CALL_SUBTEST(test_0d()); CALL_SUBTEST(test_1d()); CALL_SUBTEST(test_2d()); CALL_SUBTEST(test_3d()); |