at master 71 lines 1.8 kB view raw
1// Copyright 2023 Stefan Kerkmann (@KarlK90) 2// Copyright 2023 @filterpaper 3// SPDX-License-Identifier: GPL-2.0-or-later 4 5#include "keyboard_report_util.hpp" 6#include "keycode.h" 7#include "test_common.h" 8#include "test_driver.hpp" 9#include "test_fixture.hpp" 10#include "test_keymap_key.hpp" 11 12using testing::_; 13using testing::InSequence; 14 15class Combo : public TestFixture {}; 16 17TEST_F(Combo, combo_modtest_tapped) { 18 TestDriver driver; 19 KeymapKey key_y(0, 0, 1, KC_Y); 20 KeymapKey key_u(0, 0, 2, KC_U); 21 set_keymap({key_y, key_u}); 22 23 EXPECT_REPORT(driver, (KC_SPACE)); 24 EXPECT_EMPTY_REPORT(driver); 25 tap_combo({key_y, key_u}); 26 VERIFY_AND_CLEAR(driver); 27} 28 29TEST_F(Combo, combo_modtest_held_longer_than_tapping_term) { 30 TestDriver driver; 31 KeymapKey key_y(0, 0, 1, KC_Y); 32 KeymapKey key_u(0, 0, 2, KC_U); 33 set_keymap({key_y, key_u}); 34 35 EXPECT_REPORT(driver, (KC_RIGHT_SHIFT)); 36 EXPECT_EMPTY_REPORT(driver); 37 tap_combo({key_y, key_u}, TAPPING_TERM + 1); 38 VERIFY_AND_CLEAR(driver); 39} 40 41TEST_F(Combo, combo_osmshift_tapped) { 42 TestDriver driver; 43 KeymapKey key_z(0, 0, 1, KC_Z); 44 KeymapKey key_x(0, 0, 2, KC_X); 45 KeymapKey key_i(0, 0, 3, KC_I); 46 set_keymap({key_z, key_x, key_i}); 47 48 EXPECT_NO_REPORT(driver); 49 tap_combo({key_z, key_x}); 50 VERIFY_AND_CLEAR(driver); 51 52 EXPECT_REPORT(driver, (KC_I, KC_LEFT_SHIFT)); 53 EXPECT_EMPTY_REPORT(driver); 54 tap_key(key_i); 55 VERIFY_AND_CLEAR(driver); 56} 57 58TEST_F(Combo, combo_single_key_twice) { 59 TestDriver driver; 60 KeymapKey key_a(0, 0, 1, KC_A); 61 set_keymap({key_a}); 62 63 EXPECT_REPORT(driver, (KC_B)); 64 tap_combo({key_a}); 65 VERIFY_AND_CLEAR(driver); 66 67 EXPECT_REPORT(driver, (KC_B)); 68 EXPECT_EMPTY_REPORT(driver); 69 tap_combo({key_a}); 70 VERIFY_AND_CLEAR(driver); 71}