Dev: consistent formatting with clang-format-3.9
[marnav.git] / test / seatalk / Test_seatalk_message_20.cpp
blobc5422d854786d03afe3c21f9a53867439a1d8f74
1 #include <gtest/gtest.h>
2 #include <marnav/seatalk/message_20.hpp>
4 namespace
7 using namespace marnav;
9 class Test_seatalk_message_20 : public ::testing::Test
13 TEST_F(Test_seatalk_message_20, construction)
15 seatalk::message_20 m;
18 TEST_F(Test_seatalk_message_20, parse_invalid_data_size)
20 EXPECT_ANY_THROW(seatalk::message_20::parse({3, 0x00}));
21 EXPECT_ANY_THROW(seatalk::message_20::parse({5, 0x00}));
24 TEST_F(Test_seatalk_message_20, parse_invalid_length)
26 EXPECT_ANY_THROW(seatalk::message_20::parse({0x20, 0x00, 0x00, 0x00}));
27 EXPECT_ANY_THROW(seatalk::message_20::parse({0x20, 0x02, 0x00, 0x00}));
30 TEST_F(Test_seatalk_message_20, parse)
32 struct test_case {
33 seatalk::raw data;
34 uint16_t speed;
37 std::vector<test_case> cases{
38 {{0x20, 0x01, 0x00, 0x00}, 0}, // 0.0 kn
39 {{0x20, 0x01, 0x00, 0x01}, 1}, // 0.1 kn
40 {{0x20, 0x01, 0x00, 0x0a}, 10}, // 1.0 kn
41 {{0x20, 0x01, 0x00, 0x10}, 16}, // 1.6 kn
42 {{0x20, 0x01, 0x00, 0x20}, 32}, // 3.2 kn
43 {{0x20, 0x01, 0x00, 0x40}, 64}, // 6.4 kn
44 {{0x20, 0x01, 0x00, 0x80}, 128}, // 12.8 kn
45 {{0x20, 0x01, 0x00, 0xa0}, 160}, // 16.0 kn
46 {{0x20, 0x01, 0x01, 0x00}, 256}, // 25.6 kn
47 {{0x20, 0x01, 0x02, 0x00}, 512}, // 51.2 kn
48 {{0x20, 0x01, 0x10, 0x10}, 4112}, // ludricus speed
51 for (auto const & t : cases) {
52 auto generic_message = seatalk::message_20::parse(t.data);
53 ASSERT_TRUE(generic_message != nullptr);
54 auto m = seatalk::message_cast<seatalk::message_20>(generic_message);
55 ASSERT_TRUE(m != nullptr);
56 EXPECT_EQ(seatalk::message_id::speed_through_water, m->type());
57 EXPECT_EQ(t.speed, m->get_speed());
61 TEST_F(Test_seatalk_message_20, write_default)
63 const seatalk::raw expected{0x20, 0x01, 0x00, 0x00};
64 seatalk::message_20 m;
66 EXPECT_EQ(expected, m.get_data());
69 TEST_F(Test_seatalk_message_20, write_speed)
71 const seatalk::raw expected{0x20, 0x01, 0x00, 0x01};
72 seatalk::message_20 m;
73 m.set_speed(1);
75 EXPECT_EQ(expected, m.get_data());