From d14493585728855948a07a434318a0f224499d0e Mon Sep 17 00:00:00 2001
From: PepMS <jmarti@iri.upc.edu>
Date: Wed, 8 Apr 2020 08:16:19 +0200
Subject: [PATCH] wip

---
 src/examples/gnss_utils_test.cpp |  17 +++--
 src/examples/trace               |  86 ++++++++++++++++++++++
 test/CMakeLists.txt              |   6 +-
 test/gtest_navigation.cpp        | 120 +++++++++++++++++++++++++++++--
 4 files changed, 218 insertions(+), 11 deletions(-)
 create mode 100644 src/examples/trace

diff --git a/src/examples/gnss_utils_test.cpp b/src/examples/gnss_utils_test.cpp
index 1a59e2d..34277d8 100644
--- a/src/examples/gnss_utils_test.cpp
+++ b/src/examples/gnss_utils_test.cpp
@@ -30,23 +30,28 @@ int main(int argc, char* argv[])
   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 = "";         // only GPS | GPS+GAL: "-SYS=G,L" | ALL: ""
+  const char* opt = "-SYS=S";         // only GPS | GPS+GAL: "-SYS=G,L" | ALL: ""
 
-  // RTKLIB trace
-  // char str_file[80];
-  // snprintf(str_file, sizeof str_file, "../src/examples/trace");
+ 
 
   // load observations from RINEX file
   observations.loadFromRinex("../src/examples/sample_data.obs", t_start, t_end, dt, opt);
   observations.print();
 
-  // Trace close
-  // traceclose();
+
+ // RTKLIB trace
+  char str_file[80];
+  snprintf(str_file, sizeof str_file, "../src/examples/trace");
+  tracelevel(5);
+  traceopen(str_file);
 
   // load navigation from RINEX file
   navigation.loadFromRinex("../src/examples/sample_data.nav", t_start, t_end, dt, opt);
   navigation.print();
 
+  // Trace close
+  traceclose();
+
   /* Set processing options */
 
   /* header */
