Files
MuditaOS/module-sys/Service/tests/test-system_messages.cpp
Adam Dobrowolski 2cf6bd6962 [EGD-8208] Removed unused ping, added simple Async
Removed unused code: ping and stale messages
Detached UnicastSync send and sync part so that we would be able
to await for message in the code.
Added sys::Async to be able to handle situations where we want to
sync to the response, but after some time.
Fixed messages logging: for some reason demangling abi use caused
bad system behaviour
2022-02-22 13:36:27 +01:00

111 lines
3.1 KiB
C++

// Copyright (c) 2017-2022, Mudita Sp. z.o.o. All rights reserved.
// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md
#include <catch2/catch.hpp>
#include <Service/Message.hpp>
class MockedMessageUID : public sys::MessageUID
{
public:
void set(sys::MessageUIDType _value)
{
value = _value;
}
};
TEST_CASE("Test basic messages constructors")
{
auto dataMsg = sys::DataMessage();
auto systemMsg = sys::SystemMessage(sys::SystemMessageType::Start);
auto responseMsg = sys::ResponseMessage();
REQUIRE(dataMsg.type == sys::Message::Type::Data);
REQUIRE(
(systemMsg.type == sys::Message::Type::System && systemMsg.systemMessageType == sys::SystemMessageType::Start));
REQUIRE(responseMsg.type == sys::Message::Type::Response);
}
TEST_CASE("Test message MessageUID provider class")
{
MockedMessageUID uidProvider;
auto uidReceiver = uidProvider.get();
REQUIRE(uidReceiver == 0);
uidReceiver = uidProvider.getNext();
REQUIRE(uidReceiver == 0);
uidReceiver = uidProvider.getNext();
REQUIRE(uidReceiver == 1);
uidProvider.set(sys::invalidMessageUid);
REQUIRE(uidProvider.get() == sys::invalidMessageUid);
uidReceiver = uidProvider.getNext();
REQUIRE(uidReceiver == 0);
uidReceiver = uidProvider.getNext();
REQUIRE(uidReceiver == 1);
}
TEST_CASE("Test message transmission required fields validators - response")
{
MockedMessageUID uidProvider;
auto dataMsg = sys::DataMessage();
REQUIRE_THROWS_AS((dataMsg.ValidateResponseMessage()), std::runtime_error);
dataMsg.id = uidProvider.getNext();
dataMsg.sender = "TestSender";
REQUIRE_NOTHROW(dataMsg.ValidateResponseMessage());
}
TEST_CASE("Test message transmission required fields validators - unicast")
{
MockedMessageUID uidProvider;
auto dataMsg = sys::DataMessage();
REQUIRE_THROWS_AS((dataMsg.ValidateUnicastMessage()), std::runtime_error);
dataMsg.id = uidProvider.getNext();
dataMsg.uniID = 0;
dataMsg.sender = "TestSender";
dataMsg.transType = sys::Message::TransmissionType::Unicast;
REQUIRE_NOTHROW(dataMsg.ValidateUnicastMessage());
}
TEST_CASE("Test message transmission required fields validators - broadcast")
{
MockedMessageUID uidProvider;
auto dataMsg = sys::DataMessage();
REQUIRE_THROWS_AS((dataMsg.ValidateBroadcastMessage()), std::runtime_error);
dataMsg.id = uidProvider.getNext();
dataMsg.sender = "TestSender";
dataMsg.transType = sys::Message::TransmissionType::Broadcast;
REQUIRE_NOTHROW(dataMsg.ValidateBroadcastMessage());
}
TEST_CASE("Test message transmission required fields validators - multicast")
{
MockedMessageUID uidProvider;
auto dataMsg = sys::DataMessage();
REQUIRE_THROWS_AS((dataMsg.ValidateMulticastMessage()), std::runtime_error);
dataMsg.id = uidProvider.getNext();
dataMsg.sender = "TestSender";
dataMsg.transType = sys::Message::TransmissionType::Multicast;
dataMsg.channel = sys::BusChannel::System;
REQUIRE_NOTHROW(dataMsg.ValidateMulticastMessage());
}