1 #include <gtest/gtest.h>
2 #include <marnav/nmea/fsi.hpp>
3 #include <marnav/nmea/nmea.hpp>
4 #include "type_traits_helper.hpp"
9 using namespace marnav
;
11 class Test_nmea_fsi
: public ::testing::Test
15 TEST_F(Test_nmea_fsi
, contruction
)
17 EXPECT_NO_THROW(nmea::fsi fsi
);
20 TEST_F(Test_nmea_fsi
, properties
)
22 nmea_sentence_traits
<nmea::fsi
>();
25 TEST_F(Test_nmea_fsi
, parse
)
27 auto s
= nmea::make_sentence("$GPFSI,156000,156025,,,*60");
28 ASSERT_NE(nullptr, s
);
30 auto fsi
= nmea::sentence_cast
<nmea::fsi
>(s
);
31 ASSERT_NE(nullptr, fsi
);
34 TEST_F(Test_nmea_fsi
, parse_invalid_number_of_arguments
)
37 nmea::detail::factory::sentence_parse
<nmea::fsi
>(nmea::talker::none
, {4, "@"}));
39 nmea::detail::factory::sentence_parse
<nmea::fsi
>(nmea::talker::none
, {6, "@"}));
42 TEST_F(Test_nmea_fsi
, empty_to_string
)
46 EXPECT_STREQ("$GPFSI,,,,,*67", nmea::to_string(fsi
).c_str());
49 TEST_F(Test_nmea_fsi
, set_power_level
)
51 std::vector
<std::pair
<uint32_t, std::string
>> TEST
= {
52 {0, "$GPFSI,,,,0,*57"}, {1, "$GPFSI,,,,1,*56"}, {2, "$GPFSI,,,,2,*55"},
53 {3, "$GPFSI,,,,3,*54"}, {4, "$GPFSI,,,,4,*53"}, {5, "$GPFSI,,,,5,*52"},
54 {6, "$GPFSI,,,,6,*51"}, {7, "$GPFSI,,,,7,*50"}, {8, "$GPFSI,,,,8,*5F"},
55 {9, "$GPFSI,,,,9,*5E"},
58 for (const auto test
: TEST
) {
60 fsi
.set_power_level(test
.first
);
61 EXPECT_STREQ(test
.second
.c_str(), nmea::to_string(fsi
).c_str());
65 TEST_F(Test_nmea_fsi
, set_power_level_invalid
)
68 EXPECT_ANY_THROW(fsi
.set_power_level(10));
71 TEST_F(Test_nmea_fsi
, set_sentence_status
)
75 fsi
.set_sentence_status('R');
76 EXPECT_STREQ("$GPFSI,,,,,R*35", nmea::to_string(fsi
).c_str());
80 fsi
.set_sentence_status('C');
81 EXPECT_STREQ("$GPFSI,,,,,C*24", nmea::to_string(fsi
).c_str());
85 EXPECT_ANY_THROW(fsi
.set_sentence_status('A'));