INSTINCT Code Coverage Report


Directory: src/
File: Nodes/DataProvider/GNSS/FileReader/RtklibPosFile.cpp
Date: 2025-11-25 23:34:18
Exec Total Coverage
Lines: 244 318 76.7%
Functions: 15 20 75.0%
Branches: 598 1128 53.0%

Line Branch Exec Source
1 // This file is part of INSTINCT, the INS Toolkit for Integrated
2 // Navigation Concepts and Training by the Institute of Navigation of
3 // the University of Stuttgart, Germany.
4 //
5 // This Source Code Form is subject to the terms of the Mozilla Public
6 // License, v. 2.0. If a copy of the MPL was not distributed with this
7 // file, You can obtain one at https://mozilla.org/MPL/2.0/.
8
9 #include "RtklibPosFile.hpp"
10
11 #include "util/Logger.hpp"
12 #include "Navigation/Transformations/CoordinateFrames.hpp"
13 #include "Navigation/Transformations/Units.hpp"
14 #include "util/Time/TimeBase.hpp"
15 #include "util/StringUtil.hpp"
16
17 #include "internal/FlowManager.hpp"
18
19 #include "NodeData/GNSS/RtklibPosObs.hpp"
20
21 129 NAV::RtklibPosFile::RtklibPosFile()
22
3/6
✓ Branch 1 taken 129 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 129 times.
✗ Branch 5 not taken.
✓ Branch 8 taken 129 times.
✗ Branch 9 not taken.
129 : Node(typeStatic())
23 {
24 LOG_TRACE("{}: called", name);
25
26 129 _hasConfig = true;
27 129 _guiConfigDefaultWindowSize = { 380, 290 };
28
29
4/8
✓ Branch 1 taken 129 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 129 times.
✗ Branch 6 not taken.
✓ Branch 8 taken 129 times.
✓ Branch 9 taken 129 times.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
387 CreateOutputPin("RtklibPosObs", Pin::Type::Flow, { NAV::RtklibPosObs::type() }, &RtklibPosFile::pollData);
30 258 }
31
32 284 NAV::RtklibPosFile::~RtklibPosFile()
33 {
34 LOG_TRACE("{}: called", nameId());
35 284 }
36
37 243 std::string NAV::RtklibPosFile::typeStatic()
38 {
39
1/2
✓ Branch 1 taken 243 times.
✗ Branch 2 not taken.
486 return "RtklibPosFile";
40 }
41
42 std::string NAV::RtklibPosFile::type() const
43 {
44 return typeStatic();
45 }
46
47 114 std::string NAV::RtklibPosFile::category()
48 {
49
1/2
✓ Branch 1 taken 114 times.
✗ Branch 2 not taken.
228 return "Data Provider";
50 }
51
52 void NAV::RtklibPosFile::guiConfig()
53 {
54 if (auto res = FileReader::guiConfig(".pos,.*", { ".pos" }, size_t(id), nameId()))
55 {
56 LOG_DEBUG("{}: Path changed to {}", nameId(), _path);
57 flow::ApplyChanges();
58 if (res == FileReader::PATH_CHANGED)
59 {
60 doReinitialize();
61 }
62 else
63 {
64 doDeinitialize();
65 }
66 }
67
68 /// Header info
69 if (ImGui::BeginTable(fmt::format("##RtklibPos ({})", id.AsPointer()).c_str(), 4,
70 ImGuiTableFlags_Borders | ImGuiTableFlags_RowBg | ImGuiTableFlags_NoHostExtendX))
71 {
72 ImGui::TableSetupColumn("Basic", ImGuiTableColumnFlags_WidthFixed);
73 ImGui::TableSetupColumn("LLA", ImGuiTableColumnFlags_WidthFixed);
74 ImGui::TableSetupColumn("XYZ", ImGuiTableColumnFlags_WidthFixed);
75 ImGui::TableSetupColumn("Velocity", ImGuiTableColumnFlags_WidthFixed);
76 ImGui::TableHeadersRow();
77
78 auto TextColoredIfExists = [this](int index, const char* displayText, const char* searchText, bool alwaysNormal = false) {
79 ImGui::TableSetColumnIndex(index);
80 if (alwaysNormal || std::ranges::find_if(_headerColumns, [&searchText](const std::string& header) { return header.starts_with(searchText); }) != _headerColumns.end())
81 {
82 ImGui::TextUnformatted(displayText);
83 }
84 else
85 {
86 ImGui::TextDisabled("%s", displayText);
87 }
88 };
89
90 ImGui::TableNextRow();
91 TextColoredIfExists(0, "Date", "Date");
92 TextColoredIfExists(1, "latitude(deg)", "latitude(deg)");
93 TextColoredIfExists(2, "x-ecef(m)", "x-ecef(m)");
94 TextColoredIfExists(3, "vn(m/s)", "vn(m/s)");
95 ImGui::TableNextRow();
96 TextColoredIfExists(0, "Time", "Time");
97 TextColoredIfExists(1, "longitude(deg)", "longitude(deg)");
98 TextColoredIfExists(2, "y-ecef(m)", "y-ecef(m)");
99 TextColoredIfExists(3, "ve(m/s)", "ve(m/s)");
100 ImGui::TableNextRow();
101 TextColoredIfExists(0, "age(s)", "age(s)");
102 TextColoredIfExists(1, "height(m)", "height(m)");
103 TextColoredIfExists(2, "z-ecef(m)", "z-ecef(m)");
104 TextColoredIfExists(3, "vu(m/s)", "vu(m/s)");
105 ImGui::TableNextRow();
106 TextColoredIfExists(0, "ratio", "ratio");
107 TextColoredIfExists(1, "sdn(m)", "sdn(m)");
108 TextColoredIfExists(2, "sdx(m)", "sdx(m)");
109 TextColoredIfExists(3, "sdvn", "sdvn");
110 ImGui::TableNextRow();
111 TextColoredIfExists(0, "Q", "Q");
112 TextColoredIfExists(1, "sde(m)", "sde(m)");
113 TextColoredIfExists(2, "sdy(m)", "sdy(m)");
114 TextColoredIfExists(3, "sdve", "sdve");
115 ImGui::TableNextRow();
116 TextColoredIfExists(0, "ns", "ns");
117 TextColoredIfExists(1, "sdu(m)", "sdu(m)");
118 TextColoredIfExists(2, "sdz(m)", "sdz(m)");
119 TextColoredIfExists(3, "sdvu", "sdvu");
120 ImGui::TableNextRow();
121 TextColoredIfExists(1, "sdne(m)", "sdne(m)");
122 TextColoredIfExists(2, "sdxy(m)", "sdxy(m)");
123 TextColoredIfExists(3, "sdvne", "sdvne");
124 ImGui::TableNextRow();
125 TextColoredIfExists(1, "sdeu(m)", "sdeu(m)");
126 TextColoredIfExists(2, "sdyz(m)", "sdyz(m)");
127 TextColoredIfExists(3, "sdveu", "sdveu");
128 ImGui::TableNextRow();
129 TextColoredIfExists(1, "sdun(m)", "sdun(m)");
130 TextColoredIfExists(2, "sdzx(m)", "sdzx(m)");
131 TextColoredIfExists(3, "sdvun", "sdvun");
132
133 ImGui::EndTable();
134 }
135 }
136
137 [[nodiscard]] json NAV::RtklibPosFile::save() const
138 {
139 LOG_TRACE("{}: called", nameId());
140
141 json j;
142
143 j["FileReader"] = FileReader::save();
144
145 return j;
146 }
147
148 15 void NAV::RtklibPosFile::restore(json const& j)
149 {
150 LOG_TRACE("{}: called", nameId());
151
152
1/2
✓ Branch 1 taken 15 times.
✗ Branch 2 not taken.
15 if (j.contains("FileReader"))
153 {
154 15 FileReader::restore(j.at("FileReader"));
155 }
156 15 }
157
158 15 bool NAV::RtklibPosFile::initialize()
159 {
160 LOG_TRACE("{}: called", nameId());
161
162 15 return FileReader::initialize();
163 }
164
165 14 void NAV::RtklibPosFile::deinitialize()
166 {
167 LOG_TRACE("{}: called", nameId());
168
169 14 FileReader::deinitialize();
170 14 }
171
172 28 bool NAV::RtklibPosFile::resetNode()
173 {
174 28 FileReader::resetReader();
175
176 28 return true;
177 }
178
179 966 std::shared_ptr<const NAV::NodeData> NAV::RtklibPosFile::pollData()
180 {
181
1/2
✓ Branch 1 taken 957 times.
✗ Branch 2 not taken.
966 auto obs = std::make_shared<RtklibPosObs>();
182
183 // Read line
184 957 std::string line;
185
1/2
✓ Branch 1 taken 964 times.
✗ Branch 2 not taken.
960 getline(line);
186 // Remove any starting non text characters
187
2/4
✓ Branch 1 taken 958 times.
✗ Branch 2 not taken.
✓ Branch 7 taken 962 times.
✗ Branch 8 not taken.
1909 line.erase(line.begin(), std::ranges::find_if(line, [](int ch) { return std::isgraph(ch); }));
188
189
2/2
✓ Branch 1 taken 13 times.
✓ Branch 2 taken 949 times.
962 if (line.empty())
190 {
191 13 return nullptr;
192 }
193
194
1/2
✓ Branch 1 taken 951 times.
✗ Branch 2 not taken.
949 std::istringstream lineStream(line);
195 951 std::string cell;
196
197 947 TimeSystem timeSystem = GPST;
198 947 std::optional<uint16_t> year;
199 947 std::optional<uint16_t> month;
200 947 std::optional<uint16_t> day;
201 947 std::optional<int32_t> hour;
202 947 std::optional<uint16_t> minute;
203 947 std::optional<long double> second = 0L;
204 947 std::optional<uint16_t> gpsWeek;
205 947 std::optional<long double> gpsToW;
206
1/2
✓ Branch 1 taken 949 times.
✗ Branch 2 not taken.
947 Eigen::Vector3d lla_position{ std::nan(""), std::nan(""), std::nan("") };
207
1/2
✓ Branch 1 taken 950 times.
✗ Branch 2 not taken.
949 Eigen::Vector3d e_position{ std::nan(""), std::nan(""), std::nan("") };
208
1/2
✓ Branch 1 taken 955 times.
✗ Branch 2 not taken.
950 Eigen::Vector3d n_velocity{ std::nan(""), std::nan(""), std::nan("") };
209
1/2
✓ Branch 1 taken 954 times.
✗ Branch 2 not taken.
955 Eigen::Vector3d e_velocity{ std::nan(""), std::nan(""), std::nan("") };
210
211
3/6
✓ Branch 1 taken 944 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 948 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 948 times.
✗ Branch 8 not taken.
954 Eigen::Matrix3d e_posVar = Eigen::Matrix3d::Zero() * std::nan("");
212
3/6
✓ Branch 1 taken 940 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 949 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 954 times.
✗ Branch 8 not taken.
948 Eigen::Matrix3d e_velVar = Eigen::Matrix3d::Zero() * std::nan("");
213
3/6
✓ Branch 1 taken 952 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 951 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 951 times.
✗ Branch 8 not taken.
954 Eigen::Matrix3d n_posVar = Eigen::Matrix3d::Zero() * std::nan("");
214
3/6
✓ Branch 1 taken 951 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 951 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 949 times.
✗ Branch 8 not taken.
951 Eigen::Matrix3d n_velVar = Eigen::Matrix3d::Zero() * std::nan("");
215
216 try
217 {
218
2/2
✓ Branch 5 taken 22716 times.
✓ Branch 6 taken 942 times.
23674 for (const auto& column : _headerColumns)
219 {
220
3/6
✓ Branch 1 taken 22675 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 22708 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 22714 times.
✗ Branch 7 not taken.
22664 if (lineStream >> cell)
221 {
222 // Remove any trailing non text characters
223
2/4
✓ Branch 3 taken 22790 times.
✗ Branch 4 not taken.
✓ Branch 7 taken 22752 times.
✗ Branch 8 not taken.
180999 cell.erase(std::ranges::find_if(cell, [](int ch) { return std::iscntrl(ch); }), cell.end());
224
1/2
✗ Branch 1 not taken.
✓ Branch 2 taken 22777 times.
22752 if (cell.empty())
225 {
226 continue;
227 }
228
229 // % GPST latitude(deg) longitude(deg) ...
230 // 2120 216180.000 XX.XXXXXXXXX ...
231
3/4
✓ Branch 1 taken 22701 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 2 times.
✓ Branch 4 taken 22699 times.
22777 if (column == "GpsWeek")
232 {
233
1/2
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
2 gpsWeek = static_cast<uint16_t>(std::stoul(cell));
234 }
235
3/4
✓ Branch 1 taken 22697 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 2 times.
✓ Branch 4 taken 22695 times.
22699 else if (column == "GpsToW")
236 {
237
1/2
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
2 gpsToW = std::stold(cell);
238 }
239 // % GPST latitude(deg) longitude(deg) ...
240 // 2020/08/25 12:03:00.000 XX.XXXXXXXXX ...
241 // % UTC latitude(deg) longitude(deg) ...
242 // 2020/08/25 12:02:42.000 XX.XXXXXXXXX ...
243
2/2
✓ Branch 1 taken 946 times.
✓ Branch 2 taken 21724 times.
22695 else if (column.starts_with("Date"))
244 {
245
2/2
✓ Branch 1 taken 928 times.
✓ Branch 2 taken 6 times.
946 timeSystem = column.ends_with("-GPST") ? GPST : UTC;
246
247
2/4
✓ Branch 1 taken 944 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 944 times.
✗ Branch 5 not taken.
931 auto ymd = str::split(cell, "/");
248
1/2
✓ Branch 1 taken 946 times.
✗ Branch 2 not taken.
947 if (ymd.size() == 3)
249 {
250
2/4
✓ Branch 1 taken 940 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 940 times.
✗ Branch 5 not taken.
946 year = static_cast<uint16_t>(std::stoi(ymd.at(0)));
251
2/4
✓ Branch 1 taken 938 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 927 times.
✗ Branch 5 not taken.
930 month = static_cast<uint16_t>(std::stoi(ymd.at(1)));
252
2/4
✓ Branch 1 taken 942 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 942 times.
✗ Branch 5 not taken.
940 day = static_cast<uint16_t>(std::stoi(ymd.at(2)));
253 }
254 942 }
255
2/2
✓ Branch 1 taken 947 times.
✓ Branch 2 taken 20805 times.
21724 else if (column.starts_with("Time"))
256 {
257
2/4
✓ Branch 1 taken 947 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 949 times.
✗ Branch 5 not taken.
947 auto hms = str::split(cell, ":");
258
1/2
✓ Branch 1 taken 948 times.
✗ Branch 2 not taken.
947 if (hms.size() == 3)
259 {
260
2/4
✓ Branch 1 taken 949 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 949 times.
✗ Branch 5 not taken.
948 hour = static_cast<uint16_t>(std::stoi(hms.at(0)));
261
2/2
✓ Branch 1 taken 2 times.
✓ Branch 2 taken 941 times.
935 if (column.ends_with("-JST")) { *hour -= 9; }
262
2/4
✓ Branch 1 taken 940 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 942 times.
✗ Branch 5 not taken.
943 minute = static_cast<uint16_t>(std::stoi(hms.at(1)));
263
2/4
✓ Branch 1 taken 944 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 943 times.
✗ Branch 5 not taken.
942 second = std::stold(hms.at(2));
264 }
265 936 }
266
6/10
✓ Branch 1 taken 20779 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 20786 times.
✗ Branch 4 not taken.
✓ Branch 6 taken 20820 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 20824 times.
✓ Branch 10 taken 2 times.
✓ Branch 11 taken 20811 times.
20805 else if (column == "x-ecef(m)" || column == "x-ecef")
267 {
268
2/4
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
2 e_position.x() = std::stod(cell);
269 }
270
6/10
✓ Branch 1 taken 20804 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 20815 times.
✗ Branch 4 not taken.
✓ Branch 6 taken 20828 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 20828 times.
✓ Branch 10 taken 2 times.
✓ Branch 11 taken 20815 times.
20811 else if (column == "y-ecef(m)" || column == "y-ecef")
271 {
272
2/4
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
2 e_position.y() = std::stod(cell);
273 }
274
7/10
✓ Branch 1 taken 20845 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 20842 times.
✓ Branch 4 taken 3 times.
✓ Branch 6 taken 20830 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 20837 times.
✓ Branch 10 taken 2 times.
✓ Branch 11 taken 20831 times.
20815 else if (column == "z-ecef(m)" || column == "z-ecef")
275 {
276
2/4
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
2 e_position.z() = std::stod(cell);
277 }
278
7/10
✓ Branch 1 taken 20830 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 19885 times.
✓ Branch 4 taken 945 times.
✓ Branch 6 taken 19908 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 19913 times.
✓ Branch 10 taken 952 times.
✓ Branch 11 taken 19901 times.
20831 else if (column == "latitude(deg)" || column == "latitude")
279 {
280
3/4
✓ Branch 1 taken 940 times.
✓ Branch 2 taken 1 times.
✓ Branch 5 taken 931 times.
✗ Branch 6 not taken.
952 lla_position(0) = deg2rad(std::stod(cell));
281 }
282
7/10
✓ Branch 1 taken 19902 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 18971 times.
✓ Branch 4 taken 931 times.
✓ Branch 6 taken 18952 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 18957 times.
✓ Branch 10 taken 942 times.
✓ Branch 11 taken 18941 times.
19901 else if (column == "longitude(deg)" || column == "longitude")
283 {
284
2/4
✓ Branch 1 taken 934 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 940 times.
✗ Branch 6 not taken.
942 lla_position(1) = deg2rad(std::stod(cell));
285 }
286
7/10
✓ Branch 1 taken 18964 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 18023 times.
✓ Branch 4 taken 941 times.
✓ Branch 6 taken 18018 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 18025 times.
✓ Branch 10 taken 945 times.
✓ Branch 11 taken 18014 times.
18941 else if (column == "height(m)" || column == "height")
287 {
288
2/4
✓ Branch 1 taken 930 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 937 times.
✗ Branch 5 not taken.
945 lla_position(2) = std::stod(cell);
289 }
290
3/4
✓ Branch 1 taken 18026 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 949 times.
✓ Branch 4 taken 17077 times.
18014 else if (column == "Q")
291 {
292
1/2
✓ Branch 1 taken 946 times.
✗ Branch 2 not taken.
949 obs->Q = static_cast<uint8_t>(std::stoul(cell));
293 }
294
3/4
✓ Branch 1 taken 17084 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 950 times.
✓ Branch 4 taken 16134 times.
17077 else if (column == "ns")
295 {
296
1/2
✓ Branch 1 taken 952 times.
✗ Branch 2 not taken.
950 obs->ns = static_cast<uint8_t>(std::stoul(cell));
297 }
298
7/10
✓ Branch 1 taken 16136 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 16132 times.
✓ Branch 4 taken 4 times.
✓ Branch 6 taken 16131 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 16134 times.
✓ Branch 10 taken 2 times.
✓ Branch 11 taken 16133 times.
16134 else if (column == "sdx(m)" || column == "sdx")
299 {
300
2/4
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 2 times.
✗ Branch 6 not taken.
2 e_posVar(0, 0) = std::pow(std::stod(cell), 2);
301 }
302
6/10
✓ Branch 1 taken 16142 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 16142 times.
✗ Branch 4 not taken.
✓ Branch 6 taken 16134 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 16136 times.
✓ Branch 10 taken 2 times.
✓ Branch 11 taken 16132 times.
16133 else if (column == "sdy(m)" || column == "sdy")
303 {
304
2/4
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 2 times.
✗ Branch 6 not taken.
2 e_posVar(1, 1) = std::pow(std::stod(cell), 2);
305 }
306
7/10
✓ Branch 1 taken 16148 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 16147 times.
✓ Branch 4 taken 1 times.
✓ Branch 6 taken 16143 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 16146 times.
✓ Branch 10 taken 2 times.
✓ Branch 11 taken 16142 times.
16132 else if (column == "sdz(m)" || column == "sdz")
307 {
308
2/4
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 2 times.
✗ Branch 6 not taken.
2 e_posVar(2, 2) = std::pow(std::stod(cell), 2);
309 }
310
7/10
✓ Branch 1 taken 16135 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 15192 times.
✓ Branch 4 taken 943 times.
✓ Branch 6 taken 15183 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 15186 times.
✓ Branch 10 taken 947 times.
✓ Branch 11 taken 15179 times.
16142 else if (column == "sdn(m)" || column == "sdn")
311 {
312
2/4
✓ Branch 1 taken 942 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 937 times.
✗ Branch 6 not taken.
947 n_posVar(0, 0) = std::pow(std::stod(cell), 2);
313 }
314
7/10
✓ Branch 1 taken 15193 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 14250 times.
✓ Branch 4 taken 943 times.
✓ Branch 6 taken 14239 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 14243 times.
✓ Branch 10 taken 949 times.
✓ Branch 11 taken 14233 times.
15179 else if (column == "sde(m)" || column == "sde")
315 {
316
2/4
✓ Branch 1 taken 948 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 948 times.
✗ Branch 6 not taken.
949 n_posVar(1, 1) = std::pow(std::stod(cell), 2);
317 }
318
7/10
✓ Branch 1 taken 14238 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 13288 times.
✓ Branch 4 taken 950 times.
✓ Branch 6 taken 13287 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 13289 times.
✓ Branch 10 taken 952 times.
✓ Branch 11 taken 13285 times.
14233 else if (column == "sdu(m)" || column == "sdu")
319 {
320
2/4
✓ Branch 1 taken 949 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 949 times.
✗ Branch 6 not taken.
952 n_posVar(2, 2) = std::pow(std::stod(cell), 2);
321 }
322
7/10
✓ Branch 1 taken 13288 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 13283 times.
✓ Branch 4 taken 5 times.
✓ Branch 6 taken 13286 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 13289 times.
✓ Branch 10 taken 2 times.
✓ Branch 11 taken 13289 times.
13285 else if (column == "sdxy(m)" || column == "sdxy")
323 {
324
2/4
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
2 e_posVar(0, 1) = std::stod(cell);
325
3/6
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 2 times.
✗ Branch 6 not taken.
✓ Branch 9 taken 2 times.
✗ Branch 10 not taken.
2 e_posVar(0, 1) = gcem::sgn(e_posVar(0, 1)) * std::pow(e_posVar(0, 1), 2);
326
2/4
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
2 e_posVar(1, 0) = -e_posVar(0, 1);
327 }
328
6/10
✓ Branch 1 taken 13286 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 13288 times.
✗ Branch 4 not taken.
✓ Branch 6 taken 13294 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 13296 times.
✓ Branch 10 taken 2 times.
✓ Branch 11 taken 13290 times.
13289 else if (column == "sdyz(m)" || column == "sdyz")
329 {
330
2/4
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
2 e_posVar(1, 2) = std::stod(cell);
331
3/6
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 2 times.
✗ Branch 6 not taken.
✓ Branch 9 taken 2 times.
✗ Branch 10 not taken.
2 e_posVar(1, 2) = gcem::sgn(e_posVar(1, 2)) * std::pow(e_posVar(1, 2), 2);
332
2/4
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
2 e_posVar(2, 1) = -e_posVar(1, 2);
333 }
334
7/10
✓ Branch 1 taken 13284 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 13282 times.
✓ Branch 4 taken 2 times.
✓ Branch 6 taken 13283 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 13285 times.
✓ Branch 10 taken 2 times.
✓ Branch 11 taken 13283 times.
13290 else if (column == "sdzx(m)" || column == "sdzx")
335 {
336
2/4
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
2 e_posVar(2, 0) = std::stod(cell);
337
3/6
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 2 times.
✗ Branch 6 not taken.
✓ Branch 9 taken 2 times.
✗ Branch 10 not taken.
2 e_posVar(2, 0) = gcem::sgn(e_posVar(2, 0)) * std::pow(e_posVar(2, 0), 2);
338
2/4
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
2 e_posVar(0, 2) = -e_posVar(2, 0);
339 }
340
8/10
✓ Branch 1 taken 13287 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 12346 times.
✓ Branch 4 taken 941 times.
✓ Branch 6 taken 12343 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 1 times.
✓ Branch 9 taken 12342 times.
✓ Branch 10 taken 946 times.
✓ Branch 11 taken 12338 times.
13283 else if (column == "sdne(m)" || column == "sdne")
341 {
342
2/4
✓ Branch 1 taken 944 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 945 times.
✗ Branch 5 not taken.
946 n_posVar(0, 1) = std::stod(cell);
343
3/6
✓ Branch 1 taken 948 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 950 times.
✗ Branch 6 not taken.
✓ Branch 9 taken 952 times.
✗ Branch 10 not taken.
945 n_posVar(0, 1) = gcem::sgn(n_posVar(0, 1)) * std::pow(n_posVar(0, 1), 2);
344
2/4
✓ Branch 1 taken 949 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 950 times.
✗ Branch 5 not taken.
952 n_posVar(1, 0) = -n_posVar(0, 1);
345 }
346
7/10
✓ Branch 1 taken 12341 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 11398 times.
✓ Branch 4 taken 943 times.
✓ Branch 6 taken 11395 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 11398 times.
✓ Branch 10 taken 946 times.
✓ Branch 11 taken 11392 times.
12338 else if (column == "sdeu(m)" || column == "sdeu")
347 {
348
2/4
✓ Branch 1 taken 948 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 945 times.
✗ Branch 5 not taken.
946 n_posVar(1, 2) = std::stod(cell);
349
3/6
✓ Branch 1 taken 949 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 945 times.
✗ Branch 6 not taken.
✓ Branch 9 taken 947 times.
✗ Branch 10 not taken.
945 n_posVar(1, 2) = gcem::sgn(n_posVar(1, 2)) * std::pow(n_posVar(1, 2), 2);
350
2/4
✓ Branch 1 taken 953 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 949 times.
✗ Branch 5 not taken.
947 n_posVar(2, 1) = -n_posVar(1, 2);
351 }
352
7/10
✓ Branch 1 taken 11389 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 10445 times.
✓ Branch 4 taken 944 times.
✓ Branch 6 taken 10440 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 10441 times.
✓ Branch 10 taken 949 times.
✓ Branch 11 taken 10435 times.
11392 else if (column == "sdun(m)" || column == "sdun")
353 {
354
2/4
✓ Branch 1 taken 946 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 945 times.
✗ Branch 5 not taken.
949 n_posVar(2, 0) = std::stod(cell);
355
3/6
✓ Branch 1 taken 948 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 950 times.
✗ Branch 6 not taken.
✓ Branch 9 taken 951 times.
✗ Branch 10 not taken.
945 n_posVar(2, 0) = gcem::sgn(n_posVar(2, 0)) * std::pow(n_posVar(2, 0), 2);
356
2/4
✓ Branch 1 taken 950 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 952 times.
✗ Branch 5 not taken.
951 n_posVar(0, 2) = -n_posVar(2, 0);
357 }
358
8/10
✓ Branch 1 taken 10442 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 9495 times.
✓ Branch 4 taken 947 times.
✓ Branch 6 taken 9498 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 1 times.
✓ Branch 9 taken 9497 times.
✓ Branch 10 taken 952 times.
✓ Branch 11 taken 9493 times.
10435 else if (column == "age(s)" || column == "age")
359 {
360
1/2
✓ Branch 1 taken 952 times.
✗ Branch 2 not taken.
952 obs->age = std::stod(cell);
361 }
362
3/4
✓ Branch 1 taken 9485 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 948 times.
✓ Branch 4 taken 8537 times.
9493 else if (column == "ratio")
363 {
364
1/2
✓ Branch 1 taken 948 times.
✗ Branch 2 not taken.
948 obs->ratio = std::stod(cell);
365 }
366
7/10
✓ Branch 1 taken 8531 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 7587 times.
✓ Branch 4 taken 944 times.
✓ Branch 6 taken 7592 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 7594 times.
✓ Branch 10 taken 945 times.
✓ Branch 11 taken 7591 times.
8537 else if (column == "vn(m/s)" || column == "vn")
367 {
368
2/4
✓ Branch 1 taken 949 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 946 times.
✗ Branch 5 not taken.
945 n_velocity(0) = std::stod(cell);
369 }
370
8/10
✓ Branch 1 taken 7593 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 6651 times.
✓ Branch 4 taken 942 times.
✓ Branch 6 taken 6651 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✓ Branch 9 taken 6649 times.
✓ Branch 10 taken 945 times.
✓ Branch 11 taken 6648 times.
7591 else if (column == "ve(m/s)" || column == "ve")
371 {
372
2/4
✓ Branch 1 taken 947 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 944 times.
✗ Branch 5 not taken.
945 n_velocity(1) = std::stod(cell);
373 }
374
7/10
✓ Branch 1 taken 6648 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 5702 times.
✓ Branch 4 taken 946 times.
✓ Branch 6 taken 5706 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 5706 times.
✓ Branch 10 taken 946 times.
✓ Branch 11 taken 5706 times.
6648 else if (column == "vu(m/s)" || column == "vu")
375 {
376
2/4
✓ Branch 1 taken 950 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 949 times.
✗ Branch 5 not taken.
946 n_velocity(2) = -std::stod(cell);
377 }
378
7/10
✓ Branch 1 taken 5705 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 5704 times.
✓ Branch 4 taken 1 times.
✓ Branch 6 taken 5709 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 5711 times.
✓ Branch 10 taken 2 times.
✓ Branch 11 taken 5708 times.
5706 else if (column == "vx(m/s)" || column == "vx")
379 {
380
2/4
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
2 e_velocity(0) = std::stod(cell);
381 }
382
7/10
✓ Branch 1 taken 5701 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 5700 times.
✓ Branch 4 taken 1 times.
✓ Branch 6 taken 5704 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 5705 times.
✓ Branch 10 taken 2 times.
✓ Branch 11 taken 5703 times.
5708 else if (column == "vy(m/s)" || column == "vy")
383 {
384
2/4
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
2 e_velocity(1) = std::stod(cell);
385 }
386
7/10
✓ Branch 1 taken 5702 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 5701 times.
✓ Branch 4 taken 1 times.
✓ Branch 6 taken 5701 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 5702 times.
✓ Branch 10 taken 2 times.
✓ Branch 11 taken 5700 times.
5703 else if (column == "vz(m/s)" || column == "vz")
387 {
388
2/4
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
2 e_velocity(2) = std::stod(cell);
389 }
390
7/10
✓ Branch 1 taken 5702 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 5702 times.
✗ Branch 4 not taken.
✓ Branch 6 taken 5703 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 946 times.
✓ Branch 9 taken 4757 times.
✓ Branch 10 taken 949 times.
✓ Branch 11 taken 4754 times.
5700 else if (column == "sdvn(m/s)" || column == "sdvn")
391 {
392
2/4
✓ Branch 1 taken 945 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 945 times.
✗ Branch 6 not taken.
949 n_velVar(0, 0) = std::pow(std::stod(cell), 2);
393 }
394
7/10
✓ Branch 1 taken 4757 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 4757 times.
✗ Branch 4 not taken.
✓ Branch 6 taken 4756 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 947 times.
✓ Branch 9 taken 3809 times.
✓ Branch 10 taken 948 times.
✓ Branch 11 taken 3808 times.
4754 else if (column == "sdve(m/s)" || column == "sdve")
395 {
396
2/4
✓ Branch 1 taken 948 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 951 times.
✗ Branch 6 not taken.
948 n_velVar(1, 1) = std::pow(std::stod(cell), 2);
397 }
398
7/10
✓ Branch 1 taken 3805 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 3805 times.
✗ Branch 4 not taken.
✓ Branch 6 taken 3804 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 946 times.
✓ Branch 9 taken 2858 times.
✓ Branch 10 taken 948 times.
✓ Branch 11 taken 2856 times.
3808 else if (column == "sdvu(m/s)" || column == "sdvu")
399 {
400
2/4
✓ Branch 1 taken 949 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 945 times.
✗ Branch 6 not taken.
948 n_velVar(2, 2) = std::pow(std::stod(cell), 2);
401 }
402
7/10
✓ Branch 1 taken 2857 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 2857 times.
✗ Branch 4 not taken.
✓ Branch 6 taken 2859 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 949 times.
✓ Branch 9 taken 1910 times.
✓ Branch 10 taken 950 times.
✓ Branch 11 taken 1909 times.
2856 else if (column == "sdvne(m/s)" || column == "sdvne")
403 {
404
2/4
✓ Branch 1 taken 946 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 945 times.
✗ Branch 5 not taken.
950 n_velVar(0, 1) = std::stod(cell);
405
3/6
✓ Branch 1 taken 947 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 950 times.
✗ Branch 6 not taken.
✓ Branch 9 taken 948 times.
✗ Branch 10 not taken.
945 n_velVar(0, 1) = gcem::sgn(n_velVar(0, 1)) * std::pow(n_velVar(0, 1), 2);
406
2/4
✓ Branch 1 taken 949 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 950 times.
✗ Branch 5 not taken.
948 n_velVar(1, 0) = -n_velVar(0, 1);
407 }
408
7/10
✓ Branch 1 taken 1910 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 1910 times.
✗ Branch 4 not taken.
✓ Branch 6 taken 1909 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 949 times.
✓ Branch 9 taken 960 times.
✓ Branch 10 taken 950 times.
✓ Branch 11 taken 959 times.
1909 else if (column == "sdveu(m/s)" || column == "sdveu")
409 {
410
2/4
✓ Branch 1 taken 944 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 945 times.
✗ Branch 5 not taken.
950 n_velVar(1, 2) = std::stod(cell);
411
3/6
✓ Branch 1 taken 945 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 949 times.
✗ Branch 6 not taken.
✓ Branch 9 taken 950 times.
✗ Branch 10 not taken.
945 n_velVar(1, 2) = gcem::sgn(n_velVar(1, 2)) * std::pow(n_velVar(1, 2), 2);
412
2/4
✓ Branch 1 taken 948 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 945 times.
✗ Branch 5 not taken.
950 n_velVar(2, 1) = -n_velVar(1, 2);
413 }
414
7/10
✓ Branch 1 taken 960 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 960 times.
✗ Branch 4 not taken.
✓ Branch 6 taken 958 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 946 times.
✓ Branch 9 taken 12 times.
✓ Branch 10 taken 946 times.
✓ Branch 11 taken 12 times.
959 else if (column == "sdvun(m/s)" || column == "sdvun")
415 {
416
2/4
✓ Branch 1 taken 949 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 949 times.
✗ Branch 5 not taken.
946 n_velVar(2, 0) = std::stod(cell);
417
3/6
✓ Branch 1 taken 948 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 947 times.
✗ Branch 6 not taken.
✓ Branch 9 taken 948 times.
✗ Branch 10 not taken.
949 n_velVar(2, 0) = gcem::sgn(n_velVar(2, 0)) * std::pow(n_velVar(2, 0), 2);
418
2/4
✓ Branch 1 taken 948 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 950 times.
✗ Branch 5 not taken.
948 n_velVar(0, 2) = -n_velVar(2, 0);
419 }
420
7/10
✓ Branch 1 taken 12 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 12 times.
✗ Branch 4 not taken.
✓ Branch 6 taken 12 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✓ Branch 9 taken 10 times.
✓ Branch 10 taken 2 times.
✓ Branch 11 taken 10 times.
12 else if (column == "sdvx(m/s)" || column == "sdvx")
421 {
422
2/4
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 2 times.
✗ Branch 6 not taken.
2 e_velVar(0, 0) = std::pow(std::stod(cell), 2);
423 }
424
7/10
✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 10 times.
✗ Branch 4 not taken.
✓ Branch 6 taken 10 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✓ Branch 9 taken 8 times.
✓ Branch 10 taken 2 times.
✓ Branch 11 taken 8 times.
10 else if (column == "sdvy(m/s)" || column == "sdvy")
425 {
426
2/4
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 2 times.
✗ Branch 6 not taken.
2 e_velVar(1, 1) = std::pow(std::stod(cell), 2);
427 }
428
7/10
✓ Branch 1 taken 8 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 8 times.
✗ Branch 4 not taken.
✓ Branch 6 taken 8 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✓ Branch 9 taken 6 times.
✓ Branch 10 taken 2 times.
✓ Branch 11 taken 6 times.
8 else if (column == "sdvz(m/s)" || column == "sdvz")
429 {
430
2/4
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 2 times.
✗ Branch 6 not taken.
2 e_velVar(2, 2) = std::pow(std::stod(cell), 2);
431 }
432
7/10
✓ Branch 1 taken 6 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 6 times.
✗ Branch 4 not taken.
✓ Branch 6 taken 6 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✓ Branch 9 taken 4 times.
✓ Branch 10 taken 2 times.
✓ Branch 11 taken 4 times.
6 else if (column == "sdvxy(m/s)" || column == "sdvxy")
433 {
434
2/4
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
2 e_velVar(0, 1) = std::stod(cell);
435
3/6
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 2 times.
✗ Branch 6 not taken.
✓ Branch 9 taken 2 times.
✗ Branch 10 not taken.
2 e_velVar(0, 1) = gcem::sgn(e_velVar(0, 1)) * std::pow(e_velVar(0, 1), 2);
436
2/4
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
2 e_velVar(1, 0) = -e_velVar(0, 1);
437 }
438
7/10
✓ Branch 1 taken 4 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 4 times.
✗ Branch 4 not taken.
✓ Branch 6 taken 4 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✓ Branch 9 taken 2 times.
✓ Branch 10 taken 2 times.
✓ Branch 11 taken 2 times.
4 else if (column == "sdvyz(m/s)" || column == "sdvyz")
439 {
440
2/4
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
2 e_velVar(1, 2) = std::stod(cell);
441
3/6
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 2 times.
✗ Branch 6 not taken.
✓ Branch 9 taken 2 times.
✗ Branch 10 not taken.
2 e_velVar(1, 2) = gcem::sgn(e_velVar(1, 2)) * std::pow(e_velVar(1, 2), 2);
442
2/4
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
2 e_velVar(2, 1) = -e_velVar(1, 2);
443 }
444
5/10
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 2 times.
✗ Branch 4 not taken.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✓ Branch 10 taken 2 times.
✗ Branch 11 not taken.
2 else if (column == "sdvzx(m/s)" || column == "sdvzx")
445 {
446
2/4
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
2 e_velVar(2, 0) = std::stod(cell);
447
3/6
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 2 times.
✗ Branch 6 not taken.
✓ Branch 9 taken 2 times.
✗ Branch 10 not taken.
2 e_velVar(2, 0) = gcem::sgn(e_velVar(2, 0)) * std::pow(e_velVar(2, 0), 2);
448
2/4
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
2 e_velVar(0, 2) = -e_velVar(2, 0);
449 }
450 }
451 }
452 }
453 1 catch (...)
454 {
455 1 return nullptr;
456 1 }
457
458
5/6
✓ Branch 1 taken 2 times.
✓ Branch 2 taken 952 times.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✓ Branch 7 taken 952 times.
942 if (gpsWeek.has_value() && gpsToW.has_value())
459 {
460
3/6
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 2 times.
✗ Branch 6 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
2 obs->insTime = InsTime(0, gpsWeek.value(), gpsToW.value());
461 }
462
2/4
✓ Branch 2 taken 952 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 951 times.
✗ Branch 6 not taken.
1902 else if (year.has_value() && month.has_value() && day.has_value()
463
5/10
✓ Branch 0 taken 950 times.
✗ Branch 1 not taken.
✓ Branch 3 taken 946 times.
✗ Branch 4 not taken.
✓ Branch 6 taken 945 times.
✗ Branch 7 not taken.
✓ Branch 9 taken 948 times.
✗ Branch 10 not taken.
✓ Branch 11 taken 948 times.
✗ Branch 12 not taken.
1901 && hour.has_value() && minute.has_value() && second.has_value())
464 {
465
3/6
✓ Branch 1 taken 947 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 947 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 949 times.
✗ Branch 8 not taken.
946 obs->insTime = InsTime(year.value(), month.value(), day.value(),
466
4/8
✓ Branch 1 taken 940 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 946 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 944 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 946 times.
✗ Branch 11 not taken.
948 hour.value(), minute.value(), second.value(),
467 timeSystem);
468 }
469
470
4/6
✓ Branch 1 taken 945 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 2 times.
✓ Branch 4 taken 943 times.
✓ Branch 7 taken 2 times.
✗ Branch 8 not taken.
944 if (!e_position.hasNaN()) { obs->setPosition_e(e_position); }
471
3/6
✓ Branch 1 taken 950 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 950 times.
✗ Branch 4 not taken.
✓ Branch 7 taken 943 times.
✗ Branch 8 not taken.
943 else if (!lla_position.hasNaN()) { obs->setPosition_lla(lla_position); }
472
473
4/6
✓ Branch 1 taken 951 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 2 times.
✓ Branch 4 taken 949 times.
✓ Branch 7 taken 2 times.
✗ Branch 8 not taken.
945 if (!e_velocity.hasNaN()) { obs->setVelocity_e(e_velocity); }
474
4/6
✓ Branch 1 taken 950 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 948 times.
✓ Branch 4 taken 2 times.
✓ Branch 7 taken 946 times.
✗ Branch 8 not taken.
949 else if (!n_velocity.hasNaN()) { obs->setVelocity_n(n_velocity); }
475
476
7/10
✓ Branch 1 taken 948 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 2 times.
✓ Branch 4 taken 946 times.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✓ Branch 10 taken 2 times.
✓ Branch 11 taken 946 times.
950 if (!e_velVar.hasNaN() && !e_posVar.hasNaN())
477 {
478
2/4
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
2 Eigen::Matrix6d cov = Eigen::Matrix6d::Zero(6, 6);
479
2/4
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
2 cov.block<3, 3>(0, 0) = e_posVar;
480
2/4
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
2 cov.block<3, 3>(3, 3) = e_velVar;
481
1/2
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
2 obs->setPosVelCovarianceMatrix_e(cov);
482 }
483
5/10
✓ Branch 1 taken 944 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 944 times.
✗ Branch 4 not taken.
✓ Branch 6 taken 947 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 947 times.
✗ Branch 9 not taken.
✓ Branch 10 taken 947 times.
✗ Branch 11 not taken.
946 else if (!n_velVar.hasNaN() && !n_posVar.hasNaN())
484 {
485
2/4
✓ Branch 1 taken 929 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 937 times.
✗ Branch 5 not taken.
947 Eigen::Matrix6d cov = Eigen::Matrix6d::Zero(6, 6);
486
2/4
✓ Branch 1 taken 935 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 939 times.
✗ Branch 5 not taken.
937 cov.block<3, 3>(0, 0) = n_posVar;
487
2/4
✓ Branch 1 taken 939 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 948 times.
✗ Branch 5 not taken.
939 cov.block<3, 3>(3, 3) = n_velVar;
488
1/2
✓ Branch 2 taken 946 times.
✗ Branch 3 not taken.
948 obs->setPosVelCovarianceMatrix_n(cov);
489 }
490 else if (!e_posVar.hasNaN())
491 {
492 obs->setPosCovarianceMatrix_e(e_posVar);
493 }
494
2/4
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 2 times.
✗ Branch 4 not taken.
2 else if (!n_posVar.hasNaN())
495 {
496
1/2
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
2 obs->setPosCovarianceMatrix_n(n_posVar);
497 }
498
499
1/2
✓ Branch 2 taken 955 times.
✗ Branch 3 not taken.
950 invokeCallbacks(OUTPUT_PORT_INDEX_RTKLIB_POS_OBS, obs);
500 953 return obs;
501 959 }
502
503 15 NAV::FileReader::FileType NAV::RtklibPosFile::determineFileType()
504 {
505
1/2
✓ Branch 1 taken 15 times.
✗ Branch 2 not taken.
15 std::filesystem::path filepath = getFilepath();
506
507
1/2
✓ Branch 1 taken 15 times.
✗ Branch 2 not taken.
15 auto filestreamHeader = std::ifstream(filepath);
508
1/2
✗ Branch 1 not taken.
✓ Branch 2 taken 15 times.
15 if (!filestreamHeader.good())
509 {
510 return FileReader::FileType::NONE;
511 }
512
513 15 std::string line;
514 do
515 {
516
2/2
✓ Branch 1 taken 1 times.
✓ Branch 2 taken 210 times.
211 if (filestreamHeader.eof())
517 {
518 1 return FileReader::FileType::NONE;
519 }
520
521
1/2
✓ Branch 1 taken 210 times.
✗ Branch 2 not taken.
210 std::getline(filestreamHeader, line);
522 // Remove any starting non text characters
523
2/4
✓ Branch 1 taken 210 times.
✗ Branch 2 not taken.
✓ Branch 7 taken 209 times.
✗ Branch 8 not taken.
420 line.erase(line.begin(), std::ranges::find_if(line, [](int ch) { return std::isgraph(ch); }));
524
5/6
✓ Branch 1 taken 209 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 196 times.
✓ Branch 5 taken 14 times.
✓ Branch 6 taken 196 times.
✓ Branch 7 taken 14 times.
209 } while (!line.empty() && line.find("% ") == std::string::npos);
525
526 14 return FileReader::FileType::ASCII;
527 15 }
528
529 14 void NAV::RtklibPosFile::readHeader()
530 {
531 // Read header line
532 14 std::string line;
533 do
534 {
535
1/2
✓ Branch 1 taken 208 times.
✗ Branch 2 not taken.
207 getline(line);
536 // Remove any starting non text characters
537
2/4
✓ Branch 1 taken 207 times.
✗ Branch 2 not taken.
✓ Branch 7 taken 208 times.
✗ Branch 8 not taken.
415 line.erase(line.begin(), std::ranges::find_if(line, [](int ch) { return std::isgraph(ch); }));
538
5/6
✓ Branch 1 taken 208 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 193 times.
✓ Branch 5 taken 14 times.
✓ Branch 6 taken 193 times.
✓ Branch 7 taken 14 times.
208 } while (!line.empty() && line.find("% ") == std::string::npos);
539
540 // Convert line into stream
541
1/2
✓ Branch 1 taken 14 times.
✗ Branch 2 not taken.
14 std::istringstream lineStream(line);
542
543
4/6
✓ Branch 2 taken 341 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 341 times.
✗ Branch 6 not taken.
✓ Branch 7 taken 327 times.
✓ Branch 8 taken 14 times.
354 for (std::string cell; lineStream >> cell;) // split at 'space'
544 {
545
3/4
✓ Branch 1 taken 327 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 14 times.
✓ Branch 4 taken 313 times.
327 if (cell != "%")
546 {
547
3/4
✓ Branch 1 taken 313 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 11 times.
✓ Branch 4 taken 302 times.
313 if (cell == "GPST") // When RTKLIB selected 'ww ssss GPST' or 'hh:mm:ss GPST'
548 {
549
1/2
✓ Branch 1 taken 11 times.
✗ Branch 2 not taken.
11 auto pos = tellg();
550
1/2
✓ Branch 1 taken 11 times.
✗ Branch 2 not taken.
11 getline(line);
551
1/2
✓ Branch 2 taken 11 times.
✗ Branch 3 not taken.
11 seekg(pos, std::ios::beg);
552
553
3/4
✓ Branch 1 taken 11 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✓ Branch 6 taken 10 times.
11 if (line.substr(0, 7).find('/') == std::string::npos)
554 {
555 // % GPST latitude(deg) longitude(deg) ...
556 // 2120 216180.000 XX.XXXXXXXXX ...
557
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
1 _headerColumns.emplace_back("GpsWeek");
558
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
1 _headerColumns.emplace_back("GpsToW");
559 }
560 else
561 {
562 // % GPST latitude(deg) longitude(deg) ...
563 // 2020/08/25 12:03:00.000 XX.XXXXXXXXX ...
564
1/2
✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
10 _headerColumns.emplace_back("Date-GPST");
565
1/2
✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
10 _headerColumns.emplace_back("Time-GPST");
566 }
567 }
568
3/4
✓ Branch 1 taken 302 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 2 times.
✓ Branch 4 taken 300 times.
302 else if (cell == "UTC") // When RTKLIB selected 'hh:mm:ss UTC'
569 {
570 // % UTC latitude(deg) longitude(deg) ...
571 // 2020/08/25 12:02:42.000 XX.XXXXXXXXX ...
572
1/2
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
2 _headerColumns.emplace_back("Date-UTC");
573
1/2
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
2 _headerColumns.emplace_back("Time-UTC");
574 }
575
3/4
✓ Branch 1 taken 300 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
✓ Branch 4 taken 299 times.
300 else if (cell == "JST") // When RTKLIB selected 'hh:mm:ss JST'
576 {
577 // % JST latitude(deg) longitude(deg) ...
578 // 2020/08/25 21:02:42.000 XX.XXXXXXXXX ...
579
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
1 _headerColumns.emplace_back("Date-JST");
580
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
1 _headerColumns.emplace_back("Time-JST");
581 }
582 else
583 {
584
1/2
✓ Branch 1 taken 298 times.
✗ Branch 2 not taken.
299 _headerColumns.push_back(cell);
585 }
586 }
587 14 }
588 14 }
589