diff --git a/src/examples/trace b/src/examples/trace
new file mode 100644
index 0000000..362c7af
--- /dev/null
+++ b/src/examples/trace
@@ -0,0 +1,86 @@
+3 readrnxt: file=../src/examples/sample_data.nav rcv=1
+3 expath  : path=../src/examples/sample_data.nav nmax=1024
+3 expath  : file=../src/examples/sample_data.nav
+3 readrnxfile: file=../src/examples/sample_data.nav flag=0 index=1
+3 rtk_uncompress: file=../src/examples/sample_data.nav
+3 rtk_uncompress: stat=0
+3 readrnxfp: flag=0 index=1
+3 readrnxh:
+4 decode_navh:
+4 decode_navh:
+4 decode_navh:
+4 decode_navh:
+4 decode_navh:
+4 decode_navh:
+4 decode_navh:
+4 decode_navh:
+3 readrnxnav: ver=3.04 sys=0
+4 readrnxnavb: ver=3.04 sys=0
+4 readrnxnavb: ver=3.04 sys=0
+4 readrnxnavb: ver=3.04 sys=0
+4 readrnxnavb: ver=3.04 sys=0
+4 readrnxnavb: ver=3.04 sys=0
+4 readrnxnavb: ver=3.04 sys=0
+4 readrnxnavb: ver=3.04 sys=0
+4 readrnxnavb: ver=3.04 sys=0
+4 readrnxnavb: ver=3.04 sys=0
+4 readrnxnavb: ver=3.04 sys=0
+4 readrnxnavb: ver=3.04 sys=0
+4 readrnxnavb: ver=3.04 sys=0
+4 readrnxnavb: ver=3.04 sys=0
+4 readrnxnavb: ver=3.04 sys=0
+4 readrnxnavb: ver=3.04 sys=0
+4 readrnxnavb: ver=3.04 sys=0
+4 readrnxnavb: ver=3.04 sys=0
+4 readrnxnavb: ver=3.04 sys=0
+4 readrnxnavb: ver=3.04 sys=0
+4 readrnxnavb: ver=3.04 sys=0
+4 readrnxnavb: ver=3.04 sys=0
+4 readrnxnavb: ver=3.04 sys=0
+4 readrnxnavb: ver=3.04 sys=0
+4 readrnxnavb: ver=3.04 sys=0
+4 readrnxnavb: ver=3.04 sys=0
+4 readrnxnavb: ver=3.04 sys=0
+4 readrnxnavb: ver=3.04 sys=0
+4 readrnxnavb: ver=3.04 sys=0
+4 readrnxnavb: ver=3.04 sys=0
+4 readrnxnavb: ver=3.04 sys=0
+4 readrnxnavb: ver=3.04 sys=0
+4 readrnxnavb: ver=3.04 sys=0
+4 readrnxnavb: ver=3.04 sys=0
+4 readrnxnavb: ver=3.04 sys=0
+4 readrnxnavb: ver=3.04 sys=0
+4 readrnxnavb: ver=3.04 sys=0
+4 readrnxnavb: ver=3.04 sys=0
+4 readrnxnavb: ver=3.04 sys=0
+4 readrnxnavb: ver=3.04 sys=0
+4 decode_seph: ver=3.04 sat=49
+4 readrnxnavb: ver=3.04 sys=0
+4 decode_seph: ver=3.04 sat=38
+4 readrnxnavb: ver=3.04 sys=0
+4 decode_seph: ver=3.04 sat=36
+4 readrnxnavb: ver=3.04 sys=0
+4 decode_seph: ver=3.04 sat=49
+4 readrnxnavb: ver=3.04 sys=0
+4 decode_seph: ver=3.04 sat=36
+4 readrnxnavb: ver=3.04 sys=0
+4 decode_seph: ver=3.04 sat=36
+4 readrnxnavb: ver=3.04 sys=0
+4 decode_seph: ver=3.04 sat=49
+4 readrnxnavb: ver=3.04 sys=0
+4 decode_seph: ver=3.04 sat=49
+4 readrnxnavb: ver=3.04 sys=0
+4 decode_seph: ver=3.04 sat=36
+4 readrnxnavb: ver=3.04 sys=0
+4 readrnxnavb: ver=3.04 sys=0
+4 readrnxnavb: ver=3.04 sys=0
+4 readrnxnavb: ver=3.04 sys=0
+4 readrnxnavb: ver=3.04 sys=0
+4 readrnxnavb: ver=3.04 sys=0
+4 readrnxnavb: ver=3.04 sys=0
+4 readrnxnavb: ver=3.04 sys=0
+3 uniqnav: neph=0 ngeph=0 nseph=9
+3 uniqeph: n=0
+3 uniqgeph: ng=0
+3 uniqseph: ns=9
+4 uniqseph: ns=9
diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt
index 171992a..e7ef282 100644
--- a/test/CMakeLists.txt
+++ b/test/CMakeLists.txt
@@ -18,4 +18,8 @@ target_link_libraries(gtest_transformations ${PROJECT_NAME})
 
 # Observations test
 gnss_utils_add_gtest(gtest_observations gtest_observations.cpp)
-target_link_libraries(gtest_observations libgtest ${PROJECT_NAME})
\ No newline at end of file
+target_link_libraries(gtest_observations libgtest ${PROJECT_NAME})
+
+# Navigation test
+gnss_utils_add_gtest(gtest_navigation gtest_navigation.cpp)
+target_link_libraries(gtest_navigation libgtest ${PROJECT_NAME})
\ No newline at end of file
diff --git a/test/gtest_navigation.cpp b/test/gtest_navigation.cpp
index 5170cf1..6982d3a 100644
--- a/test/gtest_navigation.cpp
+++ b/test/gtest_navigation.cpp
@@ -1,12 +1,124 @@
 #include "gtest/utils_gtest.h"
