GCC Code Coverage Report


Directory: ./
File: unittest/factory/solver.cpp
Date: 2025-06-03 08:14:12
Exec Total Coverage
Lines: 0 61 0.0%
Functions: 0 4 0.0%
Branches: 0 49 0.0%

Line Branch Exec Source
1 ///////////////////////////////////////////////////////////////////////////////
2 // BSD 3-Clause License
3 //
4 // Copyright (C) 2019-2024, LAAS-CNRS, New York University,
5 // Max Planck Gesellschaft, University of Edinburgh,
6 // Heriot-Watt University
7 // Copyright note valid unless otherwise stated in individual files.
8 // All rights reserved.
9 ///////////////////////////////////////////////////////////////////////////////
10
11 #include "solver.hpp"
12
13 #include "crocoddyl/core/solvers/box-ddp.hpp"
14 #include "crocoddyl/core/solvers/box-fddp.hpp"
15 #include "crocoddyl/core/solvers/ddp.hpp"
16 #include "crocoddyl/core/solvers/fddp.hpp"
17 #ifdef CROCODDYL_WITH_IPOPT
18 #include "crocoddyl/core/solvers/ipopt.hpp"
19 #endif
20
21 namespace crocoddyl {
22 namespace unittest {
23
24 const std::vector<SolverTypes::Type> SolverTypes::all(SolverTypes::init_all());
25
26 ✗ std::ostream& operator<<(std::ostream& os, SolverTypes::Type type) {
27 ✗ switch (type) {
28 ✗ case SolverTypes::SolverKKT:
29 ✗ os << "SolverKKT";
30 ✗ break;
31 ✗ case SolverTypes::SolverDDP:
32 ✗ os << "SolverDDP";
33 ✗ break;
34 ✗ case SolverTypes::SolverFDDP:
35 ✗ os << "SolverFDDP";
36 ✗ break;
37 ✗ case SolverTypes::SolverBoxDDP:
38 ✗ os << "SolverBoxDDP";
39 ✗ break;
40 ✗ case SolverTypes::SolverBoxFDDP:
41 ✗ os << "SolverBoxFDDP";
42 ✗ break;
43 #ifdef CROCODDYL_WITH_IPOPT
44 ✗ case SolverTypes::SolverIpopt:
45 ✗ os << "SolverIpopt";
46 ✗ break;
47 #endif
48 ✗ case SolverTypes::NbSolverTypes:
49 ✗ os << "NbSolverTypes";
50 ✗ break;
51 ✗ default:
52 ✗ break;
53 }
54 ✗ return os;
55 }
56
57 ✗ SolverFactory::SolverFactory() {}
58
59 ✗ SolverFactory::~SolverFactory() {}
60
61 ✗ std::shared_ptr<crocoddyl::SolverAbstract> SolverFactory::create(
62 SolverTypes::Type solver_type,
63 std::shared_ptr<crocoddyl::ActionModelAbstract> model,
64 std::shared_ptr<crocoddyl::ActionModelAbstract> model2,
65 std::shared_ptr<crocoddyl::ActionModelAbstract> modelT, size_t T) const {
66 ✗ std::shared_ptr<crocoddyl::SolverAbstract> solver;
67 ✗ std::vector<std::shared_ptr<crocoddyl::ActionModelAbstract> > running_models;
68 ✗ const size_t halfway = T / 2;
69 ✗ for (size_t i = 0; i < halfway; ++i) {
70 ✗ running_models.push_back(model);
71 }
72 ✗ for (size_t i = 0; i < T - halfway; ++i) {
73 ✗ running_models.push_back(model2);
74 }
75
76 std::shared_ptr<crocoddyl::ShootingProblem> problem =
77 ✗ std::make_shared<crocoddyl::ShootingProblem>(model->get_state()->zero(),
78 ✗ running_models, modelT);
79
80 ✗ switch (solver_type) {
81 ✗ case SolverTypes::SolverKKT:
82 ✗ solver = std::make_shared<crocoddyl::SolverKKT>(problem);
83 ✗ break;
84 ✗ case SolverTypes::SolverDDP:
85 ✗ solver = std::make_shared<crocoddyl::SolverDDP>(problem);
86 ✗ break;
87 ✗ case SolverTypes::SolverFDDP:
88 ✗ solver = std::make_shared<crocoddyl::SolverFDDP>(problem);
89 ✗ break;
90 ✗ case SolverTypes::SolverBoxDDP:
91 ✗ solver = std::make_shared<crocoddyl::SolverBoxDDP>(problem);
92 ✗ break;
93 ✗ case SolverTypes::SolverBoxFDDP:
94 ✗ solver = std::make_shared<crocoddyl::SolverBoxFDDP>(problem);
95 ✗ break;
96 #ifdef CROCODDYL_WITH_IPOPT
97 ✗ case SolverTypes::SolverIpopt:
98 ✗ solver = std::make_shared<crocoddyl::SolverIpopt>(problem);
99 ✗ break;
100 #endif
101 ✗ default:
102 ✗ throw_pretty(__FILE__ ": Wrong SolverTypes::Type given");
103 break;
104 }
105 ✗ return solver;
106 ✗ }
107
108 } // namespace unittest
109 } // namespace crocoddyl
110