From d8b4fab9a39184e0339367c6538ed01c64cd0f99 Mon Sep 17 00:00:00 2001 From: sithlord48 Date: Mon, 28 Apr 2025 17:24:56 -0400 Subject: [PATCH] refactor: move OSXKeyStateTest => QtTests --- src/unittests/platform/CMakeLists.txt | 7 +++ .../unittests/platform/OSXKeyStateTests.cpp | 63 +++++++++---------- src/unittests/platform/OSXKeyStateTests.h | 27 ++++++++ 3 files changed, 65 insertions(+), 32 deletions(-) rename src/{test => }/unittests/platform/OSXKeyStateTests.cpp (66%) create mode 100644 src/unittests/platform/OSXKeyStateTests.h diff --git a/src/unittests/platform/CMakeLists.txt b/src/unittests/platform/CMakeLists.txt index bc64c0bb2f..1ae3624bb3 100644 --- a/src/unittests/platform/CMakeLists.txt +++ b/src/unittests/platform/CMakeLists.txt @@ -17,6 +17,13 @@ elseif(APPLE) SOURCE OSXClipboardTests.cpp WORKING_DIRECTORY "${CMAKE_BINARY_DIR}/src/lib/platform" ) + create_test( + NAME OSXKeyStateTests + DEPENDS platform + LIBS base arch + SOURCE OSXKeyStateTests.cpp + WORKING_DIRECTORY "${CMAKE_BINARY_DIR}/src/lib/platform" + ) elseif(UNIX) create_test( NAME XWindowsClipboardTests diff --git a/src/test/unittests/platform/OSXKeyStateTests.cpp b/src/unittests/platform/OSXKeyStateTests.cpp similarity index 66% rename from src/test/unittests/platform/OSXKeyStateTests.cpp rename to src/unittests/platform/OSXKeyStateTests.cpp index 275ce571ca..d1b6759a6f 100644 --- a/src/test/unittests/platform/OSXKeyStateTests.cpp +++ b/src/unittests/platform/OSXKeyStateTests.cpp @@ -1,17 +1,14 @@ /* * Deskflow -- mouse and keyboard sharing utility + * SPDX-FileCopyrightText: (C) 2025 Chris Rizzitello * SPDX-FileCopyrightText: (C) 2012 - 2016 Symless Ltd. * SPDX-FileCopyrightText: (C) 2011 Nick Bolton * SPDX-License-Identifier: GPL-2.0-only WITH LicenseRef-OpenSSL-Exception */ -#include "base/Log.h" -#include "platform/OSXKeyState.h" -#include "test/mock/deskflow/MockEventQueue.h" -#include "test/mock/deskflow/MockKeyMap.h" +#include "OSXKeyStateTests.h" -#include -#include +#include "base/EventQueue.h" #define SHIFT_ID_L kKeyShift_L #define SHIFT_ID_R kKeyShift_R @@ -19,77 +16,77 @@ #define A_CHAR_ID 0x00000061 #define A_CHAR_BUTTON 001 -class OSXKeyStateTests : public ::testing::Test +void OSXKeyStateTests::initTestCase() { -public: - static bool isKeyPressed(const OSXKeyState &keyState, KeyButton button); -}; + m_arch.init(); + m_log.setFilter(kDEBUG2); +} -TEST_F(OSXKeyStateTests, mapModifiersFromOSX_OSXMask_returnDeskflowMask) +void OSXKeyStateTests::mapModifiersFromOSX_OSXMask() { deskflow::KeyMap keyMap; - MockEventQueue eventQueue; + EventQueue eventQueue; OSXKeyState keyState(&eventQueue, keyMap, {"en"}, true); KeyModifierMask outMask = 0; uint32_t shiftMask = 0 | kCGEventFlagMaskShift; outMask = keyState.mapModifiersFromOSX(shiftMask); - EXPECT_EQ(KeyModifierShift, outMask); + QCOMPARE(outMask, KeyModifierShift); uint32_t ctrlMask = 0 | kCGEventFlagMaskControl; outMask = keyState.mapModifiersFromOSX(ctrlMask); - EXPECT_EQ(KeyModifierControl, outMask); + QCOMPARE(outMask, KeyModifierControl); uint32_t altMask = 0 | kCGEventFlagMaskAlternate; outMask = keyState.mapModifiersFromOSX(altMask); - EXPECT_EQ(KeyModifierAlt, outMask); + QCOMPARE(outMask, KeyModifierAlt); uint32_t cmdMask = 0 | kCGEventFlagMaskCommand; outMask = keyState.mapModifiersFromOSX(cmdMask); - EXPECT_EQ(KeyModifierSuper, outMask); + QCOMPARE(outMask, KeyModifierSuper); uint32_t capsMask = 0 | kCGEventFlagMaskAlphaShift; outMask = keyState.mapModifiersFromOSX(capsMask); - EXPECT_EQ(KeyModifierCapsLock, outMask); + QCOMPARE(outMask, KeyModifierCapsLock); uint32_t numMask = 0 | kCGEventFlagMaskNumericPad; outMask = keyState.mapModifiersFromOSX(numMask); - EXPECT_EQ(KeyModifierNumLock, outMask); + QCOMPARE(outMask, KeyModifierNumLock); } -TEST_F(OSXKeyStateTests, fakeAndPoll_shift) +void OSXKeyStateTests::fakePollShift() { deskflow::KeyMap keyMap; - MockEventQueue eventQueue; + EventQueue eventQueue; OSXKeyState keyState(&eventQueue, keyMap, {"en"}, true); keyState.updateKeyMap(); keyState.fakeKeyDown(SHIFT_ID_L, 0, 1, "en"); - EXPECT_TRUE(isKeyPressed(keyState, SHIFT_BUTTON)); + QVERIFY(isKeyPressed(keyState, SHIFT_BUTTON)); keyState.fakeKeyUp(1); - EXPECT_TRUE(!isKeyPressed(keyState, SHIFT_BUTTON)); + QVERIFY(!isKeyPressed(keyState, SHIFT_BUTTON)); keyState.fakeKeyDown(SHIFT_ID_R, 0, 2, "en"); - EXPECT_TRUE(isKeyPressed(keyState, SHIFT_BUTTON)); + QVERIFY(isKeyPressed(keyState, SHIFT_BUTTON)); keyState.fakeKeyUp(2); - EXPECT_TRUE(!isKeyPressed(keyState, SHIFT_BUTTON)); + QVERIFY(!isKeyPressed(keyState, SHIFT_BUTTON)); } -TEST_F(OSXKeyStateTests, fakeAndPoll_charKey) +void OSXKeyStateTests::fakePollChar() { deskflow::KeyMap keyMap; - MockEventQueue eventQueue; + EventQueue eventQueue; OSXKeyState keyState(&eventQueue, keyMap, {"en"}, true); keyState.updateKeyMap(); keyState.fakeKeyDown(A_CHAR_ID, 0, 1, "en"); - EXPECT_TRUE(isKeyPressed(keyState, A_CHAR_BUTTON)); + QVERIFY(isKeyPressed(keyState, A_CHAR_BUTTON)); keyState.fakeKeyUp(1); - EXPECT_TRUE(!isKeyPressed(keyState, A_CHAR_BUTTON)); + QVERIFY(!isKeyPressed(keyState, A_CHAR_BUTTON)); // HACK: delete the key in case it was typed into a text editor. // we should really set focus to an invisible window. @@ -97,18 +94,18 @@ TEST_F(OSXKeyStateTests, fakeAndPoll_charKey) keyState.fakeKeyUp(2); } -TEST_F(OSXKeyStateTests, fakeAndPoll_charKeyAndModifier) +void OSXKeyStateTests::fakePollCharWithModifier() { deskflow::KeyMap keyMap; - MockEventQueue eventQueue; + EventQueue eventQueue; OSXKeyState keyState(&eventQueue, keyMap, {"en"}, true); keyState.updateKeyMap(); keyState.fakeKeyDown(A_CHAR_ID, KeyModifierShift, 1, "en"); - EXPECT_TRUE(isKeyPressed(keyState, A_CHAR_BUTTON)); + QVERIFY(isKeyPressed(keyState, A_CHAR_BUTTON)); keyState.fakeKeyUp(1); - EXPECT_TRUE(!isKeyPressed(keyState, A_CHAR_BUTTON)); + QVERIFY(!isKeyPressed(keyState, A_CHAR_BUTTON)); // HACK: delete the key in case it was typed into a text editor. // we should really set focus to an invisible window. @@ -133,3 +130,5 @@ bool OSXKeyStateTests::isKeyPressed(const OSXKeyState &keyState, KeyButton butto } return false; } + +QTEST_MAIN(OSXKeyStateTests) diff --git a/src/unittests/platform/OSXKeyStateTests.h b/src/unittests/platform/OSXKeyStateTests.h new file mode 100644 index 0000000000..53efacdb6d --- /dev/null +++ b/src/unittests/platform/OSXKeyStateTests.h @@ -0,0 +1,27 @@ +/* + * Deskflow -- mouse and keyboard sharing utility + * SPDX-FileCopyrightText: (C) 2025 Chris Rizzitello + * SPDX-License-Identifier: GPL-2.0-only WITH LicenseRef-OpenSSL-Exception + */ +#include "base/Log.h" + +#include "../../lib/platform/OSXKeyState.h" + +#include + +class OSXKeyStateTests : public QObject +{ + Q_OBJECT +private slots: + void initTestCase(); + // Test are run in order top to bottom + void mapModifiersFromOSX_OSXMask(); + void fakePollShift(); + void fakePollChar(); + void fakePollCharWithModifier(); + +private: + bool isKeyPressed(const OSXKeyState &keyState, KeyButton button); + Arch m_arch; + Log m_log; +};