diff options
author | Gael Guennebaud <g.gael@free.fr> | 2017-01-26 08:04:23 +0000 |
---|---|---|
committer | Gael Guennebaud <g.gael@free.fr> | 2017-01-26 08:04:23 +0000 |
commit | 25a17035798698187fc410d1bffb603f98992b56 (patch) | |
tree | 7af99be43c7d4f8b53d28231b80938550b590028 /test/block.cpp | |
parent | 7d39c6d50a594f37a2f1e5cb9140917993b5e776 (diff) | |
parent | 98dfe0c13f717c0572c55527f077ed01c110972c (diff) |
Merged in ggael/eigen-flexidexing (pull request PR-294)
generalized operator() for indexed access and slicing
Diffstat (limited to 'test/block.cpp')
-rw-r--r-- | test/block.cpp | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/test/block.cpp b/test/block.cpp index 39565af83..2520dfcdd 100644 --- a/test/block.cpp +++ b/test/block.cpp @@ -29,6 +29,13 @@ block_real_only(const MatrixType &, Index, Index, Index, Index, const Scalar&) { return Scalar(0); } +// Check at compile-time that T1==T2, and at runtime-time that a==b +template<typename T1,typename T2> +typename internal::enable_if<internal::is_same<T1,T2>::value,bool>::type +is_same_block(const T1& a, const T2& b) +{ + return a.isApprox(b); +} template<typename MatrixType> void block(const MatrixType& m) { @@ -106,6 +113,11 @@ template<typename MatrixType> void block(const MatrixType& m) m1.template block<BlockRows,Dynamic>(1,1,BlockRows,BlockCols)(0,3) = m1.template block<2,5>(1,1)(1,2); Matrix<Scalar,Dynamic,Dynamic> b2 = m1.template block<Dynamic,BlockCols>(3,3,2,5); VERIFY_IS_EQUAL(b2, m1.block(3,3,BlockRows,BlockCols)); + + VERIFY(is_same_block(m1.block(3,3,BlockRows,BlockCols), m1.block(3,3,fix<Dynamic>(BlockRows),fix<Dynamic>(BlockCols)))); + VERIFY(is_same_block(m1.template block<BlockRows,Dynamic>(1,1,BlockRows,BlockCols), m1.block(1,1,fix<BlockRows>,BlockCols))); + VERIFY(is_same_block(m1.template block<BlockRows,BlockCols>(1,1,BlockRows,BlockCols), m1.block(1,1,fix<BlockRows>(),fix<BlockCols>))); + VERIFY(is_same_block(m1.template block<BlockRows,BlockCols>(1,1,BlockRows,BlockCols), m1.block(1,1,fix<BlockRows>,fix<BlockCols>(BlockCols)))); } if (rows>2) |