Browse Source

Add tests for layer lock

pull/23430/head
Drashna Jael're 3 months ago
parent
commit
d8a4ddbb54
No known key found for this signature in database GPG Key ID: DBA1FD3A860D1B11
3 changed files with 164 additions and 0 deletions
  1. +8
    -0
      tests/layer_lock/config.h
  2. +8
    -0
      tests/layer_lock/test.mk
  3. +148
    -0
      tests/layer_lock/test_layer_lock.cpp

+ 8
- 0
tests/layer_lock/config.h View File

@ -0,0 +1,8 @@
// Copyright 2021 Christopher Courtney, aka Drashna Jael're (@drashna) <drashna@live.com>
// SPDX-License-Identifier: GPL-2.0-or-later
#pragma once
#include "test_common.h"
#define LAYER_LOCK_IDLE_TIMEOUT 1000

+ 8
- 0
tests/layer_lock/test.mk View File

@ -0,0 +1,8 @@
# Copyright 2021 Christopher Courtney, aka Drashna Jael're (@drashna) <drashna@live.com>
# SPDX-License-Identifier: GPL-2.0-or-later
# --------------------------------------------------------------------------------
# Keep this file, even if it is empty, as a marker that this folder contains tests
# --------------------------------------------------------------------------------
LAYER_LOCK_ENABLE = yes

+ 148
- 0
tests/layer_lock/test_layer_lock.cpp View File

@ -0,0 +1,148 @@
// Copyright 2021 Christopher Courtney, aka Drashna Jael're (@drashna) <drashna@live.com>
// SPDX-License-Identifier: GPL-2.0-or-later
#include "keycodes.h"
#include "test_common.hpp"
using testing::_;
class LayerLock : public TestFixture {};
TEST_F(LayerLock, LayerLockMomentaryTest) {
TestDriver driver;
KeymapKey key_layer = KeymapKey(0, 0, 0, MO(1));
KeymapKey key_a = KeymapKey(0, 1, 0, KC_A);
KeymapKey key_trns = KeymapKey(1, 0, 0, KC_TRNS);
KeymapKey key_ll = KeymapKey(1, 1, 0, QK_LAYER_LOCK);
set_keymap({key_layer, key_a, key_trns, key_ll});
/* Press Lower. */
EXPECT_NO_REPORT(driver);
key_layer.press();
run_one_scan_loop();
EXPECT_TRUE(layer_state_is(1));
VERIFY_AND_CLEAR(driver);
EXPECT_NO_REPORT(driver);
tap_key(key_ll);
EXPECT_TRUE(layer_state_is(1));
VERIFY_AND_CLEAR(driver);
EXPECT_NO_REPORT(driver);
key_layer.release();
run_one_scan_loop();
EXPECT_TRUE(layer_state_is(1));
VERIFY_AND_CLEAR(driver);
}
TEST_F(LayerLock, LayerLockLayerTapTest) {
TestDriver driver;
KeymapKey key_layer = KeymapKey(0, 0, 0, LT(1, KC_B));
KeymapKey key_a = KeymapKey(0, 1, 0, KC_A);
KeymapKey key_trns = KeymapKey(1, 0, 0, KC_TRNS);
KeymapKey key_ll = KeymapKey(1, 1, 0, QK_LAYER_LOCK);
set_keymap({key_layer, key_a, key_trns, key_ll});
/* Press Lower. */
EXPECT_NO_REPORT(driver);
key_layer.press();
idle_for(TAPPING_TERM);
run_one_scan_loop();
EXPECT_TRUE(layer_state_is(1));
VERIFY_AND_CLEAR(driver);
EXPECT_NO_REPORT(driver);
tap_key(key_ll);
EXPECT_TRUE(layer_state_is(1));
VERIFY_AND_CLEAR(driver);
}
TEST_F(LayerLock, LayerLockOneshotTapTest) {
TestDriver driver;
KeymapKey key_layer = KeymapKey(0, 0, 0, OSL(1));
KeymapKey key_a = KeymapKey(0, 1, 0, KC_A);
KeymapKey key_trns = KeymapKey(1, 0, 0, KC_TRNS);
KeymapKey key_ll = KeymapKey(1, 1, 0, QK_LAYER_LOCK);
set_keymap({key_layer, key_a, key_trns, key_ll});
/* Press Lower. */
EXPECT_NO_REPORT(driver);
tap_key(key_layer);
run_one_scan_loop();
EXPECT_TRUE(layer_state_is(1));
VERIFY_AND_CLEAR(driver);
EXPECT_NO_REPORT(driver);
tap_key(key_ll);
run_one_scan_loop();
EXPECT_TRUE(layer_state_is(1));
VERIFY_AND_CLEAR(driver);
}
TEST_F(LayerLock, LayerLockOneshotHoldTest) {
TestDriver driver;
KeymapKey key_layer = KeymapKey(0, 0, 0, OSL(1));
KeymapKey key_a = KeymapKey(0, 1, 0, KC_A);
KeymapKey key_trns = KeymapKey(1, 0, 0, KC_TRNS);
KeymapKey key_ll = KeymapKey(1, 1, 0, QK_LAYER_LOCK);
set_keymap({key_layer, key_a, key_trns, key_ll});
/* Press Lower. */
EXPECT_NO_REPORT(driver);
key_layer.press();
idle_for(TAPPING_TERM);
run_one_scan_loop();
EXPECT_TRUE(layer_state_is(1));
VERIFY_AND_CLEAR(driver);
EXPECT_NO_REPORT(driver);
tap_key(key_ll);
run_one_scan_loop();
EXPECT_TRUE(layer_state_is(1));
VERIFY_AND_CLEAR(driver);
EXPECT_NO_REPORT(driver);
key_layer.release();
run_one_scan_loop();
EXPECT_TRUE(layer_state_is(1));
VERIFY_AND_CLEAR(driver);
}
TEST_F(LayerLock, LayerLockTimeoutTest) {
TestDriver driver;
KeymapKey key_layer = KeymapKey(0, 0, 0, MO(1));
KeymapKey key_a = KeymapKey(0, 1, 0, KC_A);
KeymapKey key_trns = KeymapKey(1, 0, 0, KC_TRNS);
KeymapKey key_ll = KeymapKey(1, 1, 0, QK_LAYER_LOCK);
set_keymap({key_layer, key_a, key_trns, key_ll});
/* Press Lower. */
EXPECT_NO_REPORT(driver);
key_layer.press();
run_one_scan_loop();
EXPECT_TRUE(layer_state_is(1));
VERIFY_AND_CLEAR(driver);
EXPECT_NO_REPORT(driver);
tap_key(key_ll);
EXPECT_TRUE(layer_state_is(1));
VERIFY_AND_CLEAR(driver);
EXPECT_NO_REPORT(driver);
key_layer.release();
run_one_scan_loop();
EXPECT_TRUE(layer_state_is(1));
VERIFY_AND_CLEAR(driver);
EXPECT_NO_REPORT(driver);
idle_for(LAYER_LOCK_IDLE_TIMEOUT);
run_one_scan_loop();
EXPECT_FALSE(layer_state_is(1));
VERIFY_AND_CLEAR(driver);
}

Loading…
Cancel
Save