diff options
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/basic/test_one_shot_keys.cpp | 144 | ||||
| -rw-r--r-- | tests/caps_word/caps_word_invert_on_shift/config.h | 21 | ||||
| -rw-r--r-- | tests/caps_word/caps_word_invert_on_shift/test.mk | 17 | ||||
| -rw-r--r-- | tests/caps_word/caps_word_invert_on_shift/test_caps_word_invert_on_shift.cpp | 215 | ||||
| -rw-r--r-- | tests/caps_word/test_caps_word.cpp | 5 | ||||
| -rw-r--r-- | tests/combo/config.h | 8 | ||||
| -rw-r--r-- | tests/combo/test.mk | 4 | ||||
| -rw-r--r-- | tests/combo/test_combo.cpp | 72 | ||||
| -rw-r--r-- | tests/tap_hold_configurations/default_mod_tap/config.h | 2 | ||||
| -rw-r--r-- | tests/tap_hold_configurations/quick_tap/test_quick_tap.cpp | 80 | ||||
| -rw-r--r-- | tests/test_common/test_fixture.cpp | 1 | 
11 files changed, 486 insertions, 83 deletions
diff --git a/tests/basic/test_one_shot_keys.cpp b/tests/basic/test_one_shot_keys.cpp index 2401c2c837..2a3434bf16 100644 --- a/tests/basic/test_one_shot_keys.cpp +++ b/tests/basic/test_one_shot_keys.cpp @@ -160,6 +160,150 @@ INSTANTIATE_TEST_CASE_P(          ));  // clang-format on +TEST_F(OneShot, OSMChainingTwoOSMs) { +    TestDriver driver; +    InSequence s; +    KeymapKey  osm_key1    = KeymapKey{0, 0, 0, OSM(MOD_LSFT), KC_LSFT}; +    KeymapKey  osm_key2    = KeymapKey{0, 0, 1, OSM(MOD_LCTL), KC_LCTL}; +    KeymapKey  regular_key = KeymapKey{0, 1, 0, KC_A}; + +    set_keymap({osm_key1, osm_key2, regular_key}); + +    /* Press and release OSM1 */ +    EXPECT_NO_REPORT(driver); +    osm_key1.press(); +    run_one_scan_loop(); +    osm_key1.release(); +    run_one_scan_loop(); +    VERIFY_AND_CLEAR(driver); + +    /* Press and relesea OSM2 */ +    EXPECT_NO_REPORT(driver); +    osm_key2.press(); +    run_one_scan_loop(); +    osm_key2.release(); +    run_one_scan_loop(); +    VERIFY_AND_CLEAR(driver); + +    /* Press regular key */ +    EXPECT_REPORT(driver, (osm_key1.report_code, osm_key2.report_code, regular_key.report_code)).Times(1); +    regular_key.press(); +    run_one_scan_loop(); +    VERIFY_AND_CLEAR(driver); + +    /* Release regular key */ +    EXPECT_EMPTY_REPORT(driver); +    regular_key.release(); +    run_one_scan_loop(); +    VERIFY_AND_CLEAR(driver); +} + +TEST_F(OneShot, OSMDoubleTapNotLockingOSMs) { +    TestDriver driver; +    InSequence s; +    KeymapKey  osm_key1    = KeymapKey{0, 0, 0, OSM(MOD_LSFT), KC_LSFT}; +    KeymapKey  osm_key2    = KeymapKey{0, 0, 1, OSM(MOD_LCTL), KC_LCTL}; +    KeymapKey  regular_key = KeymapKey{0, 1, 0, KC_A}; + +    set_keymap({osm_key1, osm_key2, regular_key}); + +    /* Press and release OSM1 */ +    EXPECT_NO_REPORT(driver); +    osm_key1.press(); +    run_one_scan_loop(); +    osm_key1.release(); +    run_one_scan_loop(); +    VERIFY_AND_CLEAR(driver); + +    /* Press and release OSM2 twice */ +    EXPECT_NO_REPORT(driver); +    osm_key2.press(); +    run_one_scan_loop(); +    osm_key2.release(); +    run_one_scan_loop(); +    osm_key2.press(); +    run_one_scan_loop(); +    osm_key2.release(); +    run_one_scan_loop(); +    VERIFY_AND_CLEAR(driver); + +    /* Press regular key */ +    EXPECT_REPORT(driver, (osm_key1.report_code, osm_key2.report_code, regular_key.report_code)).Times(1); +    regular_key.press(); +    run_one_scan_loop(); +    VERIFY_AND_CLEAR(driver); + +    /* Release regular key */ +    EXPECT_EMPTY_REPORT(driver); +    regular_key.release(); +    run_one_scan_loop(); +    VERIFY_AND_CLEAR(driver); + +    /* Press regular key */ +    EXPECT_REPORT(driver, (regular_key.report_code)).Times(1); +    regular_key.press(); +    run_one_scan_loop(); +    VERIFY_AND_CLEAR(driver); + +    /* Release regular key */ +    EXPECT_EMPTY_REPORT(driver); +    regular_key.release(); +    run_one_scan_loop(); +    VERIFY_AND_CLEAR(driver); +} + +TEST_F(OneShot, OSMHoldNotLockingOSMs) { +    TestDriver driver; +    InSequence s; +    KeymapKey  osm_key1    = KeymapKey{0, 0, 0, OSM(MOD_LSFT), KC_LSFT}; +    KeymapKey  osm_key2    = KeymapKey{0, 0, 1, OSM(MOD_LCTL), KC_LCTL}; +    KeymapKey  regular_key = KeymapKey{0, 1, 0, KC_A}; + +    set_keymap({osm_key1, osm_key2, regular_key}); + +    /* Press and release OSM1 */ +    EXPECT_NO_REPORT(driver); +    osm_key1.press(); +    run_one_scan_loop(); +    osm_key1.release(); +    run_one_scan_loop(); +    VERIFY_AND_CLEAR(driver); + +    /* Press and hold OSM2 */ +    EXPECT_REPORT(driver, (osm_key1.report_code, osm_key2.report_code)).Times(1); +    osm_key2.press(); +    run_one_scan_loop(); +    idle_for(TAPPING_TERM); +    VERIFY_AND_CLEAR(driver); + +    /* Press and release regular key */ +    EXPECT_REPORT(driver, (osm_key1.report_code, osm_key2.report_code, regular_key.report_code)).Times(1); +    EXPECT_REPORT(driver, (osm_key2.report_code)).Times(1); +    regular_key.press(); +    run_one_scan_loop(); +    regular_key.release(); +    run_one_scan_loop(); +    VERIFY_AND_CLEAR(driver); + +    /* Release OSM2 */ +    EXPECT_EMPTY_REPORT(driver); +    osm_key2.release(); +    run_one_scan_loop(); +    VERIFY_AND_CLEAR(driver); + +    /* Press regular key */ +    EXPECT_REPORT(driver, (regular_key.report_code)).Times(1); +    regular_key.press(); +    run_one_scan_loop(); +    VERIFY_AND_CLEAR(driver); + +    /* Release regular key */ +    EXPECT_EMPTY_REPORT(driver); +    regular_key.release(); +    run_one_scan_loop(); +    VERIFY_AND_CLEAR(driver); +} +  TEST_F(OneShot, OSLWithAdditionalKeypress) {      TestDriver driver;      InSequence s; diff --git a/tests/caps_word/caps_word_invert_on_shift/config.h b/tests/caps_word/caps_word_invert_on_shift/config.h new file mode 100644 index 0000000000..7a3ec846f9 --- /dev/null +++ b/tests/caps_word/caps_word_invert_on_shift/config.h @@ -0,0 +1,21 @@ +// Copyright 2023 Google LLC +// +// 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, either version 2 of the License, or +// (at your option) any later version. +// +// 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 <http://www.gnu.org/licenses/>. + +#pragma once + +#include "test_common.h" + +#define CAPS_WORD_INVERT_ON_SHIFT +#define PERMISSIVE_HOLD diff --git a/tests/caps_word/caps_word_invert_on_shift/test.mk b/tests/caps_word/caps_word_invert_on_shift/test.mk new file mode 100644 index 0000000000..319c04d67a --- /dev/null +++ b/tests/caps_word/caps_word_invert_on_shift/test.mk @@ -0,0 +1,17 @@ +# Copyright 2023 Google LLC +# +# 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, either version 2 of the License, or +# (at your option) any later version. +# +# 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 <http://www.gnu.org/licenses/>. + +CAPS_WORD_ENABLE = yes + diff --git a/tests/caps_word/caps_word_invert_on_shift/test_caps_word_invert_on_shift.cpp b/tests/caps_word/caps_word_invert_on_shift/test_caps_word_invert_on_shift.cpp new file mode 100644 index 0000000000..d322448181 --- /dev/null +++ b/tests/caps_word/caps_word_invert_on_shift/test_caps_word_invert_on_shift.cpp @@ -0,0 +1,215 @@ +// Copyright 2023 Google LLC +// +// 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, either version 2 of the License, or +// (at your option) any later version. +// +// 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 <http://www.gnu.org/licenses/>. + +#include "keyboard_report_util.hpp" +#include "keycode.h" +#include "test_common.hpp" +#include "test_fixture.hpp" +#include "test_keymap_key.hpp" + +using ::testing::_; +using ::testing::AnyNumber; +using ::testing::AnyOf; +using ::testing::InSequence; +using ::testing::TestParamInfo; + +namespace { + +struct ShiftKeyParams { +    std::string name; +    uint16_t    keycode; +    uint16_t    report_shift_code; + +    static const std::string& GetName(const TestParamInfo<ShiftKeyParams>& info) { +        return info.param.name; +    } +}; + +class CapsWordInvertOnShift : public ::testing::WithParamInterface<ShiftKeyParams>, public TestFixture { +    void SetUp() override { +        caps_word_off(); +    } +}; + +// With Caps Word on, type "A, 4, Shift(A, 4, A), A, Shift(A), 4". +TEST_P(CapsWordInvertOnShift, ShiftWithinWord) { +    TestDriver driver; +    KeymapKey  key_shift(0, 0, 0, GetParam().keycode); +    KeymapKey  key_a(0, 1, 0, KC_A); +    KeymapKey  key_4(0, 2, 0, KC_4); +    set_keymap({key_shift, key_a, key_4}); + +    // Allow any number of reports with no keys or only KC_LSFT. +    // clang-format off +    EXPECT_CALL(driver, send_keyboard_mock(AnyOf( +                KeyboardReport(), +                KeyboardReport(KC_LSFT)))) +        .Times(AnyNumber()); +    // clang-format on + +    { // Expect: "A4a$aAa4" +        InSequence s; +        EXPECT_REPORT(driver, (KC_LSFT, KC_A)); +        EXPECT_REPORT(driver, (KC_4)); +        EXPECT_REPORT(driver, (KC_A)); +        EXPECT_REPORT(driver, (KC_LSFT, KC_4)); +        EXPECT_REPORT(driver, (KC_A)); +        EXPECT_REPORT(driver, (KC_LSFT, KC_A)); +        EXPECT_REPORT(driver, (KC_A)); +        EXPECT_REPORT(driver, (KC_4)); +    } + +    caps_word_on(); +    tap_keys(key_a, key_4); // Type "A, 4". + +    key_shift.press(); // Type "Shift(A, 4, A)". +    run_one_scan_loop(); +    tap_keys(key_a, key_4, key_a); +    key_shift.release(); +    run_one_scan_loop(); + +    tap_key(key_a); // Type "A". + +    key_shift.press(); // Type "Shift(A)". +    run_one_scan_loop(); +    tap_key(key_a); +    key_shift.release(); +    run_one_scan_loop(); + +    tap_key(key_4); // Type "4". + +    VERIFY_AND_CLEAR(driver); +} + +TEST_P(CapsWordInvertOnShift, ShiftHeldAtWordEnd) { +    TestDriver driver; +    KeymapKey  key_shift(0, 0, 0, GetParam().keycode); +    KeymapKey  key_a(0, 1, 0, KC_A); +    KeymapKey  key_slsh(0, 2, 0, KC_SLSH); +    set_keymap({key_shift, key_a, key_slsh}); + +    // Allow any number of reports with no keys or only KC_LSFT. +    // clang-format off +    EXPECT_CALL(driver, send_keyboard_mock(AnyOf( +                KeyboardReport(), +                KeyboardReport(KC_LSFT), +                KeyboardReport(KC_RSFT)))) +        .Times(AnyNumber()); +    // clang-format on + +    { // Expect: "Aa?A" +        InSequence s; +        EXPECT_REPORT(driver, (KC_LSFT, KC_A)); +        EXPECT_REPORT(driver, (KC_A)); +        EXPECT_REPORT(driver, (GetParam().report_shift_code, KC_SLSH)); +        EXPECT_REPORT(driver, (GetParam().report_shift_code, KC_A)); +    } + +    caps_word_on(); +    tap_key(key_a); + +    key_shift.press(); // Press Shift. +    run_one_scan_loop(); + +    EXPECT_EQ(get_mods(), 0); + +    tap_key(key_a); +    tap_key(key_slsh); // Tap '/' key, which is word breaking, ending Caps Word. + +    EXPECT_FALSE(is_caps_word_on()); +    EXPECT_EQ(get_mods(), MOD_BIT(GetParam().report_shift_code)); + +    tap_key(key_a); +    key_shift.release(); // Release Shift. +    run_one_scan_loop(); + +    EXPECT_EQ(get_mods(), 0); +    VERIFY_AND_CLEAR(driver); +} + +TEST_P(CapsWordInvertOnShift, TwoShiftsHeld) { +    TestDriver driver; +    KeymapKey  key_shift1(0, 0, 0, GetParam().keycode); +    KeymapKey  key_shift2(0, 1, 0, GetParam().report_shift_code); +    KeymapKey  key_a(0, 2, 0, KC_A); +    KeymapKey  key_slsh(0, 3, 0, KC_SLSH); +    set_keymap({key_shift1, key_shift2, key_a, key_slsh}); + +    // Allow any number of reports with no keys or only KC_LSFT. +    // clang-format off +    EXPECT_CALL(driver, send_keyboard_mock(AnyOf( +                KeyboardReport(), +                KeyboardReport(KC_LSFT), +                KeyboardReport(KC_RSFT)))) +        .Times(AnyNumber()); +    // clang-format on + +    { // Expect: "Aa?a" +        InSequence s; +        EXPECT_REPORT(driver, (KC_LSFT, KC_A)); +        EXPECT_REPORT(driver, (KC_A)); +        EXPECT_REPORT(driver, (GetParam().report_shift_code, KC_SLSH)); +        EXPECT_REPORT(driver, (KC_A)); +    } + +    caps_word_on(); +    tap_key(key_a); + +    key_shift1.press(); // Press shift1. +    run_one_scan_loop(); + +    EXPECT_EQ(get_mods(), 0); + +    tap_key(key_a); +    tap_key(key_slsh); // Tap '/' key, which is word breaking, ending Caps Word. + +    EXPECT_FALSE(is_caps_word_on()); +    EXPECT_EQ(get_mods(), MOD_BIT(GetParam().report_shift_code)); + +    key_shift2.press(); // Press shift2. +    run_one_scan_loop(); + +    EXPECT_EQ(get_mods(), MOD_BIT(GetParam().report_shift_code)); + +    key_shift1.release(); // Release shift1. +    run_one_scan_loop(); + +    EXPECT_EQ(get_mods(), 0); +    tap_key(key_a); + +    key_shift2.release(); // Release shift2. +    run_one_scan_loop(); + +    EXPECT_EQ(get_mods(), 0); +    VERIFY_AND_CLEAR(driver); +} + +// clang-format off +INSTANTIATE_TEST_CASE_P( +    Shifts, +    CapsWordInvertOnShift, +    ::testing::Values( +        ShiftKeyParams{"KC_LSFT", KC_LSFT, KC_LSFT}, +        ShiftKeyParams{"KC_RSFT", KC_RSFT, KC_RSFT}, +        ShiftKeyParams{"LSFT_T", LSFT_T(KC_A), KC_LSFT}, +        ShiftKeyParams{"RSFT_T", RSFT_T(KC_A), KC_RSFT}, +        ShiftKeyParams{"OSM_LSFT", OSM(MOD_LSFT), KC_LSFT}, +        ShiftKeyParams{"OSM_RSFT", OSM(MOD_RSFT), KC_RSFT} +      ), +    ShiftKeyParams::GetName +    ); +// clang-format on + +} // namespace diff --git a/tests/caps_word/test_caps_word.cpp b/tests/caps_word/test_caps_word.cpp index 6d38b383f3..802f1e960e 100644 --- a/tests/caps_word/test_caps_word.cpp +++ b/tests/caps_word/test_caps_word.cpp @@ -371,6 +371,11 @@ INSTANTIATE_TEST_CASE_P(              "OSL", OSL(1), 1, KC_NO, true},          CapsWordPressUserParams{              "LT_held", LT_1_KC_A, TAPPING_TERM + 1, KC_NO, true}, +        // Tri-Layer keys are ignored and continue Caps Word. +        CapsWordPressUserParams{ +            "TL_LOWR", TL_LOWR, 1, KC_NO, true}, +        CapsWordPressUserParams{ +            "TL_UPPR", TL_UPPR, 1, KC_NO, true},          // AltGr keys are ignored and continue Caps Word.          CapsWordPressUserParams{              "KC_RALT", KC_RALT, 1, KC_NO, true}, diff --git a/tests/combo/config.h b/tests/combo/config.h new file mode 100644 index 0000000000..8052932634 --- /dev/null +++ b/tests/combo/config.h @@ -0,0 +1,8 @@ +// Copyright 2023 Stefan Kerkmann (@KarlK90) +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +#include "test_common.h" + +#define TAPPING_TERM 200 diff --git a/tests/combo/test.mk b/tests/combo/test.mk new file mode 100644 index 0000000000..ce6f9fc2b0 --- /dev/null +++ b/tests/combo/test.mk @@ -0,0 +1,4 @@ +# Copyright 2023 Stefan Kerkmann (@KarlK90) +# SPDX-License-Identifier: GPL-2.0-or-later + +COMBO_ENABLE = yes diff --git a/tests/combo/test_combo.cpp b/tests/combo/test_combo.cpp new file mode 100644 index 0000000000..b7aea27f4c --- /dev/null +++ b/tests/combo/test_combo.cpp @@ -0,0 +1,72 @@ +// Copyright 2023 Stefan Kerkmann (@KarlK90) +// Copyright 2023 @filterpaper +// SPDX-License-Identifier: GPL-2.0-or-later + +#include "keyboard_report_util.hpp" +#include "quantum.h" +#include "keycode.h" +#include "test_common.h" +#include "test_driver.hpp" +#include "test_fixture.hpp" +#include "test_keymap_key.hpp" + +extern "C" { +enum combos { modtest, osmshift, COMBO_LENGTH }; +uint16_t COMBO_LEN = COMBO_LENGTH; + +uint16_t const modtest_combo[]  = {KC_Y, KC_U, COMBO_END}; +uint16_t const osmshift_combo[] = {KC_Z, KC_X, COMBO_END}; + +// clang-format off +combo_t key_combos[] = { +    [modtest]  = COMBO(modtest_combo, RSFT_T(KC_SPACE)), +    [osmshift] = COMBO(osmshift_combo, OSM(MOD_LSFT)) +}; +// clang-format on +} + +using testing::_; +using testing::InSequence; + +class Combo : public TestFixture {}; + +TEST_F(Combo, combo_modtest_tapped) { +    TestDriver driver; +    KeymapKey  key_y(0, 0, 1, KC_Y); +    KeymapKey  key_u(0, 0, 2, KC_U); +    set_keymap({key_y, key_u}); + +    EXPECT_REPORT(driver, (KC_SPACE)); +    EXPECT_EMPTY_REPORT(driver); +    tap_combo({key_y, key_u}); +    VERIFY_AND_CLEAR(driver); +} + +TEST_F(Combo, combo_modtest_held_longer_than_tapping_term) { +    TestDriver driver; +    KeymapKey  key_y(0, 0, 1, KC_Y); +    KeymapKey  key_u(0, 0, 2, KC_U); +    set_keymap({key_y, key_u}); + +    EXPECT_REPORT(driver, (KC_RIGHT_SHIFT)); +    EXPECT_EMPTY_REPORT(driver); +    tap_combo({key_y, key_u}, TAPPING_TERM + 1); +    VERIFY_AND_CLEAR(driver); +} + +TEST_F(Combo, combo_osmshift_tapped) { +    TestDriver driver; +    KeymapKey  key_z(0, 0, 1, KC_Z); +    KeymapKey  key_x(0, 0, 2, KC_X); +    KeymapKey  key_i(0, 0, 3, KC_I); +    set_keymap({key_z, key_x, key_i}); + +    EXPECT_NO_REPORT(driver); +    tap_combo({key_z, key_x}); +    VERIFY_AND_CLEAR(driver); + +    EXPECT_REPORT(driver, (KC_I, KC_LEFT_SHIFT)); +    EXPECT_EMPTY_REPORT(driver); +    tap_key(key_i); +    VERIFY_AND_CLEAR(driver); +} diff --git a/tests/tap_hold_configurations/default_mod_tap/config.h b/tests/tap_hold_configurations/default_mod_tap/config.h index f22448845e..6d872dd57b 100644 --- a/tests/tap_hold_configurations/default_mod_tap/config.h +++ b/tests/tap_hold_configurations/default_mod_tap/config.h @@ -17,5 +17,3 @@  #pragma once  #include "test_common.h" - -#define IGNORE_MOD_TAP_INTERRUPT diff --git a/tests/tap_hold_configurations/quick_tap/test_quick_tap.cpp b/tests/tap_hold_configurations/quick_tap/test_quick_tap.cpp index 8ec6ea62a3..dda58463fb 100644 --- a/tests/tap_hold_configurations/quick_tap/test_quick_tap.cpp +++ b/tests/tap_hold_configurations/quick_tap/test_quick_tap.cpp @@ -27,86 +27,6 @@ using testing::InSequence;  class QuickTap : public TestFixture {}; -TEST_F(QuickTap, tap_regular_key_while_mod_tap_key_is_held) { -    TestDriver driver; -    InSequence s; -    auto       mod_tap_key = KeymapKey(0, 1, 0, SFT_T(KC_P)); -    auto       regular_key = KeymapKey(0, 2, 0, KC_A); - -    set_keymap({mod_tap_key, regular_key}); - -    /* Press mod-tap key. */ -    EXPECT_NO_REPORT(driver); -    mod_tap_key.press(); -    run_one_scan_loop(); -    VERIFY_AND_CLEAR(driver); - -    /* Press regular key. */ -    EXPECT_NO_REPORT(driver); -    regular_key.press(); -    run_one_scan_loop(); -    VERIFY_AND_CLEAR(driver); - -    /* Release regular key. */ -    EXPECT_NO_REPORT(driver); -    regular_key.release(); -    run_one_scan_loop(); -    VERIFY_AND_CLEAR(driver); - -    /* Release mod-tap key. */ -    EXPECT_REPORT(driver, (KC_LSFT)); -    mod_tap_key.release(); -    run_one_scan_loop(); -    VERIFY_AND_CLEAR(driver); - -    /* Idle for tapping term of mod tap hold key. */ -    EXPECT_REPORT(driver, (KC_LSFT, KC_A)); -    EXPECT_REPORT(driver, (KC_LSFT)); -    EXPECT_EMPTY_REPORT(driver); -    idle_for(TAPPING_TERM - 3); -    VERIFY_AND_CLEAR(driver); -} - -TEST_F(QuickTap, tap_mod_tap_key_while_mod_tap_key_is_held) { -    TestDriver driver; -    InSequence s; -    auto       first_mod_tap_key  = KeymapKey(0, 1, 0, SFT_T(KC_P)); -    auto       second_mod_tap_key = KeymapKey(0, 2, 0, RSFT_T(KC_A)); - -    set_keymap({first_mod_tap_key, second_mod_tap_key}); - -    /* Press first mod-tap key */ -    EXPECT_NO_REPORT(driver); -    first_mod_tap_key.press(); -    run_one_scan_loop(); -    VERIFY_AND_CLEAR(driver); - -    /* Press second mod-tap key */ -    EXPECT_NO_REPORT(driver); -    second_mod_tap_key.press(); -    run_one_scan_loop(); -    VERIFY_AND_CLEAR(driver); - -    /* Release second tap-hold key */ -    EXPECT_NO_REPORT(driver); -    second_mod_tap_key.release(); -    run_one_scan_loop(); -    VERIFY_AND_CLEAR(driver); - -    /* Release first mod-tap key */ -    EXPECT_REPORT(driver, (KC_LSFT)); -    first_mod_tap_key.release(); -    run_one_scan_loop(); -    VERIFY_AND_CLEAR(driver); - -    /* Idle for tapping term of first mod-tap key. */ -    EXPECT_REPORT(driver, (KC_LSFT, KC_A)); -    EXPECT_REPORT(driver, (KC_LSFT)); -    EXPECT_EMPTY_REPORT(driver); -    idle_for(TAPPING_TERM - 3); -    VERIFY_AND_CLEAR(driver); -} -  TEST_F(QuickTap, tap_regular_key_while_layer_tap_key_is_held) {      TestDriver driver;      InSequence s; diff --git a/tests/test_common/test_fixture.cpp b/tests/test_common/test_fixture.cpp index 76daa625ad..72763d0bc0 100644 --- a/tests/test_common/test_fixture.cpp +++ b/tests/test_common/test_fixture.cpp @@ -22,7 +22,6 @@ extern "C" {  #include "debug.h"  #include "eeconfig.h"  #include "keyboard.h" -#include "keymap.h"  void set_time(uint32_t t);  void advance_time(uint32_t ms);  | 
