Dev: consistent formatting with clang-format-3.9
[marnav.git] / test / seatalk / Test_seatalk_message_21.cpp
blob6a551a8c36d28edc90653be24bd896d1f357cf02
1 #include <gtest/gtest.h>
2 #include <marnav/seatalk/message_21.hpp>
4 namespace
7 using namespace marnav;
9 class Test_seatalk_message_21 : public ::testing::Test
13 TEST_F(Test_seatalk_message_21, construction)
15 seatalk::message_21 m;
18 TEST_F(Test_seatalk_message_21, parse_invalid_data_size)
20 EXPECT_ANY_THROW(seatalk::message_21::parse({4, 0x00}));
21 EXPECT_ANY_THROW(seatalk::message_21::parse({6, 0x00}));
24 TEST_F(Test_seatalk_message_21, parse_invalid_length)
26 EXPECT_ANY_THROW(seatalk::message_21::parse({0x21, 0x01, 0x00, 0x00, 0x00}));
27 EXPECT_ANY_THROW(seatalk::message_21::parse({0x21, 0x03, 0x00, 0x00, 0x00}));
30 TEST_F(Test_seatalk_message_21, parse)
32 struct test_case {
33 seatalk::raw data;
34 uint32_t distance;
37 std::vector<test_case> cases{
38 {{0x21, 0x02, 0x00, 0x00, 0x00}, 0}, // 0.00 nm
39 {{0x21, 0x02, 0x00, 0x00, 0x01}, 1}, // 0.01 nm
40 {{0x21, 0x02, 0x00, 0x00, 0x10}, 0}, // 0.00 nm
41 {{0x21, 0x02, 0x00, 0x00, 0xf0}, 0}, // 0.00 nm
42 {{0x21, 0x02, 0x00, 0x01, 0x00}, 16}, // 0.16 nm
43 {{0x21, 0x02, 0x00, 0x10, 0x00}, 256}, // 2.56 nm
44 {{0x21, 0x02, 0x01, 0x00, 0x00}, 4096}, // 40.96 nm
45 {{0x21, 0x02, 0x10, 0x00, 0x00}, 65536}, // 655.36 nm
48 for (auto const & t : cases) {
49 auto generic_message = seatalk::message_21::parse(t.data);
50 ASSERT_TRUE(generic_message != nullptr);
51 auto m = seatalk::message_cast<seatalk::message_21>(generic_message);
52 ASSERT_TRUE(m != nullptr);
53 EXPECT_EQ(seatalk::message_id::trip_mileage, m->type());
54 EXPECT_EQ(t.distance, m->get_distance());
58 TEST_F(Test_seatalk_message_21, write_default)
60 const seatalk::raw expected{0x21, 0x02, 0x00, 0x00, 0x00};
61 seatalk::message_21 m;
63 EXPECT_EQ(expected, m.get_data());
66 TEST_F(Test_seatalk_message_21, write_distance)
68 const seatalk::raw expected{0x21, 0x02, 0x00, 0x00, 0x01};
69 seatalk::message_21 m;
70 m.set_distance(1);
72 EXPECT_EQ(expected, m.get_data());