59 lines
1.7 KiB
C++
59 lines
1.7 KiB
C++
|
|
/*
|
||
|
|
* 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 <QTest>
|
||
|
|
|
||
|
|
#include <memory>
|
||
|
|
|
||
|
|
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<int>(1);
|
||
|
|
std::weak_ptr<int> 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)
|