Dev: options for clang-tidy extended, fixed warning.
[marnav.git] / test / nmea / Test_nmea_dtm.cpp
blob8a4b620e433a1f4d36594e0989c49af87d167f71
1 #include <gtest/gtest.h>
2 #include <marnav/nmea/dtm.hpp>
3 #include <marnav/nmea/nmea.hpp>
4 #include "type_traits_helper.hpp"
6 namespace
9 using namespace marnav;
11 class Test_nmea_dtm : public ::testing::Test
15 TEST_F(Test_nmea_dtm, contruction) { EXPECT_NO_THROW(nmea::dtm dtm); }
17 TEST_F(Test_nmea_dtm, properties) { nmea_sentence_traits<nmea::dtm>(); }
19 TEST_F(Test_nmea_dtm, parse)
21 auto s = nmea::make_sentence("$GPDTM,W84,,0.000000,N,0.000000,E,0.0,W84*6F");
22 ASSERT_NE(nullptr, s);
24 auto dtm = nmea::sentence_cast<nmea::dtm>(s);
25 ASSERT_NE(nullptr, dtm);
28 TEST_F(Test_nmea_dtm, parse_invalid_number_of_arguments)
30 EXPECT_ANY_THROW(nmea::sentence_parse<nmea::dtm>("@@", {7, "@"}));
31 EXPECT_ANY_THROW(nmea::sentence_parse<nmea::dtm>("@@", {9, "@"}));
34 TEST_F(Test_nmea_dtm, empty_to_string)
36 nmea::dtm dtm;
38 EXPECT_STREQ("$GPDTM,W84,,0.0000,N,0.0000,E,0.0,W84*6F", nmea::to_string(dtm).c_str());
41 TEST_F(Test_nmea_dtm, set_lat_offset)
44 nmea::dtm dtm;
45 dtm.set_lat_offset(1.0, nmea::direction::north);
46 EXPECT_STREQ("$GPDTM,W84,,1.0000,N,0.0000,E,0.0,W84*6E", nmea::to_string(dtm).c_str());
49 nmea::dtm dtm;
50 dtm.set_lat_offset(1.0, nmea::direction::south);
51 EXPECT_STREQ("$GPDTM,W84,,1.0000,S,0.0000,E,0.0,W84*73", nmea::to_string(dtm).c_str());
55 TEST_F(Test_nmea_dtm, set_lat_offset_invalid_direction)
57 nmea::dtm dtm;
59 EXPECT_NO_THROW(dtm.set_lat_offset(1.0, nmea::direction::north));
60 EXPECT_NO_THROW(dtm.set_lat_offset(1.0, nmea::direction::south));
61 EXPECT_ANY_THROW(dtm.set_lat_offset(1.0, nmea::direction::east));
62 EXPECT_ANY_THROW(dtm.set_lat_offset(1.0, nmea::direction::west));
65 TEST_F(Test_nmea_dtm, set_lon_offset)
68 nmea::dtm dtm;
69 dtm.set_lon_offset(1.0, nmea::direction::east);
70 EXPECT_STREQ("$GPDTM,W84,,0.0000,N,1.0000,E,0.0,W84*6E", nmea::to_string(dtm).c_str());
73 nmea::dtm dtm;
74 dtm.set_lon_offset(1.0, nmea::direction::west);
75 EXPECT_STREQ("$GPDTM,W84,,0.0000,N,1.0000,W,0.0,W84*7C", nmea::to_string(dtm).c_str());
79 TEST_F(Test_nmea_dtm, set_lon_offset_invalid_direction)
81 nmea::dtm dtm;
83 EXPECT_ANY_THROW(dtm.set_lon_offset(1.0, nmea::direction::north));
84 EXPECT_ANY_THROW(dtm.set_lon_offset(1.0, nmea::direction::south));
85 EXPECT_NO_THROW(dtm.set_lon_offset(1.0, nmea::direction::east));
86 EXPECT_NO_THROW(dtm.set_lon_offset(1.0, nmea::direction::west));
89 TEST_F(Test_nmea_dtm, set_ref)
91 nmea::dtm dtm;
92 dtm.set_ref("ABC");
93 EXPECT_STREQ("$GPDTM,ABC,,0.0000,N,0.0000,E,0.0,W84*74", nmea::to_string(dtm).c_str());
96 TEST_F(Test_nmea_dtm, set_ref_too_large)
98 nmea::dtm dtm;
99 dtm.set_ref("ABCDEFGHI");
100 EXPECT_STREQ("$GPDTM,ABCDE,,0.0000,N,0.0000,E,0.0,W84*75", nmea::to_string(dtm).c_str());
103 TEST_F(Test_nmea_dtm, set_subcode)
105 nmea::dtm dtm;
106 dtm.set_subcode("ABC");
107 EXPECT_STREQ("$GPDTM,W84,ABC,0.0000,N,0.0000,E,0.0,W84*2F", nmea::to_string(dtm).c_str());
110 TEST_F(Test_nmea_dtm, set_subcode_too_large)
112 nmea::dtm dtm;
113 dtm.set_subcode("ABCDEFGHI");
114 EXPECT_STREQ("$GPDTM,W84,ABCDE,0.0000,N,0.0000,E,0.0,W84*2E", nmea::to_string(dtm).c_str());
117 TEST_F(Test_nmea_dtm, set_name)
119 nmea::dtm dtm;
120 dtm.set_name("ABC");
121 EXPECT_STREQ("$GPDTM,W84,,0.0000,N,0.0000,E,0.0,ABC*74", nmea::to_string(dtm).c_str());
124 TEST_F(Test_nmea_dtm, set_name_too_large)
126 nmea::dtm dtm;
127 dtm.set_name("ABCDEFGHI");
128 EXPECT_STREQ("$GPDTM,W84,,0.0000,N,0.0000,E,0.0,ABCDE*75", nmea::to_string(dtm).c_str());