Răsfoiți Sursa

Extend EventManager class

- add "hasEventHandler" functionality
- extend tests for EventManager class
Patrick-Christopher Mattulat 3 ani în urmă
părinte
comite
648283e314

+ 1 - 0
include/ls_std/event/EventManager.hpp

@@ -35,6 +35,7 @@ namespace ls_std
 
       bool addEventHandler(const std::shared_ptr<ls_std::EventHandler> &_eventHandler);
       void fire(ls_std::Event _event);
+      bool hasEventHandler(const ls_std::event_id &_id);
       bool removeEventHandler(const std::shared_ptr<ls_std::EventHandler> &_eventHandler);
 
     private:

+ 10 - 0
source/ls_std/event/EventManager.cpp

@@ -75,6 +75,16 @@ void ls_std::EventManager::fire(ls_std::Event _event)
   }
 }
 
+bool ls_std::EventManager::hasEventHandler(const ls_std::event_id &_id)
+{
+  if (_id.empty())
+  {
+    throw ls_std::IllegalArgumentException{};
+  }
+
+  return this->_hasEventHandler(_id);
+}
+
 bool ls_std::EventManager::removeEventHandler(const std::shared_ptr<ls_std::EventHandler> &_eventHandler)
 {
   if (_eventHandler == nullptr)

+ 28 - 0
test/cases/event/EventManagerTest.cpp

@@ -151,6 +151,34 @@ namespace
                  }, ls_std::EventNotHandledException);
   }
 
+  TEST_F(EventManagerTest, hasEventHandler)
+  {
+    ls_std::EventManager eventManager{};
+    eventManager.addEventHandler(std::make_shared<ls_std::EventHandler>("TMP_ID"));
+    ASSERT_TRUE(eventManager.hasEventHandler("TMP_ID"));
+  }
+
+  TEST_F(EventManagerTest, hasEventHandler_no_event_handler_available)
+  {
+    ls_std::EventManager eventManager{};
+    ASSERT_FALSE(eventManager.hasEventHandler("TMP_ID"));
+  }
+
+  TEST_F(EventManagerTest, hasEventHandler_empty_id)
+  {
+    EXPECT_THROW({
+                   try
+                   {
+                     ls_std::EventManager eventManager{};
+                     eventManager.hasEventHandler("");
+                   }
+                   catch (const ls_std::IllegalArgumentException &_exception)
+                   {
+                     throw;
+                   }
+                 }, ls_std::IllegalArgumentException);
+  }
+
   TEST_F(EventManagerTest, removeEventHandler)
   {
     ls_std::EventManager eventManager{};