From 03f6299d631ef9e40f08ee8d10fa87a27d13cf31 Mon Sep 17 00:00:00 2001 From: John Wellbelove Date: Fri, 5 Mar 2021 20:34:14 +0000 Subject: [PATCH] Added message_router_registry --- include/etl/message_router_registry.h | 29 +++++++++++++++--- test/test_message_router_registry.cpp | 44 ++++++++++++++++++++++----- 2 files changed, 61 insertions(+), 12 deletions(-) diff --git a/include/etl/message_router_registry.h b/include/etl/message_router_registry.h index 44e9b192..455e4916 100644 --- a/include/etl/message_router_registry.h +++ b/include/etl/message_router_registry.h @@ -115,7 +115,7 @@ namespace etl { while (first != last) { - this->add(*first++); + add(*first++); } } @@ -131,7 +131,7 @@ namespace etl /// Get a pointer to a router that has the specified ID. /// Returns ETL_NULLPTR if not found. //******************************************** - etl::imessage_router* get_message_router(etl::message_router_id_t id) const + etl::imessage_router* get(etl::message_router_id_t id) const { IRegistry::const_iterator itr = registry.find(id); @@ -221,6 +221,8 @@ namespace etl typedef etl::iflat_map IRegistry; + //******************************************** + // Constructor. //******************************************** imessage_router_registry(IRegistry& registry_) : registry(registry_) @@ -248,10 +250,10 @@ namespace etl { } - //************************************************************************* + //******************************************** /// Constructor. /// Constructs from an iterator range. - //************************************************************************* + //******************************************** template message_router_registry(TIterator first, const TIterator& last) : imessage_router_registry(registry) @@ -278,6 +280,25 @@ namespace etl } #endif + //******************************************** + // Copy constructor. + //******************************************** + message_router_registry(const message_router_registry& rhs) + : imessage_router_registry(registry) + { + registry = rhs.registry; + } + + //******************************************** + // Assignment operator. + //******************************************** + message_router_registry& operator =(const message_router_registry& rhs) + { + registry = rhs.registry; + + return *this; + } + private: typedef etl::flat_map Registry; diff --git a/test/test_message_router_registry.cpp b/test/test_message_router_registry.cpp index 046ee900..5ffef069 100644 --- a/test/test_message_router_registry.cpp +++ b/test/test_message_router_registry.cpp @@ -231,6 +231,34 @@ namespace CHECK_EQUAL(Registry_Size, registry.max_size()); } + //************************************************************************* + TEST(test_copy_construction) + { + etl::message_router_registry registry = { &router1, &router2, &router3, &router4 }; + etl::message_router_registry registry2(registry); + + CHECK(!registry2.empty()); + CHECK(registry2.full()); + CHECK_EQUAL(Registry_Size, registry2.size()); + CHECK_EQUAL(0U, registry2.available()); + CHECK_EQUAL(Registry_Size, registry2.max_size()); + } + + //************************************************************************* + TEST(test_assignment) + { + etl::message_router_registry registry = { &router1, &router2, &router3, &router4 }; + etl::message_router_registry registry2; + + registry2 = registry; + + CHECK(!registry2.empty()); + CHECK(registry2.full()); + CHECK_EQUAL(Registry_Size, registry2.size()); + CHECK_EQUAL(0U, registry2.available()); + CHECK_EQUAL(Registry_Size, registry2.max_size()); + } + //************************************************************************* TEST(test_registery_contains) { @@ -257,10 +285,10 @@ namespace { etl::message_router_registry registry = { &router1, &router2, &router3 }; - CHECK_EQUAL(&router1, registry.get_message_router(ROUTER1)); - CHECK_EQUAL(&router2, registry.get_message_router(ROUTER2)); - CHECK_EQUAL(&router3, registry.get_message_router(ROUTER3)); - CHECK_EQUAL(nullptr, registry.get_message_router(ROUTER4)); + CHECK_EQUAL(&router1, registry.get(ROUTER1)); + CHECK_EQUAL(&router2, registry.get(ROUTER2)); + CHECK_EQUAL(&router3, registry.get(ROUTER3)); + CHECK_EQUAL(nullptr, registry.get(ROUTER4)); } //************************************************************************* @@ -272,10 +300,10 @@ namespace CHECK(!registry.contains(router3)); - CHECK_EQUAL(&router1, registry.get_message_router(ROUTER1)); - CHECK_EQUAL(&router2, registry.get_message_router(ROUTER2)); - CHECK_EQUAL(nullptr, registry.get_message_router(ROUTER3)); - CHECK_EQUAL(&router4, registry.get_message_router(ROUTER4)); + CHECK_EQUAL(&router1, registry.get(ROUTER1)); + CHECK_EQUAL(&router2, registry.get(ROUTER2)); + CHECK_EQUAL(nullptr, registry.get(ROUTER3)); + CHECK_EQUAL(&router4, registry.get(ROUTER4)); } }; }