| Line | Branch | Exec | Source |
|---|---|---|---|
| 1 | // | ||
| 2 | // Copyright (c) 2018 CNRS | ||
| 3 | // Authors: Pierre Fernbach | ||
| 4 | // | ||
| 5 | // This file is part of bezier_COM_traj | ||
| 6 | // hpp-core is free software: you can redistribute it | ||
| 7 | // and/or modify it under the terms of the GNU Lesser General Public | ||
| 8 | // License as published by the Free Software Foundation, either version | ||
| 9 | // 3 of the License, or (at your option) any later version. | ||
| 10 | // | ||
| 11 | // hpp-core is distributed in the hope that it will be | ||
| 12 | // useful, but WITHOUT ANY WARRANTY; without even the implied warranty | ||
| 13 | // of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | ||
| 14 | // General Lesser Public License for more details. You should have | ||
| 15 | // received a copy of the GNU Lesser General Public License along with | ||
| 16 | // hpp-core If not, see | ||
| 17 | // <http://www.gnu.org/licenses/>. | ||
| 18 | |||
| 19 | #define BOOST_TEST_MODULE transition | ||
| 20 | #include <ndcurves/bezier_curve.h> | ||
| 21 | |||
| 22 | #include <boost/test/included/unit_test.hpp> | ||
| 23 | #include <hpp/bezier-com-traj/common_solve_methods.hh> | ||
| 24 | #include <hpp/bezier-com-traj/data.hh> | ||
| 25 | #include <hpp/bezier-com-traj/solve.hh> | ||
| 26 | #include <hpp/centroidal-dynamics/centroidal_dynamics.hh> | ||
| 27 | |||
| 28 | #include "test_helper.hh" | ||
| 29 | |||
| 30 | using namespace bezier_com_traj; | ||
| 31 | const double T = 1.5; | ||
| 32 | |||
| 33 | 14 | ProblemData buildPData(const centroidal_dynamics::EquilibriumAlgorithm algo = | |
| 34 | centroidal_dynamics::EQUILIBRIUM_ALGORITHM_PP) { | ||
| 35 |
1/2✓ Branch 1 taken 14 times.
✗ Branch 2 not taken.
|
14 | ProblemData pData; |
| 36 |
1/2✓ Branch 1 taken 14 times.
✗ Branch 2 not taken.
|
14 | pData.c0_ = Vector3(0, 0.5, 5.); |
| 37 |
1/2✓ Branch 1 taken 14 times.
✗ Branch 2 not taken.
|
14 | pData.c1_ = Vector3(2, -0.5, 5.); |
| 38 |
2/4✓ Branch 1 taken 14 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 14 times.
✗ Branch 5 not taken.
|
14 | pData.dc0_ = Vector3::Zero(); |
| 39 |
2/4✓ Branch 1 taken 14 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 14 times.
✗ Branch 5 not taken.
|
14 | pData.dc1_ = Vector3::Zero(); |
| 40 |
2/4✓ Branch 1 taken 14 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 14 times.
✗ Branch 5 not taken.
|
14 | pData.ddc0_ = Vector3::Zero(); |
| 41 |
2/4✓ Branch 1 taken 14 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 14 times.
✗ Branch 5 not taken.
|
14 | pData.ddc1_ = Vector3::Zero(); |
| 42 | 14 | pData.constraints_.flag_ = INIT_POS | INIT_VEL | END_VEL | END_POS; | |
| 43 | |||
| 44 |
2/4✓ Branch 1 taken 14 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 14 times.
✗ Branch 5 not taken.
|
14 | MatrixX3 normals(2, 3), positions(2, 3); |
| 45 |
3/6✓ Branch 1 taken 14 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 14 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 14 times.
✗ Branch 8 not taken.
|
14 | normals.block<1, 3>(0, 0) = Vector3(0, 0, 1); |
| 46 |
3/6✓ Branch 1 taken 14 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 14 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 14 times.
✗ Branch 8 not taken.
|
14 | positions.block<1, 3>(0, 0) = Vector3(0, 0.1, 0); |
| 47 |
3/6✓ Branch 1 taken 14 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 14 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 14 times.
✗ Branch 8 not taken.
|
14 | normals.block<1, 3>(1, 0) = Vector3(0, 0, 1); |
| 48 |
3/6✓ Branch 1 taken 14 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 14 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 14 times.
✗ Branch 8 not taken.
|
14 | positions.block<1, 3>(1, 0) = Vector3(0, -0.1, 0); |
| 49 | std::pair<MatrixX3, MatrixX3> contacts = | ||
| 50 |
3/6✓ Branch 1 taken 14 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 14 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 14 times.
✗ Branch 8 not taken.
|
14 | computeRectangularContacts(normals, positions, LX, LY); |
| 51 |
2/6✓ Branch 1 taken 14 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 14 times.
✗ Branch 5 not taken.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
|
14 | pData.contacts_.push_back(new centroidal_dynamics::Equilibrium( |
| 52 |
4/8✓ Branch 1 taken 14 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 14 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 14 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 14 times.
✗ Branch 11 not taken.
|
28 | ComputeContactCone(contacts.first, contacts.second, algo))); |
| 53 | |||
| 54 | 28 | return pData; | |
| 55 | 14 | } | |
| 56 | |||
| 57 | 6 | std::vector<point_t> generate_wps() { | |
| 58 |
2/4✓ Branch 1 taken 6 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 6 times.
✗ Branch 5 not taken.
|
6 | return computeConstantWaypoints(buildPData(), T); |
| 59 | } | ||
| 60 | |||
| 61 | 6 | bezier_wp_t::t_point_t generate_wps_symbolic() { | |
| 62 |
2/4✓ Branch 1 taken 6 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 6 times.
✗ Branch 5 not taken.
|
6 | return computeConstantWaypointsSymbolic(buildPData(), T); |
| 63 | } | ||
| 64 | |||
| 65 | 21762 | VectorX eval(const waypoint_t& w, const point_t& x) { | |
| 66 |
3/6✓ Branch 1 taken 21762 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 21762 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 21762 times.
✗ Branch 8 not taken.
|
21762 | return w.first * x + w.second; |
| 67 | } | ||
| 68 | |||
| 69 | 16143 | void vectorEqual(const VectorX& a, const VectorX& b, const double EPS = 1e-14) { | |
| 70 |
5/10✓ Branch 1 taken 16143 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 16143 times.
✗ Branch 6 not taken.
✓ Branch 12 taken 16143 times.
✗ Branch 13 not taken.
✓ Branch 15 taken 16143 times.
✗ Branch 16 not taken.
✗ Branch 19 not taken.
✓ Branch 20 taken 16143 times.
|
16143 | BOOST_CHECK_EQUAL(a.size(), b.size()); |
| 71 |
8/16✓ Branch 1 taken 16143 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 16143 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 16143 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 16143 times.
✗ Branch 15 not taken.
✓ Branch 17 taken 16143 times.
✗ Branch 18 not taken.
✓ Branch 20 taken 16143 times.
✗ Branch 21 not taken.
✓ Branch 23 taken 16143 times.
✗ Branch 24 not taken.
✗ Branch 28 not taken.
✓ Branch 29 taken 16143 times.
|
16143 | BOOST_CHECK((a - b).norm() < EPS); |
| 72 | 16143 | } | |
| 73 | |||
| 74 | BOOST_AUTO_TEST_SUITE(symbolic) | ||
| 75 | |||
| 76 |
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(symbolic_eval_c) { |
| 77 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | std::vector<point_t> pts = generate_wps(); |
| 78 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | bezier_wp_t::t_point_t wps = generate_wps_symbolic(); |
| 79 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | point_t y(1, 0.2, 4.5); |
| 80 |
1/2✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
|
2 | pts[2] = y; |
| 81 | |||
| 82 |
1/2✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
|
2 | bezier_t c(pts.begin(), pts.end(), 0., T); |
| 83 |
1/2✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
|
2 | bezier_wp_t c_sym(wps.begin(), wps.end(), 0., T); |
| 84 | |||
| 85 | 2 | double t = 0.; | |
| 86 |
2/2✓ Branch 0 taken 150 times.
✓ Branch 1 taken 1 times.
|
302 | while (t < T) { |
| 87 |
5/10✓ Branch 1 taken 150 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 150 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 150 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 150 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 150 times.
✗ Branch 14 not taken.
|
300 | vectorEqual(c(t), eval(c_sym(t), y)); |
| 88 | 300 | t += 0.01; | |
| 89 | } | ||
| 90 | 2 | } | |
| 91 | |||
| 92 |
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(symbolic_eval_dc) { |
| 93 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | std::vector<point_t> pts = generate_wps(); |
| 94 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | bezier_wp_t::t_point_t wps = generate_wps_symbolic(); |
| 95 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | point_t y(1, 0.2, 4.5); |
| 96 |
1/2✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
|
2 | pts[2] = y; |
| 97 | |||
| 98 |
1/2✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
|
2 | bezier_t c(pts.begin(), pts.end(), 0., T); |
| 99 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | bezier_t dc = c.compute_derivate(1); |
| 100 |
1/2✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
|
2 | bezier_wp_t c_sym(wps.begin(), wps.end(), 0., T); |
| 101 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | bezier_wp_t dc_sym = c_sym.compute_derivate(1); |
| 102 | |||
| 103 | 2 | double t = 0.; | |
| 104 |
2/2✓ Branch 0 taken 150 times.
✓ Branch 1 taken 1 times.
|
302 | while (t < T) { |
| 105 |
5/10✓ Branch 1 taken 150 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 150 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 150 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 150 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 150 times.
✗ Branch 14 not taken.
|
300 | vectorEqual(dc(t), eval(dc_sym(t), y)); |
| 106 | 300 | t += 0.01; | |
| 107 | } | ||
| 108 | 2 | } | |
| 109 | |||
| 110 |
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(symbolic_eval_ddc) { |
| 111 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | std::vector<point_t> pts = generate_wps(); |
| 112 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | bezier_wp_t::t_point_t wps = generate_wps_symbolic(); |
| 113 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | point_t y(1, 0.2, 4.5); |
| 114 |
1/2✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
|
2 | pts[2] = y; |
| 115 | |||
| 116 |
1/2✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
|
2 | bezier_t c(pts.begin(), pts.end(), 0., T); |
| 117 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | bezier_t ddc = c.compute_derivate(2); |
| 118 |
1/2✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
|
2 | bezier_wp_t c_sym(wps.begin(), wps.end(), 0., T); |
| 119 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | bezier_wp_t ddc_sym = c_sym.compute_derivate(2); |
| 120 | |||
| 121 | 2 | double t = 0.; | |
| 122 |
2/2✓ Branch 0 taken 150 times.
✓ Branch 1 taken 1 times.
|
302 | while (t < T) { |
| 123 |
5/10✓ Branch 1 taken 150 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 150 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 150 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 150 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 150 times.
✗ Branch 14 not taken.
|
300 | vectorEqual(ddc(t), eval(ddc_sym(t), y), 1e-10); |
| 124 | 300 | t += 0.01; | |
| 125 | } | ||
| 126 | 2 | } | |
| 127 | |||
| 128 |
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(symbolic_eval_jc) { |
| 129 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | std::vector<point_t> pts = generate_wps(); |
| 130 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | bezier_wp_t::t_point_t wps = generate_wps_symbolic(); |
| 131 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | point_t y(1, 0.2, 4.5); |
| 132 |
1/2✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
|
2 | pts[2] = y; |
| 133 | |||
| 134 |
1/2✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
|
2 | bezier_t c(pts.begin(), pts.end(), 0., T); |
| 135 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | bezier_t jc = c.compute_derivate(3); |
| 136 |
1/2✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
|
2 | bezier_wp_t c_sym(wps.begin(), wps.end(), 0., T); |
| 137 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | bezier_wp_t jc_sym = c_sym.compute_derivate(3); |
| 138 | |||
| 139 | 2 | double t = 0.; | |
| 140 |
2/2✓ Branch 0 taken 150 times.
✓ Branch 1 taken 1 times.
|
302 | while (t < T) { |
| 141 |
5/10✓ Branch 1 taken 150 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 150 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 150 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 150 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 150 times.
✗ Branch 14 not taken.
|
300 | vectorEqual(jc(t), eval(jc_sym(t), y), 1e-10); |
| 142 | 300 | t += 0.01; | |
| 143 | } | ||
| 144 | 2 | } | |
| 145 | |||
| 146 |
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(symbolic_split_c) { |
| 147 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | std::vector<point_t> pts = generate_wps(); |
| 148 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | bezier_wp_t::t_point_t wps = generate_wps_symbolic(); |
| 149 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | point_t y(1, 0.2, 4.5); |
| 150 |
1/2✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
|
2 | pts[2] = y; |
| 151 | |||
| 152 |
1/2✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
|
2 | bezier_t c(pts.begin(), pts.end(), 0., T); |
| 153 |
1/2✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
|
2 | bezier_wp_t c_sym(wps.begin(), wps.end(), 0., T); |
| 154 | |||
| 155 | double a, b, t, t1, t2; | ||
| 156 |
2/2✓ Branch 0 taken 100 times.
✓ Branch 1 taken 1 times.
|
202 | for (size_t i = 0; i < 100; ++i) { |
| 157 | 200 | a = (rand() / (double)RAND_MAX) * T; | |
| 158 | 200 | b = (rand() / (double)RAND_MAX) * T; | |
| 159 | 200 | t1 = std::min(a, b); | |
| 160 | 200 | t2 = std::max(a, b); | |
| 161 | // std::cout<<"try extract between : ["<<t1<<";"<<t2<<"] "<<std::endl; | ||
| 162 |
1/2✓ Branch 1 taken 100 times.
✗ Branch 2 not taken.
|
200 | bezier_t c_e = c.extract(t1, t2); |
| 163 |
1/2✓ Branch 1 taken 100 times.
✗ Branch 2 not taken.
|
200 | bezier_wp_t c_sym_e = c_sym.extract(t1, t2); |
| 164 | 200 | t = t1; | |
| 165 |
2/2✓ Branch 0 taken 4962 times.
✓ Branch 1 taken 100 times.
|
10124 | while (t < t2) { |
| 166 |
5/10✓ Branch 1 taken 4962 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 4962 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 4962 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 4962 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 4962 times.
✗ Branch 14 not taken.
|
9924 | vectorEqual(c_e(t), eval(c_sym_e(t), y)); |
| 167 |
5/10✓ Branch 1 taken 4962 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 4962 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 4962 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 4962 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 4962 times.
✗ Branch 14 not taken.
|
9924 | vectorEqual(c(t), eval(c_sym_e(t), y)); |
| 168 | 9924 | t += 0.01; | |
| 169 | } | ||
| 170 | 200 | } | |
| 171 | 2 | } | |
| 172 | |||
| 173 |
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(symbolic_split_c_bench) { |
| 174 | using namespace std; | ||
| 175 | |||
| 176 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | std::vector<point_t> pts = generate_wps(); |
| 177 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | bezier_wp_t::t_point_t wps = generate_wps_symbolic(); |
| 178 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | point_t y(1, 0.2, 4.5); |
| 179 |
1/2✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
|
2 | pts[2] = y; |
| 180 | |||
| 181 |
1/2✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
|
2 | bezier_wp_t c_sym(wps.begin(), wps.end(), 0., T); |
| 182 | |||
| 183 | 2 | std::vector<double> values; | |
| 184 |
3/4✓ Branch 2 taken 100000 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 100000 times.
✓ Branch 5 taken 1 times.
|
200002 | for (int i = 0; i < 100000; ++i) values.push_back((double)rand() / RAND_MAX); |
| 185 | |||
| 186 | clock_t s0, e0; | ||
| 187 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | std::pair<bezier_wp_t, bezier_wp_t> splitted = c_sym.split(0.5); |
| 188 | 2 | s0 = clock(); | |
| 189 | 2 | for (std::vector<double>::const_iterator cit = values.begin(); | |
| 190 |
2/2✓ Branch 2 taken 100000 times.
✓ Branch 3 taken 1 times.
|
200002 | cit != values.end(); ++cit) { |
| 191 |
2/4✓ Branch 2 taken 100000 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 100000 times.
✗ Branch 6 not taken.
|
200000 | splitted = c_sym.split(*cit); |
| 192 | } | ||
| 193 | 2 | e0 = clock(); | |
| 194 | |||
| 195 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | std::cout << "Time required to split a c curve : " |
| 196 |
2/4✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
|
2 | << ((double)(e0 - s0) / CLOCKS_PER_SEC) / 100. << " ms " |
| 197 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | << std::endl; |
| 198 | 2 | } | |
| 199 | |||
| 200 |
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(symbolic_split_w) { |
| 201 |
2/4✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
|
2 | bezier_wp_t::t_point_t wps = computeWwaypoints(buildPData(), T); |
| 202 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | point_t y(1, 0.2, 4.5); |
| 203 | |||
| 204 |
1/2✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
|
2 | bezier_wp_t w(wps.begin(), wps.end(), 0., T); |
| 205 | |||
| 206 | double a, b, t, t1, t2; | ||
| 207 |
2/2✓ Branch 0 taken 100 times.
✓ Branch 1 taken 1 times.
|
202 | for (size_t i = 0; i < 100; ++i) { |
| 208 | 200 | a = (rand() / (double)RAND_MAX) * T; | |
| 209 | 200 | b = (rand() / (double)RAND_MAX) * T; | |
| 210 | 200 | t1 = std::min(a, b); | |
| 211 | 200 | t2 = std::max(a, b); | |
| 212 | // std::cout<<"try extract between : ["<<t1<<";"<<t2<<"] "<<std::endl; | ||
| 213 |
1/2✓ Branch 1 taken 100 times.
✗ Branch 2 not taken.
|
200 | bezier_wp_t w_e = w.extract(t1, t2); |
| 214 | 200 | t = t1; | |
| 215 |
2/2✓ Branch 0 taken 5619 times.
✓ Branch 1 taken 100 times.
|
11438 | while (t < t2) { |
| 216 |
5/10✓ Branch 1 taken 5619 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 5619 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 5619 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 5619 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 5619 times.
✗ Branch 14 not taken.
|
11238 | vectorEqual(eval(w(t), y), eval(w_e(t), y), 1e-12); |
| 217 | 11238 | t += 0.01; | |
| 218 | } | ||
| 219 | 200 | } | |
| 220 | 2 | } | |
| 221 | |||
| 222 |
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(symbolic_split_w_bench) { |
| 223 |
2/4✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
|
2 | bezier_wp_t::t_point_t wps = computeWwaypoints(buildPData(), T); |
| 224 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | point_t y(1, 0.2, 4.5); |
| 225 | |||
| 226 |
1/2✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
|
2 | bezier_wp_t w(wps.begin(), wps.end(), 0., T); |
| 227 | |||
| 228 | 2 | std::vector<double> values; | |
| 229 |
3/4✓ Branch 2 taken 100000 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 100000 times.
✓ Branch 5 taken 1 times.
|
200002 | for (int i = 0; i < 100000; ++i) values.push_back((double)rand() / RAND_MAX); |
| 230 | |||
| 231 | clock_t s0, e0; | ||
| 232 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | std::pair<bezier_wp_t, bezier_wp_t> splitted = w.split(0.5); |
| 233 | 2 | s0 = clock(); | |
| 234 | 2 | for (std::vector<double>::const_iterator cit = values.begin(); | |
| 235 |
2/2✓ Branch 2 taken 100000 times.
✓ Branch 3 taken 1 times.
|
200002 | cit != values.end(); ++cit) { |
| 236 |
2/4✓ Branch 2 taken 100000 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 100000 times.
✗ Branch 6 not taken.
|
200000 | splitted = w.split(*cit); |
| 237 | } | ||
| 238 | 2 | e0 = clock(); | |
| 239 | |||
| 240 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | std::cout << "Time required to split a w curve : " |
| 241 |
2/4✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
|
2 | << ((double)(e0 - s0) / CLOCKS_PER_SEC) / 100. << " ms " |
| 242 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | << std::endl; |
| 243 | 2 | } | |
| 244 | |||
| 245 | BOOST_AUTO_TEST_SUITE_END() | ||
| 246 |