test_combo.cpp 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  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 "quantum.h"
  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. using testing::_;
  12. using testing::InSequence;
  13. class Combo : public TestFixture {};
  14. TEST_F(Combo, combo_modtest_tapped) {
  15. TestDriver driver;
  16. KeymapKey key_y(0, 0, 1, KC_Y);
  17. KeymapKey key_u(0, 0, 2, KC_U);
  18. set_keymap({key_y, key_u});
  19. EXPECT_REPORT(driver, (KC_SPACE));
  20. EXPECT_EMPTY_REPORT(driver);
  21. tap_combo({key_y, key_u});
  22. VERIFY_AND_CLEAR(driver);
  23. }
  24. TEST_F(Combo, combo_modtest_held_longer_than_tapping_term) {
  25. TestDriver driver;
  26. KeymapKey key_y(0, 0, 1, KC_Y);
  27. KeymapKey key_u(0, 0, 2, KC_U);
  28. set_keymap({key_y, key_u});
  29. EXPECT_REPORT(driver, (KC_RIGHT_SHIFT));
  30. EXPECT_EMPTY_REPORT(driver);
  31. tap_combo({key_y, key_u}, TAPPING_TERM + 1);
  32. VERIFY_AND_CLEAR(driver);
  33. }
  34. TEST_F(Combo, combo_osmshift_tapped) {
  35. TestDriver driver;
  36. KeymapKey key_z(0, 0, 1, KC_Z);
  37. KeymapKey key_x(0, 0, 2, KC_X);
  38. KeymapKey key_i(0, 0, 3, KC_I);
  39. set_keymap({key_z, key_x, key_i});
  40. EXPECT_NO_REPORT(driver);
  41. tap_combo({key_z, key_x});
  42. VERIFY_AND_CLEAR(driver);
  43. EXPECT_REPORT(driver, (KC_I, KC_LEFT_SHIFT));
  44. EXPECT_EMPTY_REPORT(driver);
  45. tap_key(key_i);
  46. VERIFY_AND_CLEAR(driver);
  47. }