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);
20  uavcan::MultiFrameIncomingTransfer mfit(tsMono(10), tsUtc(1000), frame, tba);
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 }
std::uint8_t uint8_t
Definition: std.hpp:24
uavcan::UtcTime tsUtc(uint64_t usec)
static const std::string TEST_DATA
Implicitly convertible to/from uavcan.Timestamp.
Definition: time.hpp:191
virtual int write(unsigned offset, const uint8_t *data, unsigned len)=0
uavcan::MonotonicTime tsMono(uint64_t usec)
uavcan::CanFrame frame
Definition: can.cpp:78
void setEndOfTransfer(bool x)
Definition: frame.hpp:82
TEST(TransferTestHelpers, Transfer)


uavcan_communicator
Author(s):
autogenerated on Wed Jan 11 2023 03:59:40