qmk_firmware

QMK firmware for my keyboards (Corne, Sweep Ferris) and trackball (Ploopy Adept)
Log | Files | Refs | Submodules | LICENSE

test_combo.cpp (1811B)


      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 
     12 using testing::_;
     13 using testing::InSequence;
     14 
     15 class Combo : public TestFixture {};
     16 
     17 TEST_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 
     29 TEST_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 
     41 TEST_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 
     58 TEST_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 }