// Copyright (c) 2017-2022, Mudita Sp. z.o.o. All rights reserved. // For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md #include #include 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()); }