diff options
| author | Pascal Getreuer <50221757+getreuer@users.noreply.github.com> | 2023-02-14 12:44:42 -0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-02-14 12:44:42 -0800 |
| commit | 7d692d64f3997b816607c282b09fecae14212fe6 (patch) | |
| tree | 1a02ea54dfd987eee162f41031e512351878036b /tests/basic/test_action_layer.cpp | |
| parent | 9908ed7ecd1bc0c45f0322b959811bd8fd641961 (diff) | |
Fix Layer Mod handling of with right-handed mods. (#19845)
Diffstat (limited to 'tests/basic/test_action_layer.cpp')
| -rw-r--r-- | tests/basic/test_action_layer.cpp | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/tests/basic/test_action_layer.cpp b/tests/basic/test_action_layer.cpp index 883d99b404..b7ecfa52ef 100644 --- a/tests/basic/test_action_layer.cpp +++ b/tests/basic/test_action_layer.cpp | |||
| @@ -19,6 +19,7 @@ | |||
| 19 | #include "test_common.hpp" | 19 | #include "test_common.hpp" |
| 20 | 20 | ||
| 21 | using testing::_; | 21 | using testing::_; |
| 22 | using testing::AnyNumber; | ||
| 22 | using testing::InSequence; | 23 | using testing::InSequence; |
| 23 | 24 | ||
| 24 | class ActionLayer : public TestFixture {}; | 25 | class ActionLayer : public TestFixture {}; |
| @@ -399,3 +400,65 @@ TEST_F(ActionLayer, LayerTapReleasedBeforeKeypressReleaseWithModifiers) { | |||
| 399 | EXPECT_TRUE(layer_state_is(0)); | 400 | EXPECT_TRUE(layer_state_is(0)); |
| 400 | VERIFY_AND_CLEAR(driver); | 401 | VERIFY_AND_CLEAR(driver); |
| 401 | } | 402 | } |
| 403 | |||
| 404 | TEST_F(ActionLayer, LayerModWithKeypress) { | ||
| 405 | TestDriver driver; | ||
| 406 | KeymapKey layer_key = KeymapKey{0, 0, 0, LM(1, MOD_RALT)}; | ||
| 407 | KeymapKey regular_key = KeymapKey{0, 1, 0, KC_A}; | ||
| 408 | set_keymap({layer_key, regular_key, KeymapKey{1, 1, 0, KC_B}}); | ||
| 409 | |||
| 410 | // Allow any number of reports with no keys or only KC_RALT. | ||
| 411 | // clang-format off | ||
| 412 | EXPECT_CALL(driver, send_keyboard_mock(AnyOf( | ||
| 413 | KeyboardReport(), | ||
| 414 | KeyboardReport(KC_RALT)))) | ||
| 415 | .Times(AnyNumber()); | ||
| 416 | // clang-format on | ||
| 417 | EXPECT_REPORT(driver, (KC_RALT, KC_B)).Times(1); | ||
| 418 | |||
| 419 | layer_key.press(); | ||
| 420 | run_one_scan_loop(); | ||
| 421 | EXPECT_TRUE(layer_state_is(1)); | ||
| 422 | EXPECT_EQ(get_mods(), MOD_BIT(KC_RALT)); | ||
| 423 | |||
| 424 | tap_key(regular_key); | ||
| 425 | |||
| 426 | layer_key.release(); | ||
| 427 | run_one_scan_loop(); | ||
| 428 | EXPECT_TRUE(layer_state_is(0)); | ||
| 429 | EXPECT_EQ(get_mods(), 0); | ||
| 430 | |||
| 431 | VERIFY_AND_CLEAR(driver); | ||
| 432 | } | ||
| 433 | |||
| 434 | TEST_F(ActionLayer, LayerModHonorsModConfig) { | ||
| 435 | TestDriver driver; | ||
| 436 | KeymapKey layer_key = KeymapKey{0, 0, 0, LM(1, MOD_RALT)}; | ||
| 437 | KeymapKey regular_key = KeymapKey{0, 1, 0, KC_A}; | ||
| 438 | set_keymap({layer_key, regular_key, KeymapKey{1, 1, 0, KC_B}}); | ||
| 439 | |||
| 440 | // Allow any number of reports with no keys or only KC_RALT. | ||
| 441 | // clang-format off | ||
| 442 | EXPECT_CALL(driver, send_keyboard_mock(AnyOf( | ||
| 443 | KeyboardReport(), | ||
| 444 | KeyboardReport(KC_RGUI)))) | ||
| 445 | .Times(AnyNumber()); | ||
| 446 | // clang-format on | ||
| 447 | EXPECT_REPORT(driver, (KC_RGUI, KC_B)).Times(1); | ||
| 448 | |||
| 449 | keymap_config.swap_ralt_rgui = true; | ||
| 450 | |||
| 451 | layer_key.press(); | ||
| 452 | run_one_scan_loop(); | ||
| 453 | EXPECT_TRUE(layer_state_is(1)); | ||
| 454 | EXPECT_EQ(get_mods(), MOD_BIT(KC_RGUI)); | ||
| 455 | |||
| 456 | tap_key(regular_key); | ||
| 457 | |||
| 458 | layer_key.release(); | ||
| 459 | run_one_scan_loop(); | ||
| 460 | EXPECT_TRUE(layer_state_is(0)); | ||
| 461 | EXPECT_EQ(get_mods(), 0); | ||
| 462 | |||
| 463 | VERIFY_AND_CLEAR(driver); | ||
| 464 | } | ||
