/* * Author: Patrick-Christopher Mattulat * Company: Lynar Studios * E-Mail: webmaster@lynarstudios.com * Created: 2024-05-16 * Changed: 2024-05-17 * * */ #include #include #include #include #include using ls::std::core::EventNotHandledException; using ls::std::event::reworked::EventManager; using ::std::make_shared; using ::std::string; using test::event::Button; using test::event::OnClickEvent; using testing::Test; namespace { class EventManagerTest : public Test { public: EventManagerTest() = default; ~EventManagerTest() override = default; }; TEST_F(EventManagerTest, getClassName) { ASSERT_STREQ("EventManager", EventManager().getClassName().c_str()); } TEST_F(EventManagerTest, getNextProvisionId) { auto eventManager = EventManager(); ASSERT_EQ(1, eventManager.getNextProvisionId()); } TEST_F(EventManagerTest, holdsListenerForEvent) { auto eventManager = make_shared(); ASSERT_FALSE(eventManager->holdsListenerForEvent(1, OnClickEvent())); } TEST_F(EventManagerTest, invoke_event_not_known) { auto eventManager = make_shared(); EXPECT_THROW( { try { eventManager->invoke(OnClickEvent()); } catch (const EventNotHandledException &_exception) { string actual = _exception.what(); string expected = _exception.getName() + " thrown - event OnClickEvent is not known by event manager"; EXPECT_STREQ(expected.c_str(), actual.c_str()); throw; } }, EventNotHandledException); } TEST_F(EventManagerTest, requestListenerId) { auto eventManager = EventManager(); ASSERT_EQ(1, eventManager.getNextProvisionId()); ASSERT_EQ(1, eventManager.requestListenerId()); ASSERT_EQ(2, eventManager.getNextProvisionId()); } TEST_F(EventManagerTest, subscribeListenerForEvent) { auto eventManager = make_shared(); auto myButton = make_shared