SetKeyEventTests.cpp
1 #include "pch.h" 2 3 // Suppressing 26466 - Don't use static_cast downcasts - in CppUnitTest.h 4 #pragma warning(push) 5 #pragma warning(disable : 26466) 6 #include "CppUnitTest.h" 7 #pragma warning(pop) 8 9 #include "MockedInput.h" 10 #include <keyboardmanager/KeyboardManagerEngineLibrary/State.h> 11 #include <keyboardmanager/common/KeyboardEventHandlers.h> 12 #include <keyboardmanager/common/Helpers.h> 13 #include "TestHelpers.h" 14 15 using namespace Microsoft::VisualStudio::CppUnitTestFramework; 16 17 namespace RemappingLogicTests 18 { 19 // Tests for the SetKeyEvent method 20 TEST_CLASS (SetKeyEventTests) 21 { 22 private: 23 KeyboardManagerInput::MockedInput mockedInputHandler; 24 State testState; 25 26 public: 27 TEST_METHOD_INITIALIZE(InitializeTestEnv) 28 { 29 // Reset test environment 30 TestHelpers::ResetTestEnv(mockedInputHandler, testState); 31 } 32 33 // Test if SetKeyEvent sets the extended key flag for all the extended keys 34 TEST_METHOD (SetKeyEvent_ShouldUseExtendedKeyFlag_WhenArgumentIsExtendedKey) 35 { 36 const int nInputs = 15; 37 std::vector<INPUT> inputs; 38 39 // List of extended keys 40 WORD keyCodes[nInputs] = { VK_RCONTROL, VK_RMENU, VK_NUMLOCK, VK_SNAPSHOT, VK_CANCEL, VK_INSERT, VK_HOME, VK_PRIOR, VK_DELETE, VK_END, VK_NEXT, VK_LEFT, VK_DOWN, VK_RIGHT, VK_UP }; 41 42 for (int i = 0; i < nInputs; i++) 43 { 44 // Set key events for all the extended keys 45 Helpers::SetKeyEvent(inputs, INPUT_KEYBOARD, keyCodes[i], 0, 0); 46 // Extended key flag should be set 47 Assert::AreEqual(true, bool(inputs[i].ki.dwFlags & KEYEVENTF_EXTENDEDKEY)); 48 } 49 } 50 51 // Test if SetKeyEvent sets the scan code field to 0 for dummy key 52 TEST_METHOD (SetKeyEvent_ShouldSetScanCodeFieldTo0_WhenArgumentIsDummyKey) 53 { 54 std::vector<INPUT> inputs{}; 55 56 Helpers::SetDummyKeyEvent(inputs, 0); 57 58 // Assert that wScan for both inputs is 0 59 Assert::AreEqual<unsigned int>(0, inputs[0].ki.wScan); 60 Assert::AreEqual<unsigned int>(0, inputs[1].ki.wScan); 61 } 62 }; 63 }