From 980659ebb51ce1dbd058b9daad5bf0951c9058c8 Mon Sep 17 00:00:00 2001 From: Pavel Kirienko Date: Tue, 18 Feb 2014 12:00:45 +0400 Subject: [PATCH] Minor test refactoring --- .../test/transport/transfer_listener.cpp | 24 +++++++------- .../test/transport/transfer_test_helpers.cpp | 20 +++++------ .../test/transport/transfer_test_helpers.hpp | 33 +++++++++++-------- 3 files changed, 40 insertions(+), 37 deletions(-) diff --git a/libuavcan/test/transport/transfer_listener.cpp b/libuavcan/test/transport/transfer_listener.cpp index 0d4e117b7d..ac0ff23743 100644 --- a/libuavcan/test/transport/transfer_listener.cpp +++ b/libuavcan/test/transport/transfer_listener.cpp @@ -12,21 +12,23 @@ class Emulator const uavcan::DataTypeDescriptor type_; uint64_t ts_; uavcan::TransferID tid_; - uavcan::NodeID target_node_id_; + uavcan::NodeID dst_node_id_; public: Emulator(uavcan::TransferListenerBase& target, const uavcan::DataTypeDescriptor& type, - uavcan::NodeID target_node_id = 127) + uavcan::NodeID dst_node_id = 127) : target_(target) , type_(type) , ts_(0) - , target_node_id_(target_node_id) + , dst_node_id_(dst_node_id) { } Transfer makeTransfer(uavcan::TransferType transfer_type, uint8_t source_node_id, const std::string& payload) { ts_ += 100; - const Transfer tr(ts_, ts_ + 1000000000ul, transfer_type, tid_, source_node_id, payload); + const uavcan::NodeID dst_node_id = (transfer_type == uavcan::TRANSFER_TYPE_MESSAGE_BROADCAST) + ? uavcan::NodeID::BROADCAST : dst_node_id_; + const Transfer tr(ts_, ts_ + 1000000000ul, transfer_type, tid_, source_node_id, dst_node_id, payload); tid_.increment(); return tr; } @@ -56,11 +58,7 @@ public: { std::vector > sers; while (num_transfers--) - { - const uavcan::NodeID dnid = (transfers->transfer_type == uavcan::TRANSFER_TYPE_MESSAGE_BROADCAST) - ? uavcan::NodeID::BROADCAST : target_node_id_; - sers.push_back(serializeTransfer(*transfers++, dnid, type_)); - } + sers.push_back(serializeTransfer(*transfers++, type_)); send(sers); } @@ -145,8 +143,8 @@ TEST(TransferListener, CrcFailure) const Transfer tr_mft = emulator.makeTransfer(uavcan::TRANSFER_TYPE_MESSAGE_BROADCAST, 42, "123456789abcdefghik"); const Transfer tr_sft = emulator.makeTransfer(uavcan::TRANSFER_TYPE_MESSAGE_UNICAST, 11, "abcd"); - std::vector ser_mft = serializeTransfer(tr_mft, 0, type); - std::vector ser_sft = serializeTransfer(tr_sft, 9, type); + std::vector ser_mft = serializeTransfer(tr_mft, type); + std::vector ser_sft = serializeTransfer(tr_sft, type); ASSERT_TRUE(ser_mft.size() > 1); ASSERT_TRUE(ser_sft.size() == 1); @@ -227,8 +225,8 @@ TEST(TransferListener, Cleanup) const Transfer tr_mft = emulator.makeTransfer(uavcan::TRANSFER_TYPE_MESSAGE_BROADCAST, 42, "123456789abcdefghik"); const Transfer tr_sft = emulator.makeTransfer(uavcan::TRANSFER_TYPE_MESSAGE_UNICAST, 11, "abcd"); - const std::vector ser_mft = serializeTransfer(tr_mft, 0, type); - const std::vector ser_sft = serializeTransfer(tr_sft, 9, type); + const std::vector ser_mft = serializeTransfer(tr_mft, type); + const std::vector ser_sft = serializeTransfer(tr_sft, type); ASSERT_TRUE(ser_mft.size() > 1); ASSERT_TRUE(ser_sft.size() == 1); diff --git a/libuavcan/test/transport/transfer_test_helpers.cpp b/libuavcan/test/transport/transfer_test_helpers.cpp index 85149be0fa..c75e0f5be0 100644 --- a/libuavcan/test/transport/transfer_test_helpers.cpp +++ b/libuavcan/test/transport/transfer_test_helpers.cpp @@ -37,9 +37,9 @@ TEST(TransferTestHelpers, MFTSerialization) type.hash.value[i] = i; static const std::string DATA = "To go wrong in one's own way is better than to go right in someone else's."; - const Transfer transfer(1, 100000, uavcan::TRANSFER_TYPE_MESSAGE_UNICAST, 2, 42, DATA); + const Transfer transfer(1, 100000, uavcan::TRANSFER_TYPE_MESSAGE_UNICAST, 2, 42, 127, DATA); - const std::vector ser = serializeTransfer(transfer, 127, type); + const std::vector ser = serializeTransfer(transfer, type); std::cout << "Serialized transfer:\n"; for (std::vector::const_iterator it = ser.begin(); it != ser.end(); ++it) @@ -68,26 +68,26 @@ TEST(TransferTestHelpers, SFTSerialization) type.hash.value[i] = i; { - const Transfer transfer(1, 100000, uavcan::TRANSFER_TYPE_MESSAGE_BROADCAST, 7, 42, "Nvrfrget"); - const std::vector ser = serializeTransfer(transfer, 0, type); + const Transfer transfer(1, 100000, uavcan::TRANSFER_TYPE_MESSAGE_BROADCAST, 7, 42, 0, "Nvrfrget"); + const std::vector ser = serializeTransfer(transfer, type); ASSERT_EQ(1, ser.size()); std::cout << "Serialized transfer:\n\t" << ser[0].toString() << "\n"; } { - const Transfer transfer(1, 100000, uavcan::TRANSFER_TYPE_SERVICE_REQUEST, 7, 42, "7-chars"); - const std::vector ser = serializeTransfer(transfer, 127, type); + const Transfer transfer(1, 100000, uavcan::TRANSFER_TYPE_SERVICE_REQUEST, 7, 42, 127, "7-chars"); + const std::vector ser = serializeTransfer(transfer, type); ASSERT_EQ(1, ser.size()); std::cout << "Serialized transfer:\n\t" << ser[0].toString() << "\n"; } { - const Transfer transfer(1, 100000, uavcan::TRANSFER_TYPE_MESSAGE_BROADCAST, 7, 42, ""); - const std::vector ser = serializeTransfer(transfer, 0, type); + const Transfer transfer(1, 100000, uavcan::TRANSFER_TYPE_MESSAGE_BROADCAST, 7, 42, 0, ""); + const std::vector ser = serializeTransfer(transfer, type); ASSERT_EQ(1, ser.size()); std::cout << "Serialized transfer:\n\t" << ser[0].toString() << "\n"; } { - const Transfer transfer(1, 100000, uavcan::TRANSFER_TYPE_SERVICE_RESPONSE, 7, 42, ""); - const std::vector ser = serializeTransfer(transfer, 127, type); + const Transfer transfer(1, 100000, uavcan::TRANSFER_TYPE_SERVICE_RESPONSE, 7, 42, 127, ""); + const std::vector ser = serializeTransfer(transfer, type); ASSERT_EQ(1, ser.size()); std::cout << "Serialized transfer:\n\t" << ser[0].toString() << "\n"; } diff --git a/libuavcan/test/transport/transfer_test_helpers.hpp b/libuavcan/test/transport/transfer_test_helpers.hpp index ff6df93431..a304f5ff16 100644 --- a/libuavcan/test/transport/transfer_test_helpers.hpp +++ b/libuavcan/test/transport/transfer_test_helpers.hpp @@ -17,7 +17,8 @@ struct Transfer uint64_t ts_utc; uavcan::TransferType transfer_type; uavcan::TransferID transfer_id; - uavcan::NodeID source_node_id; + uavcan::NodeID src_node_id; + uavcan::NodeID dst_node_id; std::string payload; Transfer(const uavcan::IncomingTransfer& tr) @@ -25,7 +26,8 @@ struct Transfer , ts_utc(tr.getUtcTimestamp()) , transfer_type(tr.getTransferType()) , transfer_id(tr.getTransferID()) - , source_node_id(tr.getSrcNodeID()) + , src_node_id(tr.getSrcNodeID()) + , dst_node_id() // default is invalid { unsigned int offset = 0; while (true) @@ -45,24 +47,27 @@ struct Transfer } Transfer(uint64_t ts_monotonic, uint64_t ts_utc, uavcan::TransferType transfer_type, - uavcan::TransferID transfer_id, uavcan::NodeID source_node_id, const std::string& payload) + uavcan::TransferID transfer_id, uavcan::NodeID src_node_id, uavcan::NodeID dst_node_id, + const std::string& payload) : ts_monotonic(ts_monotonic) , ts_utc(ts_utc) , transfer_type(transfer_type) , transfer_id(transfer_id) - , source_node_id(source_node_id) + , src_node_id(src_node_id) + , dst_node_id(dst_node_id) , payload(payload) { } bool operator==(const Transfer& rhs) const { return - (ts_monotonic == rhs.ts_monotonic) && - (ts_utc == rhs.ts_utc) && - (transfer_type == rhs.transfer_type) && - (transfer_id == rhs.transfer_id) && - (source_node_id == rhs.source_node_id) && - (payload == rhs.payload); + (ts_monotonic == rhs.ts_monotonic) && + (ts_utc == rhs.ts_utc) && + (transfer_type == rhs.transfer_type) && + (transfer_id == rhs.transfer_id) && + (src_node_id == rhs.src_node_id) && + (dst_node_id.isValid() ? (dst_node_id == rhs.dst_node_id) : true) && + (payload == rhs.payload); } std::string toString() const @@ -72,7 +77,8 @@ struct Transfer << " ts_utc=" << ts_utc << " tt=" << transfer_type << " tid=" << int(transfer_id.get()) - << " snid=" << int(source_node_id.get()) + << " snid=" << int(src_node_id.get()) + << " dnid=" << int(dst_node_id.get()) << "\n\t'" << payload << "'"; return os.str(); } @@ -131,8 +137,7 @@ public: namespace { -std::vector serializeTransfer(const Transfer& transfer, uavcan::NodeID dst_node_id, - const uavcan::DataTypeDescriptor& type) +std::vector serializeTransfer(const Transfer& transfer, const uavcan::DataTypeDescriptor& type) { bool need_crc = false; switch (transfer.transfer_type) @@ -172,7 +177,7 @@ std::vector serializeTransfer(const Transfer& transfer, uavcan: const int bytes_left = raw_payload.size() - offset; EXPECT_TRUE(bytes_left >= 0); - uavcan::Frame frm(type.id, transfer.transfer_type, transfer.source_node_id, dst_node_id, frame_index, + uavcan::Frame frm(type.id, transfer.transfer_type, transfer.src_node_id, transfer.dst_node_id, frame_index, transfer.transfer_id); const int spres = frm.setPayload(&*(raw_payload.begin() + offset), bytes_left); if (spres < 0)