summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorNapOli1084 <10320176+NapOli1084@users.noreply.github.com>2023-09-24 22:53:12 -0400
committerGitHub <noreply@github.com>2023-09-25 12:53:12 +1000
commite0eb90aba127f6bceacc9112bb89cb86da19f768 (patch)
tree86e6a57a8926643ae7e2cda93daa06137d523dea /tests
parentf35dee5c05b02208716e4e76955ced71a67334eb (diff)
Fix OSM on a OSL activated layer (#20410)
Diffstat (limited to 'tests')
-rw-r--r--tests/basic/test_one_shot_keys.cpp46
1 files changed, 46 insertions, 0 deletions
diff --git a/tests/basic/test_one_shot_keys.cpp b/tests/basic/test_one_shot_keys.cpp
index 2a3434bf16..9748dad7da 100644
--- a/tests/basic/test_one_shot_keys.cpp
+++ b/tests/basic/test_one_shot_keys.cpp
@@ -337,3 +337,49 @@ TEST_F(OneShot, OSLWithAdditionalKeypress) {
run_one_scan_loop();
VERIFY_AND_CLEAR(driver);
}
+
+TEST_F(OneShot, OSLWithOsmAndAdditionalKeypress) {
+ TestDriver driver;
+ InSequence s;
+ KeymapKey osl_key = KeymapKey{0, 0, 0, OSL(1)};
+ KeymapKey osm_key = KeymapKey{1, 1, 0, OSM(MOD_LSFT), KC_LSFT};
+ KeymapKey regular_key = KeymapKey{1, 1, 1, KC_A};
+
+ set_keymap({osl_key, osm_key, regular_key});
+
+ /* Press OSL key */
+ EXPECT_NO_REPORT(driver);
+ osl_key.press();
+ run_one_scan_loop();
+ VERIFY_AND_CLEAR(driver);
+
+ /* Release OSL key */
+ EXPECT_NO_REPORT(driver);
+ osl_key.release();
+ run_one_scan_loop();
+ EXPECT_TRUE(layer_state_is(1));
+ VERIFY_AND_CLEAR(driver);
+
+ /* Press and release OSM */
+ EXPECT_NO_REPORT(driver);
+ osm_key.press();
+ run_one_scan_loop();
+ osm_key.release();
+ run_one_scan_loop();
+ EXPECT_TRUE(layer_state_is(1));
+ VERIFY_AND_CLEAR(driver);
+
+ /* Press regular key */
+ EXPECT_REPORT(driver, (osm_key.report_code, regular_key.report_code)).Times(1);
+ EXPECT_EMPTY_REPORT(driver);
+ regular_key.press();
+ run_one_scan_loop();
+ EXPECT_FALSE(layer_state_is(1));
+ VERIFY_AND_CLEAR(driver);
+
+ /* Release regular key */
+ EXPECT_NO_REPORT(driver);
+ regular_key.release();
+ run_one_scan_loop();
+ VERIFY_AND_CLEAR(driver);
+}