transfer_test_helpers.cpp
Go to the documentation of this file.
1 /*
2  * Copyright (C) 2014 Pavel Kirienko <pavel.kirienko@gmail.com>
3  */
4 
5 #include <gtest/gtest.h>
7 #include "../clock.hpp"
8 
9 
10 TEST(TransferTestHelpers, Transfer)
11 {
13 
14  uavcan::TransferBufferManager mgr(128, pool);
16 
19  frame.setEndOfTransfer(true);
21 
22  // Filling the buffer with data
23  static const std::string TEST_DATA = "Kaneda! What do you see? Kaneda! What do you see? Kaneda! Kaneda!!!";
24  ASSERT_TRUE(tba.create());
25  ASSERT_EQ(TEST_DATA.length(), tba.access()->write(0, reinterpret_cast<const uint8_t*>(TEST_DATA.c_str()),
26  unsigned(TEST_DATA.length())));
27 
28  // Reading back
29  const Transfer transfer(mfit, uavcan::DataTypeDescriptor());
30  ASSERT_EQ(TEST_DATA, transfer.payload);
31 }
32 
33 
34 TEST(TransferTestHelpers, MFTSerialization)
35 {
37 
38  static const std::string DATA = "To go wrong in one's own way is better than to go right in someone else's.";
39  const Transfer transfer(1, 100000, 10,
40  uavcan::TransferTypeServiceRequest, 2, 42, 127, DATA, type);
41 
42  const std::vector<uavcan::RxFrame> ser = serializeTransfer(transfer);
43 
44  std::cout << "Serialized transfer:\n";
45  for (std::vector<uavcan::RxFrame>::const_iterator it = ser.begin(); it != ser.end(); ++it)
46  {
47  std::cout << "\t" << it->toString() << "\n";
48  }
49 
50  for (std::vector<uavcan::RxFrame>::const_iterator it = ser.begin(); it != ser.end(); ++it)
51  {
52  std::cout << "\t'";
53  for (unsigned i = 0; i < it->getPayloadLen(); i++)
54  {
55  uint8_t ch = it->getPayloadPtr()[i];
56  if (ch < 0x20 || ch > 0x7E)
57  {
58  ch = '.';
59  }
60  std::cout << static_cast<char>(ch);
61  }
62  std::cout << "'\n";
63  }
64  std::cout << std::flush;
65 }
66 
67 
68 TEST(TransferTestHelpers, SFTSerialization)
69 {
71 
72  {
73  const Transfer transfer(1, 100000, 10,
74  uavcan::TransferTypeMessageBroadcast, 7, 42, 0, "Nvrfrgt", type);
75  const std::vector<uavcan::RxFrame> ser = serializeTransfer(transfer);
76  ASSERT_EQ(1, ser.size());
77  std::cout << "Serialized transfer:\n\t" << ser[0].toString() << "\n";
78  }
79  {
80  const Transfer transfer(1, 100000, 11,
81  uavcan::TransferTypeServiceRequest, 7, 42, 127, "7-chars", type);
82  const std::vector<uavcan::RxFrame> ser = serializeTransfer(transfer);
83  ASSERT_EQ(1, ser.size());
84  std::cout << "Serialized transfer:\n\t" << ser[0].toString() << "\n";
85  }
86  {
87  const Transfer transfer(1, 100000, 12,
88  uavcan::TransferTypeMessageBroadcast, 7, 42, 0, "", type);
89  const std::vector<uavcan::RxFrame> ser = serializeTransfer(transfer);
90  ASSERT_EQ(1, ser.size());
91  std::cout << "Serialized transfer:\n\t" << ser[0].toString() << "\n";
92  }
93  {
94  const Transfer transfer(1, 100000, 13,
95  uavcan::TransferTypeServiceResponse, 7, 42, 127, "", type);
96  const std::vector<uavcan::RxFrame> ser = serializeTransfer(transfer);
97  ASSERT_EQ(1, ser.size());
98  std::cout << "Serialized transfer:\n\t" << ser[0].toString() << "\n";
99  }
100 }
uavcan::TransferBufferAccessor::create
ITransferBuffer * create()
Definition: transfer_buffer.hpp:193
uavcan::TransferBufferAccessor::access
ITransferBuffer * access()
Definition: transfer_buffer.hpp:192
uavcan::UtcTime
Implicitly convertible to/from uavcan.Timestamp.
Definition: time.hpp:191
uavcan::TransferTypeServiceResponse
@ TransferTypeServiceResponse
Definition: transfer.hpp:20
uavcan::MultiFrameIncomingTransfer
Definition: transfer_listener.hpp:86
uavcan::TransferBufferAccessor
Definition: transfer_buffer.hpp:180
uavcan::TransferTypeServiceRequest
@ TransferTypeServiceRequest
Definition: transfer.hpp:21
uavcan::PoolAllocator
Definition: dynamic_memory.hpp:51
uavcan::TransferBufferManagerKey
Definition: transfer_buffer.hpp:63
Transfer
Definition: transfer_test_helpers.hpp:16
Transfer::payload
std::string payload
Definition: transfer_test_helpers.hpp:26
uavcan::uint8_t
std::uint8_t uint8_t
Definition: std.hpp:24
uavcan::DataTypeDescriptor
Definition: data_type.hpp:130
uavcan::TransferTypeMessageBroadcast
@ TransferTypeMessageBroadcast
Definition: transfer.hpp:22
uavcan::RxFrame
Definition: frame.hpp:104
TEST_DATA
static const std::string TEST_DATA
Definition: transfer_buffer.cpp:14
uavcan::TransferBufferManager
Definition: transfer_buffer.hpp:153
uavcan::ITransferBuffer::write
virtual int write(unsigned offset, const uint8_t *data, unsigned len)=0
transfer_test_helpers.hpp
frame
uavcan::CanFrame frame
Definition: can.cpp:78
tsMono
uavcan::MonotonicTime tsMono(uint64_t usec)
Definition: libuavcan/libuavcan/test/clock.hpp:97
uavcan::Frame
Definition: frame.hpp:17
tsUtc
uavcan::UtcTime tsUtc(uint64_t usec)
Definition: libuavcan/libuavcan/test/clock.hpp:98
uavcan::MonotonicTime
Definition: time.hpp:184
uavcan::DataTypeSignature
Definition: data_type.hpp:107
uavcan::DataTypeKindMessage
@ DataTypeKindMessage
Definition: data_type.hpp:22
TEST
TEST(TransferTestHelpers, Transfer)
Definition: transfer_test_helpers.cpp:10


uavcan_communicator
Author(s):
autogenerated on Fri Dec 13 2024 03:10:03