/* * Deskflow -- mouse and keyboard sharing utility * SPDX-FileCopyrightText: (C) 2026 Deskflow Developers * SPDX-License-Identifier: GPL-2.0-only WITH LicenseRef-OpenSSL-Exception */ #include "EventQueueTests.h" #include "base/EventQueue.h" #include #include void EventQueueTests::initTestCase() { m_arch.init(); } void EventQueueTests::dispatchEvent_noHandler_returnsFalse() { EventQueue events; QVERIFY(!events.dispatchEvent(Event(EventTypes::ClientDisconnected, this))); } void EventQueueTests::dispatchEvent_noTypeHandler_dispatchesUnknownHandler() { EventQueue events; bool fallbackCalled = false; events.addHandler(EventTypes::Unknown, this, [&fallbackCalled](const Event &) { fallbackCalled = true; }); QVERIFY(events.dispatchEvent(Event(EventTypes::ClientDisconnected, this))); QVERIFY(fallbackCalled); } void EventQueueTests::dispatchEvent_handlerRemovesItself_keepsHandlerAliveUntilReturn() { EventQueue events; auto handlerLifetime = std::make_shared(1); std::weak_ptr handlerLifetimeObserver = handlerLifetime; bool handlerAliveAfterRemoval = false; events.addHandler( EventTypes::ClientDisconnected, this, [this, &events, &handlerLifetimeObserver, &handlerAliveAfterRemoval, handlerLifetime](const Event &) { events.removeHandler(EventTypes::ClientDisconnected, this); handlerAliveAfterRemoval = handlerLifetime != nullptr && !handlerLifetimeObserver.expired(); } ); handlerLifetime.reset(); QVERIFY(events.dispatchEvent(Event(EventTypes::ClientDisconnected, this))); QVERIFY(handlerAliveAfterRemoval); QVERIFY(handlerLifetimeObserver.expired()); } QTEST_MAIN(EventQueueTests)