Merge branch 'feature/message_router_registry' into development

This commit is contained in:
John Wellbelove 2021-03-09 10:44:29 +00:00
commit 487d92bbe3
2 changed files with 52 additions and 18 deletions

View File

@ -113,13 +113,25 @@ namespace etl
}
//********************************************
etl::imessage_router* operator *()
etl::imessage_router& operator *()
{
return *(itr->second);
}
//********************************************
const etl::imessage_router& operator *() const
{
return *(itr->second);
}
//********************************************
etl::imessage_router* operator ->()
{
return itr->second;
}
//********************************************
const etl::imessage_router* operator *() const
const etl::imessage_router* operator ->() const
{
return itr->second;
}
@ -196,7 +208,13 @@ namespace etl
}
//********************************************
const etl::imessage_router* operator *() const
const etl::imessage_router& operator *() const
{
return *(itr->second);
}
//********************************************
const etl::imessage_router* operator ->() const
{
return itr->second;
}

View File

@ -316,11 +316,11 @@ namespace
iterator itr = start;
CHECK(*itr == &router2);
CHECK(&*itr == &router2);
++itr;
CHECK(*itr == &router2b);
CHECK(&*itr == &router2b);
++itr;
CHECK(*itr == &router2c);
CHECK(&*itr == &router2c);
++itr;
CHECK(itr == end);
}
@ -356,25 +356,41 @@ namespace
etl::message_router_registry<Registry_Size>::const_iterator ceitr = registry.end();
etl::message_router_registry<Registry_Size>::const_iterator ceitr2 = registry.cend();
CHECK_EQUAL(&router1, *bitr++);
CHECK_EQUAL(&router1, *cbitr++);
CHECK_EQUAL(&router1, *cbitr2++);
CHECK_EQUAL(&router1, &*bitr++);
CHECK_EQUAL(&router1, &*cbitr++);
CHECK_EQUAL(&router1, &*cbitr2++);
CHECK_EQUAL(&router2, *bitr++);
CHECK_EQUAL(&router2, *cbitr++);
CHECK_EQUAL(&router2, *cbitr2++);
CHECK_EQUAL(&router2, &*bitr++);
CHECK_EQUAL(&router2, &*cbitr++);
CHECK_EQUAL(&router2, &*cbitr2++);
CHECK_EQUAL(&router3, *bitr++);
CHECK_EQUAL(&router3, *cbitr++);
CHECK_EQUAL(&router3, *cbitr2++);
CHECK_EQUAL(&router3, &*bitr++);
CHECK_EQUAL(&router3, &*cbitr++);
CHECK_EQUAL(&router3, &*cbitr2++);
CHECK_EQUAL(&router4, *bitr++);
CHECK_EQUAL(&router4, *cbitr++);
CHECK_EQUAL(&router4, *cbitr2++);
CHECK_EQUAL(&router4, &*bitr++);
CHECK_EQUAL(&router4, &*cbitr++);
CHECK_EQUAL(&router4, &*cbitr2++);
CHECK(bitr == eitr);
CHECK(cbitr == ceitr);
CHECK(cbitr2 == ceitr2);
}
//*************************************************************************
TEST(test_operators)
{
etl::imessage_router* routers[] = { &router1, &router2, &router3, &router4 };
etl::message_router_registry<Registry_Size> registry(std::begin(routers), std::end(routers));
etl::message_router_registry<Registry_Size>::iterator itr = registry.begin();
etl::message_router_registry<Registry_Size>::const_iterator citr = registry.cbegin();
CHECK_EQUAL(ROUTER1, (*itr).get_message_router_id());
CHECK_EQUAL(ROUTER1, itr->get_message_router_id());
CHECK_EQUAL(ROUTER1, (*citr).get_message_router_id());
CHECK_EQUAL(ROUTER1, citr->get_message_router_id());
}
};
}