NMEA: changed type of talker id from 'std::string' to its own type.
[marnav.git] / test / nmea / Test_nmea_apa.cpp
blobbbf65558f1199d7d1f37eca4abdca40e3fc2af03
1 #include <gtest/gtest.h>
2 #include <marnav/nmea/apa.hpp>
3 #include <marnav/nmea/nmea.hpp>
4 #include "type_traits_helper.hpp"
6 namespace
8 using namespace marnav;
10 class Test_nmea_apa : public ::testing::Test
14 TEST_F(Test_nmea_apa, contruction) { EXPECT_NO_THROW(nmea::apa apa); }
16 TEST_F(Test_nmea_apa, properties) { nmea_sentence_traits<nmea::apa>(); }
18 TEST_F(Test_nmea_apa, parse)
20 auto s = nmea::make_sentence("$GPAPA,A,A,0.10,R,N,V,V,011,M,DEST*3F");
21 ASSERT_NE(nullptr, s);
23 auto apa = nmea::sentence_cast<nmea::apa>(s);
24 ASSERT_NE(nullptr, apa);
27 TEST_F(Test_nmea_apa, parse_invalid_number_of_arguments)
29 EXPECT_ANY_THROW(nmea::sentence_parse<nmea::apa>(nmea::talker_id::none, {9, "@"}));
30 EXPECT_ANY_THROW(nmea::sentence_parse<nmea::apa>(nmea::talker_id::none, {11, "@"}));
33 TEST_F(Test_nmea_apa, empty_to_string)
35 nmea::apa apa;
37 EXPECT_STREQ("$GPAPA,,,,,,,,,,*47", nmea::to_string(apa).c_str());
40 TEST_F(Test_nmea_apa, set_waypoint)
42 nmea::apa apa;
43 apa.set_waypoint_id(nmea::waypoint{"ABC"});
45 EXPECT_STREQ("$GPAPA,,,,,,,,,,ABC*07", nmea::to_string(apa).c_str());
48 TEST_F(Test_nmea_apa, set_bearing_origin_to_destination)
50 nmea::apa apa;
51 apa.set_bearing_origin_to_destination(11, nmea::reference::MAGNETIC);
52 EXPECT_STREQ("$GPAPA,,,,,,,,11.0,M,*14", nmea::to_string(apa).c_str());
55 TEST_F(Test_nmea_apa, get_bearing_origin_to_destination)
57 auto s = nmea::make_sentence("$GPAPA,A,A,0.10,R,N,V,V,011,M,DEST*3F");
58 ASSERT_NE(nullptr, s);
60 auto apa = nmea::sentence_cast<nmea::apa>(s);
61 ASSERT_NE(nullptr, apa);
63 EXPECT_NEAR(11.0, *apa->get_bearing_origin_to_destination(), 1.0e-4);
64 EXPECT_EQ(nmea::reference::MAGNETIC, *apa->get_bearing_origin_to_destination_ref());