NMEA: remove deprecated type talker_id
[marnav.git] / test / nmea / Test_nmea_fsi.cpp
blob2c276ae033dd499715a3c023d5c8d67460153e8b
1 #include <gtest/gtest.h>
2 #include <marnav/nmea/fsi.hpp>
3 #include <marnav/nmea/nmea.hpp>
4 #include "type_traits_helper.hpp"
6 namespace
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)
36 EXPECT_ANY_THROW(
37 nmea::detail::factory::sentence_parse<nmea::fsi>(nmea::talker::none, {4, "@"}));
38 EXPECT_ANY_THROW(
39 nmea::detail::factory::sentence_parse<nmea::fsi>(nmea::talker::none, {6, "@"}));
42 TEST_F(Test_nmea_fsi, empty_to_string)
44 nmea::fsi fsi;
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) {
59 nmea::fsi fsi;
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)
67 nmea::fsi fsi;
68 EXPECT_ANY_THROW(fsi.set_power_level(10));
71 TEST_F(Test_nmea_fsi, set_sentence_status)
74 nmea::fsi fsi;
75 fsi.set_sentence_status('R');
76 EXPECT_STREQ("$GPFSI,,,,,R*35", nmea::to_string(fsi).c_str());
79 nmea::fsi fsi;
80 fsi.set_sentence_status('C');
81 EXPECT_STREQ("$GPFSI,,,,,C*24", nmea::to_string(fsi).c_str());
84 nmea::fsi fsi;
85 EXPECT_ANY_THROW(fsi.set_sentence_status('A'));