FOUND Coverage Report


src/
File: command-line/found-main.cpp
Date: 2025-11-20 21:57:26
Lines:
32/32
100.0%
Functions:
1/1
100.0%
Branches:
201/201
100.0%

Line Branch Exec Source
1 #include "command-line/found-main.hpp"
2
3 #include <iostream>
4 #include <memory>
5 #include <string>
6
7 #include "common/logging.hpp"
8 #include "common/style.hpp"
9 #include "providers/factory.hpp"
10
11 #include "command-line/execution/executors.hpp"
12 #include "command-line/parsing/parser.hpp"
13 #include "command-line/parsing/options.hpp"
14
15 namespace found {
16
17 17 int main(int argc, char **argv) {
18
2/2
✓ Branch 0 taken 1 times.
✓ Branch 1 taken 16 times.
17 if (argc == 1) {
19
9/9
✓ Branch 3 taken 1 times.
✓ Branch 10 taken 1 times.
✓ Branch 13 taken 1 times.
✓ Branch 16 taken 1 times.
✓ Branch 20 taken 1 times.
✓ Branch 23 taken 1 times.
✓ Branch 26 taken 1 times.
✓ Branch 29 taken 1 times.
✓ Branch 32 taken 1 times.
3 LOG_ERROR("Seems you don't want to be found. " << HELP_MSG);
20 1 return EXIT_FAILURE;
21 }
22
1/1
✓ Branch 3 taken 16 times.
48 std::string command(argv[1]);
23
24 16 std::unique_ptr<PipelineExecutor> executor;
25
3/3
✓ Branch 1 taken 16 times.
✓ Branch 3 taken 4 times.
✓ Branch 4 taken 12 times.
16 if (command == "calibration") {
26
2/2
✓ Branch 3 taken 4 times.
✓ Branch 6 taken 4 times.
4 executor = CreateCalibrationPipelineExecutor(ParseCalibrationOptions(argc, argv));
27
3/3
✓ Branch 1 taken 12 times.
✓ Branch 3 taken 9 times.
✓ Branch 4 taken 3 times.
12 } else if (command == "distance") {
28
2/2
✓ Branch 3 taken 9 times.
✓ Branch 6 taken 8 times.
11 executor = CreateDistancePipelineExecutor(ParseDistanceOptions(argc, argv));
29 // TODO: Uncomment when orbit stage is implemented
30 // } else if (command == "orbit") {
31 // executor = CreateOrbitPipelineExecutor(ParseOrbitOptions(argc, argv));
32
8/8
✓ Branch 1 taken 3 times.
✓ Branch 3 taken 2 times.
✓ Branch 4 taken 1 times.
✓ Branch 6 taken 2 times.
✓ Branch 8 taken 1 times.
✓ Branch 9 taken 1 times.
✓ Branch 10 taken 2 times.
✓ Branch 11 taken 1 times.
3 } else if (command == "--help" || command == "-h") {
33 // Usage and primary details
34
2/2
✓ Branch 1 taken 2 times.
✓ Branch 4 taken 2 times.
2 std::cout << "Usage: ./found <option> [[flag value]...] [[flag=value]...]" << std::endl;
35
1/1
✓ Branch 1 taken 2 times.
2 std::cout << std::endl;
36 std::cout << "Finds absolute position of Images relative to Earth "
37
3/3
✓ Branch 1 taken 2 times.
✓ Branch 4 taken 2 times.
✓ Branch 7 taken 2 times.
2 << "and projects for orbit given multiple images. " << std::endl
38
2/2
✓ Branch 1 taken 2 times.
✓ Branch 4 taken 2 times.
2 << "Current Capabilities include: " << std::endl;
39
2/2
✓ Branch 1 taken 2 times.
✓ Branch 4 taken 2 times.
2 std::cout << "\t1. Calibrates the algorithm to produce a relative attitude (option: calibration)" << std::endl;
40
2/2
✓ Branch 1 taken 2 times.
✓ Branch 4 taken 2 times.
2 std::cout << "\t2. Finds the distance from a given image to a planet (option: distance)" << std::endl;
41 // TODO: Uncomment when orbit stage is implemented
42 // std::cout << "\t3. Projects an orbit from multiple position vectors (option: distance)" << std::endl;
43
1/1
✓ Branch 1 taken 2 times.
2 std::cout << std::endl;
44
45 // Flag usage details
46
2/2
✓ Branch 1 taken 2 times.
✓ Branch 4 taken 2 times.
2 std::cout << "==================== Calibration Flags ====================" << std::endl;
47
1/1
✓ Branch 1 taken 2 times.
2 std::cout << std::endl;
48 #define FOUND_CLI_OPTION(name, type, prop, defaultVal, converter, defaultArg, ASSIGN, doc) \
49 std::cout << " --" << name << std::endl; \
50 std::cout << "\t\t" << doc << std::endl;
51
18/18
✓ Branch 1 taken 2 times.
✓ Branch 4 taken 2 times.
✓ Branch 7 taken 2 times.
✓ Branch 10 taken 2 times.
✓ Branch 13 taken 2 times.
✓ Branch 16 taken 2 times.
✓ Branch 19 taken 2 times.
✓ Branch 22 taken 2 times.
✓ Branch 25 taken 2 times.
✓ Branch 28 taken 2 times.
✓ Branch 31 taken 2 times.
✓ Branch 34 taken 2 times.
✓ Branch 37 taken 2 times.
✓ Branch 40 taken 2 times.
✓ Branch 43 taken 2 times.
✓ Branch 46 taken 2 times.
✓ Branch 49 taken 2 times.
✓ Branch 52 taken 2 times.
2 CALIBRATION
52 #undef FOUND_CLI_OPTION
53
1/1
✓ Branch 1 taken 2 times.
2 std::cout << std::endl;
54
2/2
✓ Branch 1 taken 2 times.
✓ Branch 4 taken 2 times.
2 std::cout << "==================== Distance Flags ====================" << std::endl;
55
1/1
✓ Branch 1 taken 2 times.
2 std::cout << std::endl;
56 #define FOUND_CLI_OPTION(name, type, prop, defaultVal, converter, defaultArg, ASSIGN, doc) \
57 std::cout << " --" << name << std::endl; \
58 std::cout << "\t\t" << doc << std::endl;
59
120/120
✓ Branch 1 taken 2 times.
✓ Branch 4 taken 2 times.
✓ Branch 7 taken 2 times.
✓ Branch 10 taken 2 times.
✓ Branch 13 taken 2 times.
✓ Branch 16 taken 2 times.
✓ Branch 19 taken 2 times.
✓ Branch 22 taken 2 times.
✓ Branch 25 taken 2 times.
✓ Branch 28 taken 2 times.
✓ Branch 31 taken 2 times.
✓ Branch 34 taken 2 times.
✓ Branch 37 taken 2 times.
✓ Branch 40 taken 2 times.
✓ Branch 43 taken 2 times.
✓ Branch 46 taken 2 times.
✓ Branch 49 taken 2 times.
✓ Branch 52 taken 2 times.
✓ Branch 55 taken 2 times.
✓ Branch 58 taken 2 times.
✓ Branch 61 taken 2 times.
✓ Branch 64 taken 2 times.
✓ Branch 67 taken 2 times.
✓ Branch 70 taken 2 times.
✓ Branch 73 taken 2 times.
✓ Branch 76 taken 2 times.
✓ Branch 79 taken 2 times.
✓ Branch 82 taken 2 times.
✓ Branch 85 taken 2 times.
✓ Branch 88 taken 2 times.
✓ Branch 91 taken 2 times.
✓ Branch 94 taken 2 times.
✓ Branch 97 taken 2 times.
✓ Branch 100 taken 2 times.
✓ Branch 103 taken 2 times.
✓ Branch 106 taken 2 times.
✓ Branch 109 taken 2 times.
✓ Branch 112 taken 2 times.
✓ Branch 115 taken 2 times.
✓ Branch 118 taken 2 times.
✓ Branch 121 taken 2 times.
✓ Branch 124 taken 2 times.
✓ Branch 127 taken 2 times.
✓ Branch 130 taken 2 times.
✓ Branch 133 taken 2 times.
✓ Branch 136 taken 2 times.
✓ Branch 139 taken 2 times.
✓ Branch 142 taken 2 times.
✓ Branch 145 taken 2 times.
✓ Branch 148 taken 2 times.
✓ Branch 151 taken 2 times.
✓ Branch 154 taken 2 times.
✓ Branch 157 taken 2 times.
✓ Branch 160 taken 2 times.
✓ Branch 163 taken 2 times.
✓ Branch 166 taken 2 times.
✓ Branch 169 taken 2 times.
✓ Branch 172 taken 2 times.
✓ Branch 175 taken 2 times.
✓ Branch 178 taken 2 times.
✓ Branch 181 taken 2 times.
✓ Branch 184 taken 2 times.
✓ Branch 187 taken 2 times.
✓ Branch 190 taken 2 times.
✓ Branch 193 taken 2 times.
✓ Branch 196 taken 2 times.
✓ Branch 199 taken 2 times.
✓ Branch 202 taken 2 times.
✓ Branch 205 taken 2 times.
✓ Branch 208 taken 2 times.
✓ Branch 211 taken 2 times.
✓ Branch 214 taken 2 times.
✓ Branch 217 taken 2 times.
✓ Branch 220 taken 2 times.
✓ Branch 223 taken 2 times.
✓ Branch 226 taken 2 times.
✓ Branch 229 taken 2 times.
✓ Branch 232 taken 2 times.
✓ Branch 235 taken 2 times.
✓ Branch 238 taken 2 times.
✓ Branch 241 taken 2 times.
✓ Branch 244 taken 2 times.
✓ Branch 247 taken 2 times.
✓ Branch 250 taken 2 times.
✓ Branch 253 taken 2 times.
✓ Branch 256 taken 2 times.
✓ Branch 259 taken 2 times.
✓ Branch 262 taken 2 times.
✓ Branch 265 taken 2 times.
✓ Branch 268 taken 2 times.
✓ Branch 271 taken 2 times.
✓ Branch 274 taken 2 times.
✓ Branch 277 taken 2 times.
✓ Branch 280 taken 2 times.
✓ Branch 283 taken 2 times.
✓ Branch 286 taken 2 times.
✓ Branch 289 taken 2 times.
✓ Branch 292 taken 2 times.
✓ Branch 295 taken 2 times.
✓ Branch 298 taken 2 times.
✓ Branch 301 taken 2 times.
✓ Branch 304 taken 2 times.
✓ Branch 307 taken 2 times.
✓ Branch 310 taken 2 times.
✓ Branch 313 taken 2 times.
✓ Branch 316 taken 2 times.
✓ Branch 319 taken 2 times.
✓ Branch 322 taken 2 times.
✓ Branch 325 taken 2 times.
✓ Branch 328 taken 2 times.
✓ Branch 331 taken 2 times.
✓ Branch 334 taken 2 times.
✓ Branch 337 taken 2 times.
✓ Branch 340 taken 2 times.
✓ Branch 343 taken 2 times.
✓ Branch 346 taken 2 times.
✓ Branch 349 taken 2 times.
✓ Branch 352 taken 2 times.
✓ Branch 355 taken 2 times.
✓ Branch 358 taken 2 times.
2 DISTANCE
60 #undef FOUND_CLI_OPTION
61 // TODO: Uncomment when orbit stage is implemented
62 // std::cout << std::endl;
63 // std::cout << "==================== Orbit Flags ====================" << std::endl;
64 // std::cout << std::endl;
65 /*
66 #define FOUND_CLI_OPTION(name, type, prop, defaultVal, converter, defaultArg, ASSIGN, doc) \
67 std::cout << "\t\t--" << name << std::endl; \
68 std::cout << "\t\t\t\t--" << doc << std::endl; \
69 ORBIT
70 #undef FOUND_CLI_OPTION
71 */
72 2 return EXIT_SUCCESS;
73 } else {
74
11/11
✓ Branch 3 taken 1 times.
✓ Branch 10 taken 1 times.
✓ Branch 13 taken 1 times.
✓ Branch 16 taken 1 times.
✓ Branch 20 taken 1 times.
✓ Branch 23 taken 1 times.
✓ Branch 26 taken 1 times.
✓ Branch 29 taken 1 times.
✓ Branch 32 taken 1 times.
✓ Branch 35 taken 1 times.
✓ Branch 38 taken 1 times.
3 LOG_ERROR("Unrecognized Command: " << command << ". " << HELP_MSG);
75 1 return EXIT_FAILURE;
76 }
77
78
1/1
✓ Branch 2 taken 12 times.
12 executor->ExecutePipeline();
79
1/1
✓ Branch 2 taken 12 times.
12 executor->OutputResults();
80
81 12 return EXIT_SUCCESS;
82 17 }
83
84 } // namespace found
85