From d1009c6013b3842e6a37c5ad2faaf4adb39073aa Mon Sep 17 00:00:00 2001 From: PepMS <jmarti@iri.upc.edu> Date: Mon, 30 Mar 2020 14:01:42 +0200 Subject: [PATCH] [test] added observations test --- include/gnss_utils/gnss_utils.h | 1 + src/gnss_utils.cpp | 18 +++++++++++++++++ test/CMakeLists.txt | 3 +++ test/gtest_navigation.cpp | 2 +- test/gtest_observations.cpp | 34 ++++++++++++++++++++++++++++++--- 5 files changed, 54 insertions(+), 4 deletions(-) diff --git a/include/gnss_utils/gnss_utils.h b/include/gnss_utils/gnss_utils.h index ce4304f..a16976a 100644 --- a/include/gnss_utils/gnss_utils.h +++ b/include/gnss_utils/gnss_utils.h @@ -97,6 +97,7 @@ bool equalArray(const T* array1, const T* array2, const int& size1, const int& s } bool equalTime(const gtime_t& time1, const gtime_t& time2); bool equalObservations(const obsd_t& obs1, const obsd_t& obs2); +bool equalObservations(const obs_t& obs1, const obs_t& obs2); } // namespace GNSSUtils diff --git a/src/gnss_utils.cpp b/src/gnss_utils.cpp index 6417b51..49f9ec4 100644 --- a/src/gnss_utils.cpp +++ b/src/gnss_utils.cpp @@ -485,4 +485,22 @@ bool equalObservations(const obsd_t& obs1, const obsd_t& obs2) return true; } +bool equalObservations(const obs_t& obs1, const obs_t& obs2) +{ + if (obs1.n != obs2.n) + return false; + if (obs1.nmax != obs2.nmax) + return false; + if (obs1.flag != obs2.flag) + return false; + if (obs1.rcvcount != obs2.rcvcount) + return false; + if (obs1.tmcount != obs2.tmcount) + return false; + if (!equalObservations(*(obs1.data), *(obs2.data))) + return false; + + return true; +} + } // namespace GNSSUtils diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index dcf7deb..0b11665 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -14,4 +14,7 @@ include_directories(${GTEST_INCLUDE_DIRS}) # Transformations test gnss_utils_add_gtest(gtest_transformations gtest_transformations.cpp) +gnss_utils_add_gtest(gtest_observations gtest_observations.cpp) + target_link_libraries(gtest_transformations ${PROJECT_NAME}) +target_link_libraries(gtest_observations ${PROJECT_NAME}) diff --git a/test/gtest_navigation.cpp b/test/gtest_navigation.cpp index 4e4e1db..5170cf1 100644 --- a/test/gtest_navigation.cpp +++ b/test/gtest_navigation.cpp @@ -3,7 +3,7 @@ TEST(NavigationTests, Whatever) { - + } int main(int argc, char **argv) diff --git a/test/gtest_observations.cpp b/test/gtest_observations.cpp index 80db0f1..66a25f0 100644 --- a/test/gtest_observations.cpp +++ b/test/gtest_observations.cpp @@ -1,13 +1,41 @@ #include "gtest/utils_gtest.h" #include "gnss_utils/gnss_utils.h" +#include "gnss_utils/observations.h" + +using namespace GNSSUtils; TEST(ObservationsTest, LoadFromRinex) { - - + gtime_t t_start{ 0, 0 }; // no limit + gtime_t t_end{ 0, 0 }; // no limit + double dt = 0.0; // no limit + const char* opt = "-SYS=G"; // only GPS | GPS+GAL: "-SYS=G,L" | ALL: "" + + const std::string& rnx_file = "../src/examples/raw_201805171357.obs"; + // GNSSUtils utilities + Observations observations; + + observations.loadFromRinex(rnx_file.c_str(), t_start, t_end, dt, opt); + + // RTKLIB utilities + obs_t obs; + obs.data = (obsd_t*)malloc(sizeof(obsd_t) * MAXSAT); + obs.n = 0; + obs.nmax = MAXSAT; + int stat = readrnxt(rnx_file.c_str(), 1, t_start, t_end, dt, opt, &obs, NULL, NULL); + + ASSERT_EQ(stat, 1); + + // Comparison + ASSERT_TRUE(obs.n == observations.getObservations().size()); + + for (int ii = 0; ii < obs.n; ++ii) + { + ASSERT_TRUE(equalObservations(obs.data[ii], observations.getObservations()[ii])); + } } -int main(int argc, char **argv) +int main(int argc, char** argv) { testing::InitGoogleTest(&argc, argv); return RUN_ALL_TESTS(); -- GitLab