commainitializer.cpp File Reference
#include "main.h"

Classes

struct  test_block_recursion< depth, N >
 
struct  test_block_recursion< 0, N >
 

Functions

template<int M1, int M2, int N1, int N2>
void test_blocks ()
 
void test_basics ()
 
 EIGEN_DECLARE_TEST (commainitializer)
 

Function Documentation

◆ EIGEN_DECLARE_TEST()

EIGEN_DECLARE_TEST ( commainitializer  )
102  {
104 
105  // recursively test all block-sizes from 0 to 3:
107 }
void test_basics()
Definition: commainitializer.cpp:69
#define CALL_SUBTEST_1(FUNC)
Definition: split_test_helper.h:4
#define CALL_SUBTEST_2(FUNC)
Definition: split_test_helper.h:10
Definition: commainitializer.cpp:57

References CALL_SUBTEST_1, CALL_SUBTEST_2, and test_basics().

◆ test_basics()

void test_basics ( )
69  {
70  Matrix3d m3;
71  Matrix4d m4;
72 
73  VERIFY_RAISES_ASSERT((m3 << 1, 2, 3, 4, 5, 6, 7, 8));
74 
75 #ifndef _MSC_VER
76  VERIFY_RAISES_ASSERT((m3 << 1, 2, 3, 4, 5, 6, 7, 8, 9, 10));
77 #endif
78 
79  double data[] = {1, 2, 3, 4, 5, 6, 7, 8, 9};
80  Matrix3d ref = Map<Matrix<double, 3, 3, RowMajor> >(data);
81 
82  m3 = Matrix3d::Random();
83  m3 << 1, 2, 3, 4, 5, 6, 7, 8, 9;
84  VERIFY_IS_APPROX(m3, ref);
85 
86  Vector3d vec[3];
87  vec[0] << 1, 4, 7;
88  vec[1] << 2, 5, 8;
89  vec[2] << 3, 6, 9;
90  m3 = Matrix3d::Random();
91  m3 << vec[0], vec[1], vec[2];
92  VERIFY_IS_APPROX(m3, ref);
93 
94  vec[0] << 1, 2, 3;
95  vec[1] << 4, 5, 6;
96  vec[2] << 7, 8, 9;
97  m3 = Matrix3d::Random();
98  m3 << vec[0].transpose(), 4, 5, 6, vec[2].transpose();
99  VERIFY_IS_APPROX(m3, ref);
100 }
int data[]
Definition: Map_placement_new.cpp:1
A matrix or vector expression mapping an existing array of data.
Definition: Map.h:96
#define VERIFY_IS_APPROX(a, b)
Definition: integer_types.cpp:13
#define VERIFY_RAISES_ASSERT(a)
Definition: main.h:329

References data, VERIFY_IS_APPROX, and VERIFY_RAISES_ASSERT.

Referenced by EIGEN_DECLARE_TEST().

◆ test_blocks()

template<int M1, int M2, int N1, int N2>
void test_blocks ( )
13  {
15  MatrixXi m_dynamic(M1 + M2, N1 + N2);
16 
17  Matrix<int, M1, N1> mat11;
18  mat11.setRandom();
19  Matrix<int, M1, N2> mat12;
20  mat12.setRandom();
21  Matrix<int, M2, N1> mat21;
22  mat21.setRandom();
23  Matrix<int, M2, N2> mat22;
24  mat22.setRandom();
25 
26  MatrixXi matx11 = mat11, matx12 = mat12, matx21 = mat21, matx22 = mat22;
27 
28  {
29  VERIFY_IS_EQUAL((m_fixed << mat11, mat12, mat21, matx22).finished(),
30  (m_dynamic << mat11, matx12, mat21, matx22).finished());
31  VERIFY_IS_EQUAL((m_fixed.template topLeftCorner<M1, N1>()), mat11);
32  VERIFY_IS_EQUAL((m_fixed.template topRightCorner<M1, N2>()), mat12);
33  VERIFY_IS_EQUAL((m_fixed.template bottomLeftCorner<M2, N1>()), mat21);
34  VERIFY_IS_EQUAL((m_fixed.template bottomRightCorner<M2, N2>()), mat22);
35  VERIFY_IS_EQUAL((m_fixed << mat12, mat11, matx21, mat22).finished(),
36  (m_dynamic << mat12, matx11, matx21, mat22).finished());
37  }
38 
39  if (N1 > 0) {
40  if (M1 > 0) {
41  VERIFY_RAISES_ASSERT((m_fixed << mat11, mat12, mat11, mat21, mat22));
42  }
43  if (M2 > 0) {
44  VERIFY_RAISES_ASSERT((m_fixed << mat11, mat12, mat21, mat21, mat22));
45  }
46  } else {
47  // allow insertion of zero-column blocks:
48  VERIFY_IS_EQUAL((m_fixed << mat11, mat12, mat11, mat11, mat21, mat21, mat22).finished(),
49  (m_dynamic << mat12, mat22).finished());
50  }
51  if (M1 != M2) {
52  VERIFY_RAISES_ASSERT((m_fixed << mat11, mat21, mat12, mat22));
53  }
54 }
M1<< 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12;Map< MatrixXf > M2(M1.data(), 6, 2)
MatrixXf M1
Definition: Tutorial_SlicingCol.cpp:1
The matrix class, also used for vectors and row-vectors.
Definition: Eigen/Eigen/src/Core/Matrix.h:186
Derived & setRandom(Index size)
Definition: Random.h:147
#define VERIFY_IS_EQUAL(a, b)
Definition: main.h:367
bool finished
Definition: MergeRestartFiles.py:79

References MergeRestartFiles::finished, M1, M2(), Eigen::PlainObjectBase< Derived >::setRandom(), VERIFY_IS_EQUAL, and VERIFY_RAISES_ASSERT.

Referenced by test_block_recursion< 0, N >::run().