diff --git a/CMakeLists.txt b/CMakeLists.txt
index db9516005b5509776b09ccf178d2c9b2f8d78d72..3c6cd3802f06a76c8dc5f9aff1cea5d460897a66 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -39,9 +39,37 @@ endif()
 
 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fpermissive")
 
+# Testing
 IF(NOT BUILD_TESTS)
   OPTION(BUILD_TESTS "Build Unit tests" ON)
 ENDIF(NOT BUILD_TESTS)
+if(BUILD_TESTS)
+	# Enables testing for this directory and below.
+    # Note that ctest expects to find a test file in the build directory root.
+    # Therefore, this command should be in the source directory root.
+    #include(CTest) # according to http://public.kitware.com/pipermail/cmake/2012-June/050853.html
+  	MESSAGE("Building tests.")
+    enable_testing()
+    set(_GNSS_UTILS_ROOT_DIR ${CMAKE_SOURCE_DIR})
+endif()
+
+# Define the directory where will be the configured config.h
+SET(GNSS_UTILS_CONFIG_DIR ${PROJECT_BINARY_DIR}/conf/gnss_utils/internal)
+
+# Create the specified output directory if it does not exist.
+IF(NOT EXISTS "${GNSS_UTILS_CONFIG_DIR}")
+  message(STATUS "Creating config output directory: ${GNSS_UTILS_CONFIG_DIR}")
+  file(MAKE_DIRECTORY "${GNSS_UTILS_CONFIG_DIR}")
+ENDIF()
+IF(EXISTS "${GNSS_UTILS_CONFIG_DIR}" AND NOT IS_DIRECTORY "${GNSS_UTILS_CONFIG_DIR}")
+  message(FATAL_ERROR "Bug: Specified CONFIG_DIR: "
+    "${GNSS_UTILS_CONFIG_DIR} exists, but is not a directory.")
+ENDIF()
+# Configure config.h
+configure_file(${CMAKE_CURRENT_SOURCE_DIR}/internal/config.h.in "${GNSS_UTILS_CONFIG_DIR}/config.h")
+message("GNSS_UTILS CONFIG ${GNSS_UTILS_CONFIG_DIR}/config.h")
+message("CONFIG DIRECTORY ${PROJECT_BINARY_DIR}")
+include_directories("${PROJECT_BINARY_DIR}/conf")
 
 # rtklib path
 SET(RTKLIB_DIR deps/RTKLIB)
@@ -87,18 +115,8 @@ SET(RTKLIB_SRC
     ${RTKLIB_SRC_DIR}/rcv/tersus.c
     ${RTKLIB_SRC_DIR}/rcv/ublox.c)
 
-
 # application header files
-SET(HEADERS
-    include/gnss_utils/utils/utils.h
-    include/gnss_utils/utils/transformations.h
-    include/gnss_utils/utils/rcv_position.h
-    include/gnss_utils/utils/sat_position.h
-    include/gnss_utils/observations.h
-    include/gnss_utils/navigation.h
-    include/gnss_utils/tdcp.h
-    include/gnss_utils/ublox_raw.h
-  ${RTKLIB_SRC_DIR}/rtklib.h)
+# NOT SET SINCE WE COPY THE WHOLE include FOLDER
 
 # Eigen #######
 FIND_PACKAGE(Eigen3 REQUIRED)
