1 #include <gtest/gtest.h>
2 #include <marnav/ais/message_19.hpp>
3 #include <marnav/ais/ais.hpp>
8 using namespace marnav
;
10 class Test_ais_message_19
: public ::testing::Test
14 TEST_F(Test_ais_message_19
, parse
)
16 std::vector
<std::pair
<std::string
, uint32_t>> v
;
17 v
.push_back(std::make_pair("C000000000H0htY08D41qwv0000000000000000000000000000@", 0));
19 auto result
= ais::make_message(v
);
20 ASSERT_TRUE(result
!= nullptr);
22 auto m
= ais::message_cast
<ais::message_19
>(result
);
23 ASSERT_TRUE(m
!= nullptr);
26 TEST_F(Test_ais_message_19
, wrong_number_of_bits
)
28 EXPECT_ANY_THROW(ais::message_parse
<ais::message_19
>(ais::raw
{311}));
29 EXPECT_ANY_THROW(ais::message_parse
<ais::message_19
>(ais::raw
{313}));
32 TEST_F(Test_ais_message_19
, encode_default_values
)
36 auto v
= ais::encode_message(m
);
38 ASSERT_EQ(1u, v
.size());
39 EXPECT_STREQ("C0000003wk?8mP=18D3Q3wv00000000000000000000000000000", v
[0].first
.c_str());
40 EXPECT_EQ(0u, v
[0].second
);
43 TEST_F(Test_ais_message_19
, set_latitude
)
46 m
.set_latitude(geo::latitude
{12.34});
48 auto v
= ais::encode_message(m
);
50 ASSERT_EQ(1u, v
.size());
51 EXPECT_STREQ("C0000003wk?8mP1hvN3Q3wv00000000000000000000000000000", v
[0].first
.c_str());
52 EXPECT_EQ(0u, v
[0].second
);
55 TEST_F(Test_ais_message_19
, get_latitude
)
57 std::vector
<std::pair
<std::string
, uint32_t>> v
;
58 v
.push_back(std::make_pair("C000000003?8mP1hvN3Q3wv00000000000000000000000000000", 0));
60 auto result
= ais::make_message(v
);
61 ASSERT_TRUE(result
!= nullptr);
63 auto m
= ais::message_cast
<ais::message_19
>(result
);
64 ASSERT_TRUE(m
!= nullptr);
66 const geo::latitude expected
{12.34};
67 const geo::latitude decoded
= *m
->get_latitude();
69 EXPECT_EQ(expected
, decoded
) << "expected value:" << static_cast<double>(expected
)
70 << ", decoded value:" << static_cast<double>(decoded
);
73 TEST_F(Test_ais_message_19
, set_longitude
)
76 m
.set_longitude(geo::longitude
{123.45});
78 auto v
= ais::encode_message(m
);
80 ASSERT_EQ(1u, v
.size());
81 EXPECT_STREQ("C0000003wj=Agp=18D3Q3wv00000000000000000000000000000", v
[0].first
.c_str());
82 EXPECT_EQ(0u, v
[0].second
);
85 TEST_F(Test_ais_message_19
, get_longitude
)
87 std::vector
<std::pair
<std::string
, uint32_t>> v
;
88 v
.push_back(std::make_pair("C000000002=Agp=18D3Q3wv00000000000000000000000000000", 0));
90 auto result
= ais::make_message(v
);
91 ASSERT_TRUE(result
!= nullptr);
93 auto m
= ais::message_cast
<ais::message_19
>(result
);
94 ASSERT_TRUE(m
!= nullptr);
96 const geo::longitude expected
{123.45};
97 const geo::longitude decoded
= *m
->get_longitude();
99 EXPECT_EQ(expected
, decoded
) << "expected value:" << static_cast<double>(expected
)
100 << ", decoded value:" << static_cast<double>(decoded
);