NMEA: remove deprecated type talker_id
[marnav.git] / test / nmea / Test_nmea_gsa.cpp
blob152301bacddf792f60f63a1f71d978a4304c9526
1 #include <gtest/gtest.h>
2 #include <marnav/nmea/gsa.hpp>
3 #include <marnav/nmea/nmea.hpp>
4 #include "type_traits_helper.hpp"
6 namespace
9 using namespace marnav;
11 class Test_nmea_gsa : public ::testing::Test
15 TEST_F(Test_nmea_gsa, contruction)
17 EXPECT_NO_THROW(nmea::gsa gsa);
20 TEST_F(Test_nmea_gsa, properties)
22 nmea_sentence_traits<nmea::gsa>();
25 TEST_F(Test_nmea_gsa, parse)
27 auto s = nmea::make_sentence("$GPGSA,A,1,05,08,,,,17,,,,,,,,,*15");
28 ASSERT_NE(nullptr, s);
30 auto gsa = nmea::sentence_cast<nmea::gsa>(s);
31 ASSERT_NE(nullptr, gsa);
34 TEST_F(Test_nmea_gsa, parse_invalid_number_of_arguments)
36 EXPECT_ANY_THROW(
37 nmea::detail::factory::sentence_parse<nmea::gsa>(nmea::talker::none, {16, "@"}));
38 EXPECT_ANY_THROW(
39 nmea::detail::factory::sentence_parse<nmea::gsa>(nmea::talker::none, {18, "@"}));
42 TEST_F(Test_nmea_gsa, empty_to_string)
44 nmea::gsa gsa;
46 EXPECT_STREQ("$GPGSA,,,,,,,,,,,,,,,,,*6E", nmea::to_string(gsa).c_str());
49 TEST_F(Test_nmea_gsa, set_sel_mode)
51 nmea::gsa gsa;
52 gsa.set_sel_mode(marnav::nmea::selection_mode::automatic);
54 EXPECT_STREQ("$GPGSA,A,,,,,,,,,,,,,,,,*2F", nmea::to_string(gsa).c_str());
57 TEST_F(Test_nmea_gsa, set_satellite_id_indexed)
59 static const std::string DATA[nmea::gsa::max_satellite_ids] = {
60 "$GPGSA,,,01,,,,,,,,,,,,,,*6F", "$GPGSA,,,,01,,,,,,,,,,,,,*6F",
61 "$GPGSA,,,,,01,,,,,,,,,,,,*6F", "$GPGSA,,,,,,01,,,,,,,,,,,*6F",
62 "$GPGSA,,,,,,,01,,,,,,,,,,*6F", "$GPGSA,,,,,,,,01,,,,,,,,,*6F",
63 "$GPGSA,,,,,,,,,01,,,,,,,,*6F", "$GPGSA,,,,,,,,,,01,,,,,,,*6F",
64 "$GPGSA,,,,,,,,,,,01,,,,,,*6F", "$GPGSA,,,,,,,,,,,,01,,,,,*6F",
65 "$GPGSA,,,,,,,,,,,,,01,,,,*6F", "$GPGSA,,,,,,,,,,,,,,01,,,*6F",
68 for (size_t i = 0; i < sizeof(DATA) / sizeof(DATA[0]); ++i) {
69 nmea::gsa gsa;
70 gsa.set_satellite_id(i, 1);
71 EXPECT_STREQ(DATA[i].c_str(), nmea::to_string(gsa).c_str());
75 TEST_F(Test_nmea_gsa, set_satellite_id_indexed_invalid_index)
77 nmea::gsa gsa;
79 EXPECT_ANY_THROW(gsa.set_satellite_id(-1, 1));
80 EXPECT_ANY_THROW(gsa.set_satellite_id(12, 1));
81 EXPECT_ANY_THROW(gsa.set_satellite_id(99, 1));
84 TEST_F(Test_nmea_gsa, get_satellite_id_invalid_index)
86 nmea::gsa gsa;
88 EXPECT_ANY_THROW(gsa.get_satellite_id(-1));
89 EXPECT_ANY_THROW(gsa.get_satellite_id(12));
90 EXPECT_ANY_THROW(gsa.get_satellite_id(99));
93 TEST_F(Test_nmea_gsa, get_satellite_id)
95 auto s = nmea::make_sentence("$GPGSA,A,1,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25*1F");
96 ASSERT_NE(nullptr, s);
98 auto gsa = nmea::sentence_cast<nmea::gsa>(s);
99 ASSERT_NE(nullptr, gsa);
101 uint32_t id = 11;
102 for (int index = 0; index < nmea::gsa::max_satellite_ids; ++index, ++id) {
103 EXPECT_EQ(id, *gsa->get_satellite_id(index));