logo

qmk_firmware

custom branch of QMK firmware git clone https://anongit.hacktivis.me/git/qmk_firmware.git

test_combo.cpp (1470B)


  1. // Copyright 2023 Stefan Kerkmann (@KarlK90)
  2. // Copyright 2023 @filterpaper
  3. // SPDX-License-Identifier: GPL-2.0-or-later
  4. #include "keyboard_report_util.hpp"
  5. #include "keycode.h"
  6. #include "test_common.h"
  7. #include "test_driver.hpp"
  8. #include "test_fixture.hpp"
  9. #include "test_keymap_key.hpp"
  10. using testing::_;
  11. using testing::InSequence;
  12. class Combo : public TestFixture {};
  13. TEST_F(Combo, combo_modtest_tapped) {
  14. TestDriver driver;
  15. KeymapKey key_y(0, 0, 1, KC_Y);
  16. KeymapKey key_u(0, 0, 2, KC_U);
  17. set_keymap({key_y, key_u});
  18. EXPECT_REPORT(driver, (KC_SPACE));
  19. EXPECT_EMPTY_REPORT(driver);
  20. tap_combo({key_y, key_u});
  21. VERIFY_AND_CLEAR(driver);
  22. }
  23. TEST_F(Combo, combo_modtest_held_longer_than_tapping_term) {
  24. TestDriver driver;
  25. KeymapKey key_y(0, 0, 1, KC_Y);
  26. KeymapKey key_u(0, 0, 2, KC_U);
  27. set_keymap({key_y, key_u});
  28. EXPECT_REPORT(driver, (KC_RIGHT_SHIFT));
  29. EXPECT_EMPTY_REPORT(driver);
  30. tap_combo({key_y, key_u}, TAPPING_TERM + 1);
  31. VERIFY_AND_CLEAR(driver);
  32. }
  33. TEST_F(Combo, combo_osmshift_tapped) {
  34. TestDriver driver;
  35. KeymapKey key_z(0, 0, 1, KC_Z);
  36. KeymapKey key_x(0, 0, 2, KC_X);
  37. KeymapKey key_i(0, 0, 3, KC_I);
  38. set_keymap({key_z, key_x, key_i});
  39. EXPECT_NO_REPORT(driver);
  40. tap_combo({key_z, key_x});
  41. VERIFY_AND_CLEAR(driver);
  42. EXPECT_REPORT(driver, (KC_I, KC_LEFT_SHIFT));
  43. EXPECT_EMPTY_REPORT(driver);
  44. tap_key(key_i);
  45. VERIFY_AND_CLEAR(driver);
  46. }