From 61b41972c443e7a63bff7915f95ee7eeef0732d6 Mon Sep 17 00:00:00 2001 From: Jesse Vincent Date: Mon, 9 Nov 2020 23:08:54 -0800 Subject: [PATCH] Port the 'keycodes' test to ktest --- tests/features/keycodes/test.ktest | 36 +++++++++ tests/features/keycodes/test/testcase.cpp | 89 ----------------------- 2 files changed, 36 insertions(+), 89 deletions(-) create mode 100644 tests/features/keycodes/test.ktest delete mode 100644 tests/features/keycodes/test/testcase.cpp diff --git a/tests/features/keycodes/test.ktest b/tests/features/keycodes/test.ktest new file mode 100644 index 00000000..0878dbe2 --- /dev/null +++ b/tests/features/keycodes/test.ktest @@ -0,0 +1,36 @@ +VERSION 1 +TYPE Keycode +NAME Keyboard Non Modifiers + +KEYSWITCH A 2 1 +KEYSWITCH S 2 2 +KEYSWITCH LeftShift 3 7 + +RUN 10 ms +PRESS A +RUN 1 cycle +EXPECT keyboard-report Key_A # Report should contain only 'a' + +RUN 25 ms +RELEASE A + +EXPECT keyboard-report empty # Report should be empty + +# TODO, this should be generate a second test stanza +# TYPE Keycode +# NAME Keyboard Modifiers + +RUN 10 ms +PRESS LeftShift + +RUN 1 cycle +EXPECT keyboard-report Key_LeftShift # Report should contain only `shift` + + +RUN 25 ms +RELEASE LeftShift + +RUN 1 cycle + +EXPECT keyboard-report empty # No keys should be pressed + diff --git a/tests/features/keycodes/test/testcase.cpp b/tests/features/keycodes/test/testcase.cpp deleted file mode 100644 index 9353e28b..00000000 --- a/tests/features/keycodes/test/testcase.cpp +++ /dev/null @@ -1,89 +0,0 @@ -/* -*- mode: c++ -*- - * Copyright (C) 2020 Keyboard.io, Inc. - * - * 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, version 3. - * - * 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 . - */ - -#include "testing/setup-googletest.h" - -SETUP_GOOGLETEST(); - -namespace kaleidoscope { -namespace testing { -namespace { - -constexpr KeyAddr key_addr_A{2, 1}; -constexpr KeyAddr key_addr_S{2, 2}; -constexpr KeyAddr key_addr_LeftShift{3, 7}; -constexpr uint8_t keycode_LeftShift{Key_LeftShift.getKeyCode()}; - -class Keycodes : public VirtualDeviceTest {}; - -TEST_F(Keycodes, KeyboardNonModifier) { - - std::set expected_keycodes{}; - - // Press `A` - sim_.Press(key_addr_A); - expected_keycodes.insert(Key_A.getKeyCode()); - - auto state = VirtualDeviceTest::RunCycle(); - - ASSERT_EQ(state->HIDReports()->Keyboard().size(), 1); - EXPECT_THAT(state->HIDReports()->Keyboard(0).ActiveNonModifierKeycodes(), - ::testing::ElementsAreArray(expected_keycodes)); - EXPECT_THAT(state->HIDReports()->Keyboard(0).ActiveKeycodes(), - ::testing::ElementsAreArray(expected_keycodes)); - - sim_.Release(key_addr_A); - expected_keycodes.erase(Key_A.getKeyCode()); - - state = VirtualDeviceTest::RunCycle(); - - ASSERT_EQ(state->HIDReports()->Keyboard().size(), 1); - EXPECT_THAT(state->HIDReports()->Keyboard(0).ActiveKeycodes(), - ::testing::ElementsAreArray(expected_keycodes)); -} - -TEST_F(Keycodes, KeyboardModifier) { - - std::set expected_keycodes{}; - - // Press `LeftShift` - sim_.Press(key_addr_LeftShift); - expected_keycodes.insert(keycode_LeftShift); - - auto state = VirtualDeviceTest::RunCycle(); - - ASSERT_EQ(state->HIDReports()->Keyboard().size(), 1); - EXPECT_THAT(state->HIDReports()->Keyboard(0).ActiveModifierKeycodes(), - ::testing::ElementsAreArray(expected_keycodes)); - EXPECT_THAT(state->HIDReports()->Keyboard(0).ActiveKeycodes(), - ::testing::ElementsAreArray(expected_keycodes)); - - uint8_t bit_LeftShift = keycode_LeftShift - HID_KEYBOARD_FIRST_MODIFIER; - uint8_t expected_modifiers = 1 << bit_LeftShift; - - sim_.Release(key_addr_LeftShift); - expected_keycodes.erase(Key_LeftShift.getKeyCode()); - - state = VirtualDeviceTest::RunCycle(); - - ASSERT_EQ(state->HIDReports()->Keyboard().size(), 1); - EXPECT_THAT(state->HIDReports()->Keyboard(0).ActiveKeycodes(), - ::testing::ElementsAreArray(expected_keycodes)); -} - -} // namespace -} // namespace testing -} // namespace kaleidoscope