6 #include <gtest/gtest.h> 8 #include "../clock.hpp" 17 for (
uint8_t i = 0; i <
sizeof(data); i++)
28 const uint8_t* payload,
unsigned payload_len)
38 static const unsigned BUFLEN = 1024;
39 uint8_t buf_reference[BUFLEN], buf_actual[BUFLEN];
41 if (payload_len > BUFLEN)
43 std::cout <<
"match(): Payload is too long" << std::endl;
47 std::fill(buf_reference, buf_reference + BUFLEN, 0);
48 std::fill(buf_actual, buf_actual + BUFLEN, 0);
49 std::copy(payload, payload + payload_len, buf_reference);
51 EXPECT_EQ(payload_len, it.
read(0, buf_actual, payload_len * 3));
52 EXPECT_EQ(0, it.
read(payload_len, buf_actual, payload_len * 3));
54 return std::equal(buf_reference, buf_reference + BUFLEN, buf_actual);
58 TEST(SingleFrameIncomingTransfer, Basic)
64 SingleFrameIncomingTransfer it(frame);
66 ASSERT_TRUE(
match(it, frame, frame.getPayloadPtr(), frame.getPayloadLen()));
70 TEST(MultiFrameIncomingTransfer, Basic)
82 MultiFrameIncomingTransfer it(frame.getMonotonicTimestamp(), frame.getUtcTimestamp(),
frame, tba);
88 ASSERT_GT(0, it.read(0, &data_byte, 1));
93 const std::string data =
"123Hello world";
94 const uint8_t*
const data_ptr =
reinterpret_cast<const uint8_t*
>(data.c_str());
95 ASSERT_FALSE(bufmgr.
access(bufmgr_key));
96 ASSERT_TRUE(bufmgr.
create(bufmgr_key));
97 ASSERT_EQ(data.length(), bufmgr.
access(bufmgr_key)->
write(0, data_ptr,
unsigned(data.length())));
102 ASSERT_TRUE(
match(it, frame, data_ptr,
unsigned(data.length())));
107 ASSERT_TRUE(bufmgr.
access(bufmgr_key));
109 ASSERT_FALSE(bufmgr.
access(bufmgr_key));
UAVCAN_EXPORT bool equal(InputIt1 first1, InputIt1 last1, InputIt2 first2)
TransferType getTransferType() const
ITransferBuffer * create(const TransferBufferManagerKey &key)
MonotonicTime getMonotonicTimestamp() const
static const NodeID Broadcast
uavcan::UtcTime tsUtc(uint64_t usec)
TransferID getTransferID() const
uint8_t setPayload(const uint8_t *data, unsigned len)
UtcTime getUtcTimestamp() const
static bool match(const uavcan::IncomingTransfer &it, const uavcan::RxFrame &frame, const uint8_t *payload, unsigned payload_len)
TransferID getTransferID() const
virtual int write(unsigned offset, const uint8_t *data, unsigned len)=0
UAVCAN_EXPORT OutputIt copy(InputIt first, InputIt last, OutputIt result)
virtual int read(unsigned offset, uint8_t *data, unsigned len) const =0
NodeID getSrcNodeID() const
static void fill(T(&a)[Size], R value)
uavcan::MonotonicTime tsMono(uint64_t usec)
UtcTime getUtcTimestamp() const
TEST(SingleFrameIncomingTransfer, Basic)
TransferType getTransferType() const
MonotonicTime getMonotonicTimestamp() const
void setEndOfTransfer(bool x)
ITransferBuffer * access(const TransferBufferManagerKey &key)
static uavcan::RxFrame makeFrame()
NodeID getSrcNodeID() const