| 242 | |
| 243 | template<typename MatrixType> |
| 244 | void compare_using_data_and_stride(const MatrixType& m) |
| 245 | { |
| 246 | Index rows = m.rows(); |
| 247 | Index cols = m.cols(); |
| 248 | Index size = m.size(); |
| 249 | Index innerStride = m.innerStride(); |
| 250 | Index outerStride = m.outerStride(); |
| 251 | Index rowStride = m.rowStride(); |
| 252 | Index colStride = m.colStride(); |
| 253 | const typename MatrixType::Scalar* data = m.data(); |
| 254 | |
| 255 | for(int j=0;j<cols;++j) |
| 256 | for(int i=0;i<rows;++i) |
| 257 | VERIFY(m.coeff(i,j) == data[i*rowStride + j*colStride]); |
| 258 | |
| 259 | if(!MatrixType::IsVectorAtCompileTime) |
| 260 | { |
| 261 | for(int j=0;j<cols;++j) |
| 262 | for(int i=0;i<rows;++i) |
| 263 | VERIFY(m.coeff(i,j) == data[(MatrixType::Flags&RowMajorBit) |
| 264 | ? i*outerStride + j*innerStride |
| 265 | : j*outerStride + i*innerStride]); |
| 266 | } |
| 267 | |
| 268 | if(MatrixType::IsVectorAtCompileTime) |
| 269 | { |
| 270 | VERIFY(innerStride == int((&m.coeff(1))-(&m.coeff(0)))); |
| 271 | for (int i=0;i<size;++i) |
| 272 | VERIFY(m.coeff(i) == data[i*innerStride]); |
| 273 | } |
| 274 | } |
| 275 | |
| 276 | template<typename MatrixType> |
| 277 | void data_and_stride(const MatrixType& m) |
no test coverage detected