Browse Source

Add OSL with LT and OSL with ModTapKey (SFT_T) tests

pull/23065/head
David Sannier 2 weeks ago
parent
commit
e9b5b12299
1 changed files with 154 additions and 0 deletions
  1. +154
    -0
      tests/basic/test_one_shot_keys.cpp

+ 154
- 0
tests/basic/test_one_shot_keys.cpp View File

@ -562,4 +562,158 @@ TEST_F(OneShot, OSLChainingTwoOSLsAndAdditionalKeypress) {
run_one_scan_loop();
EXPECT_TRUE(layer_state_is(0));
VERIFY_AND_CLEAR(driver);
}
TEST_F(OneShot, OSLWithShortLT) {
TestDriver driver;
InSequence s;
KeymapKey osl_key = KeymapKey{0, 0, 0, OSL(1)};
KeymapKey lt_key = KeymapKey(1, 1, 0, LT(2, KC_A));
set_keymap({osl_key, lt_key});
/* Tap OSL key */
EXPECT_NO_REPORT(driver);
tap_key(osl_key);
run_one_scan_loop();
EXPECT_TRUE(layer_state_is(1));
VERIFY_AND_CLEAR(driver);
/* Tap LT key. */
EXPECT_REPORT(driver, (lt_key.report_code)).Times(1);
EXPECT_EMPTY_REPORT(driver);
tap_key(lt_key);
run_one_scan_loop();
EXPECT_TRUE(layer_state_is(0));
VERIFY_AND_CLEAR(driver);
}
TEST_F(OneShot, OSLWithLongLTAndRegularKey) {
TestDriver driver;
InSequence s;
KeymapKey osl_key = KeymapKey{0, 0, 0, OSL(1)};
KeymapKey lt_key = KeymapKey(1, 1, 0, LT(2, KC_A));
KeymapKey regular_key = KeymapKey(2, 1, 1, KC_B);
set_keymap({osl_key, lt_key, regular_key});
/* Tap OSL key */
EXPECT_NO_REPORT(driver);
tap_key(osl_key);
run_one_scan_loop();
EXPECT_TRUE(layer_state_is(1));
VERIFY_AND_CLEAR(driver);
/* Press LT key. */
EXPECT_NO_REPORT(driver);
lt_key.press();
run_one_scan_loop();
VERIFY_AND_CLEAR(driver);
/* Idle for tapping term of mod tap hold key. */
EXPECT_NO_REPORT(driver);
idle_for(TAPPING_TERM + 1);
VERIFY_AND_CLEAR(driver);
EXPECT_TRUE(layer_state_is(2));
/* Press regular key. */
EXPECT_REPORT(driver, (regular_key.report_code)).Times(1);
regular_key.press();
run_one_scan_loop();
VERIFY_AND_CLEAR(driver);
/* Release regular key. */
EXPECT_EMPTY_REPORT(driver);
regular_key.release();
run_one_scan_loop();
VERIFY_AND_CLEAR(driver);
}
TEST_F(OneShot, OSLWithShortModTapKeyAndRegularKey) {
TestDriver driver;
InSequence s;
KeymapKey osl_key = KeymapKey{0, 0, 0, OSL(1)};
KeymapKey mod_tap_hold_key = KeymapKey(1, 1, 0, SFT_T(KC_P));
KeymapKey regular_key = KeymapKey(0, 2, 0, KC_A);
set_keymap({osl_key, mod_tap_hold_key, regular_key});
/* Tap OSL key */
EXPECT_NO_REPORT(driver);
tap_key(osl_key);
run_one_scan_loop();
EXPECT_TRUE(layer_state_is(1));
VERIFY_AND_CLEAR(driver);
/* Press mod-tap-hold key. */
EXPECT_NO_REPORT(driver);
mod_tap_hold_key.press();
run_one_scan_loop();
VERIFY_AND_CLEAR(driver);
/* Release mod-tap-hold key. */
EXPECT_REPORT(driver, (KC_P));
EXPECT_EMPTY_REPORT(driver);
mod_tap_hold_key.release();
run_one_scan_loop();
VERIFY_AND_CLEAR(driver);
/* Press regular key. */
EXPECT_REPORT(driver, (regular_key.report_code));
regular_key.press();
run_one_scan_loop();
VERIFY_AND_CLEAR(driver);
/* Release regular key. */
EXPECT_EMPTY_REPORT(driver);
regular_key.release();
run_one_scan_loop();
VERIFY_AND_CLEAR(driver);
}
TEST_F(OneShot, OSLWithLongModTapKeyAndRegularKey) {
TestDriver driver;
InSequence s;
KeymapKey osl_key = KeymapKey{0, 0, 0, OSL(1)};
KeymapKey mod_tap_hold_key = KeymapKey(1, 1, 0, SFT_T(KC_P));
KeymapKey regular_key = KeymapKey(1, 2, 0, KC_A);
set_keymap({osl_key, mod_tap_hold_key, regular_key});
/* Tap OSL key */
EXPECT_NO_REPORT(driver);
tap_key(osl_key);
run_one_scan_loop();
EXPECT_TRUE(layer_state_is(1));
VERIFY_AND_CLEAR(driver);
/* Press mod-tap-hold key. */
EXPECT_NO_REPORT(driver);
mod_tap_hold_key.press();
run_one_scan_loop();
VERIFY_AND_CLEAR(driver);
/* Idle for tapping term of mod tap hold key. */
EXPECT_REPORT(driver, (KC_LSFT));
idle_for(TAPPING_TERM + 1);
VERIFY_AND_CLEAR(driver);
/* Release mod-tap-hold key. */
EXPECT_EMPTY_REPORT(driver);
mod_tap_hold_key.release();
run_one_scan_loop();
VERIFY_AND_CLEAR(driver);
/* Press regular key. */
EXPECT_REPORT(driver, (regular_key.report_code)).Times(1);
EXPECT_EMPTY_REPORT(driver);
regular_key.press();
run_one_scan_loop();
VERIFY_AND_CLEAR(driver);
/* Release regular key. */
EXPECT_NO_REPORT(driver);
regular_key.release();
run_one_scan_loop();
VERIFY_AND_CLEAR(driver);
}

Loading…
Cancel
Save