GCC Code Coverage Report


Directory: ./
File: unittest/factory/activation.cpp
Date: 2025-05-13 10:30:51
Exec Total Coverage
Lines: 0 79 0.0%
Branches: 0 81 0.0%

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 std::ostream& operator<<(std::ostream& os, ActivationModelTypes::Type type) {
29 switch (type) {
30 case ActivationModelTypes::ActivationModelQuad:
31 os << "ActivationModelQuad";
32 break;
33 case ActivationModelTypes::ActivationModelQuadFlatExp:
34 os << "ActivationModelQuadFlatExp";
35 break;
36 case ActivationModelTypes::ActivationModelQuadFlatLog:
37 os << "ActivationModelQuadFlatLog";
38 break;
39 case ActivationModelTypes::ActivationModelSmooth1Norm:
40 os << "ActivationModelSmooth1Norm";
41 break;
42 case ActivationModelTypes::ActivationModelSmooth2Norm:
43 os << "ActivationModelSmooth2Norm";
44 break;
45 case ActivationModelTypes::ActivationModelWeightedQuad:
46 os << "ActivationModelWeightedQuad";
47 break;
48 case ActivationModelTypes::ActivationModelQuadraticBarrier:
49 os << "ActivationModelQuadraticBarrier";
50 break;
51 case ActivationModelTypes::ActivationModelWeightedQuadraticBarrier:
52 os << "ActivationModelWeightedQuadraticBarrier";
53 break;
54 case ActivationModelTypes::ActivationModel2NormBarrier:
55 os << "ActivationModel2NormBarrier";
56 break;
57 case ActivationModelTypes::NbActivationModelTypes:
58 os << "NbActivationModelTypes";
59 break;
60 default:
61 break;
62 }
63 return os;
64 }
65
66 ActivationModelFactory::ActivationModelFactory() {}
67 ActivationModelFactory::~ActivationModelFactory() {}
68
69 std::shared_ptr<crocoddyl::ActivationModelAbstract>
70 ActivationModelFactory::create(ActivationModelTypes::Type activation_type,
71 std::size_t nr) const {
72 std::shared_ptr<crocoddyl::ActivationModelAbstract> activation;
73 Eigen::VectorXd lb = Eigen::VectorXd::Random(nr);
74 Eigen::VectorXd ub =
75 lb + Eigen::VectorXd::Ones(nr) + Eigen::VectorXd::Random(nr);
76 Eigen::VectorXd weights = 1. * Eigen::VectorXd::Random(nr);
77 double alpha = fabs(Eigen::VectorXd::Random(1)[0]);
78 double eps = fabs(Eigen::VectorXd::Random(1)[0]);
79 bool hessian = random_boolean();
80
81 switch (activation_type) {
82 case ActivationModelTypes::ActivationModelQuad:
83 activation = std::make_shared<crocoddyl::ActivationModelQuad>(nr);
84 break;
85 case ActivationModelTypes::ActivationModelQuadFlatExp:
86 activation =
87 std::make_shared<crocoddyl::ActivationModelQuadFlatExp>(nr, alpha);
88 break;
89 case ActivationModelTypes::ActivationModelQuadFlatLog:
90 activation =
91 std::make_shared<crocoddyl::ActivationModelQuadFlatLog>(nr, alpha);
92 break;
93 case ActivationModelTypes::ActivationModelSmooth1Norm:
94 activation =
95 std::make_shared<crocoddyl::ActivationModelSmooth1Norm>(nr, eps);
96 break;
97 case ActivationModelTypes::ActivationModelSmooth2Norm:
98 activation =
99 std::make_shared<crocoddyl::ActivationModelSmooth2Norm>(nr, eps);
100 break;
101 case ActivationModelTypes::ActivationModelWeightedQuad:
102 activation =
103 std::make_shared<crocoddyl::ActivationModelWeightedQuad>(weights);
104 break;
105 case ActivationModelTypes::ActivationModelQuadraticBarrier:
106 activation = std::make_shared<crocoddyl::ActivationModelQuadraticBarrier>(
107 crocoddyl::ActivationBounds(lb, ub));
108 break;
109 case ActivationModelTypes::ActivationModelWeightedQuadraticBarrier:
110 activation =
111 std::make_shared<crocoddyl::ActivationModelWeightedQuadraticBarrier>(
112 crocoddyl::ActivationBounds(lb, ub), weights);
113 break;
114 case ActivationModelTypes::ActivationModel2NormBarrier:
115 activation = std::make_shared<crocoddyl::ActivationModel2NormBarrier>(
116 nr, alpha, hessian);
117 break;
118 default:
119 throw_pretty(__FILE__ ":\n Construct wrong ActivationModelTypes::Type");
120 break;
121 }
122 return activation;
123 }
124
125 } // namespace unittest
126 } // namespace crocoddyl
127