Robin Mueller
a18706ec53
1. Further reduces the amount of code the user needs to copy and paste 2. Makes FSFW tests more accessible. This can be used to simplify moving mission unit tests to the FSFW 3. A lot of include improvements
44 lines
1.4 KiB
C++
44 lines
1.4 KiB
C++
#include "fsfw_tests/unit/CatchDefinitions.h"
|
|
|
|
#include <fsfw/ipc/MessageQueueIF.h>
|
|
#include <fsfw/ipc/QueueFactory.h>
|
|
|
|
#include <catch2/catch_test_macros.hpp>
|
|
|
|
#include <array>
|
|
|
|
TEST_CASE("MessageQueue Basic Test","[TestMq]") {
|
|
MessageQueueIF* testSenderMq =
|
|
QueueFactory::instance()->createMessageQueue(1);
|
|
MessageQueueId_t testSenderMqId = testSenderMq->getId();
|
|
|
|
MessageQueueIF* testReceiverMq =
|
|
QueueFactory::instance()->createMessageQueue(1);
|
|
MessageQueueId_t testReceiverMqId = testReceiverMq->getId();
|
|
std::array<uint8_t, 20> testData { 0 };
|
|
testData[0] = 42;
|
|
MessageQueueMessage testMessage(testData.data(), 1);
|
|
testSenderMq->setDefaultDestination(testReceiverMqId);
|
|
|
|
SECTION("Simple Tests") {
|
|
auto result = testSenderMq->sendMessage(testReceiverMqId, &testMessage);
|
|
REQUIRE(result == retval::CATCH_OK);
|
|
MessageQueueMessage recvMessage;
|
|
result = testReceiverMq->receiveMessage(&recvMessage);
|
|
REQUIRE(result == retval::CATCH_OK);
|
|
CHECK(recvMessage.getData()[0] == 42);
|
|
|
|
result = testSenderMq->sendMessage(testReceiverMqId, &testMessage);
|
|
REQUIRE(result == retval::CATCH_OK);
|
|
MessageQueueId_t senderId = 0;
|
|
result = testReceiverMq->receiveMessage(&recvMessage,&senderId);
|
|
REQUIRE(result == retval::CATCH_OK);
|
|
CHECK(recvMessage.getData()[0] == 42);
|
|
CHECK(senderId == testSenderMqId);
|
|
senderId = testReceiverMq->getLastPartner();
|
|
CHECK(senderId == testSenderMqId);
|
|
}
|
|
|
|
|
|
}
|