@@ -119,31 +137,24 @@ INCLUDE_DIRECTORIES(include/ ${EIGEN3_INCLUDE_DIR} ${Boost_INCLUDE_DIRS} ${RTKLI
 ADD_LIBRARY(gnss_utils SHARED ${SOURCES} ${RTKLIB_SRC})
 TARGET_LINK_LIBRARIES(gnss_utils ${Boost_LIBRARIES})
 
-# Installing
-INSTALL(TARGETS ${PROJECT_NAME}
-      RUNTIME DESTINATION bin
-      LIBRARY DESTINATION lib/iri-algorithms
-      ARCHIVE DESTINATION lib/iri-algorithms)
-INSTALL(FILES ${HEADERS} DESTINATION include/iri-algorithms/gnss_utils)
-INSTALL(FILES Findgnss_utils.cmake DESTINATION ${CMAKE_ROOT}/Modules/)
-
-
 # Examples
 ADD_SUBDIRECTORY(src/examples)
-if(BUILD_TESTS)
-	# Enables testing for this directory and below.
-    # Note that ctest expects to find a test file in the build directory root.
-    # Therefore, this command should be in the source directory root.
-    #include(CTest) # according to http://public.kitware.com/pipermail/cmake/2012-June/050853.html
-  	MESSAGE("Building tests.")
-    enable_testing()
-endif()
-
 # Testing
 if(BUILD_TESTS)
   	add_subdirectory(test)
 endif()
 
+# Installing
+INSTALL(TARGETS ${PROJECT_NAME}
+        RUNTIME DESTINATION bin
+        LIBRARY DESTINATION lib/iri-algorithms
+        ARCHIVE DESTINATION lib/iri-algorithms)
+INSTALL(DIRECTORY include/gnss_utils DESTINATION include/iri-algorithms)
+INSTALL(FILES ${RTKLIB_SRC_DIR}/rtklib.h DESTINATION include/iri-algorithms/gnss_utils)
+INSTALL(FILES Findgnss_utils.cmake DESTINATION ${CMAKE_ROOT}/Modules/)
+INSTALL(FILES "${GNSS_UTILS_CONFIG_DIR}/config.h"
+  DESTINATION include/iri-algorithms/gnss_utils/internal)
+
 FIND_PACKAGE(Doxygen)
 
 FIND_PATH(IRI_DOC_DIR doxygen.conf ${CMAKE_SOURCE_DIR}/doc/iri_doc/)
diff --git a/include/gnss_utils/gnss_utils.h b/include/gnss_utils/gnss_utils.h
new file mode 100644
index 0000000000000000000000000000000000000000..4d9f83f2bd6ab7a7a70fa1b63e8c3d577be4011b
--- /dev/null
+++ b/include/gnss_utils/gnss_utils.h
@@ -0,0 +1,8 @@
+#ifndef INCLUDE_GNSS_UTILS_GNSS_UTILS_H_
+#define INCLUDE_GNSS_UTILS_GNSS_UTILS_H_
+
+extern "C" {
+#include "rtklib.h"
+}
+
+#endif
\ No newline at end of file
diff --git a/include/gnss_utils/navigation.h b/include/gnss_utils/navigation.h
index 866e830eb509bc27d69dfb4a95c785b04cd04595..ccd1ac812fcd829e5ffcca14021d0fc15c65e595 100644
--- a/include/gnss_utils/navigation.h
+++ b/include/gnss_utils/navigation.h
@@ -5,12 +5,9 @@
 #include <iostream>
 #include <memory>
 
+#include "gnss_utils/gnss_utils.h"
 #include "gnss_utils/utils/utils.h"
 
-extern "C" {
-#include "rtklib.h"
-}
-
 namespace GnssUtils
 {
 class Navigation;
diff --git a/include/gnss_utils/observations.h b/include/gnss_utils/observations.h
index 88bb8a49c47f47dd46ddfa87be63c5537202a045..766a72c1040ff7efcd52768fb874f0f9e5d3a840 100644
--- a/include/gnss_utils/observations.h
+++ b/include/gnss_utils/observations.h
@@ -7,12 +7,9 @@
 #include <memory>
 #include <cassert>
 
+#include "gnss_utils/gnss_utils.h"
 #include "gnss_utils/utils/utils.h"
 
-extern "C" {
-#include "rtklib.h"
-}
-
 namespace GnssUtils
 {
 class Observations;
@@ -62,6 +59,9 @@ public:
                                      Observations&       common_obs_1,
                                      Observations&       common_obs_2);
 
+  bool operator==(const Observations& other_obs) const;
+  bool operator !=(const Observations &other_obs) const;
+
 private:
   // Private objects
   std::map<unsigned char, int> sat_2_idx_;  //< key: corresponding sat number, value: idx in obs_ vector
@@ -125,5 +125,10 @@ inline bool Observations::hasSatellite(const unsigned char& i) const
   return sat_2_idx_.count(i) != 0;
 }
 
+inline bool Observations::operator !=(const Observations &other_obs) const
+{
+    return !(*this == other_obs);
+}
+
 }  // namespace GnssUtils
 #endif  // INCLUDE_GNSS_UTILS_OBSERVATIONS_H_
diff --git a/include/gnss_utils/utils/rcv_position.h b/include/gnss_utils/utils/rcv_position.h
index 77ec4e77ef3e8d3436601341b3e8868d6018433b..9755c14f8f453758df77e432ad30d40b740d9441 100644
--- a/include/gnss_utils/utils/rcv_position.h
+++ b/include/gnss_utils/utils/rcv_position.h
@@ -15,10 +15,7 @@
 #include "gnss_utils/observations.h"
 #include "gnss_utils/navigation.h"
 #include "gnss_utils/utils/transformations.h"
-
-extern "C" {
-#include "rtklib.h"
-}
+#include "gnss_utils/gnss_utils.h"
 
 namespace GnssUtils
 {
diff --git a/include/gnss_utils/utils/sat_position.h b/include/gnss_utils/utils/sat_position.h
index 376d406a2a1f13b32ce7122d293df408e98085d9..3e90436c2caea89e3e77fd57e99acbe8ce727813 100644
--- a/include/gnss_utils/utils/sat_position.h
+++ b/include/gnss_utils/utils/sat_position.h
@@ -15,10 +15,7 @@
 #include "gnss_utils/observations.h"
 #include "gnss_utils/navigation.h"
 #include "gnss_utils/utils/transformations.h"
-
-extern "C" {
-#include "rtklib.h"
-}
+#include "gnss_utils/gnss_utils.h"
 
 namespace GnssUtils
 {
diff --git a/include/gnss_utils/utils/transformations.h b/include/gnss_utils/utils/transformations.h
index ebed329289ac0d58e6555347a71634565dc108e9..caa22c473af8509cda43970bf7f98cdef05ed99f 100644
--- a/include/gnss_utils/utils/transformations.h
+++ b/include/gnss_utils/utils/transformations.h
@@ -11,10 +11,7 @@
 #include <eigen3/Eigen/Dense>
 #include <eigen3/Eigen/Geometry>
 #include <eigen3/Eigen/Sparse>
-
-extern "C" {
-#include "rtklib.h"
-}
+#include "gnss_utils/gnss_utils.h"
 
 namespace GnssUtils
 {
diff --git a/include/gnss_utils/utils/utils.h b/include/gnss_utils/utils/utils.h
index a8c378daa76454f5ef114e5aee8a5109b467bac5..a4c6598e02321ce478173da8176ef76b28a02e0a 100644
--- a/include/gnss_utils/utils/utils.h
+++ b/include/gnss_utils/utils/utils.h
@@ -6,15 +6,14 @@
 #include <memory>
 #include <string>
 
+#include "gnss_utils/internal/config.h"
+#include "gnss_utils/gnss_utils.h"
+
 #define ARRAY_SIZE(arr) sizeof(arr) / sizeof(arr[0])
 #define ARRAY2D_NROWS(arr) sizeof(arr) / sizeof(arr[0])
 #define ARRAY2D_NCOLS(arr) sizeof(arr[0]) / sizeof(arr[0][0])
 #define GNSSUTILS_MSG "--GnssUtils--"
 
-extern "C" {
-#include "rtklib.h"
-}
-
 namespace GnssUtils
 {
 void print(std::string& _msg);
@@ -174,4 +173,11 @@ bool equalNavigations(const nav_t& nav1, const nav_t& nav2);
 
 }  // namespace GnssUtils
 
-#endif  // INCLUDE_GNSS_UTILS_UTILS_UTILS_H_
\ No newline at end of file
+bool operator==(const gtime_t& time1, const gtime_t& time2);
+bool operator!=(const gtime_t& time1, const gtime_t& time2);
+bool operator==(const obsd_t& obs1, const obsd_t& obs2);
+bool operator!=(const obsd_t& obs1, const obsd_t& obs2);
+bool operator==(const obs_t& obs1, const obs_t& obs2);
+bool operator!=(const obs_t& obs1, const obs_t& obs2);
+
+#endif  // INCLUDE_GNSS_UTILS_UTILS_UTILS_H_
diff --git a/internal/config.h.in b/internal/config.h.in
new file mode 100644
index 0000000000000000000000000000000000000000..90ad35cc6c35569f52a370d2c6624e0bed11c030
--- /dev/null
+++ b/internal/config.h.in
@@ -0,0 +1,10 @@
+#ifndef GNSS_UTILS_INTERNAL_CONFIG_H_
+#define GNSS_UTILS_INTERNAL_CONFIG_H_
+
+#cmakedefine _GNSS_UTILS_DEBUG
+
+#cmakedefine _GNSS_UTILS_TRACE
+
+#define _GNSS_UTILS_ROOT_DIR "${_GNSS_UTILS_ROOT_DIR}"
+
+#endif /* GNSS_UTILS_INTERNAL_CONFIG_H_ */
diff --git a/src/observations.cpp b/src/observations.cpp
index 64fa7508b2075720f81234e93b3e8b45d7e5496d..8f04ec1a62c866e58f074ef2468ade3a48ba5af7 100644
--- a/src/observations.cpp
+++ b/src/observations.cpp
@@ -218,3 +218,19 @@ void Observations::findCommonObservations(const Observations& obs_1,
   //    std::cout << (int)obs_2_ref.sat << " ";
   // std::cout << std::endl;
 }
+
+bool Observations::operator ==(const Observations &other_obs) const
+{
+
+    if (sat_2_idx_ != other_obs.sat_2_idx_)
+        return false;
+
+    if (idx_2_sat_ != other_obs.idx_2_sat_)
+        return false;
+
+    for (auto i = 0; i < obs_.size(); i++)
+        if (obs_.at(i) != other_obs.obs_.at(i))
+            return false;
+
+    return true;
+}
diff --git a/src/utils/utils.cpp b/src/utils/utils.cpp
index 7103c29e59d3b8f47838bf7bc0a96cba60529339..d8167cc34a015bc32770c25d4a515a29bf1b11cb 100644
--- a/src/utils/utils.cpp
+++ b/src/utils/utils.cpp
@@ -61,63 +61,6 @@ void printArray(std::string _name, float* _array, int size)
   }
 }
 
-bool equalTime(const gtime_t& time1, const gtime_t& time2)
-{
-  return (difftime(time1.time, time2.time) == 0.0 && time1.sec == time2.sec);
-}
-
-bool equalObservations(const obsd_t& obs1, const obsd_t& obs2)
-{
-  if (!equalTime(obs1.time, obs2.time))
-    return false;
-  if (!equalTime(obs1.eventime, obs2.eventime))
-    return false;
-  if (obs1.timevalid != obs2.timevalid)
-    return false;
-  if (obs1.sat != obs2.sat)
-    return false;
-  if (obs1.rcv != obs2.rcv)
-    return false;
-  if (memcmp(obs1.SNR, obs2.SNR, sizeof(obs1.SNR)) != 0)
-    return false;
-  if (memcmp(obs1.LLI, obs2.LLI, sizeof(obs1.LLI)) != 0)
-    return false;
-  if (memcmp(obs1.code, obs2.code, sizeof(obs1.code)) != 0)
-    return false;
-  if (memcmp(obs1.qualL, obs2.qualL, sizeof(obs1.qualL)) != 0)
-    return false;
-  if (memcmp(obs1.qualP, obs2.qualP, sizeof(obs1.qualP)) != 0)
-    return false;
-  if (obs1.freq != obs2.freq)
-    return false;
-  if (!equalArray<double>(obs1.L, obs2.L, ARRAY_SIZE(obs1.L), ARRAY_SIZE(obs2.L)))
-    return false;
-  if (!equalArray<double>(obs1.P, obs2.P, ARRAY_SIZE(obs1.P), ARRAY_SIZE(obs2.P)))
-    return false;
-  if (!equalArray<float>(obs1.D, obs2.D, ARRAY_SIZE(obs1.D), ARRAY_SIZE(obs2.D)))
-    return false;
-
-  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;
-}
-
 bool equalEphemeris(const eph_t& eph1, const eph_t& eph2)
 {
   if (eph1.sat != eph2.sat)
@@ -137,11 +80,11 @@ bool equalEphemeris(const eph_t& eph1, const eph_t& eph2)
   if (eph1.flag != eph2.flag)
     return false;
 
-  if (!equalTime(eph1.toe, eph2.toe))
+  if (eph1.toe != eph2.toe)
     return false;
-  if (!equalTime(eph1.toc, eph2.toc))
+  if (eph1.toc != eph2.toc)
     return false;
-  if (!equalTime(eph1.ttr, eph2.ttr))
+  if (eph1.ttr != eph2.ttr)
     return false;
 
   if (eph1.A != eph2.A)
@@ -185,7 +128,7 @@ bool equalEphemeris(const eph_t& eph1, const eph_t& eph2)
   if (eph1.f2 != eph2.f2)
     return false;
 
-  if (!equalArray(eph1.tgd, eph2.tgd, ARRAY_SIZE(eph1.tgd), ARRAY_SIZE(eph2.tgd)))
+  if (!equalArray<double>(eph1.tgd, eph2.tgd, ARRAY_SIZE(eph1.tgd), ARRAY_SIZE(eph2.tgd)))
     return false;
 
   if (eph1.Adot != eph2.Adot)
@@ -211,9 +154,9 @@ bool equalGlonassEphemeris(const geph_t& geph1, const geph_t& geph2)
   if (geph1.age != geph2.age)
     return false;
 
-  if (!equalTime(geph1.toe, geph2.toe))
+  if (geph1.toe != geph2.toe)
     return false;
-  if (!equalTime(geph1.tof, geph2.tof))
+  if (geph1.tof != geph2.tof)
     return false;
 
   if (!equalArray<double>(geph1.pos, geph2.pos, ARRAY_SIZE(geph1.pos), ARRAY_SIZE(geph2.pos)))
@@ -238,9 +181,9 @@ bool equalSbasEphemeris(const seph_t& seph1, const seph_t& seph2)
   if (seph1.sat != seph2.sat)
     return false;
 
-  if (!equalTime(seph1.t0, seph2.t0))
+  if (seph1.t0 != seph2.t0)
     return false;
-  if (!equalTime(seph1.tof, seph2.tof))
+  if (seph1.tof != seph2.tof)
     return false;
 
   if (seph1.sva != seph2.sva)
@@ -265,7 +208,7 @@ bool equalSbasEphemeris(const seph_t& seph1, const seph_t& seph2)
 
 bool equalPreciseEphemeris(const peph_t& peph1, const peph_t& peph2)
 {
-  if (!equalTime(peph1.time, peph2.time))
+  if (peph1.time != peph2.time)
     return false;
 
   if (peph1.index != peph2.index)
@@ -319,7 +262,7 @@ bool equalPreciseEphemeris(const peph_t& peph1, const peph_t& peph2)
 
 bool equalPreciseClock(const pclk_t& pclk1, const pclk_t& pclk2)
 {
-  if (!equalTime(pclk1.time, pclk2.time))
+  if (pclk1.time != pclk2.time)
     return false;
 
   if (pclk1.index != pclk2.index)
@@ -353,7 +296,7 @@ bool equalAlmanac(const alm_t& alm1, const alm_t& alm2)
   if (alm1.week != alm2.week)
     return false;
 
-  if (!equalTime(alm1.toa, alm2.toa))
+  if (alm1.toa != alm2.toa)
     return false;
 
   if (alm1.A != alm2.A)
@@ -382,7 +325,7 @@ bool equalAlmanac(const alm_t& alm1, const alm_t& alm2)
 
 bool equalTecGrid(const tec_t& tec1, const tec_t& tec2)
 {
-  if (!equalTime(tec1.time, tec2.time))
+  if (tec1.time != tec2.time)
     return false;
 
   if (!equalArray<int>(tec1.ndata, tec2.ndata, ARRAY_SIZE(tec1.ndata), ARRAY_SIZE(tec2.ndata)))
@@ -405,9 +348,9 @@ bool equalTecGrid(const tec_t& tec1, const tec_t& tec2)
 
 bool equalFcb(const fcbd_t& fcbd1, const fcbd_t& fcbd2)
 {
-  if (!equalTime(fcbd1.ts, fcbd2.ts))
+  if (fcbd1.ts != fcbd2.ts)
     return false;
-  if (!equalTime(fcbd1.te, fcbd2.te))
+  if (fcbd1.te != fcbd2.te)
     return false;
 
   if (!equalArray2d<double>(&fcbd1.bias[0][0],
@@ -430,7 +373,7 @@ bool equalFcb(const fcbd_t& fcbd1, const fcbd_t& fcbd2)
 bool equalEarthRotationParameters(const erp_t& erp1, const erp_t& erp2)
 {
   // TODO
-  
+
   return true;
 }
 
@@ -530,3 +473,44 @@ bool equalNavigation(const nav_t& nav1, const nav_t& nav2)
     return false;
 }
 }  // namespace GnssUtils
+
+bool operator==(const gtime_t& time1, const gtime_t& time2)
+{
+  return (difftime(time1.time, time2.time) == 0.0 && time1.sec == time2.sec);
+}
+
+bool operator!=(const gtime_t& time1, const gtime_t& time2)
+{
+  return not(time1 == time2);
+}
+
+bool operator==(const obsd_t& obs1, const obsd_t& obs2)
+{
+  return obs1.time == obs2.time && obs1.eventime == obs2.eventime && obs1.timevalid == obs2.timevalid &&
+         obs1.sat == obs2.sat && obs1.rcv == obs2.rcv && memcmp(obs1.SNR, obs2.SNR, sizeof(obs1.SNR)) == 0 &&
+         memcmp(obs1.LLI, obs2.LLI, sizeof(obs1.LLI)) == 0 && memcmp(obs1.code, obs2.code, sizeof(obs1.code)) == 0 &&
+         memcmp(obs1.qualL, obs2.qualL, sizeof(obs1.qualL)) == 0 &&
+         memcmp(obs1.qualP, obs2.qualP, sizeof(obs1.qualP)) == 0 && obs1.freq == obs2.freq &&
+         GnssUtils::equalArray<double>(
+             obs1.L, obs2.L, sizeof(obs1.L) / sizeof(obs1.L[0]), sizeof(obs2.L) / sizeof(obs2.L[0])) &&
+         GnssUtils::equalArray<double>(
+             obs1.P, obs2.P, sizeof(obs1.P) / sizeof(obs1.P[0]), sizeof(obs2.P) / sizeof(obs2.P[0])) &&
+         GnssUtils::equalArray<float>(
+             obs1.D, obs2.D, sizeof(obs1.D) / sizeof(obs1.D[0]), sizeof(obs2.D) / sizeof(obs2.D[0]));
+}
+
+bool operator!=(const obsd_t& obs1, const obsd_t& obs2)
+{
+  return not(obs1 == obs2);
+}
+
+bool operator==(const obs_t& obs1, const obs_t& obs2)
+{
+  return obs1.n == obs2.n && obs1.nmax == obs2.nmax && obs1.flag == obs2.flag && obs1.rcvcount == obs2.rcvcount &&
+         obs1.tmcount == obs2.tmcount && *(obs1.data) == *(obs2.data);
+}
+
+bool operator!=(const obs_t& obs1, const obs_t& obs2)
+{
+  return not(obs1 == obs2);
+}
diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt
index 93365929c3f20d1f751e1e5d6ff5476adf3a5249..171992abf5ce4898215379e0e2aefe609dd3a7e7 100644
--- a/test/CMakeLists.txt
+++ b/test/CMakeLists.txt
@@ -17,7 +17,5 @@ gnss_utils_add_gtest(gtest_transformations gtest_transformations.cpp)
 target_link_libraries(gtest_transformations ${PROJECT_NAME})
 
 # Observations test
-add_executable(gtest_observations gtest_observations.cpp)
-add_dependencies(gtest_observations libgtest)
-target_link_libraries(gtest_observations libgtest ${PROJECT_NAME})
-add_test(NAME gtest_observations COMMAND gtest_observations "${CMAKE_CURRENT_LIST_DIR}/../src/examples/sample_data.obs")
+gnss_utils_add_gtest(gtest_observations gtest_observations.cpp)
+target_link_libraries(gtest_observations libgtest ${PROJECT_NAME})
\ No newline at end of file
diff --git a/test/data/sample_data.nav b/test/data/sample_data.nav
new file mode 100644
index 0000000000000000000000000000000000000000..5c4c418dc876fd45e7fddca388b4cc98b0202441
--- /dev/null
+++ b/test/data/sample_data.nav
@@ -0,0 +1,406 @@
+     3.04           N: GNSS NAV DATA    M: MIXED            RINEX VERSION / TYPE
+sbf2rin-13.4.3                          20200205 113410 UTC PGM / RUN BY / DATE 
+GPSA   9.3132E-09 -1.4901E-08 -5.9605E-08  1.1921E-07       IONOSPHERIC CORR    
+GPSB   9.6256E+04 -1.4746E+05 -1.3107E+05  9.1750E+05       IONOSPHERIC CORR    
+GAL    2.9250E+01  3.8281E-01  3.2959E-03  0.0000E+00       IONOSPHERIC CORR    
+GPUT -9.3132257462E-10 8.881784197E-16 503808 2083          TIME SYSTEM CORR    
+GAUT  9.3132257462E-10 0.000000000E+00 345600 2083          TIME SYSTEM CORR    
+GAGP  1.2514647096E-09-5.329070518E-15 345600 2083          TIME SYSTEM CORR    
+    18                                                      LEAP SECONDS        
+                                                            END OF HEADER       
+G02 2019 12 12 12 00 00-3.648423589766E-04-7.503331289627E-12 0.000000000000E+00
+     4.700000000000E+01-1.208437500000E+02 4.378039505776E-09-1.891689129337E+00
+    -6.053596735001E-06 1.953727600630E-02 9.275972843170E-06 5.153594808578E+03
+     3.888000000000E+05 3.371387720108E-07-2.768163608668E-01 2.346932888031E-07
+     9.575379914494E-01 1.915312500000E+02-1.691294764827E+00-7.654961717025E-09
+     2.000083311498E-11 1.000000000000E+00 2.083000000000E+03 0.000000000000E+00
+     2.000000000000E+00 0.000000000000E+00-1.769512891769E-08 4.700000000000E+01
+     3.868920000000E+05 4.000000000000E+00
+G04 2019 12 12 12 00 00-1.993030309677E-05-5.002220859751E-12 0.000000000000E+00
+     1.570000000000E+02-1.387500000000E+01 4.959135139313E-09-2.339868507292E+00
+    -8.419156074524E-07 1.249722088687E-03 5.329027771950E-06 5.150576126099E+03
+     3.888000000000E+05 5.587935447693E-09 1.915372002909E+00 1.303851604462E-08
+     9.594040575671E-01 2.769062500000E+02-1.281079249179E+00-8.132124449911E-09
+    -3.685867816904E-10 1.000000000000E+00 2.083000000000E+03 0.000000000000E+00
+     4.096000000000E+03 6.300000000000E+01-4.190951585770E-09 6.690000000000E+02
+     3.873960000000E+05 4.000000000000E+00
+G06 2019 12 12 12 00 00-1.512947492301E-04-1.114131009672E-11 0.000000000000E+00
+     1.000000000000E+02-1.239062500000E+02 3.927663602954E-09-1.824134113525E+00
+    -6.347894668579E-06 1.658447668888E-03 9.786337614059E-06 5.153719285965E+03
+     3.888000000000E+05-1.490116119385E-08-2.122724576342E-01 5.401670932770E-08
+     9.781077241470E-01 2.010000000000E+02-1.200768673201E+00-7.640318249923E-09
+     1.214336296267E-11 1.000000000000E+00 2.083000000000E+03 0.000000000000E+00
+     2.000000000000E+00 0.000000000000E+00 4.656612873077E-09 1.000000000000E+02
+     3.858180000000E+05 4.000000000000E+00
+G07 2019 12 12 12 00 00-1.683332957327E-04-8.185452315956E-12 0.000000000000E+00
+     5.700000000000E+01 3.909375000000E+01 4.250534194668E-09-2.882882750792E+00
+     1.888722181320E-06 1.320131728426E-02 1.172721385956E-05 5.153718780518E+03
+     3.888000000000E+05-7.450580596924E-09 2.943673467473E+00-1.341104507446E-07
+     9.545190186113E-01 1.482812500000E+02-2.422380694519E+00-7.540671242082E-09
+    -4.639478967207E-10 1.000000000000E+00 2.083000000000E+03 0.000000000000E+00
+     2.000000000000E+00 0.000000000000E+00-1.117587089539E-08 5.700000000000E+01
+     3.858180000000E+05 4.000000000000E+00
+G09 2019 12 12 12 00 00-1.062308438122E-04-9.436007530894E-12 0.000000000000E+00
+     7.800000000000E+01-1.206250000000E+01 5.168786729286E-09 4.992301981873E-01
+    -7.078051567078E-07 1.692383317277E-03 5.021691322327E-06 5.153534730911E+03
+     3.888000000000E+05-2.793967723846E-08 1.868752621939E+00 1.490116119385E-08
+     9.520568016730E-01 2.776875000000E+02 1.684705661839E+00-8.283559329210E-09
+    -2.914407111040E-10 1.000000000000E+00 2.083000000000E+03 0.000000000000E+00
+     2.000000000000E+00 0.000000000000E+00 1.396983861923E-09 7.800000000000E+01
+     3.857520000000E+05 4.000000000000E+00
+G13 2019 12 12 12 00 00-2.714386209846E-05 2.387423592154E-12 0.000000000000E+00
+     8.700000000000E+01-1.987500000000E+01 4.779841956746E-09-8.793798521920E-01
+    -1.072883605957E-06 4.130274290219E-03 5.709007382393E-06 5.153656044006E+03
+     3.888000000000E+05-6.332993507385E-08 2.009100851183E+00 9.313225746155E-08
+     9.674158381471E-01 2.706562500000E+02 1.183260297004E+00-8.083193840326E-09
+    -5.078782980268E-10 1.000000000000E+00 2.083000000000E+03 0.000000000000E+00
+     2.000000000000E+00 0.000000000000E+00-1.117587089539E-08 8.700000000000E+01
+     3.870420000000E+05 4.000000000000E+00
+G23 2019 12 12 12 00 00-1.500290818512E-04 2.387423592154E-12 0.000000000000E+00
+     3.000000000000E+01-1.009375000000E+01 5.335222233421E-09-1.452196357053E+00
+    -4.973262548447E-07 1.326873130165E-02 4.552304744720E-06 5.153694892883E+03
+     3.888000000000E+05 2.980232238770E-07 1.861752114203E+00 4.470348358154E-08
+     9.428683609718E-01 2.778750000000E+02-2.215284453592E+00-8.261415549690E-09
+    -2.478674675321E-10 1.000000000000E+00 2.083000000000E+03 0.000000000000E+00
+     2.000000000000E+00 0.000000000000E+00-2.048909664154E-08 3.000000000000E+01
+     3.858420000000E+05 4.000000000000E+00
+G30 2019 12 12 12 00 00-1.042019575834E-04-8.640199666843E-12 0.000000000000E+00
+     2.500000000000E+01 4.368750000000E+01 4.663408535398E-09-2.906933186921E+00
+     2.210959792137E-06 4.164319136180E-03 1.142919063568E-05 5.153722436905E+03
+     3.888000000000E+05-2.793967723846E-08 2.968865819418E+00-3.725290298462E-09
+     9.399056183160E-01 1.480312500000E+02-2.921787544453E+00-7.888185717455E-09
+    -4.778770483544E-10 1.000000000000E+00 2.083000000000E+03 0.000000000000E+00
+     2.000000000000E+00 0.000000000000E+00 3.725290298462E-09 2.500000000000E+01
+     3.858180000000E+05 4.000000000000E+00
+R03 2019 12 12 11 15 00 6.369315087795E-06 0.000000000000E+00 3.858000000000E+05
+     9.652274414063E+03 3.457994461060E-01 9.313225746155E-10 0.000000000000E+00
+     1.708528710938E+04 2.202743530273E+00-1.862645149231E-09 5.000000000000E+00
+     1.629986035156E+04-2.522974967957E+00-2.793967723846E-09 0.000000000000E+00
+R03 2019 12 12 11 45 00 6.371177732944E-06 0.000000000000E+00 3.870000000000E+05
+     1.043946044922E+04 4.914197921753E-01 9.313225746155E-10 0.000000000000E+00
+     2.039817236328E+04 1.453030586243E+00-1.862645149231E-09 5.000000000000E+00
+     1.118693066406E+04-3.121288299561E+00-1.862645149231E-09 0.000000000000E+00
+R05 2019 12 12 11 15 00 4.108343273401E-05 9.094947017729E-13 3.862800000000E+05
+     5.985222167969E+03 1.195173263550E-01-1.862645149231E-09 0.000000000000E+00
+    -1.828012353516E+04 2.295486450195E+00 1.862645149231E-09 1.000000000000E+00
+     1.676849218750E+04 2.457766532898E+00-1.862645149231E-09 0.000000000000E+00
+R05 2019 12 12 11 45 00 4.108529537916E-05 9.094947017729E-13 3.871800000000E+05
+     6.598400390625E+03 5.781021118164E-01-9.313225746155E-10 0.000000000000E+00
+    -1.370180371094E+04 2.745733261108E+00 9.313225746155E-10 1.000000000000E+00
+     2.048785058594E+04 1.648019790649E+00-1.862645149231E-09 0.000000000000E+00
+R14 2019 12 12 11 15 00 4.597380757332E-05 0.000000000000E+00 3.858000000000E+05
+     2.135816357422E+04-6.865911483765E-01 3.725290298462E-09 0.000000000000E+00
+     1.261080761719E+04-4.694700241089E-01-0.000000000000E+00-7.000000000000E+00
+     5.991423828125E+03 3.442845344543E+00-2.793967723846E-09 0.000000000000E+00
+R14 2019 12 12 11 45 00 4.597473889589E-05 0.000000000000E+00 3.870000000000E+05
+     1.936734765625E+04-1.519350051880E+00 1.862645149231E-09 0.000000000000E+00
+     1.162212011719E+04-5.869359970093E-01-9.313225746155E-10-7.000000000000E+00
+     1.187716162109E+04 3.054467201233E+00-2.793967723846E-09 0.000000000000E+00
+R15 2019 12 12 11 15 00 1.051910221577E-04 0.000000000000E+00 3.860100000000E+05
+     2.249286962891E+04 1.470921516418E+00 5.587935447693E-09 0.000000000000E+00
+     4.179755859375E+03 4.950771331787E-01 9.313225746155E-10 0.000000000000E+00
+    -1.125261865234E+04 3.118181228638E+00-1.862645149231E-09 0.000000000000E+00
+R15 2019 12 12 11 45 00 1.051910221577E-04 0.000000000000E+00 3.870000000000E+05
+     2.451276953125E+04 7.425718307495E-01 4.656612873077E-09 0.000000000000E+00
+     4.643450683594E+03 4.951381683350E-02 0.000000000000E+00 0.000000000000E+00
+    -5.276882812500E+03 3.478320121765E+00-2.793967723846E-09 0.000000000000E+00
+R19 2019 12 12 11 15 00-6.853323429823E-05-1.818989403546E-12 3.859500000000E+05
+     2.008951708984E+04 2.060537338257E-01 2.793967723846E-09 0.000000000000E+00
+    -1.541425244141E+04-4.377956390381E-01 2.793967723846E-09 3.000000000000E+00
+     3.049126953125E+03-3.578741073608E+00-1.862645149231E-09 0.000000000000E+00
+R19 2019 12 12 11 45 00-6.853695958853E-05-1.818989403546E-12 3.870000000000E+05
+     1.978871044922E+04-5.135507583618E-01 3.725290298462E-09 0.000000000000E+00
+    -1.571828076172E+04 1.333026885986E-01 1.862645149231E-09 3.000000000000E+00
+    -3.427280273438E+03-3.570507049561E+00-1.862645149231E-09 0.000000000000E+00
+R13 2019 12 12 11 45 00-3.215298056602E-05-0.000000000000E+00 3.876000000000E+05
+     3.100402832031E+03-2.939124107361E+00-1.862645149231E-09 0.000000000000E+00
+     1.186301953125E+04-8.695030212402E-01-9.313225746155E-10-2.000000000000E+00
+     2.235348193359E+04 8.685455322266E-01-1.862645149231E-09 0.000000000000E+00
+R20 2019 12 12 11 45 00-3.986386582255E-04-0.000000000000E+00 3.877800000000E+05
+     9.837636718750E+03 1.428291320801E+00-0.000000000000E+00 0.000000000000E+00
+    -1.795626220703E+04-1.534766197205E+00 1.862645149231E-09 2.000000000000E+00
+     1.525312060547E+04-2.726587295532E+00-1.862645149231E-09 0.000000000000E+00
+E01 2019 12 12 11 10 00-7.507699192502E-04-7.986500349944E-12 0.000000000000E+00
+     3.000000000000E+00 2.013125000000E+02 2.449744898851E-09 7.981291655576E-01
+     9.473413228989E-06 1.731918891892E-04 9.533017873764E-06 5.440622966766E+03
+     3.858000000000E+05 3.166496753693E-08-2.605880888987E+00-1.117587089539E-08
+     9.855193908613E-01 1.463750000000E+02-1.069210219000E+00-5.272719629937E-09
+     1.914365455291E-10 5.170000000000E+02 2.083000000000E+03
+     3.120000000000E+00 0.000000000000E+00-1.629814505577E-09-1.862645149231E-09
+     3.864650000000E+05
+E01 2019 12 12 11 20 00-7.507746340707E-04-7.972289495228E-12 0.000000000000E+00
+     4.000000000000E+00 2.002500000000E+02 2.449744898851E-09 8.736282654153E-01
+     9.419396519661E-06 1.731686061248E-04 9.588897228241E-06 5.440622581482E+03
+     3.864000000000E+05 3.725290298462E-08-2.605884063520E+00-1.862645149231E-09
+     9.855195488564E-01 1.452500000000E+02-1.070324887968E+00-5.265933632987E-09
+     1.896507568581E-10 5.170000000000E+02 2.083000000000E+03
+     3.120000000000E+00 0.000000000000E+00-1.629814505577E-09-1.862645149231E-09
+     3.870650000000E+05
+E09 2019 12 12 11 10 00 6.223833654076E-03-1.216449163621E-11 0.000000000000E+00
+     3.000000000000E+00 7.218750000000E+00 3.823373544569E-09-3.442271110123E-02
+     3.892928361893E-07 2.964780433103E-04 3.403052687645E-06 5.440603132248E+03
+     3.858000000000E+05-9.313225746155E-09 1.575307486314E+00-6.146728992462E-08
+     9.586413959478E-01 2.625000000000E+02 2.794206052069E-01-5.815242228181E-09
+     8.571785620706E-12 5.170000000000E+02 2.083000000000E+03
+     3.120000000000E+00 0.000000000000E+00-4.656612873077E-10-6.984919309616E-10
+     3.869030000000E+05
+E12 2019 12 12 10 40 00 6.055364210624E-03-1.870148480521E-11 0.000000000000E+00
+     0.000000000000E+00-2.075312500000E+02 2.603322724555E-09-2.414195903395E+00
+    -9.659677743912E-06 2.996901748702E-04 6.495043635368E-06 5.440614477158E+03
+     3.840000000000E+05-2.421438694000E-08-5.219517721978E-01 5.774199962616E-08
+     9.864495053986E-01 2.151250000000E+02-9.348391204646E-01-5.376652530588E-09
+    -2.257236880119E-10 5.170000000000E+02 2.083000000000E+03
+     3.120000000000E+00 0.000000000000E+00-1.327134668827E-08-1.327134668827E-08
+     3.858050000000E+05
+E19 2019 12 12 11 00 00-2.469634637237E-06 2.273736754432E-13 0.000000000000E+00
+     2.000000000000E+00 1.103125000000E+01 3.765871149364E-09-1.685770007887E-01
+     4.824250936508E-07 1.212444622070E-04 3.688037395477E-06 5.440600940704E+03
+     3.852000000000E+05-5.401670932770E-08 1.580615112564E+00 5.215406417847E-08
+     9.583897608719E-01 2.595937500000E+02 1.996512379669E+00-5.770954669140E-09
+     1.160762636137E-10 5.170000000000E+02 2.083000000000E+03
+     3.120000000000E+00 0.000000000000E+00-5.820766091347E-09-5.820766091347E-09
+     3.858660000000E+05
+E19 2019 12 12 11 10 00-2.469576429576E-06 2.273736754432E-13 0.000000000000E+00
+     3.000000000000E+00 1.168750000000E+01 3.765156833895E-09-9.388288915917E-02
+     5.066394805908E-07 1.211694907397E-04 3.693625330925E-06 5.440600774765E+03
+     3.858000000000E+05-5.960464477539E-08 1.580611582543E+00 4.097819328308E-08
+     9.583898398694E-01 2.594687500000E+02 1.996204499781E+00-5.764168672191E-09
+     1.207193141583E-10 5.170000000000E+02 2.083000000000E+03
+     3.120000000000E+00 0.000000000000E+00-5.820766091347E-09-5.820766091347E-09
+     3.864650000000E+05
+E21 2019 12 12 11 10 00-5.709171527997E-04-2.131628207280E-12 0.000000000000E+00
+     3.000000000000E+00 2.180312500000E+02 2.333311477503E-09 1.537835498027E+00
+     1.022964715958E-05 9.841390419751E-05 9.685754776001E-06 5.440636165619E+03
+     3.858000000000E+05-2.980232238770E-08-2.608584029515E+00 4.842877388000E-08
+     9.850865499746E-01 1.424062500000E+02-1.025413854454E+00-5.217717338871E-09
+     1.871506527187E-10 5.170000000000E+02 2.083000000000E+03
+     3.120000000000E+00 0.000000000000E+00 4.656612873077E-10 2.328306436539E-10
+     3.867350000000E+05
+E21 2019 12 12 11 20 00-5.709183751605E-04-2.131628207280E-12 0.000000000000E+00
+     4.000000000000E+00 2.213125000000E+02 2.317953694933E-09 1.607657241034E+00
+     1.038052141666E-05 9.810912888497E-05 9.816139936447E-06 5.440637243271E+03
+     3.864000000000E+05-4.097819328308E-08-2.608587130902E+00 4.470348358154E-08
+     9.850867050439E-01 1.395312500000E+02-1.020851268976E+00-5.213788603794E-09
+     1.800074980348E-10 5.170000000000E+02 2.083000000000E+03
+     3.120000000000E+00 0.000000000000E+00 4.656612873077E-10 2.328306436539E-10
+     3.870650000000E+05
+E01 2019 12 12 11 10 00-7.507689879276E-04-7.986500349944E-12 0.000000000000E+00
+     3.000000000000E+00 2.013125000000E+02 2.449744898851E-09 7.981291655576E-01
+     9.473413228989E-06 1.731918891892E-04 9.533017873764E-06 5.440622966766E+03
+     3.858000000000E+05 3.166496753693E-08-2.605880888987E+00-1.117587089539E-08
+     9.855193908613E-01 1.463750000000E+02-1.069210219000E+00-5.272719629937E-09
+     1.914365455291E-10 2.580000000000E+02 2.083000000000E+03
+     3.120000000000E+00 0.000000000000E+00-1.629814505577E-09 0.000000000000E+00
+     3.865400000000E+05
+E01 2019 12 12 11 20 00-7.507736445405E-04-7.972289495228E-12 0.000000000000E+00
+     4.000000000000E+00 2.002500000000E+02 2.449744898851E-09 8.736282654153E-01
+     9.419396519661E-06 1.731686061248E-04 9.588897228241E-06 5.440622581482E+03
+     3.864000000000E+05 3.725290298462E-08-2.605884063520E+00-1.862645149231E-09
+     9.855195488564E-01 1.452500000000E+02-1.070324887968E+00-5.265933632987E-09
+     1.896507568581E-10 2.580000000000E+02 2.083000000000E+03
+     3.120000000000E+00 0.000000000000E+00-1.629814505577E-09 0.000000000000E+00
+     3.871400000000E+05
+E12 2019 12 12 10 40 00 6.055364909116E-03-1.871569565992E-11 0.000000000000E+00
+     0.000000000000E+00-2.075312500000E+02 2.603322724555E-09-2.414195903395E+00
+    -9.659677743912E-06 2.996901748702E-04 6.495043635368E-06 5.440614477158E+03
+     3.840000000000E+05-2.421438694000E-08-5.219517721978E-01 5.774199962616E-08
+     9.864495053986E-01 2.151250000000E+02-9.348391204646E-01-5.376652530588E-09
+    -2.257236880119E-10 2.580000000000E+02 2.083000000000E+03
+     3.120000000000E+00 0.000000000000E+00-1.327134668827E-08 0.000000000000E+00
+     3.858400000000E+05
+E19 2019 12 12 11 00 00-2.468528691679E-06 2.273736754432E-13 0.000000000000E+00
+     2.000000000000E+00 1.103125000000E+01 3.765871149364E-09-1.685770007887E-01
+     4.824250936508E-07 1.212444622070E-04 3.688037395477E-06 5.440600940704E+03
+     3.852000000000E+05-5.401670932770E-08 1.580615112564E+00 5.215406417847E-08
+     9.583897608719E-01 2.595937500000E+02 1.996512379669E+00-5.770954669140E-09
+     1.160762636137E-10 2.580000000000E+02 2.083000000000E+03
+     3.120000000000E+00 0.000000000000E+00-5.820766091347E-09 0.000000000000E+00
+     3.859400000000E+05
+E19 2019 12 12 11 10 00-2.468470484018E-06 2.273736754432E-13 0.000000000000E+00
+     3.000000000000E+00 1.168750000000E+01 3.765156833895E-09-9.388288915917E-02
+     5.066394805908E-07 1.211694907397E-04 3.693625330925E-06 5.440600774765E+03
+     3.858000000000E+05-5.960464477539E-08 1.580611582543E+00 4.097819328308E-08
+     9.583898398694E-01 2.594687500000E+02 1.996204499781E+00-5.764168672191E-09
+     1.207193141583E-10 2.580000000000E+02 2.083000000000E+03
+     3.120000000000E+00 0.000000000000E+00-5.820766091347E-09 0.000000000000E+00
+     3.865400000000E+05
+E21 2019 12 12 11 10 00-5.709161632694E-04-2.117417352565E-12 0.000000000000E+00
+     3.000000000000E+00 2.180312500000E+02 2.333311477503E-09 1.537835498027E+00
+     1.022964715958E-05 9.841390419751E-05 9.685754776001E-06 5.440636165619E+03
+     3.858000000000E+05-2.980232238770E-08-2.608584029515E+00 4.842877388000E-08
+     9.850865499746E-01 1.424062500000E+02-1.025413854454E+00-5.217717338871E-09
+     1.871506527187E-10 2.580000000000E+02 2.083000000000E+03
+     3.120000000000E+00 0.000000000000E+00 4.656612873077E-10 0.000000000000E+00
+     3.867900000000E+05
+E21 2019 12 12 11 20 00-5.709173856303E-04-2.131628207280E-12 0.000000000000E+00
+     4.000000000000E+00 2.213125000000E+02 2.317953694933E-09 1.607657241034E+00
+     1.038052141666E-05 9.810912888497E-05 9.816139936447E-06 5.440637243271E+03
+     3.864000000000E+05-4.097819328308E-08-2.608587130902E+00 4.470348358154E-08
+     9.850867050439E-01 1.395312500000E+02-1.020851268976E+00-5.213788603794E-09
+     1.800074980348E-10 2.580000000000E+02 2.083000000000E+03
+     3.120000000000E+00 0.000000000000E+00 4.656612873077E-10 0.000000000000E+00
+     3.871400000000E+05
+E04 2019 12 12 11 10 00-4.236891982146E-04-7.531752999057E-12 0.000000000000E+00
+     3.000000000000E+00 9.781250000000E+00 3.935521073107E-09-4.009111796513E-01
+     5.532056093216E-07 8.811207953840E-05 3.596767783165E-06 5.440604427338E+03
+     3.858000000000E+05 9.499490261078E-08 1.582511472789E+00 3.166496753693E-08
+     9.526713574660E-01 2.577187500000E+02 1.440283619102E+00-5.908817554540E-09
+     7.071723137082E-11 5.170000000000E+02 2.083000000000E+03
+     3.120000000000E+00 0.000000000000E+00-5.355104804039E-09-5.820766091347E-09
+     3.875670000000E+05
+E04 2019 12 12 11 10 00-4.236878594384E-04-7.531752999057E-12 0.000000000000E+00
+     3.000000000000E+00 9.781250000000E+00 3.935521073107E-09-4.009111796513E-01
+     5.532056093216E-07 8.811207953840E-05 3.596767783165E-06 5.440604427338E+03
+     3.858000000000E+05 9.499490261078E-08 1.582511472789E+00 3.166496753693E-08
+     9.526713574660E-01 2.577187500000E+02 1.440283619102E+00-5.908817554540E-09
+     7.071723137082E-11 2.580000000000E+02 2.083000000000E+03
+     3.120000000000E+00 0.000000000000E+00-5.355104804039E-09 0.000000000000E+00
+     3.875900000000E+05
+E11 2019 12 12 11 00 00 3.295102505945E-04 1.526245796413E-10 5.204170427930E-18
+     2.000000000000E+00-2.123750000000E+02 2.665468170305E-09 2.480654590844E+00
+    -9.858980774879E-06 1.651302445680E-04 7.150694727898E-06 5.440609029770E+03
+     3.852000000000E+05-3.352761268616E-08-5.219456059981E-01 2.048909664154E-08
+     9.864349859366E-01 1.975937500000E+02-2.012781103955E-01-5.400939256513E-09
+    -2.103659054415E-10 5.170000000000E+02 2.083000000000E+03
+     3.120000000000E+00 0.000000000000E+00-1.583248376846E-08-1.699663698673E-08
+     3.876330000000E+05
+E21 2019 12 12 11 30 00-5.709196557291E-04-2.131628207280E-12 0.000000000000E+00
+     5.000000000000E+00 2.240625000000E+02 2.303667385565E-09 1.677767938158E+00
+     1.050904393196E-05 9.777839295566E-05 9.970739483833E-06 5.440638303757E+03
+     3.870000000000E+05-5.401670932770E-08-2.608590226436E+00 3.725290298462E-08
+     9.850868571874E-01 1.362812500000E+02-1.016577701982E+00-5.210574184187E-09
+     1.721500278825E-10 5.170000000000E+02 2.083000000000E+03
+     3.120000000000E+00 0.000000000000E+00 4.656612873077E-10 2.328306436539E-10
+     3.876650000000E+05
+E11 2019 12 12 11 00 00 3.295124042779E-04 1.526387904960E-10 5.204170427930E-18
+     2.000000000000E+00-2.123750000000E+02 2.665468170305E-09 2.480654590844E+00
+    -9.858980774879E-06 1.651302445680E-04 7.150694727898E-06 5.440609029770E+03
+     3.852000000000E+05-3.352761268616E-08-5.219456059981E-01 2.048909664154E-08
+     9.864349859366E-01 1.975937500000E+02-2.012781103955E-01-5.400939256513E-09
+    -2.103659054415E-10 2.580000000000E+02 2.083000000000E+03
+     3.120000000000E+00 0.000000000000E+00-1.583248376846E-08 0.000000000000E+00
+     3.876800000000E+05
+E01 2019 12 12 11 30 00-7.507792906836E-04-7.972289495228E-12 0.000000000000E+00
+     5.000000000000E+00 1.994687500000E+02 2.447601952446E-09 9.486982138657E-01
+     9.378418326378E-06 1.731649972498E-04 9.616836905479E-06 5.440622346878E+03
+     3.870000000000E+05 3.911554813385E-08-2.605887229274E+00 7.450580596924E-09
+     9.855197039257E-01 1.446875000000E+02-1.071010335308E+00-5.259504793772E-09
+     1.871506527187E-10 5.170000000000E+02 2.083000000000E+03
+     3.120000000000E+00 0.000000000000E+00-1.629814505577E-09-1.862645149231E-09
+     3.877250000000E+05
+E21 2019 12 12 11 30 00-5.709186661988E-04-2.117417352565E-12 0.000000000000E+00
+     5.000000000000E+00 2.240625000000E+02 2.303667385565E-09 1.677767938158E+00
+     1.050904393196E-05 9.777839295566E-05 9.970739483833E-06 5.440638303757E+03
+     3.870000000000E+05-5.401670932770E-08-2.608590226436E+00 3.725290298462E-08
+     9.850868571874E-01 1.362812500000E+02-1.016577701982E+00-5.210574184187E-09
+     1.721500278825E-10 2.580000000000E+02 2.083000000000E+03
+     3.120000000000E+00 0.000000000000E+00 4.656612873077E-10 0.000000000000E+00
+     3.877400000000E+05
+E01 2019 12 12 11 30 00-7.507783011533E-04-7.972289495228E-12 0.000000000000E+00
+     5.000000000000E+00 1.994687500000E+02 2.447601952446E-09 9.486982138657E-01
+     9.378418326378E-06 1.731649972498E-04 9.616836905479E-06 5.440622346878E+03
+     3.870000000000E+05 3.911554813385E-08-2.605887229274E+00 7.450580596924E-09
+     9.855197039257E-01 1.446875000000E+02-1.071010335308E+00-5.259504793772E-09
+     1.871506527187E-10 2.580000000000E+02 2.083000000000E+03
+     3.120000000000E+00 0.000000000000E+00-1.629814505577E-09 0.000000000000E+00
+     3.878200000000E+05
+E36 2019 12 12 10 30 00 6.253067986108E-04-4.803268893738E-12 0.000000000000E+00
+     1.270000000000E+02-2.396562500000E+02 2.521890761159E-09 3.060908164528E+00
+    -1.121312379837E-05 3.076605498791E-04 7.288530468941E-06 5.440609262466E+03
+     3.834000000000E+05 2.980232238770E-08-5.264936383676E-01 5.587935447693E-08
+     9.896539850266E-01 1.944062500000E+02-1.782833699345E+00-5.428440402046E-09
+    -2.457245211269E-10 5.170000000000E+02 2.083000000000E+03
+     3.120000000000E+00 0.000000000000E+00 3.725290298462E-09 4.423782229424E-09
+     3.878450000000E+05
+S36 2019 12 12 11 36 48 0.000000000000E+00 0.000000000000E+00 3.874820000000E+05
+     4.200368800000E+04 0.000000000000E+00 0.000000000000E+00 6.300000000000E+01
+     3.674846960000E+03 0.000000000000E+00 0.000000000000E+00 3.276700000000E+04
+     0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 2.530000000000E+02
+S25 2019 12 11 23 59 44 0.000000000000E+00 0.000000000000E+00 3.874840000000E+05
+     4.053076976000E+04 0.000000000000E+00 0.000000000000E+00 6.300000000000E+01
+    -1.162201120000E+04 0.000000000000E+00 0.000000000000E+00 3.276700000000E+04
+     0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00
+S23 2019 12 12 11 37 04 0.000000000000E+00 0.000000000000E+00 3.874940000000E+05
+     3.594460000000E+04 0.000000000000E+00 0.000000000000E+00 6.300000000000E+01
+     2.204414000000E+04 0.000000000000E+00 0.000000000000E+00 3.276700000000E+04
+     0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 1.460000000000E+02
+S36 2019 12 12 11 38 56 0.000000000000E+00 0.000000000000E+00 3.875460000000E+05
+     4.200368800000E+04 0.000000000000E+00 0.000000000000E+00 6.300000000000E+01
+     3.674846960000E+03 0.000000000000E+00 0.000000000000E+00 3.276700000000E+04
+     0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 2.540000000000E+02
+S23 2019 12 12 11 39 12 0.000000000000E+00 0.000000000000E+00 3.875580000000E+05
+     3.594460000000E+04 0.000000000000E+00 0.000000000000E+00 6.300000000000E+01
+     2.204414000000E+04 0.000000000000E+00 0.000000000000E+00 3.276700000000E+04
+     0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 1.470000000000E+02
+S23 2019 12 12 11 41 20 0.000000000000E+00 0.000000000000E+00 3.876860000000E+05
+     3.594460000000E+04 0.000000000000E+00 0.000000000000E+00 6.300000000000E+01
+     2.204414000000E+04 0.000000000000E+00 0.000000000000E+00 3.276700000000E+04
+     0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 1.480000000000E+02
+S36 2019 12 12 11 41 04 0.000000000000E+00 0.000000000000E+00 3.877380000000E+05
+     4.200368800000E+04 0.000000000000E+00 0.000000000000E+00 6.300000000000E+01
+     3.674846960000E+03 0.000000000000E+00 0.000000000000E+00 3.276700000000E+04
+     0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 2.550000000000E+02
+S36 2019 12 12 11 43 12 0.000000000000E+00 0.000000000000E+00 3.878020000000E+05
+     4.200368800000E+04 0.000000000000E+00 0.000000000000E+00 6.300000000000E+01
+     3.674846960000E+03 0.000000000000E+00 0.000000000000E+00 3.276700000000E+04
+     0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00
+S23 2019 12 12 11 43 28 0.000000000000E+00 0.000000000000E+00 3.878780000000E+05
+     3.594460000000E+04 0.000000000000E+00 0.000000000000E+00 6.300000000000E+01
+     2.204414000000E+04 0.000000000000E+00 0.000000000000E+00 3.276700000000E+04
+     0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 1.490000000000E+02
+C05 2019 12 12 11 00 00-2.244751667604E-04-5.808153957787E-11 0.000000000000E+00
+     1.000000000000E+00-4.986718750000E+02 1.785788670980E-12-5.169766818568E-01
+    -1.630326732993E-05 6.773804780096E-04 2.061109989882E-05 6.493346771240E+03
+     3.852000000000E+05 1.271255314350E-07-1.766797704845E-01 3.259629011154E-09
+     1.180676987021E-01-6.241562500000E+02-1.608095995036E+00 1.192549674481E-09
+     7.575315542299E-10 0.000000000000E+00 7.270000000000E+02
+     2.000000000000E+00 0.000000000000E+00-8.000000000000E-10-9.200000000000E-09
+     3.858276000000E+05 0.000000000000E+00
+C10 2019 12 12 11 00 00-4.537283675745E-04-3.685762806072E-11 0.000000000000E+00
+     1.000000000000E+00 9.611718750000E+02 9.743262988869E-10-3.040647920928E+00
+     3.135204315186E-05 6.156359100714E-03 7.578637450933E-06 6.493785018921E+03
+     3.852000000000E+05-1.676380634308E-08-2.379959881122E+00-4.004687070847E-08
+     9.058375010021E-01-1.493750000000E+01-2.570309406835E+00-2.115088101909E-09
+     4.782342060886E-10 0.000000000000E+00 7.270000000000E+02
+     2.000000000000E+00 0.000000000000E+00 5.000000000000E-09 2.400000000000E-09
+     3.858180000000E+05 0.000000000000E+00
+C23 2019 12 12 11 00 00-8.696540025994E-04 2.136069099379E-12 0.000000000000E+00
+     1.000000000000E+00 1.034062500000E+02 3.498002848716E-09 1.631067082891E+00
+     5.179084837437E-06 2.014992060140E-04 1.188227906823E-05 5.282628129959E+03
+     3.852000000000E+05 3.725290298462E-08-3.016985033742E+00 6.565824151039E-08
+     9.546959600159E-01 1.175156250000E+02-1.126531243634E+00-6.488127399406E-09
+    -1.864363372504E-10 0.000000000000E+00 7.270000000000E+02
+     2.000000000000E+00 0.000000000000E+00 2.430000000000E-08 2.430000000000E-08
+     3.858180000000E+05 1.000000000000E+00
+C30 2019 12 12 11 00 00 2.388220746070E-04 6.104450278599E-12 0.000000000000E+00
+     1.000000000000E+00-1.393437500000E+02 3.927663602954E-09-2.732742750025E+00
+    -6.837770342827E-06 3.649030113593E-04 1.750886440277E-06 5.282614929199E+03
+     3.852000000000E+05-3.864988684654E-08-9.521190897989E-01-5.587935447693E-09
+     9.644793109832E-01 3.275781250000E+02-4.157902561103E-01-7.082080711374E-09
+    -2.339383158984E-10 0.000000000000E+00 7.270000000000E+02
+     2.000000000000E+00 0.000000000000E+00-1.040000000000E-08-1.040000000000E-08
+     3.858180000000E+05 1.000000000000E+00
+C32 2019 12 12 11 00 00-8.566775359213E-04 2.992273095970E-12 0.000000000000E+00
+     1.000000000000E+00 2.875000000000E+01 4.228033257413E-09 2.867304095205E+00
+     1.456588506699E-06 1.842749770731E-04 6.427057087421E-06 5.282614164352E+03
+     3.852000000000E+05 1.862645149231E-09 1.148173467908E+00 6.705522537231E-08
+     9.608588315814E-01 2.297500000000E+02-1.050918258529E+00-6.857785654299E-09
+     5.228789228631E-10 0.000000000000E+00 7.270000000000E+02
+     2.000000000000E+00 0.000000000000E+00-9.900000000000E-09-9.900000000000E-09
+     3.857580000000E+05 1.000000000000E+00
+C37 2019 12 12 11 00 00-8.880557725206E-04-5.954881032721E-11 0.000000000000E+00
+     1.000000000000E+00 1.086562500000E+02 3.521932416908E-09 8.066563687499E-01
+     5.388632416725E-06 7.037379546091E-04 1.127412542701E-05 5.282630052567E+03
+     3.852000000000E+05-2.142041921616E-08-3.020306267399E+00 1.536682248116E-08
+     9.560827215058E-01 1.306718750000E+02-1.080448983277E+00-6.580988410297E-09
+    -2.328668426958E-10 0.000000000000E+00 7.270000000000E+02
+     2.000000000000E+00 0.000000000000E+00-1.390000000000E-08-1.390000000000E-08
+     3.858180000000E+05 1.000000000000E+00
+C20 2019 12 12 11 00 00-4.067538538948E-04-5.008171655163E-11 0.000000000000E+00
+     1.000000000000E+00 2.850000000000E+01 4.229461888350E-09 1.463145840983E+00
+     1.523178070784E-06 5.460308166221E-04 6.177462637424E-06 5.282614208221E+03
+     3.852000000000E+05 3.445893526077E-08 1.153432718382E+00-1.210719347000E-08
+     9.622213291121E-01 2.341406250000E+02-4.480160490039E-01-6.852785446020E-09
+     4.753769442150E-10 0.000000000000E+00 7.270000000000E+02
+     2.000000000000E+00 0.000000000000E+00 2.090000000000E-08 2.090000000000E-08
+     3.875880000000E+05 1.000000000000E+00
diff --git a/test/data/sample_data.obs b/test/data/sample_data.obs
new file mode 100644
index 0000000000000000000000000000000000000000..d773d3b4d57556afcd38b64ef4167981a00de992
--- /dev/null
+++ b/test/data/sample_data.obs
@@ -0,0 +1,58 @@
+     3.04           OBSERVATION DATA    M                   RINEX VERSION / TYPE
+sbf2rin-13.4.3                          20200205 113408 UTC PGM / RUN BY / DATE 
+SEPT                                                        MARKER NAME         
+Unknown                                                     MARKER NUMBER       
+Unknown             Unknown                                 OBSERVER / AGENCY   
+3021420             SEPT ASTERX-M2      4.4.0               REC # / TYPE / VERS 
+Unknown             Unknown                                 ANT # / TYPE        
+  4789398.3686   176958.8129  4194502.0999                  APPROX POSITION XYZ 
+        0.0000        0.0000        0.0000                  ANTENNA: DELTA H/E/N
+G    7 X1  C1C L1C C2W L2W C2L L2L                          SYS / # / OBS TYPES 
+E    7 X1  C1C L1C C5Q L5Q C7Q L7Q                          SYS / # / OBS TYPES 
+S    3 X1  C1C L1C                                          SYS / # / OBS TYPES 
+R    5 X1  C1C L1C C2C L2C                                  SYS / # / OBS TYPES 
+C    5 X1  C2I L2I C7I L7I                                  SYS / # / OBS TYPES 
+SEPTENTRIO RECEIVERS OUTPUT ALIGNED CARRIER PHASES.         COMMENT             
+NO FURTHER PHASE SHIFT APPLIED IN THE RINEX ENCODER.        COMMENT             
+G L1C                                                       SYS / PHASE SHIFT   
+G L2W                                                       SYS / PHASE SHIFT   
+G L2L  0.00000                                              SYS / PHASE SHIFT   
+E L1C  0.00000                                              SYS / PHASE SHIFT   
+E L5Q  0.00000                                              SYS / PHASE SHIFT   
+E L7Q  0.00000                                              SYS / PHASE SHIFT   
+S L1C                                                       SYS / PHASE SHIFT   
+R L1C                                                       SYS / PHASE SHIFT   
+R L2C                                                       SYS / PHASE SHIFT   
+C L2I                                                       SYS / PHASE SHIFT   
+C L7I                                                       SYS / PHASE SHIFT   
+     0.050                                                  INTERVAL            
+  2019    12    12    11    37   42.0000000     GPS         TIME OF FIRST OBS   
+  2019    12    12    11    45   12.9000000     GPS         TIME OF LAST OBS    
+    36                                                      # OF SATELLITES     
+ C1C    0.000 C2C    0.000                                  GLONASS COD/PHS/BIS 
+  8 R03  5 R05  1 R13 -2 R14 -7 R15  0 R19  3 R20  2 R21  4 GLONASS SLOT / FRQ #
+                                                            END OF HEADER       
+> 2019 12 12 11 37 42.0000000  0 23
+C05        16.000    40138840.659 6 209013478.40606  40138832.256 6 161622441.87406
+C10        17.000    39633104.355 5 206379985.90205  39633100.852 6 159586077.69206
+C23        18.000    22865676.301 8 119067585.90908
+C32        19.000    22153454.599 8 115358921.19508
+C37        20.000    23690566.611 7 123363010.77907
+E01        11.000    26311074.676 7 138265636.53007  26311074.470 5 103250320.19005  26311070.977 7 105943790.57907
+E09        12.000    25723493.482 5
+E12        13.000    24803095.627 5 130341141.55605  24803092.768 4  97332661.71504  24803092.407 6  99871767.93506
+E19        14.000    24540665.652 6 128962068.93606  24540664.837 5  96302837.53105  24540661.694 6  98815075.63606
+E21        15.000    25609802.251 7 134580416.73507  25609802.381 7 100498367.38007  25609799.519 7 103120055.01507
+G02         1.000    22032430.127 5
+G06         2.000    22147435.410 6 116385570.45206  22147437.095 4  90690045.24704  22147437.422 7  90690046.16907
+G07         3.000    20902411.481 8 109842911.60108  20902406.002 6  85591857.15006  20902406.930 7  85591857.16507
+G09         4.000    21908403.525 6 115129430.37406  21908399.544 1  89711233.32401  21908399.320 5
+G23         5.000    24104714.314 6 126671129.49306  24104706.816 2  98704739.67602
+G30         6.000    21404145.095 8 112479542.93308  21404142.953 6  87646388.26706  21404143.916 7  87646383.27307
+R03         7.000    21945110.617 7 117474090.63807  21945109.720 6  91368580.68606
+R14         8.000    20214975.526 8 107757316.39008  20214976.579 7  83811176.41707
+R15         9.000    22699008.378 5 121296675.96005  22699009.712 5  94341922.34705
+R19        10.000    22853592.745 4                  22853590.888 4
+S23        21.000    38309228.895 7 201316353.13407
+S25        22.000    37834172.957 6 198818604.39206
+S36        23.000    37630702.258 7 197750698.01307
diff --git a/test/gtest_navigation.cpp b/test/gtest_navigation.cpp
index 18e8c638aa4ce62dcdfaa0a702f7be18652c5c9c..5170cf11310248899fd967b3b870f974a6368b2f 100644
--- a/test/gtest_navigation.cpp
+++ b/test/gtest_navigation.cpp
@@ -1,5 +1,5 @@
 #include "gtest/utils_gtest.h"
-#include "gnss_utils/utils/gnss_utils.h"
+#include "gnss_utils/gnss_utils.h"
 
 TEST(NavigationTests, Whatever)
 {
diff --git a/test/gtest_observations.cpp b/test/gtest_observations.cpp
index 2726322b5c7bb4b63e7186a68ded8feb0f541922..5d2de7aab2437b85c303c968fd696844ccf058eb 100644
--- a/test/gtest_observations.cpp
+++ b/test/gtest_observations.cpp
@@ -2,8 +2,7 @@
 #include "gnss_utils/observations.h"
 
 using namespace GnssUtils;
-
-std::string   rnx_file;
+std::string   rnx_file = std::string(_GNSS_UTILS_ROOT_DIR) + "/test/data/sample_data.obs";
 obs_t         obs;
 const gtime_t t_start{ 0, 0 };  // no limit
 const gtime_t t_end{ 0, 0 };    // no limit
@@ -33,7 +32,7 @@ TEST(ObservationsTest, AddClearObservation)
   for (int ii = 0; ii < obs.n; ++ii)
   {
     observations.addObservation(obs.data[ii]);
-    ASSERT_TRUE(equalObservations(obs.data[ii], observations.getObservations()[ii]));
+    ASSERT_TRUE(obs.data[ii] == observations.getObservations()[ii]);
   }
 
   ASSERT_TRUE(obs.n == observations.getObservations().size());
@@ -42,6 +41,10 @@ TEST(ObservationsTest, AddClearObservation)
   // Testing clear
   observations.clearObservations();
   ASSERT_TRUE(0 == observations.getObservations().size());
+
+  // Add duplicated observation (has to crash)
+  observations.addObservation(obs.data[0]);
+  ASSERT_DEATH(observations.addObservation(obs.data[0]),"");
 }
 
 TEST(ObservationsTest, LoadFromRinex)
@@ -57,10 +60,9 @@ TEST(ObservationsTest, LoadFromRinex)
 
   // 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]));
+    ASSERT_TRUE(obs.data[ii] == observations.getObservations()[ii]);
   }
 
   free(obs.data);
@@ -75,7 +77,7 @@ TEST(ObservationsTest, GetObservationBySat)
 
   for (int ii = 0; ii < obs.n; ++ii)
   {
-    ASSERT_TRUE(equalObservations(obs.data[ii], observations.getObservationBySat(obs.data[ii].sat)));
+    ASSERT_TRUE(obs.data[ii] == observations.getObservationBySat(obs.data[ii].sat));
   }
 }
 
@@ -89,7 +91,7 @@ TEST(ObservationsTest, GetObservationByIdx)
   for (int ii = 0; ii < obs.n; ++ii)
   {
     // We do this check like this because both loading functions load the rinex file and then sort the observations
-    ASSERT_TRUE(equalObservations(obs.data[ii], observations.getObservationByIdx(ii)));
+    ASSERT_TRUE( obs.data[ii] == observations.getObservationByIdx(ii));
   }
 }
 
@@ -103,7 +105,7 @@ TEST(ObservationsTest, data)
   for (int ii = 0; ii < obs.n; ++ii)
   {
     // We do this check like this because both loading functions load the rinex file and then sort the observations
-    ASSERT_TRUE(equalObservations(obs.data[ii], observations.data()[ii]));
+    ASSERT_TRUE( obs.data[ii] == observations.data()[ii]);
   }
 }
 
@@ -122,26 +124,89 @@ TEST(ObservationsTest, HasSatellite)
 
 TEST(ObservationsTest, FindCommonObservations)
 {
-  loadRinex();
+  Observations observations1;
+  observations1.loadFromRinex(rnx_file.c_str(), t_start, t_end, dt, opt);
+  Observations observations2(observations1);
+
+  ASSERT_TRUE(observations1 == observations2);
+
+  Observations common1;
+  Observations common2;
+
+  Observations::findCommonObservations(observations1, observations2, common1, common2);
+
+  ASSERT_TRUE(common1 == common2);
+  ASSERT_TRUE(observations1 == common1);
+  ASSERT_TRUE(observations2 == common2);
+}
+
+
+TEST(ObservationsTest, FindCommonObservationsRemoved)
+{
+  Observations observations1;
+  observations1.loadFromRinex(rnx_file.c_str(), t_start, t_end, dt, opt);
+  Observations observations2(observations1);
+
+  // Remove first observation of observations2
+  observations2.removeObservationByIdx(0);
+
+  Observations common1;
+  Observations common2;
+
+  Observations::findCommonObservations(observations1, observations2, common1, common2);
 
+  ASSERT_TRUE(common1 == common2);
+  ASSERT_FALSE(observations1 == common1);
+  ASSERT_TRUE(observations2 == common2);
+
+}
+
+TEST(ObservationsTest, FindCommonObservationsChangeTime)
+{
   Observations observations1;
   observations1.loadFromRinex(rnx_file.c_str(), t_start, t_end, dt, opt);
   Observations observations2(observations1);
 
+  // Change time
+  for (auto&& obs : observations2.getObservations())
+  {
+      obs.time.sec +=10;
+  }
+
   Observations common1;
   Observations common2;
 
   Observations::findCommonObservations(observations1, observations2, common1, common2);
 
+  ASSERT_FALSE(common1 == common2);
+  ASSERT_TRUE(observations1 == common1);
+  ASSERT_TRUE(observations2 == common2);
+
   for (auto obs = common1.getObservations().begin(); obs != common1.getObservations().end(); ++obs)
   {
-    ASSERT_TRUE(equalObservations(common1.getObservationBySat(obs->sat), common2.getObservationBySat(obs->sat)));
+      const obsd_t& obs1 = common1.getObservationBySat(obs->sat);
+      const obsd_t& obs2 = common2.getObservationBySat(obs->sat);
+
+      ASSERT_FALSE(obs1.time == obs2.time);
+      ASSERT_TRUE(obs1.eventime == obs2.eventime);
+      ASSERT_TRUE(obs1.timevalid == obs2.timevalid);
+      ASSERT_TRUE(obs1.sat == obs2.sat);
+      ASSERT_TRUE(obs1.rcv == obs2.rcv);
+      ASSERT_TRUE(memcmp(obs1.SNR, obs2.SNR, sizeof(obs1.SNR)) == 0);
+      ASSERT_TRUE(memcmp(obs1.LLI, obs2.LLI, sizeof(obs1.LLI)) == 0);
+      ASSERT_TRUE(memcmp(obs1.code, obs2.code, sizeof(obs1.code)) == 0);
+      ASSERT_TRUE(memcmp(obs1.qualL, obs2.qualL, sizeof(obs1.qualL)) == 0);
+      ASSERT_TRUE(memcmp(obs1.qualP, obs2.qualP, sizeof(obs1.qualP)) == 0);
+      ASSERT_TRUE(obs1.freq == obs2.freq);
+      ASSERT_TRUE(equalArray<double>(obs1.L, obs2.L, sizeof(obs1.L) / sizeof(obs1.L[0]), sizeof(obs2.L) / sizeof(obs2.L[0])));
+      ASSERT_TRUE(equalArray<double>(obs1.P, obs2.P, sizeof(obs1.P) / sizeof(obs1.P[0]), sizeof(obs2.P) / sizeof(obs2.P[0])));
+      ASSERT_TRUE(equalArray<float>(obs1.D, obs2.D, sizeof(obs1.D) / sizeof(obs1.D[0]), sizeof(obs2.D) / sizeof(obs2.D[0])));
   }
 }
 
 int main(int argc, char** argv)
 {
   testing::InitGoogleTest(&argc, argv);
-  rnx_file = argv[1];
+  //rnx_file = argv[1];
   return RUN_ALL_TESTS();
-}
\ No newline at end of file
+}