1 #include <gtest/gtest.h>
2 #include <marnav/nmea/glc.hpp>
3 #include <marnav/nmea/nmea.hpp>
4 #include "type_traits_helper.hpp"
9 using namespace marnav
;
11 class Test_nmea_glc
: public ::testing::Test
15 TEST_F(Test_nmea_glc
, contruction
) { EXPECT_NO_THROW(nmea::glc glc
); }
17 TEST_F(Test_nmea_glc
, properties
) { nmea_sentence_traits
<nmea::glc
>(); }
19 TEST_F(Test_nmea_glc
, parse
)
21 auto s
= nmea::make_sentence("$GPGLC,1,1,A,1,A,2,A,3,A,4,V,,*21");
22 ASSERT_NE(nullptr, s
);
24 auto glc
= nmea::sentence_cast
<nmea::glc
>(s
);
25 ASSERT_NE(nullptr, glc
);
28 TEST_F(Test_nmea_glc
, parse_invalid_number_of_arguments
)
30 EXPECT_ANY_THROW(nmea::sentence_parse
<nmea::glc
>("@@", {12, "@"}));
31 EXPECT_ANY_THROW(nmea::sentence_parse
<nmea::glc
>("@@", {14, "@"}));
34 TEST_F(Test_nmea_glc
, empty_to_string
)
38 EXPECT_STREQ("$GPGLC,0,0,V,,,,,,,,,,*25", nmea::to_string(glc
).c_str());
41 TEST_F(Test_nmea_glc
, set_time_diff_invalid_index
)
45 EXPECT_ANY_THROW(glc
.set_time_diff(-1, {0.0, nmea::status::ok
}));
46 EXPECT_ANY_THROW(glc
.set_time_diff(5, {0.0, nmea::status::ok
}));
49 TEST_F(Test_nmea_glc
, get_time_diff_invalid_index
)
53 EXPECT_ANY_THROW(glc
.get_time_diff(-1));
54 EXPECT_ANY_THROW(glc
.get_time_diff(5));
57 TEST_F(Test_nmea_glc
, set_time_diff
)
61 glc
.set_time_diff(0, {1.0, nmea::status::ok
});
62 EXPECT_STREQ("$GPGLC,0,0,V,1,A,,,,,,,,*55", nmea::to_string(glc
).c_str());
66 glc
.set_time_diff(1, {1.0, nmea::status::ok
});
67 EXPECT_STREQ("$GPGLC,0,0,V,,,1,A,,,,,,*55", nmea::to_string(glc
).c_str());
71 glc
.set_time_diff(2, {1.0, nmea::status::ok
});
72 EXPECT_STREQ("$GPGLC,0,0,V,,,,,1,A,,,,*55", nmea::to_string(glc
).c_str());
76 glc
.set_time_diff(3, {1.0, nmea::status::ok
});
77 EXPECT_STREQ("$GPGLC,0,0,V,,,,,,,1,A,,*55", nmea::to_string(glc
).c_str());
81 glc
.set_time_diff(4, {1.0, nmea::status::ok
});
82 EXPECT_STREQ("$GPGLC,0,0,V,,,,,,,,,1,A*55", nmea::to_string(glc
).c_str());
86 TEST_F(Test_nmea_glc
, get_time_diff
)
88 auto s
= nmea::make_sentence("$GPGLC,1,1,A,1,A,2,A,3,A,4,V,,*21");
89 ASSERT_NE(nullptr, s
);
91 auto glc
= nmea::sentence_cast
<nmea::glc
>(s
);
92 ASSERT_NE(nullptr, glc
);
94 auto const t
= glc
->get_time_diff(0);
95 EXPECT_TRUE(static_cast<bool>(t
));
96 EXPECT_NEAR(1.0, t
->diff
, 1e-8);
97 EXPECT_EQ(nmea::status::ok
, t
->status
);