1 #include <gtest/gtest.h>
2 #include <marnav/nmea/apa.hpp>
3 #include <marnav/nmea/nmea.hpp>
4 #include "type_traits_helper.hpp"
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
)
37 EXPECT_STREQ("$GPAPA,,,,,,,,,,*47", nmea::to_string(apa
).c_str());
40 TEST_F(Test_nmea_apa
, set_waypoint
)
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
)
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());