From 57c57eb069a0f650a0da316c4dcee23bde9fc073 Mon Sep 17 00:00:00 2001 From: John Wellbelove Date: Tue, 9 Mar 2021 10:44:01 +0000 Subject: [PATCH] Updated * & -> operators. --- include/etl/message_router_registry.h | 24 ++++++++++++-- test/test_message_router_registry.cpp | 46 ++++++++++++++++++--------- 2 files changed, 52 insertions(+), 18 deletions(-) diff --git a/include/etl/message_router_registry.h b/include/etl/message_router_registry.h index 4bf10f37..643bb2bf 100644 --- a/include/etl/message_router_registry.h +++ b/include/etl/message_router_registry.h @@ -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; } diff --git a/test/test_message_router_registry.cpp b/test/test_message_router_registry.cpp index ec0abf83..e1d6da79 100644 --- a/test/test_message_router_registry.cpp +++ b/test/test_message_router_registry.cpp @@ -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::const_iterator ceitr = registry.end(); etl::message_router_registry::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(std::begin(routers), std::end(routers)); + + etl::message_router_registry::iterator itr = registry.begin(); + etl::message_router_registry::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()); + } }; }