-#include "gnss_utils/gnss_utils.h"
+#include "gnss_utils/utils/utils.h"
+#include "gnss_utils/navigation.h"
 
-TEST(NavigationTests, Whatever)
+using namespace GnssUtils;
+std::string   rnx_file = std::string(_GNSS_UTILS_ROOT_DIR) + "/test/data/sample_data.nav";
+nav_t         nav;
+const gtime_t t_start{ 0, 0 };  // no limit
+const gtime_t t_end{ 0, 0 };    // no limit
+const double  dt  = 0.0;        // no limit
+const char*   opt = "";   // only GPS | GPS+GAL: "-SYS=G,L" | ALL: ""
+
+void loadRinex()
+{
+  int stat = readrnxt(rnx_file.c_str(), 1, t_start, t_end, dt, opt, NULL, &nav, NULL);
+
+  ASSERT_EQ(stat, 1);
+  uniqnav(&nav);
+}
+
+TEST(NavigationTests, Ephemeris)
+{
+  loadRinex();
+
+  Navigation navigation;
+
+  navigation.setNavigation(nav);
+  ASSERT_TRUE(*(navigation.getNavigation().eph) == *(nav.eph));
+}
+
+TEST(NavigationTests, GlonassEphemeris)
+{
+  loadRinex();
+
+  Navigation navigation;
+
+  navigation.setNavigation(nav);
+  ASSERT_TRUE(*(navigation.getNavigation().geph) == *(nav.geph));
+}
+
+TEST(NavigationTests, SBASEphemeris)
+{
+  loadRinex();
+
+  Navigation navigation;
+
+  navigation.setNavigation(nav);
+  ASSERT_TRUE(*(navigation.getNavigation().seph) == *(nav.seph));
+}
+
+TEST(NavigationTests, PreciseEphemeris)
+{
+  loadRinex();
+
+  Navigation navigation;
+
+  navigation.setNavigation(nav);
+  ASSERT_TRUE(*(navigation.getNavigation().peph) == *(nav.peph));
+}
+
+TEST(NavigationTests, PreciseClock)
+{
+  loadRinex();
+
+  Navigation navigation;
+
+  navigation.setNavigation(nav);
+  ASSERT_TRUE(*(navigation.getNavigation().pclk) == *(nav.pclk));
+}
+
+TEST(NavigationTests, Almanac)
+{
+  loadRinex();
+
+  Navigation navigation;
+
+  navigation.setNavigation(nav);
+  ASSERT_TRUE(*(navigation.getNavigation().alm) == *(nav.alm));
+}
+
+TEST(NavigationTests, TecGrid)
+{
+  loadRinex();
+
+  Navigation navigation;
+
+  navigation.setNavigation(nav);
+  ASSERT_TRUE(*(navigation.getNavigation().tec) == *(nav.tec));
+}
+
+TEST(NavigationTests, FCBData)
 {
-  
+  loadRinex();
+
+  Navigation navigation;
+
+  navigation.setNavigation(nav);
+  ASSERT_TRUE(*(navigation.getNavigation().fcb) == *(nav.fcb));
+}
+
+TEST(NavigationTests, EarthRotationParams)
+{
+  loadRinex();
+
+  Navigation navigation;
+
+  navigation.setNavigation(nav);
+  ASSERT_TRUE(navigation.getNavigation().erp == nav.erp);
+}
+
+TEST(NavigationTests, setgetNavigation)
+{
+  loadRinex();
+
+  Navigation navigation;
+
+  navigation.setNavigation(nav);
+  ASSERT_TRUE(*(navigation.getNavigation().eph) == *(nav.eph));
 }
 
-int main(int argc, char **argv)
+int main(int argc, char** argv)
 {
   testing::InitGoogleTest(&argc, argv);
   return RUN_ALL_TESTS();
-- 
GitLab