Tests that caps word stays active after use of OSL (#19303)

This commit is contained in:
precondition 2022-12-12 22:16:12 +01:00 committed by GitHub
parent 008f1312bb
commit 454edf68d1
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -591,6 +591,57 @@ INSTANTIATE_TEST_CASE_P(
),
CapsWordDoubleTapShiftParams::GetName
);
// clang-format on
// Tests that holding a OSL keeps caps word active and shifts keys on the layer that need to be shifted.
TEST_F(CapsWord, IgnoresOSLHold) {
TestDriver driver;
KeymapKey key_a(0, 0, 0, KC_A);
KeymapKey key_osl(0, 1, 0, OSL(1));
KeymapKey key_b(1, 0, 0, KC_B);
set_keymap({key_a, key_osl, key_b});
// Allow any number of reports with no keys or only modifiers.
// clang-format off
EXPECT_CALL(driver, send_keyboard_mock(AnyOf(
KeyboardReport(),
KeyboardReport(KC_LSFT))))
.Times(AnyNumber());
EXPECT_REPORT(driver, (KC_LSFT, KC_B));
caps_word_on();
key_osl.press();
run_one_scan_loop();
tap_key(key_b);
key_osl.release();
run_one_scan_loop();
testing::Mock::VerifyAndClearExpectations(&driver);
}
// Tests that tapping a OSL keeps caps word active and shifts keys on the layer that need to be shifted.
TEST_F(CapsWord, IgnoresOSLTap) {
TestDriver driver;
KeymapKey key_a(0, 0, 0, KC_A);
KeymapKey key_osl(0, 1, 0, OSL(1));
KeymapKey key_b(1, 0, 0, KC_B);
set_keymap({key_a, key_osl, key_b});
// Allow any number of reports with no keys or only modifiers.
// clang-format off
EXPECT_CALL(driver, send_keyboard_mock(AnyOf(
KeyboardReport(),
KeyboardReport(KC_LSFT))))
.Times(AnyNumber());
EXPECT_REPORT(driver, (KC_LSFT, KC_B));
caps_word_on();
tap_key(key_osl);
tap_key(key_b);
run_one_scan_loop();
testing::Mock::VerifyAndClearExpectations(&driver);
}
// clang-format on
} // namespace