From 7fbfa9da9056a568dc3a8a8b269472e0a5bc2efa Mon Sep 17 00:00:00 2001 From: Dimitrios Stoupis <dimitris.apple@gmail.com> Date: Thu, 21 Mar 2019 00:33:29 +0000 Subject: [PATCH] Implement a message comparison function --- inc/Message.hpp | 20 +++++++++++++++----- test/Services/TimeBasedSchedulingService.cpp | 20 ++++++++++---------- 2 files changed, 25 insertions(+), 15 deletions(-) diff --git a/inc/Message.hpp b/inc/Message.hpp index 8bb3017d..8e5f1d25 100644 --- a/inc/Message.hpp +++ b/inc/Message.hpp @@ -23,11 +23,21 @@ class Message { public: Message() = default; - // todo: Decide on the final format of this comparison operator - // Define the message comparison operator - bool operator==(const Message &msg) const { - return (this->packetType == msg.packetType) && - (this->messageType == msg.messageType) && (this->serviceType == msg.serviceType); + /** + * @brief Compare two messages + * @details Check whether two Message objects are of the same type + * @param msg1 First message for comparison + * @param msg2 Second message for comparison + * @return A boolean value indicating whether the messages are of the same type + */ + static bool isSameType(const Message &msg1, const Message &msg2) { + for (uint16_t i = 0; i < ECSS_MAX_MESSAGE_SIZE; i++) { + if (msg1.data[i] != msg2.data[i]) { + return false; + } + } + return (msg1.packetType == msg2.packetType) && + (msg1.messageType == msg2.messageType) && (msg1.serviceType == msg2.serviceType); } enum PacketType { diff --git a/test/Services/TimeBasedSchedulingService.cpp b/test/Services/TimeBasedSchedulingService.cpp index 81b4193c..5f8a2eda 100644 --- a/test/Services/TimeBasedSchedulingService.cpp +++ b/test/Services/TimeBasedSchedulingService.cpp @@ -111,10 +111,10 @@ TEST_CASE("TC[11,4] Activity Insertion", "[service][st11]") { REQUIRE(scheduledActivities.at(1)->requestReleaseTime == currentTime + 1726435); REQUIRE(scheduledActivities.at(2)->requestReleaseTime == currentTime + 1957232); REQUIRE(scheduledActivities.at(3)->requestReleaseTime == currentTime + 17248435); - REQUIRE(scheduledActivities.at(0)->request == testMessage1); - REQUIRE(scheduledActivities.at(1)->request == testMessage3); - REQUIRE(scheduledActivities.at(2)->request == testMessage2); - REQUIRE(scheduledActivities.at(3)->request == testMessage4); + REQUIRE(Message::isSameType(scheduledActivities.at(0)->request, testMessage1)); + REQUIRE(Message::isSameType(scheduledActivities.at(1)->request, testMessage3)); + REQUIRE(Message::isSameType(scheduledActivities.at(2)->request, testMessage2)); + REQUIRE(Message::isSameType(scheduledActivities.at(3)->request, testMessage4)); } TEST_CASE("TC[11,15] Time shift all scheduled activities (Positive shift)", "[service][st11]") { @@ -172,7 +172,7 @@ TEST_CASE("TC[11,7] Time shift activities by ID (Positive Shift)", "[service][st timeService.timeShiftActivitiesByID(receivedMessage); REQUIRE(scheduledActivities.at(2)->requestReleaseTime == currentTime + 1957232 + timeShift); - REQUIRE(scheduledActivities.at(2)->request == testMessage2); + REQUIRE(Message::isSameType(scheduledActivities.at(2)->request, testMessage2)); } TEST_CASE("TC[11,7] Time shift activities by ID (Negative Shift)", "[service][st11]") { @@ -195,7 +195,7 @@ TEST_CASE("TC[11,7] Time shift activities by ID (Negative Shift)", "[service][st timeService.timeShiftActivitiesByID(receivedMessage); REQUIRE(scheduledActivities.at(2)->requestReleaseTime == currentTime + 1957232 - timeShift); - REQUIRE(scheduledActivities.at(2)->request == testMessage2); + REQUIRE(Message::isSameType(scheduledActivities.at(2)->request, testMessage2)); } @@ -236,10 +236,10 @@ TEST_CASE("TC[11,9] Detail report scheduled activities by ID", "[service][st11]" if (i == 0) { REQUIRE(receivedReleaseTime == scheduledActivities.at(0)->requestReleaseTime); - REQUIRE(receivedTCPacket == scheduledActivities.at(0)->request); + REQUIRE(Message::isSameType(scheduledActivities.at(0)->request, testMessage1)); } else { REQUIRE(receivedReleaseTime == scheduledActivities.at(2)->requestReleaseTime); - REQUIRE(receivedTCPacket == scheduledActivities.at(2)->request); + REQUIRE(Message::isSameType(scheduledActivities.at(2)->request, testMessage2)); } } } @@ -315,7 +315,7 @@ TEST_CASE("TC[11,16] Detail report all scheduled activities", "[service][st11]") receivedTCPacket = msgParser.parseRequestTC(receivedDataStr); REQUIRE(receivedReleaseTime == scheduledActivities.at(i)->requestReleaseTime); - REQUIRE(receivedTCPacket == scheduledActivities.at(i)->request); + REQUIRE(Message::isSameType(scheduledActivities.at(i)->request, receivedTCPacket)); } } @@ -339,7 +339,7 @@ TEST_CASE("TC[11,5] Activity deletion by ID", "[service][st11]") { REQUIRE(scheduledActivities.size() == 3); REQUIRE(scheduledActivities.at(2)->requestReleaseTime == currentTime + 17248435); - REQUIRE(scheduledActivities.at(2)->request == testMessage4); + REQUIRE(Message::isSameType(scheduledActivities.at(2)->request, testMessage4)); } TEST_CASE("TC[11,3] Reset schedule", "[service][st11]") { -- GitLab