mirror of
https://github.com/mudita/MuditaOS.git
synced 2026-01-15 01:23:04 -05:00
111 lines
3.1 KiB
C++
111 lines
3.1 KiB
C++
// Copyright (c) 2017-2024, Mudita Sp. z.o.o. All rights reserved.
|
|
// For licensing, see https://github.com/mudita/MuditaOS/blob/master/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());
|
|
}
|