MCPcopy Create free account
hub / github.com/PX4/eigen / run_vector_tests

Function run_vector_tests

test/conservative_resize.cpp:61–111  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

59
60template <typename Scalar>
61void run_vector_tests()
62{
63 typedef Matrix<Scalar, 1, Eigen::Dynamic> VectorType;
64
65 VectorType m, n;
66
67 // boundary cases ...
68 m = n = VectorType::Random(50);
69 m.conservativeResize(1);
70 VERIFY_IS_APPROX(m, n.segment(0,1));
71
72 m = n = VectorType::Random(50);
73 m.conservativeResize(50);
74 VERIFY_IS_APPROX(m, n.segment(0,50));
75
76 m = n = VectorType::Random(50);
77 m.conservativeResize(m.rows(),1);
78 VERIFY_IS_APPROX(m, n.segment(0,1));
79
80 m = n = VectorType::Random(50);
81 m.conservativeResize(m.rows(),50);
82 VERIFY_IS_APPROX(m, n.segment(0,50));
83
84 // random shrinking ...
85 for (int i=0; i<50; ++i)
86 {
87 const int size = internal::random<int>(1,50);
88 m = n = VectorType::Random(50);
89 m.conservativeResize(size);
90 VERIFY_IS_APPROX(m, n.segment(0,size));
91
92 m = n = VectorType::Random(50);
93 m.conservativeResize(m.rows(), size);
94 VERIFY_IS_APPROX(m, n.segment(0,size));
95 }
96
97 // random growing with zeroing ...
98 for (int i=0; i<50; ++i)
99 {
100 const int size = internal::random<int>(50,100);
101 m = n = VectorType::Random(50);
102 m.conservativeResizeLike(VectorType::Zero(size));
103 VERIFY_IS_APPROX(m.segment(0,50), n);
104 VERIFY( size<=50 || m.segment(50,size-50).sum() == Scalar(0) );
105
106 m = n = VectorType::Random(50);
107 m.conservativeResizeLike(Matrix<Scalar,Dynamic,Dynamic>::Zero(1,size));
108 VERIFY_IS_APPROX(m.segment(0,50), n);
109 VERIFY( size<=50 || m.segment(50,size-50).sum() == Scalar(0) );
110 }
111}
112
113void test_conservative_resize()
114{

Callers

nothing calls this directly

Calls 4

conservativeResizeMethod · 0.45
rowsMethod · 0.45
sumMethod · 0.45

Tested by

no test coverage detected