Minor changes

This commit is contained in:
John Wellbelove 2022-08-02 11:42:57 +01:00
parent e6a86a6285
commit fda4d704c3
2 changed files with 67 additions and 17 deletions

View File

@ -151,6 +151,7 @@ namespace etl
: imessage_router(id_)
, head()
{
ETL_ASSERT((id_ <= etl::imessage_router::MAX_MESSAGE_ROUTER) || (id_ == etl::imessage_router::MESSAGE_BROKER), ETL_ERROR(etl::message_router_illegal_id));
}
//*******************************************

View File

@ -224,12 +224,35 @@ namespace
int message_unknown_count;
};
SUITE(test_message_router)
//***************************************************************************
template <size_t Size>
class MessageBus : public etl::message_bus<Size>
{
public:
MessageBus()
: message_count(0)
{
}
using etl::message_bus<Size>::receive;
// Hook 'receive' to count the incomimg messages.
void receive(etl::message_router_id_t id, const etl::imessage& msg)
{
++message_count;
etl::message_bus<Size>::receive(id, msg);
}
int message_count;
};
SUITE(test_message_bus)
{
//*************************************************************************
TEST(message_bus_subscribe_unsubscribe)
{
etl::message_bus<2> bus1;
MessageBus<2> bus1;
RouterA router1(0);
RouterB router2(1);
@ -260,14 +283,16 @@ namespace
// Erase router from empty list.
bus1.unsubscribe(router2);
CHECK_EQUAL(0U, bus1.size());
CHECK_EQUAL(0, bus1.message_count);
}
//*************************************************************************
TEST(message_bus_subscribe_unsubscribe_sub_bus)
{
etl::message_bus<4> bus1;
etl::message_bus<2> bus2;
etl::message_bus<3> bus3;
MessageBus<4> bus1;
MessageBus<2> bus2;
MessageBus<3> bus3;
RouterA router1(ROUTER1);
RouterA router2(ROUTER2);
@ -289,12 +314,16 @@ namespace
bus1.unsubscribe(etl::imessage_bus::ALL_MESSAGE_ROUTERS);
CHECK_EQUAL(0U, bus1.size());
CHECK_EQUAL(0, bus1.message_count);
CHECK_EQUAL(0, bus2.message_count);
CHECK_EQUAL(0, bus3.message_count);
}
//*************************************************************************
TEST(message_bus_broadcast)
{
etl::message_bus<2> bus1;
MessageBus<2> bus1;
RouterA router1(ROUTER1);
RouterB router2(ROUTER2);
@ -376,12 +405,14 @@ namespace
CHECK_EQUAL(0, router2.message_unknown_count);
CHECK_EQUAL(7, callback.message5_count);
CHECK_EQUAL(4, bus1.message_count);
}
//*************************************************************************
TEST(message_bus_broadcast_as_router)
{
etl::message_bus<2> bus1;
MessageBus<2> bus1;
RouterA router1(ROUTER1);
RouterB router2(ROUTER2);
@ -466,12 +497,14 @@ namespace
CHECK_EQUAL(0, router2.message_unknown_count);
CHECK_EQUAL(7, callback.message5_count);
CHECK_EQUAL(4, bus1.message_count);
}
//*************************************************************************
TEST(message_bus_addressed)
{
etl::message_bus<2> bus1;
MessageBus<2> bus1;
RouterA router1(ROUTER1);
RouterB router2(ROUTER2);
@ -571,12 +604,14 @@ namespace
CHECK_EQUAL(0, router2.message_unknown_count);
CHECK_EQUAL(4, callback.message5_count);
CHECK_EQUAL(5, bus1.message_count);
}
//*************************************************************************
TEST(message_bus_addressed_duplicate_router_id)
{
etl::message_bus<3> bus1;
MessageBus<3> bus1;
RouterA router1(ROUTER1);
RouterB router2(ROUTER1);
@ -613,13 +648,15 @@ namespace
CHECK_EQUAL(0, router3.message_unknown_count);
CHECK_EQUAL(2, callback.message5_count);
CHECK_EQUAL(1, bus1.message_count);
}
//*************************************************************************
TEST(message_bus_broadcast_addressed_sub_bus)
{
etl::message_bus<3> bus1;
etl::message_bus<2> bus2;
MessageBus<3> bus1;
MessageBus<2> bus2;
RouterA router1(ROUTER1);
RouterA router2(ROUTER2);
@ -729,14 +766,17 @@ namespace
CHECK_EQUAL(0, router4.message_unknown_count);
CHECK_EQUAL(6, callback.message5_count);
CHECK_EQUAL(3, bus1.message_count);
CHECK_EQUAL(3, bus2.message_count);
}
//*************************************************************************
TEST(message_bus_broadcast_order)
{
etl::message_bus<4> bus1;
etl::message_bus<2> bus2;
etl::message_bus<2> bus3;
MessageBus<4> bus1;
MessageBus<2> bus2;
MessageBus<2> bus3;
RouterA router1(ROUTER1);
RouterA router2(ROUTER2);
@ -766,13 +806,17 @@ namespace
CHECK_EQUAL(2, router4b.order);
CHECK_EQUAL(3, router4a.order);
CHECK_EQUAL(4, router3.order);
CHECK_EQUAL(1, bus1.message_count);
CHECK_EQUAL(1, bus2.message_count);
CHECK_EQUAL(1, bus3.message_count);
}
//*************************************************************************
TEST(message_bus_broadcast_addressed_successor_bus)
{
etl::message_bus<3> bus1;
etl::message_bus<2> bus2;
MessageBus<3> bus1;
MessageBus<2> bus2;
RouterA router1(ROUTER1);
RouterA router2(ROUTER2);
@ -882,12 +926,15 @@ namespace
CHECK_EQUAL(0, router4.message_unknown_count);
CHECK_EQUAL(6, callback.message5_count);
CHECK_EQUAL(3, bus1.message_count);
CHECK_EQUAL(3, bus2.message_count);
}
//*************************************************************************
TEST(message_bus_successor_to_message_producer)
{
etl::message_bus<2> bus;
MessageBus<2> bus;
etl::message_producer producer(ROUTER2);
RouterA router(ROUTER1);
Response message;
@ -901,6 +948,8 @@ namespace
producer.receive(message);
CHECK_EQUAL(1U, router.message5_count);
CHECK_EQUAL(1, bus.message_count);
}
};
}