GCC Code Coverage Report


Directory: ./
File: unittest/factory/activation.cpp
Date: 2025-03-26 19:23:43
Exec Total Coverage
Lines: 73 80 91.2%
Branches: 44 81 54.3%

Line Branch Exec Source
1 ///////////////////////////////////////////////////////////////////////////////
2 // BSD 3-Clause License
3 //
4 // Copyright (C) 2019-2021, LAAS-CNRS, University of Edinburgh
5 // Copyright note valid unless otherwise stated in individual files.
6 // All rights reserved.
7 ///////////////////////////////////////////////////////////////////////////////
8
9 #include "activation.hpp"
10
11 #include "../random_generator.hpp"
12 #include "crocoddyl/core/activations/2norm-barrier.hpp"
13 #include "crocoddyl/core/activations/quadratic-barrier.hpp"
14 #include "crocoddyl/core/activations/quadratic-flat-exp.hpp"
15 #include "crocoddyl/core/activations/quadratic-flat-log.hpp"
16 #include "crocoddyl/core/activations/quadratic.hpp"
17 #include "crocoddyl/core/activations/smooth-1norm.hpp"
18 #include "crocoddyl/core/activations/smooth-2norm.hpp"
19 #include "crocoddyl/core/activations/weighted-quadratic-barrier.hpp"
20 #include "crocoddyl/core/activations/weighted-quadratic.hpp"
21
22 namespace crocoddyl {
23 namespace unittest {
24
25 const std::vector<ActivationModelTypes::Type> ActivationModelTypes::all(
26 ActivationModelTypes::init_all());
27
28 423 std::ostream& operator<<(std::ostream& os, ActivationModelTypes::Type type) {
29
9/11
✓ Branch 0 taken 52 times.
✓ Branch 1 taken 52 times.
✓ Branch 2 taken 52 times.
✓ Branch 3 taken 52 times.
✓ Branch 4 taken 52 times.
✓ Branch 5 taken 52 times.
✓ Branch 6 taken 37 times.
✓ Branch 7 taken 37 times.
✓ Branch 8 taken 37 times.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
423 switch (type) {
30 52 case ActivationModelTypes::ActivationModelQuad:
31 52 os << "ActivationModelQuad";
32 52 break;
33 52 case ActivationModelTypes::ActivationModelQuadFlatExp:
34 52 os << "ActivationModelQuadFlatExp";
35 52 break;
36 52 case ActivationModelTypes::ActivationModelQuadFlatLog:
37 52 os << "ActivationModelQuadFlatLog";
38 52 break;
39 52 case ActivationModelTypes::ActivationModelSmooth1Norm:
40 52 os << "ActivationModelSmooth1Norm";
41 52 break;
42 52 case ActivationModelTypes::ActivationModelSmooth2Norm:
43 52 os << "ActivationModelSmooth2Norm";
44 52 break;
45 52 case ActivationModelTypes::ActivationModelWeightedQuad:
46 52 os << "ActivationModelWeightedQuad";
47 52 break;
48 37 case ActivationModelTypes::ActivationModelQuadraticBarrier:
49 37 os << "ActivationModelQuadraticBarrier";
50 37 break;
51 37 case ActivationModelTypes::ActivationModelWeightedQuadraticBarrier:
52 37 os << "ActivationModelWeightedQuadraticBarrier";
53 37 break;
54 37 case ActivationModelTypes::ActivationModel2NormBarrier:
55 37 os << "ActivationModel2NormBarrier";
56 37 break;
57 case ActivationModelTypes::NbActivationModelTypes:
58 os << "NbActivationModelTypes";
59 break;
60 default:
61 break;
62 }
63 423 return os;
64 }
65
66 4452 ActivationModelFactory::ActivationModelFactory() {}
67 4452 ActivationModelFactory::~ActivationModelFactory() {}
68
69 std::shared_ptr<crocoddyl::ActivationModelAbstract>
70 4452 ActivationModelFactory::create(ActivationModelTypes::Type activation_type,
71 std::size_t nr) const {
72 4452 std::shared_ptr<crocoddyl::ActivationModelAbstract> activation;
73
2/4
✓ Branch 1 taken 4452 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 4452 times.
✗ Branch 5 not taken.
4452 Eigen::VectorXd lb = Eigen::VectorXd::Random(nr);
74 Eigen::VectorXd ub =
75
5/10
✓ Branch 1 taken 4452 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 4452 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 4452 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 4452 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 4452 times.
✗ Branch 14 not taken.
4452 lb + Eigen::VectorXd::Ones(nr) + Eigen::VectorXd::Random(nr);
76
3/6
✓ Branch 1 taken 4452 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 4452 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 4452 times.
✗ Branch 8 not taken.
4452 Eigen::VectorXd weights = 1. * Eigen::VectorXd::Random(nr);
77
2/4
✓ Branch 1 taken 4452 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 4452 times.
✗ Branch 5 not taken.
4452 double alpha = fabs(Eigen::VectorXd::Random(1)[0]);
78
2/4
✓ Branch 1 taken 4452 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 4452 times.
✗ Branch 5 not taken.
4452 double eps = fabs(Eigen::VectorXd::Random(1)[0]);
79
1/2
✓ Branch 1 taken 4452 times.
✗ Branch 2 not taken.
4452 bool hessian = random_boolean();
80
81
9/10
✓ Branch 0 taken 2793 times.
✓ Branch 1 taken 222 times.
✓ Branch 2 taken 222 times.
✓ Branch 3 taken 222 times.
✓ Branch 4 taken 222 times.
✓ Branch 5 taken 222 times.
✓ Branch 6 taken 183 times.
✓ Branch 7 taken 183 times.
✓ Branch 8 taken 183 times.
✗ Branch 9 not taken.
4452 switch (activation_type) {
82 2793 case ActivationModelTypes::ActivationModelQuad:
83
1/2
✓ Branch 1 taken 2793 times.
✗ Branch 2 not taken.
2793 activation = std::make_shared<crocoddyl::ActivationModelQuad>(nr);
84 2793 break;
85 222 case ActivationModelTypes::ActivationModelQuadFlatExp:
86 activation =
87
1/2
✓ Branch 1 taken 222 times.
✗ Branch 2 not taken.
222 std::make_shared<crocoddyl::ActivationModelQuadFlatExp>(nr, alpha);
88 222 break;
89 222 case ActivationModelTypes::ActivationModelQuadFlatLog:
90 activation =
91
1/2
✓ Branch 1 taken 222 times.
✗ Branch 2 not taken.
222 std::make_shared<crocoddyl::ActivationModelQuadFlatLog>(nr, alpha);
92 222 break;
93 222 case ActivationModelTypes::ActivationModelSmooth1Norm:
94 activation =
95
1/2
✓ Branch 1 taken 222 times.
✗ Branch 2 not taken.
222 std::make_shared<crocoddyl::ActivationModelSmooth1Norm>(nr, eps);
96 222 break;
97 222 case ActivationModelTypes::ActivationModelSmooth2Norm:
98 activation =
99
1/2
✓ Branch 1 taken 222 times.
✗ Branch 2 not taken.
222 std::make_shared<crocoddyl::ActivationModelSmooth2Norm>(nr, eps);
100 222 break;
101 222 case ActivationModelTypes::ActivationModelWeightedQuad:
102 activation =
103
1/2
✓ Branch 1 taken 222 times.
✗ Branch 2 not taken.
222 std::make_shared<crocoddyl::ActivationModelWeightedQuad>(weights);
104 222 break;
105 183 case ActivationModelTypes::ActivationModelQuadraticBarrier:
106
1/2
✓ Branch 1 taken 183 times.
✗ Branch 2 not taken.
366 activation = std::make_shared<crocoddyl::ActivationModelQuadraticBarrier>(
107
1/2
✓ Branch 1 taken 183 times.
✗ Branch 2 not taken.
549 crocoddyl::ActivationBounds(lb, ub));
108 183 break;
109 183 case ActivationModelTypes::ActivationModelWeightedQuadraticBarrier:
110 activation =
111
1/2
✓ Branch 1 taken 183 times.
✗ Branch 2 not taken.
366 std::make_shared<crocoddyl::ActivationModelWeightedQuadraticBarrier>(
112
1/2
✓ Branch 1 taken 183 times.
✗ Branch 2 not taken.
549 crocoddyl::ActivationBounds(lb, ub), weights);
113 183 break;
114 183 case ActivationModelTypes::ActivationModel2NormBarrier:
115
1/2
✓ Branch 1 taken 183 times.
✗ Branch 2 not taken.
366 activation = std::make_shared<crocoddyl::ActivationModel2NormBarrier>(
116 183 nr, alpha, hessian);
117 183 break;
118 default:
119 throw_pretty(__FILE__ ":\n Construct wrong ActivationModelTypes::Type");
120 break;
121 }
122 8904 return activation;
123 4452 }
124
125 } // namespace unittest
126 } // namespace crocoddyl
127