GCC Code Coverage Report


Directory: ./
File: unittest/factory/activation.cpp
Date: 2025-06-03 08:14:12
Exec Total Coverage
Lines: 0 80 0.0%
Functions: 0 4 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