-
Notifications
You must be signed in to change notification settings - Fork 1.2k
/
lcm_messages_test.cc
48 lines (40 loc) · 1.4 KB
/
lcm_messages_test.cc
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
#include "drake/lcm/lcm_messages.h"
#include <gtest/gtest.h>
#include "drake/common/test_utilities/expect_throws_message.h"
#include "drake/lcm/lcmt_drake_signal_utils.h"
#include "drake/lcmt_drake_signal.hpp"
namespace drake {
namespace lcm {
namespace {
lcmt_drake_signal ModelMessage() {
lcmt_drake_signal message{};
message.timestamp = 2;
return message;
}
GTEST_TEST(LcmMessagesTest, EncodeDecodeLcmMessage) {
lcmt_drake_signal message{};
EXPECT_FALSE(
CompareLcmtDrakeSignalMessages(message, ModelMessage()));
const std::vector<uint8_t> bytes = EncodeLcmMessage(ModelMessage());
EXPECT_GT(bytes.size(), 0);
message = DecodeLcmMessage<lcmt_drake_signal>(bytes);
EXPECT_TRUE(
CompareLcmtDrakeSignalMessages(message, ModelMessage()));
}
GTEST_TEST(LcmMessagesTest, DecodeLcmMessageError) {
const std::vector<uint8_t> bytes = EncodeLcmMessage(ModelMessage());
std::vector<uint8_t> corrupt_bytes = bytes;
corrupt_bytes.at(0) = 0;
DRAKE_EXPECT_THROWS_MESSAGE(
DecodeLcmMessage<lcmt_drake_signal>(corrupt_bytes),
std::runtime_error,
"Error decoding message of type 'drake::lcmt_drake_signal'");
}
GTEST_TEST(LcmMessagesTest, AreLcmMessagesEqual) {
lcmt_drake_signal message{};
EXPECT_FALSE(AreLcmMessagesEqual(message, ModelMessage()));
EXPECT_TRUE(AreLcmMessagesEqual(ModelMessage(), ModelMessage()));
}
} // namespace
} // namespace lcm
} // namespace drake