mirror of
https://github.com/ETLCPP/etl.git
synced 2026-10-28 18:07:10 +08:00
Minor changes
This commit is contained in:
parent
e6a86a6285
commit
fda4d704c3
@ -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));
|
||||
}
|
||||
|
||||
//*******************************************
|
||||
|
||||
@ -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);
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user