GCC Code Coverage Report


Directory: ./
File: unittest/all-joints.cpp
Date: 2025-04-30 16:14:33
Exec Total Coverage
Lines: 95 95 100.0%
Branches: 276 544 50.7%

Line Branch Exec Source
1 //
2 // Copyright(c) 2015-2021 CNRS INRIA
3 // Copyright(c) 2015 Wandercraft, 86 rue de Paris 91400 Orsay, France.
4 //
5
6 #include "pinocchio/math/fwd.hpp"
7 #include "pinocchio/multibody/joint/joints.hpp"
8 #include "pinocchio/algorithm/rnea.hpp"
9 #include "pinocchio/algorithm/aba.hpp"
10 #include "pinocchio/algorithm/crba.hpp"
11 #include "pinocchio/algorithm/jacobian.hpp"
12 #include "pinocchio/algorithm/compute-all-terms.hpp"
13
14 #include <boost/test/unit_test.hpp>
15 #include <iostream>
16
17 using namespace pinocchio;
18
19 template<typename JointModel_>
20 struct init;
21
22 template<typename JointModel_>
23 struct init
24 {
25 120 static JointModel_ run()
26 {
27 120 JointModel_ jmodel;
28 120 jmodel.setIndexes(0, 0, 0);
29 120 return jmodel;
30 }
31 };
32
33 template<typename Scalar, int Options>
34 struct init<pinocchio::JointModelRevoluteUnalignedTpl<Scalar, Options>>
35 {
36 typedef pinocchio::JointModelRevoluteUnalignedTpl<Scalar, Options> JointModel;
37
38 4 static JointModel run()
39 {
40 typedef typename JointModel::Vector3 Vector3;
41
2/4
✓ Branch 2 taken 4 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 4 times.
✗ Branch 6 not taken.
4 JointModel jmodel(Vector3::Random().normalized());
42
43 4 jmodel.setIndexes(0, 0, 0);
44 4 return jmodel;
45 }
46 };
47
48 template<typename Scalar, int Options>
49 struct init<pinocchio::JointModelRevoluteUnboundedUnalignedTpl<Scalar, Options>>
50 {
51 typedef pinocchio::JointModelRevoluteUnboundedUnalignedTpl<Scalar, Options> JointModel;
52
53 4 static JointModel run()
54 {
55 typedef typename JointModel::Vector3 Vector3;
56
2/4
✓ Branch 2 taken 4 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 4 times.
✗ Branch 6 not taken.
4 JointModel jmodel(Vector3::Random().normalized());
57
58 4 jmodel.setIndexes(0, 0, 0);
59 4 return jmodel;
60 }
61 };
62
63 template<typename Scalar, int Options>
64 struct init<pinocchio::JointModelPrismaticUnalignedTpl<Scalar, Options>>
65 {
66 typedef pinocchio::JointModelPrismaticUnalignedTpl<Scalar, Options> JointModel;
67
68 4 static JointModel run()
69 {
70 typedef typename JointModel::Vector3 Vector3;
71
2/4
✓ Branch 2 taken 4 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 4 times.
✗ Branch 6 not taken.
4 JointModel jmodel(Vector3::Random().normalized());
72
73 4 jmodel.setIndexes(0, 0, 0);
74 4 return jmodel;
75 }
76 };
77
78 template<typename Scalar, int Options, template<typename, int> class JointCollection>
79 struct init<pinocchio::JointModelTpl<Scalar, Options, JointCollection>>
80 {
81 typedef pinocchio::JointModelTpl<Scalar, Options, JointCollection> JointModel;
82
83 4 static JointModel run()
84 {
85 typedef pinocchio::JointModelRevoluteTpl<Scalar, Options, 0> JointModelRX;
86
1/2
✓ Branch 2 taken 4 times.
✗ Branch 3 not taken.
4 JointModel jmodel((JointModelRX()));
87
88
1/2
✓ Branch 1 taken 4 times.
✗ Branch 2 not taken.
4 jmodel.setIndexes(0, 0, 0);
89 4 return jmodel;
90 }
91 };
92
93 template<typename Scalar, int Options, template<typename, int> class JointCollection>
94 struct init<pinocchio::JointModelCompositeTpl<Scalar, Options, JointCollection>>
95 {
96 typedef pinocchio::JointModelCompositeTpl<Scalar, Options, JointCollection> JointModel;
97
98 4 static JointModel run()
99 {
100 typedef pinocchio::JointModelRevoluteTpl<Scalar, Options, 0> JointModelRX;
101 typedef pinocchio::JointModelRevoluteTpl<Scalar, Options, 1> JointModelRY;
102
2/4
✓ Branch 2 taken 4 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 4 times.
✗ Branch 6 not taken.
4 JointModel jmodel((JointModelRX()));
103
3/6
✓ Branch 1 taken 4 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 4 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 4 times.
✗ Branch 8 not taken.
4 jmodel.addJoint(JointModelRY());
104
105
1/2
✓ Branch 1 taken 4 times.
✗ Branch 2 not taken.
4 jmodel.setIndexes(0, 0, 0);
106 4 return jmodel;
107 }
108 };
109
110 template<typename Scalar, int Options, template<typename, int> class JointCollection>
111 struct init<pinocchio::JointModelMimicTpl<Scalar, Options, JointCollection>>
112 {
113 typedef pinocchio::JointModelMimicTpl<Scalar, Options, JointCollection> JointModel;
114
115 4 static JointModel run()
116 {
117
118 typedef pinocchio::JointModelRevoluteTpl<Scalar, Options, 0> JointModelRX;
119
1/2
✓ Branch 1 taken 4 times.
✗ Branch 2 not taken.
4 JointModelRX jmodel_ref = init<JointModelRX>::run();
120
121
1/2
✓ Branch 1 taken 4 times.
✗ Branch 2 not taken.
4 JointModel jmodel(jmodel_ref, 1., 0.);
122
1/2
✓ Branch 1 taken 4 times.
✗ Branch 2 not taken.
4 jmodel.setIndexes(1, 0, 0, 0);
123 8 return jmodel;
124 }
125 };
126
127 template<typename Scalar, int Options>
128 struct init<pinocchio::JointModelUniversalTpl<Scalar, Options>>
129 {
130 typedef pinocchio::JointModelUniversalTpl<Scalar, Options> JointModel;
131
132 4 static JointModel run()
133 {
134
2/4
✓ Branch 2 taken 4 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 4 times.
✗ Branch 6 not taken.
4 JointModel jmodel(XAxis::vector(), YAxis::vector());
135
136 4 jmodel.setIndexes(0, 0, 0);
137 4 return jmodel;
138 }
139 };
140
141 template<typename Scalar, int Options, int axis>
142 struct init<pinocchio::JointModelHelicalTpl<Scalar, Options, axis>>
143 {
144 typedef pinocchio::JointModelHelicalTpl<Scalar, Options, axis> JointModel;
145
146 24 static JointModel run()
147 {
148
1/2
✓ Branch 1 taken 12 times.
✗ Branch 2 not taken.
24 JointModel jmodel(static_cast<Scalar>(0.5));
149
150 24 jmodel.setIndexes(0, 0, 0);
151 24 return jmodel;
152 }
153 };
154
155 template<typename Scalar, int Options>
156 struct init<pinocchio::JointModelHelicalUnalignedTpl<Scalar, Options>>
157 {
158 typedef pinocchio::JointModelHelicalUnalignedTpl<Scalar, Options> JointModel;
159
160 4 static JointModel run()
161 {
162 typedef typename JointModel::Vector3 Vector3;
163
2/4
✓ Branch 2 taken 4 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 4 times.
✗ Branch 6 not taken.
4 JointModel jmodel(Vector3::Random().normalized());
164
165 4 jmodel.setIndexes(0, 0, 0);
166 4 return jmodel;
167 }
168 };
169
170 BOOST_AUTO_TEST_SUITE(joint_model_base_test)
171
172 template<typename TestDerived>
173 struct TestJointModel
174 {
175 template<typename JointModel>
176 200 void operator()(const pinocchio::JointModelBase<JointModel> &) const
177 {
178
1/2
✓ Branch 1 taken 100 times.
✗ Branch 2 not taken.
200 JointModel jmodel = init<JointModel>::run();
179
1/2
✓ Branch 1 taken 100 times.
✗ Branch 2 not taken.
400 return TestDerived::test(jmodel);
180 }
181 };
182
183 struct TestJointModelIsEqual : TestJointModel<TestJointModelIsEqual>
184 {
185 template<typename JointModel>
186 50 static void test(const JointModelBase<JointModel> & jmodel)
187 {
188
1/2
✓ Branch 2 taken 25 times.
✗ Branch 3 not taken.
50 JointModel jmodel_copy = jmodel.derived();
189
7/14
✓ Branch 1 taken 25 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 25 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 25 times.
✗ Branch 12 not taken.
✓ Branch 15 taken 25 times.
✗ Branch 16 not taken.
✓ Branch 18 taken 25 times.
✗ Branch 19 not taken.
✓ Branch 21 taken 25 times.
✗ Branch 22 not taken.
✗ Branch 26 not taken.
✓ Branch 27 taken 25 times.
50 BOOST_CHECK(jmodel_copy == jmodel.derived());
190
191
1/2
✓ Branch 1 taken 22 times.
✗ Branch 2 not taken.
50 JointModel jmodel_any;
192
7/14
✓ Branch 1 taken 25 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 25 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 25 times.
✗ Branch 12 not taken.
✓ Branch 15 taken 25 times.
✗ Branch 16 not taken.
✓ Branch 18 taken 25 times.
✗ Branch 19 not taken.
✓ Branch 21 taken 25 times.
✗ Branch 22 not taken.
✗ Branch 26 not taken.
✓ Branch 27 taken 25 times.
50 BOOST_CHECK(jmodel_any != jmodel.derived());
193
7/14
✓ Branch 1 taken 25 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 25 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 25 times.
✗ Branch 12 not taken.
✓ Branch 15 taken 25 times.
✗ Branch 16 not taken.
✓ Branch 18 taken 25 times.
✗ Branch 19 not taken.
✓ Branch 21 taken 25 times.
✗ Branch 22 not taken.
✗ Branch 26 not taken.
✓ Branch 27 taken 25 times.
50 BOOST_CHECK(!jmodel_any.isEqual(jmodel.derived()));
194 50 }
195 };
196
197 struct TestJointModelTransform : TestJointModel<TestJointModelTransform>
198 {
199 template<typename JointModel>
200 50 static void test(const JointModelBase<JointModel> & jmodel)
201 {
202 typedef typename JointModel::JointDataDerived JointData;
203
1/2
✓ Branch 1 taken 25 times.
✗ Branch 2 not taken.
50 JointData jdata = jmodel.createData();
204
6/8
✓ Branch 1 taken 2 times.
✓ Branch 2 taken 21 times.
✓ Branch 3 taken 2 times.
✓ Branch 4 taken 2 times.
✓ Branch 5 taken 15 times.
✗ Branch 6 not taken.
✓ Branch 7 taken 2 times.
✗ Branch 8 not taken.
50 Eigen::Matrix<typename JointModel::Scalar, 3, 1> t = jdata.M_accessor().translation();
205 PINOCCHIO_UNUSED_VARIABLE(t);
206
5/8
✓ Branch 1 taken 2 times.
✓ Branch 2 taken 23 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 2 times.
✓ Branch 5 taken 14 times.
✗ Branch 6 not taken.
✓ Branch 7 taken 2 times.
✗ Branch 8 not taken.
50 Eigen::Matrix<typename JointModel::Scalar, 3, 3> R = jdata.M_accessor().rotation();
207 PINOCCHIO_UNUSED_VARIABLE(R);
208 50 }
209 };
210
211
33/66
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 8 taken 1 times.
✗ Branch 9 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
✓ Branch 19 taken 1 times.
✗ Branch 20 not taken.
✓ Branch 23 taken 1 times.
✗ Branch 24 not taken.
✓ Branch 27 taken 1 times.
✗ Branch 28 not taken.
✓ Branch 30 taken 1 times.
✗ Branch 31 not taken.
✓ Branch 33 taken 1 times.
✗ Branch 34 not taken.
✓ Branch 36 taken 1 times.
✗ Branch 37 not taken.
✓ Branch 41 taken 1 times.
✗ Branch 42 not taken.
✓ Branch 45 taken 1 times.
✗ Branch 46 not taken.
✓ Branch 48 taken 1 times.
✗ Branch 49 not taken.
✓ Branch 52 taken 1 times.
✗ Branch 53 not taken.
✓ Branch 55 taken 1 times.
✗ Branch 56 not taken.
✓ Branch 58 taken 1 times.
✗ Branch 59 not taken.
✓ Branch 61 taken 1 times.
✗ Branch 62 not taken.
✓ Branch 66 taken 1 times.
✗ Branch 67 not taken.
✓ Branch 70 taken 1 times.
✗ Branch 71 not taken.
✓ Branch 73 taken 1 times.
✗ Branch 74 not taken.
✓ Branch 77 taken 1 times.
✗ Branch 78 not taken.
✓ Branch 80 taken 1 times.
✗ Branch 81 not taken.
✓ Branch 83 taken 1 times.
✗ Branch 84 not taken.
✓ Branch 86 taken 1 times.
✗ Branch 87 not taken.
✓ Branch 91 taken 1 times.
✗ Branch 92 not taken.
✓ Branch 95 taken 1 times.
✗ Branch 96 not taken.
✓ Branch 98 taken 1 times.
✗ Branch 99 not taken.
✓ Branch 102 taken 1 times.
✗ Branch 103 not taken.
✓ Branch 105 taken 1 times.
✗ Branch 106 not taken.
✓ Branch 108 taken 1 times.
✗ Branch 109 not taken.
✓ Branch 111 taken 1 times.
✗ Branch 112 not taken.
✓ Branch 116 taken 1 times.
✗ Branch 117 not taken.
4 BOOST_AUTO_TEST_CASE(isEqual)
212 {
213 typedef JointCollectionDefault::JointModelVariant JointModelVariant;
214
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 boost::mpl::for_each<JointModelVariant::types>(TestJointModelIsEqual());
215
216
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 JointModelRX joint_revolutex;
217
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 JointModelRY joint_revolutey;
218
219
7/14
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
✓ Branch 17 taken 1 times.
✗ Branch 18 not taken.
✓ Branch 20 taken 1 times.
✗ Branch 21 not taken.
✗ Branch 25 not taken.
✓ Branch 26 taken 1 times.
2 BOOST_CHECK(joint_revolutex != joint_revolutey);
220
221
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 JointModel jmodelx(joint_revolutex);
222
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 jmodelx.setIndexes(0, 0, 0);
223
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 TestJointModelIsEqual()(JointModel());
224
225
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 JointModel jmodel_any;
226
7/14
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
✓ Branch 17 taken 1 times.
✗ Branch 18 not taken.
✓ Branch 20 taken 1 times.
✗ Branch 21 not taken.
✗ Branch 25 not taken.
✓ Branch 26 taken 1 times.
2 BOOST_CHECK(jmodel_any != jmodelx);
227 2 }
228
229
33/66
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 8 taken 1 times.
✗ Branch 9 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
✓ Branch 19 taken 1 times.
✗ Branch 20 not taken.
✓ Branch 23 taken 1 times.
✗ Branch 24 not taken.
✓ Branch 27 taken 1 times.
✗ Branch 28 not taken.
✓ Branch 30 taken 1 times.
✗ Branch 31 not taken.
✓ Branch 33 taken 1 times.
✗ Branch 34 not taken.
✓ Branch 36 taken 1 times.
✗ Branch 37 not taken.
✓ Branch 41 taken 1 times.
✗ Branch 42 not taken.
✓ Branch 45 taken 1 times.
✗ Branch 46 not taken.
✓ Branch 48 taken 1 times.
✗ Branch 49 not taken.
✓ Branch 52 taken 1 times.
✗ Branch 53 not taken.
✓ Branch 55 taken 1 times.
✗ Branch 56 not taken.
✓ Branch 58 taken 1 times.
✗ Branch 59 not taken.
✓ Branch 61 taken 1 times.
✗ Branch 62 not taken.
✓ Branch 66 taken 1 times.
✗ Branch 67 not taken.
✓ Branch 70 taken 1 times.
✗ Branch 71 not taken.
✓ Branch 73 taken 1 times.
✗ Branch 74 not taken.
✓ Branch 77 taken 1 times.
✗ Branch 78 not taken.
✓ Branch 80 taken 1 times.
✗ Branch 81 not taken.
✓ Branch 83 taken 1 times.
✗ Branch 84 not taken.
✓ Branch 86 taken 1 times.
✗ Branch 87 not taken.
✓ Branch 91 taken 1 times.
✗ Branch 92 not taken.
✓ Branch 95 taken 1 times.
✗ Branch 96 not taken.
✓ Branch 98 taken 1 times.
✗ Branch 99 not taken.
✓ Branch 102 taken 1 times.
✗ Branch 103 not taken.
✓ Branch 105 taken 1 times.
✗ Branch 106 not taken.
✓ Branch 108 taken 1 times.
✗ Branch 109 not taken.
✓ Branch 111 taken 1 times.
✗ Branch 112 not taken.
✓ Branch 116 taken 1 times.
✗ Branch 117 not taken.
4 BOOST_AUTO_TEST_CASE(transform)
230 {
231 typedef JointCollectionDefault::JointModelVariant JointModelVariant;
232 2 boost::mpl::for_each<JointModelVariant::types>(TestJointModelTransform());
233
234
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 TestJointModelTransform()(JointModel());
235 2 }
236
237 struct TestJointModelCast : TestJointModel<TestJointModelCast>
238 {
239 template<typename JointModel>
240 50 static void test(const JointModelBase<JointModel> & jmodel)
241 {
242 typedef typename JointModel::Scalar Scalar;
243
6/12
✓ Branch 3 taken 25 times.
✗ Branch 4 not taken.
✓ Branch 9 taken 25 times.
✗ Branch 10 not taken.
✓ Branch 12 taken 25 times.
✗ Branch 13 not taken.
✓ Branch 15 taken 25 times.
✗ Branch 16 not taken.
✓ Branch 18 taken 25 times.
✗ Branch 19 not taken.
✗ Branch 23 not taken.
✓ Branch 24 taken 25 times.
50 BOOST_CHECK(jmodel == jmodel);
244
8/15
✓ Branch 3 taken 25 times.
✗ Branch 4 not taken.
✓ Branch 9 taken 25 times.
✗ Branch 10 not taken.
✓ Branch 12 taken 25 times.
✗ Branch 13 not taken.
✓ Branch 15 taken 25 times.
✗ Branch 16 not taken.
✓ Branch 18 taken 25 times.
✗ Branch 19 not taken.
✓ Branch 21 taken 25 times.
✗ Branch 22 not taken.
✗ Branch 26 not taken.
✓ Branch 27 taken 22 times.
✓ Branch 28 taken 3 times.
50 BOOST_CHECK(jmodel.template cast<Scalar>().isEqual(jmodel));
245
8/15
✓ Branch 3 taken 25 times.
✗ Branch 4 not taken.
✓ Branch 9 taken 25 times.
✗ Branch 10 not taken.
✓ Branch 12 taken 25 times.
✗ Branch 13 not taken.
✓ Branch 15 taken 25 times.
✗ Branch 16 not taken.
✓ Branch 18 taken 25 times.
✗ Branch 19 not taken.
✓ Branch 21 taken 25 times.
✗ Branch 22 not taken.
✗ Branch 26 not taken.
✓ Branch 27 taken 22 times.
✓ Branch 28 taken 3 times.
50 BOOST_CHECK(jmodel.template cast<Scalar>() == jmodel);
246
12/24
✓ Branch 3 taken 25 times.
✗ Branch 4 not taken.
✓ Branch 8 taken 25 times.
✗ Branch 9 not taken.
✓ Branch 11 taken 25 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 25 times.
✗ Branch 15 not taken.
✓ Branch 17 taken 25 times.
✗ Branch 18 not taken.
✓ Branch 20 taken 25 times.
✗ Branch 21 not taken.
✓ Branch 23 taken 25 times.
✗ Branch 24 not taken.
✓ Branch 26 taken 25 times.
✗ Branch 27 not taken.
✓ Branch 29 taken 25 times.
✗ Branch 30 not taken.
✓ Branch 32 taken 25 times.
✗ Branch 33 not taken.
✗ Branch 40 not taken.
✓ Branch 41 taken 22 times.
✗ Branch 42 not taken.
✓ Branch 43 taken 3 times.
50 BOOST_CHECK_MESSAGE(
247 jmodel.template cast<long double>().template cast<double>() == jmodel,
248 std::string("Error when casting " + jmodel.shortname() + " from long double to double."));
249 50 }
250 };
251
252
33/66
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 8 taken 1 times.
✗ Branch 9 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
✓ Branch 19 taken 1 times.
✗ Branch 20 not taken.
✓ Branch 23 taken 1 times.
✗ Branch 24 not taken.
✓ Branch 27 taken 1 times.
✗ Branch 28 not taken.
✓ Branch 30 taken 1 times.
✗ Branch 31 not taken.
✓ Branch 33 taken 1 times.
✗ Branch 34 not taken.
✓ Branch 36 taken 1 times.
✗ Branch 37 not taken.
✓ Branch 41 taken 1 times.
✗ Branch 42 not taken.
✓ Branch 45 taken 1 times.
✗ Branch 46 not taken.
✓ Branch 48 taken 1 times.
✗ Branch 49 not taken.
✓ Branch 52 taken 1 times.
✗ Branch 53 not taken.
✓ Branch 55 taken 1 times.
✗ Branch 56 not taken.
✓ Branch 58 taken 1 times.
✗ Branch 59 not taken.
✓ Branch 61 taken 1 times.
✗ Branch 62 not taken.
✓ Branch 66 taken 1 times.
✗ Branch 67 not taken.
✓ Branch 70 taken 1 times.
✗ Branch 71 not taken.
✓ Branch 73 taken 1 times.
✗ Branch 74 not taken.
✓ Branch 77 taken 1 times.
✗ Branch 78 not taken.
✓ Branch 80 taken 1 times.
✗ Branch 81 not taken.
✓ Branch 83 taken 1 times.
✗ Branch 84 not taken.
✓ Branch 86 taken 1 times.
✗ Branch 87 not taken.
✓ Branch 91 taken 1 times.
✗ Branch 92 not taken.
✓ Branch 95 taken 1 times.
✗ Branch 96 not taken.
✓ Branch 98 taken 1 times.
✗ Branch 99 not taken.
✓ Branch 102 taken 1 times.
✗ Branch 103 not taken.
✓ Branch 105 taken 1 times.
✗ Branch 106 not taken.
✓ Branch 108 taken 1 times.
✗ Branch 109 not taken.
✓ Branch 111 taken 1 times.
✗ Branch 112 not taken.
✓ Branch 116 taken 1 times.
✗ Branch 117 not taken.
4 BOOST_AUTO_TEST_CASE(cast)
253 {
254 typedef JointCollectionDefault::JointModelVariant JointModelVariant;
255 2 boost::mpl::for_each<JointModelVariant::types>(TestJointModelCast());
256
257
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 TestJointModelCast()(JointModel());
258 2 }
259
260 struct TestJointModelDisp : TestJointModel<TestJointModelDisp>
261 {
262 template<typename JointModel>
263 50 static void test(const JointModelBase<JointModel> & jmodel)
264 {
265 typedef typename JointModel::JointDataDerived JointData;
266
267
4/8
✓ Branch 1 taken 25 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 25 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 25 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 25 times.
✗ Branch 11 not taken.
50 std::cout << "shortname: " << jmodel.shortname() << std::endl;
268
4/8
✓ Branch 1 taken 25 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 25 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 25 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 25 times.
✗ Branch 11 not taken.
50 std::cout << "classname: " << jmodel.classname() << std::endl;
269
3/6
✓ Branch 1 taken 25 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 25 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 25 times.
✗ Branch 8 not taken.
50 std::cout << "disp:\n" << jmodel << std::endl;
270
271
1/2
✓ Branch 1 taken 25 times.
✗ Branch 2 not taken.
50 JointData jdata = jmodel.createData();
272
273
4/8
✓ Branch 1 taken 25 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 25 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 25 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 25 times.
✗ Branch 11 not taken.
50 std::cout << "shortname: " << jdata.shortname() << std::endl;
274
4/8
✓ Branch 1 taken 25 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 25 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 25 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 25 times.
✗ Branch 11 not taken.
50 std::cout << "classname: " << jdata.classname() << std::endl;
275
3/6
✓ Branch 1 taken 25 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 25 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 25 times.
✗ Branch 8 not taken.
50 std::cout << "disp:\n" << jdata << std::endl;
276 50 }
277 };
278
279
33/66
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 8 taken 1 times.
✗ Branch 9 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
✓ Branch 19 taken 1 times.
✗ Branch 20 not taken.
✓ Branch 23 taken 1 times.
✗ Branch 24 not taken.
✓ Branch 27 taken 1 times.
✗ Branch 28 not taken.
✓ Branch 30 taken 1 times.
✗ Branch 31 not taken.
✓ Branch 33 taken 1 times.
✗ Branch 34 not taken.
✓ Branch 36 taken 1 times.
✗ Branch 37 not taken.
✓ Branch 41 taken 1 times.
✗ Branch 42 not taken.
✓ Branch 45 taken 1 times.
✗ Branch 46 not taken.
✓ Branch 48 taken 1 times.
✗ Branch 49 not taken.
✓ Branch 52 taken 1 times.
✗ Branch 53 not taken.
✓ Branch 55 taken 1 times.
✗ Branch 56 not taken.
✓ Branch 58 taken 1 times.
✗ Branch 59 not taken.
✓ Branch 61 taken 1 times.
✗ Branch 62 not taken.
✓ Branch 66 taken 1 times.
✗ Branch 67 not taken.
✓ Branch 70 taken 1 times.
✗ Branch 71 not taken.
✓ Branch 73 taken 1 times.
✗ Branch 74 not taken.
✓ Branch 77 taken 1 times.
✗ Branch 78 not taken.
✓ Branch 80 taken 1 times.
✗ Branch 81 not taken.
✓ Branch 83 taken 1 times.
✗ Branch 84 not taken.
✓ Branch 86 taken 1 times.
✗ Branch 87 not taken.
✓ Branch 91 taken 1 times.
✗ Branch 92 not taken.
✓ Branch 95 taken 1 times.
✗ Branch 96 not taken.
✓ Branch 98 taken 1 times.
✗ Branch 99 not taken.
✓ Branch 102 taken 1 times.
✗ Branch 103 not taken.
✓ Branch 105 taken 1 times.
✗ Branch 106 not taken.
✓ Branch 108 taken 1 times.
✗ Branch 109 not taken.
✓ Branch 111 taken 1 times.
✗ Branch 112 not taken.
✓ Branch 116 taken 1 times.
✗ Branch 117 not taken.
4 BOOST_AUTO_TEST_CASE(test_disp)
280 {
281 typedef JointCollectionDefault::JointModelVariant JointModelVariant;
282 2 boost::mpl::for_each<JointModelVariant::types>(TestJointModelDisp());
283
284
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 TestJointModelDisp()(JointModel());
285 2 }
286
287 BOOST_AUTO_TEST_SUITE_END()
288