1 #include <gtest/gtest.h>
2 #include <marnav/nmea/gsa.hpp>
3 #include <marnav/nmea/nmea.hpp>
4 #include "type_traits_helper.hpp"
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
)
37 nmea::detail::factory::sentence_parse
<nmea::gsa
>(nmea::talker::none
, {16, "@"}));
39 nmea::detail::factory::sentence_parse
<nmea::gsa
>(nmea::talker::none
, {18, "@"}));
42 TEST_F(Test_nmea_gsa
, empty_to_string
)
46 EXPECT_STREQ("$GPGSA,,,,,,,,,,,,,,,,,*6E", nmea::to_string(gsa
).c_str());
49 TEST_F(Test_nmea_gsa
, set_sel_mode
)
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
) {
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
)
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
)
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
);
102 for (int index
= 0; index
< nmea::gsa::max_satellite_ids
; ++index
, ++id
) {
103 EXPECT_EQ(id
, *gsa
->get_satellite_id(index
));