// ===================================================================================================================== // fennec, a free and open source game engine // Copyright © 2025 Medusa Slockbower // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program. If not, see . // ===================================================================================================================== /// /// \file test_event.h /// \brief /// /// /// \details /// \author Medusa Slockbower /// /// \copyright Copyright © 2025 Medusa Slockbower ([GPLv3](https://www.gnu.org/licenses/gpl-3.0.en.html)) /// /// #ifndef FENNEC_TEST_CORE_EVENT_H #define FENNEC_TEST_CORE_EVENT_H #include "../../test.h" #include namespace fennec::test { struct test_event : public event { FENNEC_RTTI_CLASS_ENABLE(event) { } }; struct test_listener : public event_listener { bool handled = { false }; void handle_event(event* event) override { handled = true; fennec_test_run(event->get_type(), type::get()); } FENNEC_RTTI_CLASS_ENABLE(event_listener) { } }; inline void fennec_test_core_event() { test_listener listener; event::add_listener(&listener); event::dispatch(); event::handle_events(); fennec_test_run(listener.handled, true); listener.handled = false; event::dispatch_immediate(); fennec_test_run(listener.handled, true); } } #endif // FENNEC_TEST_CORE_EVENT_H