mirror of
https://gitee.com/mirrors_PX4/PX4-Autopilot.git
synced 2026-07-16 23:30:35 +08:00
Uncrustified tests
This commit is contained in:
@@ -60,7 +60,9 @@ TEST(DataTypeSignature, Correctness)
|
||||
crc.add(0x34);
|
||||
crc.add(0x12);
|
||||
for (int i = 0; i < 8; i++)
|
||||
{
|
||||
crc.add(0);
|
||||
}
|
||||
|
||||
ASSERT_EQ(crc.get(), signature.get());
|
||||
|
||||
@@ -79,7 +81,9 @@ TEST(DataTypeSignature, Correctness)
|
||||
crc.add(0xdc);
|
||||
crc.add(0xfe);
|
||||
for (int i = 0; i < 64; i += 8)
|
||||
{
|
||||
crc.add((old_signature >> i) & 0xFF);
|
||||
}
|
||||
|
||||
ASSERT_EQ(crc.get(), signature.get());
|
||||
|
||||
|
||||
@@ -10,7 +10,7 @@ struct ListItem : uavcan::LinkedListNode<ListItem>
|
||||
int value;
|
||||
|
||||
ListItem(int value = 0)
|
||||
: value(value)
|
||||
: value(value)
|
||||
{ }
|
||||
|
||||
struct GreaterThanComparator
|
||||
@@ -18,7 +18,7 @@ struct ListItem : uavcan::LinkedListNode<ListItem>
|
||||
const int compare_with;
|
||||
|
||||
GreaterThanComparator(int compare_with)
|
||||
: compare_with(compare_with)
|
||||
: compare_with(compare_with)
|
||||
{ }
|
||||
|
||||
bool operator()(const ListItem* item) const
|
||||
|
||||
@@ -106,11 +106,15 @@ TEST(Array, Basic)
|
||||
*/
|
||||
ASSERT_FALSE(a1.empty());
|
||||
for (A1::const_iterator it = a1.begin(); it != a1.end(); ++it)
|
||||
{
|
||||
ASSERT_EQ(0, *it);
|
||||
}
|
||||
|
||||
ASSERT_FALSE(a2.empty());
|
||||
for (A2::const_iterator it = a2.begin(); it != a2.end(); ++it)
|
||||
{
|
||||
ASSERT_EQ(0, *it);
|
||||
}
|
||||
|
||||
for (A3::const_iterator it = a3.begin(); it != a3.end(); ++it)
|
||||
{
|
||||
@@ -124,17 +128,21 @@ TEST(Array, Basic)
|
||||
* Modification with known values; array lengths are hard coded.
|
||||
*/
|
||||
for (int i = 0; i < 4; i++)
|
||||
{
|
||||
a1.at(i) = i;
|
||||
|
||||
}
|
||||
for (int i = 0; i < 2; i++)
|
||||
{
|
||||
a2.at(i) = i;
|
||||
|
||||
}
|
||||
for (int i = 0; i < 2; i++)
|
||||
{
|
||||
a3[i].a = i;
|
||||
a3[i].b = i;
|
||||
for (int i2 = 0; i2 < 5; i2++)
|
||||
{
|
||||
a3[i].c.push_back(i2 & 1);
|
||||
}
|
||||
ASSERT_EQ(5, a3[i].c.size());
|
||||
ASSERT_FALSE(a3[i].c.empty());
|
||||
}
|
||||
@@ -180,11 +188,13 @@ TEST(Array, Basic)
|
||||
ASSERT_EQ(a3_, a3);
|
||||
|
||||
for (int i = 0; i < 4; i++)
|
||||
{
|
||||
ASSERT_EQ(a1[i], a1_[i]);
|
||||
|
||||
}
|
||||
for (int i = 0; i < 2; i++)
|
||||
{
|
||||
ASSERT_EQ(a2[i], a2_[i]);
|
||||
|
||||
}
|
||||
for (int i = 0; i < 2; i++)
|
||||
{
|
||||
ASSERT_EQ(a3[i].a, a3_[i].a);
|
||||
@@ -346,10 +356,13 @@ TEST(Array, Dynamic)
|
||||
ASSERT_EQ(255, b.size());
|
||||
|
||||
for (int i = 0; i < 5; i++)
|
||||
{
|
||||
ASSERT_TRUE(a[i]);
|
||||
|
||||
}
|
||||
for (int i = 0; i < 255; i++)
|
||||
{
|
||||
ASSERT_EQ(72, b[i]);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -566,8 +579,8 @@ TEST(Array, TailArrayOptimizationErrors)
|
||||
TEST(Array, DynamicEncodeDecodeErrors)
|
||||
{
|
||||
typedef CustomType2<Array<Array<IntegerSpec<8, SignednessUnsigned, CastModeSaturate>,
|
||||
ArrayModeDynamic, 255>,
|
||||
ArrayModeDynamic, 255> > A;
|
||||
ArrayModeDynamic, 255>,
|
||||
ArrayModeDynamic, 255> > A;
|
||||
A a;
|
||||
a.b.resize(2);
|
||||
a.b[0].push_back(55);
|
||||
@@ -598,8 +611,8 @@ TEST(Array, DynamicEncodeDecodeErrors)
|
||||
TEST(Array, StaticEncodeDecodeErrors)
|
||||
{
|
||||
typedef CustomType2<Array<Array<IntegerSpec<8, SignednessUnsigned, CastModeSaturate>,
|
||||
ArrayModeStatic, 2>,
|
||||
ArrayModeStatic, 2> > A;
|
||||
ArrayModeStatic, 2>,
|
||||
ArrayModeStatic, 2> > A;
|
||||
A a;
|
||||
a.a = 1.0;
|
||||
a.b[0][0] = 0x11;
|
||||
@@ -810,7 +823,9 @@ TEST(Array, MultidimensionalStreaming)
|
||||
{
|
||||
threedee[x][y].resize(3);
|
||||
for (int z = 0; z < threedee[x][y].size(); z++)
|
||||
{
|
||||
threedee[x][y][z] = 1.0 / (x + y + z + 1.0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -52,7 +52,8 @@ TEST(CharArrayFormatter, Hardcore)
|
||||
|
||||
CharArrayFormatter<A8> f(a);
|
||||
|
||||
f.write("%% char='%*' double='%*' long='%*' unsigned long='%*' int='%s' long double='%*' bool='%*' const char='%*' %%",
|
||||
f.write(
|
||||
"%% char='%*' double='%*' long='%*' unsigned long='%*' int='%s' long double='%*' bool='%*' const char='%*' %%",
|
||||
'%', -12.3456, -123456789123456789L, 987654321, -123456789, 0.000001L, true, "Don't Panic.");
|
||||
|
||||
static const std::string Reference =
|
||||
|
||||
@@ -124,10 +124,10 @@ TEST(FloatSpec, Basic)
|
||||
do { \
|
||||
StorageType<FloatType>::Type var = StorageType<FloatType>::Type(); \
|
||||
ASSERT_EQ(1, FloatType::decode(var, sc_rd, uavcan::TailArrayOptDisabled)); \
|
||||
if (!isnan(expected_value)) \
|
||||
ASSERT_FLOAT_EQ(expected_value, var); \
|
||||
else \
|
||||
ASSERT_EQ(!!isnan(expected_value), !!isnan(var)); \
|
||||
if (!isnan(expected_value)) { \
|
||||
ASSERT_FLOAT_EQ(expected_value, var); } \
|
||||
else { \
|
||||
ASSERT_EQ(!!isnan(expected_value), !!isnan(var)); } \
|
||||
} while (0)
|
||||
|
||||
for (int i = 0; i < NumValues; i++)
|
||||
|
||||
@@ -173,17 +173,20 @@ TEST(GlobalDataTypeRegistry, Basic)
|
||||
ASSERT_FALSE(GlobalDataTypeRegistry::instance().find(uavcan::DataTypeKindService, "my_namespace.DataTypeB"));
|
||||
ASSERT_FALSE(GlobalDataTypeRegistry::instance().find(uavcan::DataTypeKindService, 42));
|
||||
|
||||
ASSERT_TRUE((pdtd = GlobalDataTypeRegistry::instance().find(uavcan::DataTypeKindMessage, "my_namespace.DataTypeB")));
|
||||
ASSERT_TRUE((pdtd = GlobalDataTypeRegistry::instance().find(uavcan::DataTypeKindMessage,
|
||||
"my_namespace.DataTypeB")));
|
||||
ASSERT_EQ(extractDescriptor<DataTypeB>(741), *pdtd);
|
||||
ASSERT_TRUE((pdtd = GlobalDataTypeRegistry::instance().find(uavcan::DataTypeKindMessage, 741)));
|
||||
ASSERT_EQ(extractDescriptor<DataTypeB>(741), *pdtd);
|
||||
|
||||
ASSERT_TRUE((pdtd = GlobalDataTypeRegistry::instance().find(uavcan::DataTypeKindMessage, "my_namespace.DataTypeA")));
|
||||
ASSERT_TRUE((pdtd = GlobalDataTypeRegistry::instance().find(uavcan::DataTypeKindMessage,
|
||||
"my_namespace.DataTypeA")));
|
||||
ASSERT_EQ(extractDescriptor<DataTypeAMessage>(), *pdtd);
|
||||
ASSERT_TRUE((pdtd = GlobalDataTypeRegistry::instance().find(uavcan::DataTypeKindMessage, uavcan::DataTypeID(0))));
|
||||
ASSERT_EQ(extractDescriptor<DataTypeAMessage>(), *pdtd);
|
||||
|
||||
ASSERT_TRUE((pdtd = GlobalDataTypeRegistry::instance().find(uavcan::DataTypeKindService, "my_namespace.DataTypeA")));
|
||||
ASSERT_TRUE((pdtd = GlobalDataTypeRegistry::instance().find(uavcan::DataTypeKindService,
|
||||
"my_namespace.DataTypeA")));
|
||||
ASSERT_EQ(extractDescriptor<DataTypeAService>(147), *pdtd);
|
||||
ASSERT_TRUE((pdtd = GlobalDataTypeRegistry::instance().find(uavcan::DataTypeKindService, 147)));
|
||||
ASSERT_EQ(extractDescriptor<DataTypeAService>(147), *pdtd);
|
||||
|
||||
@@ -67,7 +67,8 @@ TEST(Publisher, Basic)
|
||||
// Second shot - checking the transfer ID
|
||||
ASSERT_LT(0, publisher.broadcast(msg));
|
||||
|
||||
expected_frame = uavcan::Frame(uavcan::mavlink::Message::DefaultDataTypeID, uavcan::TransferTypeMessageBroadcast,
|
||||
expected_frame = uavcan::Frame(uavcan::mavlink::Message::DefaultDataTypeID,
|
||||
uavcan::TransferTypeMessageBroadcast,
|
||||
node.getNodeID(), uavcan::NodeID::Broadcast, 0, 1, true);
|
||||
expected_frame.setPayload(expected_transfer_payload, 7);
|
||||
ASSERT_TRUE(expected_frame.compile(expected_can_frame));
|
||||
|
||||
@@ -17,7 +17,7 @@ struct TimerCallCounter
|
||||
void callA(const uavcan::TimerEvent& ev) { events_a.push_back(ev); }
|
||||
void callB(const uavcan::TimerEvent& ev) { events_b.push_back(ev); }
|
||||
|
||||
typedef uavcan::MethodBinder<TimerCallCounter*, void(TimerCallCounter::*)(const uavcan::TimerEvent&)> Binder;
|
||||
typedef uavcan::MethodBinder<TimerCallCounter*, void (TimerCallCounter::*)(const uavcan::TimerEvent&)> Binder;
|
||||
|
||||
Binder bindA() { return Binder(this, &TimerCallCounter::callA); }
|
||||
Binder bindB() { return Binder(this, &TimerCallCounter::callB); }
|
||||
|
||||
@@ -39,7 +39,7 @@ struct ServiceCallResultHandler
|
||||
}
|
||||
|
||||
typedef uavcan::MethodBinder<ServiceCallResultHandler*,
|
||||
void (ServiceCallResultHandler::*)(const uavcan::ServiceCallResult<DataType>&)> Binder;
|
||||
void (ServiceCallResultHandler::*)(const uavcan::ServiceCallResult<DataType>&)> Binder;
|
||||
|
||||
Binder bind() { return Binder(this, &ServiceCallResultHandler::handleResponse); }
|
||||
};
|
||||
@@ -69,7 +69,7 @@ TEST(ServiceClient, Basic)
|
||||
// Caller
|
||||
typedef uavcan::ServiceCallResult<root_ns_a::StringService> ResultType;
|
||||
typedef uavcan::ServiceClient<root_ns_a::StringService,
|
||||
typename ServiceCallResultHandler<root_ns_a::StringService>::Binder > ClientType;
|
||||
typename ServiceCallResultHandler<root_ns_a::StringService>::Binder > ClientType;
|
||||
ServiceCallResultHandler<root_ns_a::StringService> handler;
|
||||
|
||||
ClientType client1(nodes.b);
|
||||
|
||||
@@ -28,13 +28,13 @@ struct SubscriptionListener
|
||||
DataType msg;
|
||||
|
||||
ReceivedDataStructureCopy(const ReceivedDataStructure& s)
|
||||
: ts_monotonic(s.getMonotonicTimestamp())
|
||||
, ts_utc(s.getUtcTimestamp())
|
||||
, transfer_type(s.getTransferType())
|
||||
, transfer_id(s.getTransferID())
|
||||
, src_node_id(s.getSrcNodeID())
|
||||
, iface_index(s.getIfaceIndex())
|
||||
, msg(s)
|
||||
: ts_monotonic(s.getMonotonicTimestamp())
|
||||
, ts_utc(s.getUtcTimestamp())
|
||||
, transfer_type(s.getTransferType())
|
||||
, transfer_id(s.getTransferID())
|
||||
, src_node_id(s.getSrcNodeID())
|
||||
, iface_index(s.getIfaceIndex())
|
||||
, msg(s)
|
||||
{ }
|
||||
};
|
||||
|
||||
@@ -111,7 +111,7 @@ TEST(Subscriber, Basic)
|
||||
{
|
||||
uavcan::TransferType tt = (i & 1) ? uavcan::TransferTypeMessageUnicast : uavcan::TransferTypeMessageBroadcast;
|
||||
uavcan::NodeID dni = (tt == uavcan::TransferTypeMessageBroadcast) ?
|
||||
uavcan::NodeID::Broadcast : node.getDispatcher().getNodeID();
|
||||
uavcan::NodeID::Broadcast : node.getDispatcher().getNodeID();
|
||||
// uint_fast16_t data_type_id, TransferType transfer_type, NodeID src_node_id, NodeID dst_node_id,
|
||||
// uint_fast8_t frame_index, TransferID transfer_id, bool last_frame
|
||||
uavcan::Frame frame(uavcan::mavlink::Message::DefaultDataTypeID, tt, uavcan::NodeID(i + 100), dni, 0, i, true);
|
||||
|
||||
@@ -23,15 +23,25 @@ static bool validateDataTypeInfoResponse(const std::auto_ptr<ServiceCallResult<G
|
||||
unsigned int mask)
|
||||
{
|
||||
if (!resp.get())
|
||||
{
|
||||
return false;
|
||||
}
|
||||
if (!resp->isSuccessful())
|
||||
{
|
||||
return false;
|
||||
}
|
||||
if (resp->response.name != DataType::getDataTypeFullName())
|
||||
{
|
||||
return false;
|
||||
}
|
||||
if (DataType::getDataTypeSignature().get() != resp->response.signature)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
if (resp->response.mask != mask)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -62,8 +72,8 @@ TEST(DataTypeInfoProvider, Basic)
|
||||
nodes.spinBoth(MonotonicDuration::fromMSec(2));
|
||||
|
||||
ASSERT_TRUE(validateDataTypeInfoResponse<GetDataTypeInfo>(gdti_cln.collector.result,
|
||||
GetDataTypeInfo::Response::MASK_KNOWN |
|
||||
GetDataTypeInfo::Response::MASK_SERVING));
|
||||
GetDataTypeInfo::Response::MASK_KNOWN |
|
||||
GetDataTypeInfo::Response::MASK_SERVING));
|
||||
ASSERT_EQ(1, gdti_cln.collector.result->server_node_id.get());
|
||||
|
||||
/*
|
||||
@@ -75,7 +85,7 @@ TEST(DataTypeInfoProvider, Basic)
|
||||
nodes.spinBoth(MonotonicDuration::fromMSec(2));
|
||||
|
||||
ASSERT_TRUE(validateDataTypeInfoResponse<NodeStatus>(gdti_cln.collector.result,
|
||||
GetDataTypeInfo::Response::MASK_KNOWN));
|
||||
GetDataTypeInfo::Response::MASK_KNOWN));
|
||||
|
||||
/*
|
||||
* Starting publisher and subscriber for NodeStatus, requesting info again
|
||||
@@ -91,9 +101,9 @@ TEST(DataTypeInfoProvider, Basic)
|
||||
nodes.spinBoth(MonotonicDuration::fromMSec(2));
|
||||
|
||||
ASSERT_TRUE(validateDataTypeInfoResponse<NodeStatus>(gdti_cln.collector.result,
|
||||
GetDataTypeInfo::Response::MASK_KNOWN |
|
||||
GetDataTypeInfo::Response::MASK_PUBLISHING |
|
||||
GetDataTypeInfo::Response::MASK_SUBSCRIBED));
|
||||
GetDataTypeInfo::Response::MASK_KNOWN |
|
||||
GetDataTypeInfo::Response::MASK_PUBLISHING |
|
||||
GetDataTypeInfo::Response::MASK_SUBSCRIBED));
|
||||
|
||||
/*
|
||||
* Requesting a non-existent type
|
||||
|
||||
@@ -14,8 +14,8 @@ struct GlobalTimeSyncMasterTestNode
|
||||
TestNode node;
|
||||
|
||||
GlobalTimeSyncMasterTestNode(uavcan::NodeID nid)
|
||||
: can(clock)
|
||||
, node(can, clock, nid)
|
||||
: can(clock)
|
||||
, node(can, clock, nid)
|
||||
{ }
|
||||
};
|
||||
|
||||
@@ -26,9 +26,9 @@ struct GlobalTimeSyncTestNetwork
|
||||
GlobalTimeSyncMasterTestNode master_high;
|
||||
|
||||
GlobalTimeSyncTestNetwork()
|
||||
: slave(64)
|
||||
, master_low(120)
|
||||
, master_high(8)
|
||||
: slave(64)
|
||||
, master_low(120)
|
||||
, master_high(8)
|
||||
{
|
||||
slave.can.other = &master_low.can;
|
||||
master_low.can.other = &slave.can;
|
||||
|
||||
@@ -14,7 +14,7 @@ struct RestartHandler : public uavcan::IRestartRequestHandler
|
||||
bool handleRestartRequest(uavcan::NodeID request_source)
|
||||
{
|
||||
std::cout << "Restart request from " << int(request_source.get()) << " will be "
|
||||
<< (accept ? "accepted" : "rejected") << std::endl;
|
||||
<< (accept ? "accepted" : "rejected") << std::endl;
|
||||
return accept;
|
||||
}
|
||||
};
|
||||
|
||||
@@ -23,7 +23,7 @@ TEST(CanFrame, FrameProperties)
|
||||
|
||||
TEST(CanFrame, ToString)
|
||||
{
|
||||
uavcan::CanFrame frame = makeCanFrame(123, "\x01\x02\x03\x04""1234", EXT);
|
||||
uavcan::CanFrame frame = makeCanFrame(123, "\x01\x02\x03\x04" "1234", EXT);
|
||||
EXPECT_EQ("0x0000007b 01 02 03 04 31 32 33 34 '....1234'", frame.toString());
|
||||
EXPECT_TRUE(frame.toString() == frame.toString(uavcan::CanFrame::StrAligned));
|
||||
|
||||
@@ -32,14 +32,14 @@ TEST(CanFrame, ToString)
|
||||
EXPECT_EQ("0x0000007b 7a 'z'", frame.toString());
|
||||
|
||||
EXPECT_EQ(" 0x141 61 62 63 64 aa bb cc dd 'abcd....'",
|
||||
makeCanFrame(321, "abcd""\xaa\xbb\xcc\xdd", STD).toString(uavcan::CanFrame::StrAligned));
|
||||
makeCanFrame(321, "abcd" "\xaa\xbb\xcc\xdd", STD).toString(uavcan::CanFrame::StrAligned));
|
||||
|
||||
EXPECT_EQ(" 0x100 ''",
|
||||
makeCanFrame(256, "", STD).toString(uavcan::CanFrame::StrAligned));
|
||||
makeCanFrame(256, "", STD).toString(uavcan::CanFrame::StrAligned));
|
||||
|
||||
EXPECT_EQ("0x100 ''",
|
||||
makeCanFrame(256, "", STD).toString());
|
||||
makeCanFrame(256, "", STD).toString());
|
||||
|
||||
EXPECT_EQ("0x141 61 62 63 64 aa bb cc dd 'abcd....'",
|
||||
makeCanFrame(321, "abcd""\xaa\xbb\xcc\xdd", STD).toString());
|
||||
makeCanFrame(321, "abcd" "\xaa\xbb\xcc\xdd", STD).toString());
|
||||
}
|
||||
|
||||
@@ -24,7 +24,9 @@ TEST(CanDriverMock, Basic)
|
||||
EXPECT_EQ(0, masks.read);
|
||||
|
||||
for (int i = 0; i < 3; i++)
|
||||
{
|
||||
driver.ifaces.at(i).writeable = false;
|
||||
}
|
||||
|
||||
// No WR, no RD
|
||||
masks.write = 7;
|
||||
|
||||
@@ -15,7 +15,8 @@ static bool rxFrameEquals(const uavcan::CanRxFrame& rxframe, const uavcan::CanFr
|
||||
<< " " << frame.toString(uavcan::CanFrame::StrAligned) << std::endl;
|
||||
}
|
||||
return (static_cast<const uavcan::CanFrame&>(rxframe) == frame) &&
|
||||
(rxframe.ts_mono == uavcan::MonotonicTime::fromUSec(timestamp_usec)) && (rxframe.iface_index == iface_index);
|
||||
(rxframe.ts_mono == uavcan::MonotonicTime::fromUSec(timestamp_usec)) &&
|
||||
(rxframe.iface_index == iface_index);
|
||||
}
|
||||
|
||||
TEST(CanIOManager, Reception)
|
||||
@@ -137,11 +138,11 @@ TEST(CanIOManager, Transmission)
|
||||
/*
|
||||
* Simple transmission
|
||||
*/
|
||||
EXPECT_EQ(2, iomgr.send(frames[0], tsMono(100), tsMono(0), ALL_IFACES_MASK, CanTxQueue::Volatile, flags));// To both
|
||||
EXPECT_EQ(2, iomgr.send(frames[0], tsMono(100), tsMono(0), ALL_IFACES_MASK, CanTxQueue::Volatile, flags));
|
||||
EXPECT_TRUE(driver.ifaces.at(0).matchAndPopTx(frames[0], 100));
|
||||
EXPECT_TRUE(driver.ifaces.at(1).matchAndPopTx(frames[0], 100));
|
||||
|
||||
EXPECT_EQ(1, iomgr.send(frames[1], tsMono(200), tsMono(100), 2, CanTxQueue::Persistent, flags)); // To #1
|
||||
EXPECT_EQ(1, iomgr.send(frames[1], tsMono(200), tsMono(100), 2, CanTxQueue::Persistent, flags)); // To #1 only
|
||||
EXPECT_TRUE(driver.ifaces.at(1).matchAndPopTx(frames[1], 200));
|
||||
|
||||
EXPECT_EQ(0, clockmock.monotonic);
|
||||
@@ -186,7 +187,8 @@ TEST(CanIOManager, Transmission)
|
||||
// Sending to #1, both writeable
|
||||
driver.ifaces.at(0).writeable = true;
|
||||
driver.ifaces.at(1).writeable = true;
|
||||
EXPECT_LT(0, iomgr.send(frames[0], tsMono(999), tsMono(500), 2, CanTxQueue::Persistent, flags)); // One frame per each iface will be sent
|
||||
// One frame per each iface will be sent:
|
||||
EXPECT_LT(0, iomgr.send(frames[0], tsMono(999), tsMono(500), 2, CanTxQueue::Persistent, flags));
|
||||
EXPECT_TRUE(driver.ifaces.at(0).matchAndPopTx(frames[1], 777)); // Note that frame[0] on iface #0 has expired
|
||||
EXPECT_TRUE(driver.ifaces.at(1).matchAndPopTx(frames[0], 999)); // In different order due to prioritization
|
||||
EXPECT_TRUE(driver.ifaces.at(0).tx.empty());
|
||||
@@ -215,7 +217,8 @@ TEST(CanIOManager, Transmission)
|
||||
// Sending 5 frames, one will be rejected
|
||||
EXPECT_EQ(0, iomgr.send(frames[2], tsMono(2222), tsMono(1000), ALL_IFACES_MASK, CanTxQueue::Persistent, flags));
|
||||
EXPECT_EQ(0, iomgr.send(frames[0], tsMono(3333), tsMono(1100), 2, CanTxQueue::Persistent, flags));
|
||||
EXPECT_EQ(0, iomgr.send(frames[1], tsMono(4444), tsMono(1200), ALL_IFACES_MASK, CanTxQueue::Volatile, flags)); // One frame kicked here
|
||||
// One frame kicked here:
|
||||
EXPECT_EQ(0, iomgr.send(frames[1], tsMono(4444), tsMono(1200), ALL_IFACES_MASK, CanTxQueue::Volatile, flags));
|
||||
|
||||
// State checks
|
||||
EXPECT_EQ(4, pool.getNumUsedBlocks()); // TX queue is full
|
||||
@@ -271,7 +274,8 @@ TEST(CanIOManager, Transmission)
|
||||
driver.ifaces.at(1).writeable = true;
|
||||
driver.ifaces.at(0).tx_failure = true;
|
||||
driver.ifaces.at(1).tx_failure = true;
|
||||
EXPECT_GE(0, iomgr.send(frames[0], tsMono(2200), tsMono(0), ALL_IFACES_MASK, CanTxQueue::Persistent, flags)); // Non-blocking - return < 0
|
||||
// Non-blocking - return < 0
|
||||
EXPECT_GE(0, iomgr.send(frames[0], tsMono(2200), tsMono(0), ALL_IFACES_MASK, CanTxQueue::Persistent, flags));
|
||||
|
||||
ASSERT_EQ(2, pool.getNumUsedBlocks()); // Untransmitted frames will be buffered
|
||||
|
||||
|
||||
@@ -25,7 +25,9 @@ static bool isInQueue(uavcan::CanTxQueue& queue, const uavcan::CanFrame& frame)
|
||||
while (p)
|
||||
{
|
||||
if (frame == p->frame)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
p = p->getNextListNode();
|
||||
}
|
||||
return false;
|
||||
|
||||
@@ -6,14 +6,14 @@
|
||||
#include <uavcan/transport/crc.hpp>
|
||||
|
||||
/*
|
||||
import crcmod
|
||||
crc = crcmod.predefined.Crc('crc-ccitt-false')
|
||||
crc.update('123')
|
||||
crc.hexdigest()
|
||||
'5BCE'
|
||||
crc.update('456789')
|
||||
crc.hexdigest()
|
||||
'29B1'
|
||||
import crcmod
|
||||
crc = crcmod.predefined.Crc('crc-ccitt-false')
|
||||
crc.update('123')
|
||||
crc.hexdigest()
|
||||
'5BCE'
|
||||
crc.update('456789')
|
||||
crc.hexdigest()
|
||||
'29B1'
|
||||
*/
|
||||
|
||||
TEST(TransferCRC, Correctness)
|
||||
|
||||
@@ -15,8 +15,8 @@ class DispatcherTransferEmulator : public IncomingTransferEmulatorBase
|
||||
|
||||
public:
|
||||
DispatcherTransferEmulator(CanDriverMock& target, uavcan::NodeID dst_node_id = 127)
|
||||
: IncomingTransferEmulatorBase(dst_node_id)
|
||||
, target_(target)
|
||||
: IncomingTransferEmulatorBase(dst_node_id)
|
||||
, target_(target)
|
||||
{ }
|
||||
|
||||
void sendOneFrame(const uavcan::RxFrame& frame)
|
||||
@@ -24,7 +24,9 @@ public:
|
||||
CanIfaceMock* const iface = static_cast<CanIfaceMock*>(target_.getIface(frame.getIfaceIndex()));
|
||||
EXPECT_TRUE(iface);
|
||||
if (iface)
|
||||
{
|
||||
iface->pushRx(frame);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
@@ -125,7 +127,9 @@ TEST(Dispatcher, Reception)
|
||||
ASSERT_TRUE(dispatcher.registerServiceResponseListener(subscribers[5].get()));
|
||||
|
||||
for (int i = 0; i < NUM_SUBSCRIBERS; i++)
|
||||
{
|
||||
ASSERT_FALSE(dispatcher.hasPublisher(subscribers[i]->getDataTypeDescriptor().getID()));
|
||||
}
|
||||
|
||||
// Subscribers
|
||||
ASSERT_TRUE(dispatcher.hasSubscriber(subscribers[0]->getDataTypeDescriptor().getID()));
|
||||
@@ -147,7 +151,9 @@ TEST(Dispatcher, Reception)
|
||||
ASSERT_EQ(2, dispatcher.getNumServiceResponseListeners());
|
||||
|
||||
for (int i = 0; i < NUM_SUBSCRIBERS; i++)
|
||||
{
|
||||
ASSERT_TRUE(subscribers[i]->isEmpty());
|
||||
}
|
||||
|
||||
emulator.send(transfers);
|
||||
emulator.send(transfers); // Just for fun, they will be ignored anyway.
|
||||
@@ -158,7 +164,9 @@ TEST(Dispatcher, Reception)
|
||||
ASSERT_LE(0, res);
|
||||
clockmock.advance(100);
|
||||
if (res == 0)
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -187,7 +195,9 @@ TEST(Dispatcher, Reception)
|
||||
ASSERT_TRUE(subscribers[5]->matchAndPop(transfers[3]));
|
||||
|
||||
for (int i = 0; i < NUM_SUBSCRIBERS; i++)
|
||||
{
|
||||
ASSERT_TRUE(subscribers[i]->isEmpty());
|
||||
}
|
||||
|
||||
/*
|
||||
* Unregistering all transfers
|
||||
@@ -284,8 +294,8 @@ struct DispatcherTestLoopbackFrameListener : public uavcan::LoopbackFrameListene
|
||||
unsigned int count;
|
||||
|
||||
DispatcherTestLoopbackFrameListener(uavcan::Dispatcher& dispatcher)
|
||||
: uavcan::LoopbackFrameListenerBase(dispatcher)
|
||||
, count(0)
|
||||
: uavcan::LoopbackFrameListenerBase(dispatcher)
|
||||
, count(0)
|
||||
{ }
|
||||
|
||||
using uavcan::LoopbackFrameListenerBase::startListening;
|
||||
|
||||
@@ -84,7 +84,9 @@ TEST(Frame, FrameParsing)
|
||||
ASSERT_FALSE(frame.parse(can));
|
||||
|
||||
for (unsigned int i = 0; i < sizeof(CanFrame::data); i++)
|
||||
{
|
||||
can.data[i] = i | (i << 4);
|
||||
}
|
||||
|
||||
// CAN ID field order: Transfer ID, Last Frame, Frame Index, Source Node ID, Transfer Type, Data Type ID
|
||||
|
||||
@@ -92,7 +94,7 @@ TEST(Frame, FrameParsing)
|
||||
* SFT broadcast
|
||||
*/
|
||||
can.id = CanFrame::FlagEFF |
|
||||
(2 << 0) | (1 << 3) | (0 << 4) | (42 << 10) | (uavcan::TransferTypeMessageBroadcast << 17) | (456 << 19);
|
||||
(2 << 0) | (1 << 3) | (0 << 4) | (42 << 10) | (uavcan::TransferTypeMessageBroadcast << 17) | (456 << 19);
|
||||
|
||||
ASSERT_TRUE(frame.parse(can));
|
||||
ASSERT_TRUE(frame.isFirst());
|
||||
@@ -109,7 +111,7 @@ TEST(Frame, FrameParsing)
|
||||
* SFT addressed
|
||||
*/
|
||||
can.id = CanFrame::FlagEFF |
|
||||
(2 << 0) | (1 << 3) | (0 << 4) | (42 << 10) | (uavcan::TransferTypeMessageUnicast << 17) | (456 << 19);
|
||||
(2 << 0) | (1 << 3) | (0 << 4) | (42 << 10) | (uavcan::TransferTypeMessageUnicast << 17) | (456 << 19);
|
||||
|
||||
ASSERT_FALSE(frame.parse(can)); // No payload - failure
|
||||
|
||||
@@ -134,8 +136,8 @@ TEST(Frame, FrameParsing)
|
||||
* MFT invalid - unterminated transfer
|
||||
*/
|
||||
can.id = CanFrame::FlagEFF |
|
||||
(2 << 0) | (0 << 3) | (Frame::MaxIndex << 4) | (42 << 10) |
|
||||
(uavcan::TransferTypeMessageUnicast << 17) | (456 << 19);
|
||||
(2 << 0) | (0 << 3) | (Frame::MaxIndex << 4) | (42 << 10) |
|
||||
(uavcan::TransferTypeMessageUnicast << 17) | (456 << 19);
|
||||
|
||||
ASSERT_FALSE(frame.parse(can));
|
||||
|
||||
@@ -143,7 +145,7 @@ TEST(Frame, FrameParsing)
|
||||
* MFT invalid - invalid frame index
|
||||
*/
|
||||
can.id = CanFrame::FlagEFF |
|
||||
(2 << 0) | (0 << 3) | (63 << 4) | (42 << 10) | (uavcan::TransferTypeMessageUnicast << 17) | (456 << 19);
|
||||
(2 << 0) | (0 << 3) | (63 << 4) | (42 << 10) | (uavcan::TransferTypeMessageUnicast << 17) | (456 << 19);
|
||||
|
||||
ASSERT_FALSE(frame.parse(can));
|
||||
|
||||
@@ -151,7 +153,7 @@ TEST(Frame, FrameParsing)
|
||||
* Malformed frames
|
||||
*/
|
||||
can.id = CanFrame::FlagEFF |
|
||||
(2 << 0) | (1 << 3) | (0 << 4) | (42 << 10) | (uavcan::TransferTypeMessageUnicast << 17) | (456 << 19);
|
||||
(2 << 0) | (1 << 3) | (0 << 4) | (42 << 10) | (uavcan::TransferTypeMessageUnicast << 17) | (456 << 19);
|
||||
can.dlc = 3;
|
||||
can.data[0] = 42;
|
||||
ASSERT_FALSE(frame.parse(can)); // Src == Dst Node ID
|
||||
@@ -159,7 +161,7 @@ TEST(Frame, FrameParsing)
|
||||
ASSERT_TRUE(frame.parse(can));
|
||||
|
||||
can.id = CanFrame::FlagEFF | // cppcheck-suppress duplicateExpression
|
||||
(2 << 0) | (1 << 3) | (0 << 4) | (0 << 10) | (uavcan::TransferTypeMessageUnicast << 17) | (456 << 19);
|
||||
(2 << 0) | (1 << 3) | (0 << 4) | (0 << 10) | (uavcan::TransferTypeMessageUnicast << 17) | (456 << 19);
|
||||
ASSERT_FALSE(frame.parse(can)); // Broadcast Src Node ID
|
||||
}
|
||||
|
||||
@@ -213,7 +215,8 @@ TEST(Frame, FrameToString)
|
||||
|
||||
// RX frame default
|
||||
RxFrame rx_frame;
|
||||
EXPECT_EQ("dtid=65535 tt=4 snid=255 dnid=255 idx=0 last=0 tid=0 payload=[] ts_m=0.000000 ts_utc=0.000000 iface=0", rx_frame.toString());
|
||||
EXPECT_EQ("dtid=65535 tt=4 snid=255 dnid=255 idx=0 last=0 tid=0 payload=[] ts_m=0.000000 ts_utc=0.000000 iface=0",
|
||||
rx_frame.toString());
|
||||
|
||||
// RX frame max len
|
||||
rx_frame = RxFrame(Frame(uavcan::DataTypeID::Max, uavcan::TransferTypeMessageUnicast,
|
||||
@@ -223,12 +226,14 @@ TEST(Frame, FrameToString)
|
||||
|
||||
uint8_t data[8];
|
||||
for (unsigned int i = 0; i < sizeof(data); i++)
|
||||
{
|
||||
data[i] = i;
|
||||
}
|
||||
rx_frame.setPayload(data, sizeof(data));
|
||||
|
||||
EXPECT_EQ(
|
||||
"dtid=1023 tt=3 snid=127 dnid=126 idx=62 last=1 tid=7 payload=[00 01 02 03 04 05 06] ts_m=18446744073709.551615 ts_utc=18446744073709.551615 iface=3",
|
||||
rx_frame.toString());
|
||||
EXPECT_EQ("dtid=1023 tt=3 snid=127 dnid=126 idx=62 last=1 tid=7 payload=[00 01 02 03 04 05 06] "
|
||||
"ts_m=18446744073709.551615 ts_utc=18446744073709.551615 iface=3",
|
||||
rx_frame.toString());
|
||||
|
||||
// Plain frame default
|
||||
Frame frame;
|
||||
|
||||
@@ -15,7 +15,9 @@ static uavcan::RxFrame makeFrame()
|
||||
tsMono(123), tsUtc(456), 0);
|
||||
uint8_t data[8];
|
||||
for (unsigned int i = 0; i < sizeof(data); i++)
|
||||
{
|
||||
data[i] = i;
|
||||
}
|
||||
frame.setPayload(data, sizeof(data));
|
||||
return frame;
|
||||
}
|
||||
@@ -105,4 +107,3 @@ TEST(MultiFrameIncomingTransfer, Basic)
|
||||
it.release();
|
||||
ASSERT_FALSE(bufmgr.access(bufmgr_key));
|
||||
}
|
||||
|
||||
|
||||
@@ -26,7 +26,9 @@ template <typename T>
|
||||
static void fill(const T a, int value)
|
||||
{
|
||||
for (unsigned int i = 0; i < sizeof(a) / sizeof(a[0]); i++)
|
||||
{
|
||||
a[i] = value;
|
||||
}
|
||||
}
|
||||
|
||||
static bool matchAgainst(const std::string& data, const uavcan::ITransferBuffer& tbb,
|
||||
@@ -58,12 +60,8 @@ static bool matchAgainst(const std::string& data, const uavcan::ITransferBuffer&
|
||||
const bool equals = std::equal(local_buffer, local_buffer + len, data.begin() + offset);
|
||||
if (!equals)
|
||||
{
|
||||
std::cout
|
||||
<< "local_buffer:\n\t" << local_buffer
|
||||
<< std::endl;
|
||||
std::cout
|
||||
<< "test_data:\n\t" << std::string(data.begin() + offset, data.begin() + offset + len)
|
||||
<< std::endl;
|
||||
std::cout << "local_buffer:\n\t" << local_buffer << std::endl;
|
||||
std::cout << "test_data:\n\t" << std::string(data.begin() + offset, data.begin() + offset + len) << std::endl;
|
||||
}
|
||||
return equals;
|
||||
}
|
||||
|
||||
@@ -14,10 +14,10 @@ class TransferListenerEmulator : public IncomingTransferEmulatorBase
|
||||
|
||||
public:
|
||||
TransferListenerEmulator(uavcan::TransferListenerBase& target, const uavcan::DataTypeDescriptor& type,
|
||||
uavcan::NodeID dst_node_id = 127)
|
||||
: IncomingTransferEmulatorBase(dst_node_id)
|
||||
, target_(target)
|
||||
, data_type_(type)
|
||||
uavcan::NodeID dst_node_id = 127)
|
||||
: IncomingTransferEmulatorBase(dst_node_id)
|
||||
, target_(target)
|
||||
, data_type_(type)
|
||||
{ }
|
||||
|
||||
void sendOneFrame(const uavcan::RxFrame& frame) { target_.handleFrame(frame); }
|
||||
@@ -105,8 +105,8 @@ TEST(TransferListener, CrcFailure)
|
||||
ASSERT_TRUE(ser_sft.size() == 1);
|
||||
|
||||
// Fuck my brain.
|
||||
const_cast<uint8_t*>(ser_mft[1].getPayloadPtr())[1] = ~ser_mft[1].getPayloadPtr()[1];// CRC is no longer valid
|
||||
const_cast<uint8_t*>(ser_sft[0].getPayloadPtr())[2] = ~ser_sft[0].getPayloadPtr()[2];// no CRC - will be undetected
|
||||
const_cast<uint8_t*>(ser_mft[1].getPayloadPtr())[1] = ~ser_mft[1].getPayloadPtr()[1]; // CRC is no longer valid
|
||||
const_cast<uint8_t*>(ser_sft[0].getPayloadPtr())[2] = ~ser_sft[0].getPayloadPtr()[2]; // no CRC - will be undetected
|
||||
|
||||
/*
|
||||
* Sending and making sure that MFT was not received, but SFT was.
|
||||
@@ -144,7 +144,7 @@ TEST(TransferListener, BasicSFT)
|
||||
emulator.makeTransfer(uavcan::TransferTypeServiceResponse, 4, ""),
|
||||
emulator.makeTransfer(uavcan::TransferTypeServiceResponse, 2, ""), // New TT, ignored due to OOM
|
||||
emulator.makeTransfer(uavcan::TransferTypeMessageUnicast, 2, "foo"), // Same as 2, not ignored
|
||||
emulator.makeTransfer(uavcan::TransferTypeMessageUnicast, 2, "123456789abc"),// Same as 2, not SFT - ignore
|
||||
emulator.makeTransfer(uavcan::TransferTypeMessageUnicast, 2, "123456789abc"), // Same as 2, not SFT - ignore
|
||||
emulator.makeTransfer(uavcan::TransferTypeMessageUnicast, 2, "bar"), // Same as 2, not ignored
|
||||
};
|
||||
|
||||
|
||||
@@ -21,8 +21,8 @@ struct RxFrameGenerator
|
||||
uavcan::TransferBufferManagerKey bufmgr_key;
|
||||
|
||||
RxFrameGenerator(uint16_t data_type_id, const uavcan::TransferBufferManagerKey& bufmgr_key = DEFAULT_KEY)
|
||||
: data_type_id(data_type_id)
|
||||
, bufmgr_key(bufmgr_key)
|
||||
: data_type_id(data_type_id)
|
||||
, bufmgr_key(bufmgr_key)
|
||||
{ }
|
||||
|
||||
uavcan::RxFrame operator()(int iface_index, const std::string& data, uint8_t frame_index, bool last,
|
||||
@@ -30,7 +30,7 @@ struct RxFrameGenerator
|
||||
{
|
||||
const uavcan::NodeID dst_nid =
|
||||
(bufmgr_key.getTransferType() == uavcan::TransferTypeMessageBroadcast) ?
|
||||
uavcan::NodeID::Broadcast : TARGET_NODE_ID;
|
||||
uavcan::NodeID::Broadcast : TARGET_NODE_ID;
|
||||
|
||||
uavcan::Frame frame(data_type_id, bufmgr_key.getTransferType(), bufmgr_key.getNodeID(),
|
||||
dst_nid, frame_index, transfer_id, last);
|
||||
@@ -53,7 +53,7 @@ struct Context
|
||||
uavcan::TransferBufferManager<BUFSIZE, 1> bufmgr;
|
||||
|
||||
Context()
|
||||
: bufmgr(poolmgr)
|
||||
: bufmgr(poolmgr)
|
||||
{
|
||||
assert(poolmgr.allocate(1) == NULL);
|
||||
}
|
||||
@@ -77,11 +77,13 @@ static bool matchBufferContent(const uavcan::ITransferBuffer* tbb, const std::st
|
||||
}
|
||||
tbb->read(0, data, content.length());
|
||||
if (std::equal(content.begin(), content.end(), data))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
std::cout << "Buffer content mismatch:"
|
||||
<< "\n\tExpected: " << content
|
||||
<< "\n\tActually: " << reinterpret_cast<const char*>(data)
|
||||
<< std::endl;
|
||||
<< "\n\tExpected: " << content
|
||||
<< "\n\tActually: " << reinterpret_cast<const char*>(data)
|
||||
<< std::endl;
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -134,7 +136,7 @@ TEST(TransferReceiver, Basic)
|
||||
CHECK_NOT_COMPLETE(rcv.addFrame(gen(0, "abcdefgh", 1, false, 1, 1200), bk));
|
||||
CHECK_NOT_COMPLETE(rcv.addFrame(gen(0, "45678910", 1, false, 2, 1300), bk)); // Next TID, but FI > 0
|
||||
CHECK_NOT_COMPLETE(rcv.addFrame(gen(1, "", 2, true, 1, 1300), bk)); // Wrong iface
|
||||
CHECK_NOT_COMPLETE(rcv.addFrame(gen(0, "", 31,true, 1, 1300), bk)); // Unexpected FI
|
||||
CHECK_NOT_COMPLETE(rcv.addFrame(gen(0, "", 31, true, 1, 1300), bk)); // Unexpected FI
|
||||
CHECK_COMPLETE( rcv.addFrame(gen(0, "", 2, true, 1, 1300), bk));
|
||||
|
||||
ASSERT_TRUE(matchBufferContent(bufmgr.access(gen.bufmgr_key), "345678abcdefgh"));
|
||||
@@ -176,21 +178,21 @@ TEST(TransferReceiver, Basic)
|
||||
CHECK_SINGLE_FRAME(rcv.addFrame(gen(1, "qwe", 0, true, 6, 600000), bk)); // Accepted due to iface timeout
|
||||
ASSERT_EQ(600000, rcv.getLastTransferTimestampMonotonic().toUSec());
|
||||
|
||||
CHECK_NOT_COMPLETE(rcv.addFrame(gen(0, "qwe", 0, true, 7, 600100), bk));// Ignored - old iface 0
|
||||
CHECK_NOT_COMPLETE(rcv.addFrame(gen(0, "qwe", 0, true, 7, 600100), bk)); // Ignored - old iface 0
|
||||
CHECK_SINGLE_FRAME(rcv.addFrame(gen(1, "qwe", 0, true, 7, 600100), bk));
|
||||
ASSERT_EQ(600100, rcv.getLastTransferTimestampMonotonic().toUSec());
|
||||
|
||||
CHECK_NOT_COMPLETE(rcv.addFrame(gen(1, "qwe", 0, true, 7, 600100), bk)); // Old TID
|
||||
CHECK_SINGLE_FRAME(rcv.addFrame(gen(0, "qwe", 0, true, 7, 100000000), bk));// Accepted - global timeout
|
||||
CHECK_SINGLE_FRAME(rcv.addFrame(gen(0, "qwe", 0, true, 7, 100000000), bk)); // Accepted - global timeout
|
||||
ASSERT_EQ(100000000, rcv.getLastTransferTimestampMonotonic().toUSec());
|
||||
|
||||
CHECK_SINGLE_FRAME(rcv.addFrame(gen(0, "qwe", 0, true, 0, 100000100), bk));
|
||||
ASSERT_EQ(100000100, rcv.getLastTransferTimestampMonotonic().toUSec());
|
||||
|
||||
ASSERT_TRUE(rcv.isTimedOut(tsMono(900000000)));
|
||||
CHECK_NOT_COMPLETE(rcv.addFrame(gen(1, "\x78\x56" "345678", 0, false, 0, 900000000), bk));// Global timeout
|
||||
CHECK_NOT_COMPLETE(rcv.addFrame(gen(0, "12345678", 0, false, 0, 900000100), bk));// Wrong iface
|
||||
CHECK_NOT_COMPLETE(rcv.addFrame(gen(0, "qwe", 1, true, 0, 900000200), bk));// Wrong iface
|
||||
CHECK_NOT_COMPLETE(rcv.addFrame(gen(1, "\x78\x56" "345678", 0, false, 0, 900000000), bk)); // Global timeout
|
||||
CHECK_NOT_COMPLETE(rcv.addFrame(gen(0, "12345678", 0, false, 0, 900000100), bk)); // Wrong iface
|
||||
CHECK_NOT_COMPLETE(rcv.addFrame(gen(0, "qwe", 1, true, 0, 900000200), bk)); // Wrong iface
|
||||
CHECK_COMPLETE( rcv.addFrame(gen(1, "qwe", 1, true, 0, 900000200), bk));
|
||||
ASSERT_EQ(900000000, rcv.getLastTransferTimestampMonotonic().toUSec());
|
||||
ASSERT_FALSE(rcv.isTimedOut(tsMono(1000)));
|
||||
@@ -330,15 +332,15 @@ TEST(TransferReceiver, Restart)
|
||||
* This transfer looks complete, but must be ignored because of large delay after the first frame
|
||||
*/
|
||||
CHECK_NOT_COMPLETE(rcv.addFrame(gen(0, "--------", 0, false, 0, 100), bk)); // Begin
|
||||
CHECK_NOT_COMPLETE(rcv.addFrame(gen(0, "--------", 1, false, 0, 10000100), bk));// Continue 10 sec later, expired
|
||||
CHECK_NOT_COMPLETE(rcv.addFrame(gen(0, "--------", 2, true, 0, 10000200), bk));// Ignored
|
||||
CHECK_NOT_COMPLETE(rcv.addFrame(gen(0, "--------", 1, false, 0, 10000100), bk)); // Continue 10 sec later, expired
|
||||
CHECK_NOT_COMPLETE(rcv.addFrame(gen(0, "--------", 2, true, 0, 10000200), bk)); // Ignored
|
||||
|
||||
/*
|
||||
* Begins immediately after, gets an iface timeout but completes OK
|
||||
*/
|
||||
CHECK_NOT_COMPLETE(rcv.addFrame(gen(1, "12345678", 0, false, 0, 10000300), bk));// Begin
|
||||
CHECK_NOT_COMPLETE(rcv.addFrame(gen(1, "12345678", 1, false, 0, 12000300), bk));// 2 sec later, iface timeout
|
||||
CHECK_COMPLETE( rcv.addFrame(gen(1, "12345678", 2, true, 0, 12000400), bk));// OK nevertheless
|
||||
CHECK_NOT_COMPLETE(rcv.addFrame(gen(1, "12345678", 0, false, 0, 10000300), bk)); // Begin
|
||||
CHECK_NOT_COMPLETE(rcv.addFrame(gen(1, "12345678", 1, false, 0, 12000300), bk)); // 2 sec later, iface timeout
|
||||
CHECK_COMPLETE( rcv.addFrame(gen(1, "12345678", 2, true, 0, 12000400), bk)); // OK nevertheless
|
||||
|
||||
ASSERT_TRUE(matchBufferContent(bufmgr.access(gen.bufmgr_key), "3456781234567812345678"));
|
||||
ASSERT_EQ(0x3231, rcv.getLastTransferCrc());
|
||||
@@ -346,14 +348,14 @@ TEST(TransferReceiver, Restart)
|
||||
/*
|
||||
* Begins OK, gets an iface timeout, switches to another iface
|
||||
*/
|
||||
CHECK_NOT_COMPLETE(rcv.addFrame(gen(1, "--------", 0, false, 1, 13000500), bk));// Begin
|
||||
CHECK_NOT_COMPLETE(rcv.addFrame(gen(1, "--------", 1, false, 1, 16000500), bk));// 3 sec later, iface timeout
|
||||
CHECK_NOT_COMPLETE(rcv.addFrame(gen(0, "--------", 1, false, 1, 16000600), bk));// Same TID, another iface - ignore
|
||||
CHECK_NOT_COMPLETE(rcv.addFrame(gen(0, "--------", 1, false, 2, 16000700), bk));// Not first frame - ignore
|
||||
CHECK_NOT_COMPLETE(rcv.addFrame(gen(0, "12345678", 0, false, 2, 16000800), bk));// First, another iface - restart
|
||||
CHECK_NOT_COMPLETE(rcv.addFrame(gen(1, "--------", 2, true, 1, 16000600), bk));// Old iface - ignore
|
||||
CHECK_NOT_COMPLETE(rcv.addFrame(gen(0, "12345678", 1, false, 2, 16000900), bk));// Continuing
|
||||
CHECK_COMPLETE( rcv.addFrame(gen(0, "12345678", 2, true, 2, 16000910), bk));// Done
|
||||
CHECK_NOT_COMPLETE(rcv.addFrame(gen(1, "--------", 0, false, 1, 13000500), bk)); // Begin
|
||||
CHECK_NOT_COMPLETE(rcv.addFrame(gen(1, "--------", 1, false, 1, 16000500), bk)); // 3 sec later, iface timeout
|
||||
CHECK_NOT_COMPLETE(rcv.addFrame(gen(0, "--------", 1, false, 1, 16000600), bk)); // Same TID, another iface - ignore
|
||||
CHECK_NOT_COMPLETE(rcv.addFrame(gen(0, "--------", 1, false, 2, 16000700), bk)); // Not first frame - ignore
|
||||
CHECK_NOT_COMPLETE(rcv.addFrame(gen(0, "12345678", 0, false, 2, 16000800), bk)); // First, another iface - restart
|
||||
CHECK_NOT_COMPLETE(rcv.addFrame(gen(1, "--------", 2, true, 1, 16000600), bk)); // Old iface - ignore
|
||||
CHECK_NOT_COMPLETE(rcv.addFrame(gen(0, "12345678", 1, false, 2, 16000900), bk)); // Continuing
|
||||
CHECK_COMPLETE( rcv.addFrame(gen(0, "12345678", 2, true, 2, 16000910), bk)); // Done
|
||||
|
||||
ASSERT_TRUE(matchBufferContent(bufmgr.access(gen.bufmgr_key), "3456781234567812345678"));
|
||||
ASSERT_EQ(0x3231, rcv.getLastTransferCrc());
|
||||
|
||||
@@ -127,7 +127,9 @@ TEST(TransferSender, Basic)
|
||||
ASSERT_LE(0, res);
|
||||
clockmock.advance(100);
|
||||
if (res == 0)
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -152,8 +154,8 @@ struct TransferSenderTestLoopbackFrameListener : public uavcan::LoopbackFrameLis
|
||||
unsigned int count;
|
||||
|
||||
TransferSenderTestLoopbackFrameListener(uavcan::Dispatcher& dispatcher)
|
||||
: uavcan::LoopbackFrameListenerBase(dispatcher)
|
||||
, count(0)
|
||||
: uavcan::LoopbackFrameListenerBase(dispatcher)
|
||||
, count(0)
|
||||
{
|
||||
startListening();
|
||||
}
|
||||
|
||||
@@ -43,7 +43,9 @@ TEST(TransferTestHelpers, MFTSerialization)
|
||||
|
||||
std::cout << "Serialized transfer:\n";
|
||||
for (std::vector<uavcan::RxFrame>::const_iterator it = ser.begin(); it != ser.end(); ++it)
|
||||
{
|
||||
std::cout << "\t" << it->toString() << "\n";
|
||||
}
|
||||
|
||||
for (std::vector<uavcan::RxFrame>::const_iterator it = ser.begin(); it != ser.end(); ++it)
|
||||
{
|
||||
@@ -52,7 +54,9 @@ TEST(TransferTestHelpers, MFTSerialization)
|
||||
{
|
||||
uint8_t ch = it->getPayloadPtr()[i];
|
||||
if (ch < 0x20 || ch > 0x7E)
|
||||
{
|
||||
ch = '.';
|
||||
}
|
||||
std::cout << static_cast<char>(ch);
|
||||
}
|
||||
std::cout << "'\n";
|
||||
|
||||
@@ -410,7 +410,7 @@ sp_before_squares = ignore # ignore/add/remove/force
|
||||
sp_inside_square = ignore # ignore/add/remove/force
|
||||
|
||||
# Add or remove space after ','
|
||||
sp_after_comma = ignore # ignore/add/remove/force
|
||||
sp_after_comma = add # ignore/add/remove/force
|
||||
|
||||
# Add or remove space before ','
|
||||
sp_before_comma = ignore # ignore/add/remove/force
|
||||
|
||||
@@ -3,5 +3,6 @@
|
||||
#files="$files $(find include -name '*.hpp')"
|
||||
#files="$files $(find src -name '*.cpp')"
|
||||
#files="$files $(find test -name '*.cpp')"
|
||||
#files="$files $(find test -name '*.hpp')"
|
||||
|
||||
uncrustify --replace --no-backup -c uncrustify.cfg $files
|
||||
|
||||
Reference in New Issue
Block a user