Parent directory

test_tri_layer.cpp

3590 bytes
  1// Copyright 2021 Christopher Courtney, aka Drashna Jael're  (@drashna) <drashna@live.com>
  2// SPDX-License-Identifier: GPL-2.0-or-later
  3
  4#include "test_common.hpp"
  5
  6using testing::_;
  7using testing::InSequence;
  8
  9class TriLayer : public TestFixture {};
 10
 11TEST_F(TriLayer, TriLayerLowerTest) {
 12    TestDriver driver;
 13    KeymapKey  lower_layer_key = KeymapKey{0, 0, 0, QK_TRI_LAYER_LOWER};
 14
 15    set_keymap({lower_layer_key, KeymapKey{1, 0, 0, KC_TRNS}});
 16
 17    /* Press Lower. */
 18    EXPECT_NO_REPORT(driver);
 19    lower_layer_key.press();
 20    run_one_scan_loop();
 21    EXPECT_TRUE(layer_state_is(get_tri_layer_lower_layer()));
 22    EXPECT_FALSE(layer_state_is(get_tri_layer_upper_layer()));
 23    EXPECT_FALSE(layer_state_is(get_tri_layer_adjust_layer()));
 24    VERIFY_AND_CLEAR(driver);
 25
 26    /* Release Lower. */
 27    EXPECT_NO_REPORT(driver);
 28    lower_layer_key.release();
 29    run_one_scan_loop();
 30    EXPECT_FALSE(layer_state_is(get_tri_layer_lower_layer()));
 31    EXPECT_FALSE(layer_state_is(get_tri_layer_upper_layer()));
 32    EXPECT_FALSE(layer_state_is(get_tri_layer_adjust_layer()));
 33    VERIFY_AND_CLEAR(driver);
 34}
 35
 36TEST_F(TriLayer, TriLayerUpperTest) {
 37    TestDriver driver;
 38    KeymapKey  upper_layer_key = KeymapKey{0, 0, 0, QK_TRI_LAYER_UPPER};
 39
 40    set_keymap({upper_layer_key, KeymapKey{2, 0, 0, KC_TRNS}});
 41
 42    /* Press Raise. */
 43    EXPECT_NO_REPORT(driver);
 44    upper_layer_key.press();
 45    run_one_scan_loop();
 46    EXPECT_FALSE(layer_state_is(get_tri_layer_lower_layer()));
 47    EXPECT_TRUE(layer_state_is(get_tri_layer_upper_layer()));
 48    EXPECT_FALSE(layer_state_is(get_tri_layer_adjust_layer()));
 49    VERIFY_AND_CLEAR(driver);
 50
 51    /* Release Raise. */
 52    EXPECT_NO_REPORT(driver);
 53    upper_layer_key.release();
 54    run_one_scan_loop();
 55    EXPECT_FALSE(layer_state_is(get_tri_layer_lower_layer()));
 56    EXPECT_FALSE(layer_state_is(get_tri_layer_upper_layer()));
 57    EXPECT_FALSE(layer_state_is(get_tri_layer_adjust_layer()));
 58    VERIFY_AND_CLEAR(driver);
 59}
 60
 61TEST_F(TriLayer, TriLayerAdjustTest) {
 62    TestDriver driver;
 63    KeymapKey  lower_layer_key = KeymapKey{0, 0, 0, QK_TRI_LAYER_LOWER};
 64    KeymapKey  upper_layer_key = KeymapKey{0, 1, 0, QK_TRI_LAYER_UPPER};
 65
 66    set_keymap({
 67        upper_layer_key,
 68        lower_layer_key,
 69        KeymapKey{1, 0, 0, KC_TRNS},
 70        KeymapKey{1, 1, 0, KC_TRNS},
 71        KeymapKey{2, 0, 0, KC_TRNS},
 72        KeymapKey{2, 1, 0, KC_TRNS},
 73        KeymapKey{3, 0, 0, KC_TRNS},
 74        KeymapKey{3, 1, 0, KC_TRNS},
 75    });
 76
 77    /* Press Lower, then upper, and release upper and then lower. */
 78    EXPECT_NO_REPORT(driver);
 79    lower_layer_key.press();
 80    run_one_scan_loop();
 81    EXPECT_TRUE(layer_state_is(get_tri_layer_lower_layer()));
 82    EXPECT_FALSE(layer_state_is(get_tri_layer_upper_layer()));
 83    EXPECT_FALSE(layer_state_is(get_tri_layer_adjust_layer()));
 84
 85    upper_layer_key.press();
 86    run_one_scan_loop();
 87    EXPECT_TRUE(layer_state_is(get_tri_layer_lower_layer()));
 88    EXPECT_TRUE(layer_state_is(get_tri_layer_upper_layer()));
 89    EXPECT_TRUE(layer_state_is(get_tri_layer_adjust_layer()));
 90
 91    lower_layer_key.release();
 92    run_one_scan_loop();
 93    EXPECT_FALSE(layer_state_is(get_tri_layer_lower_layer()));
 94    EXPECT_TRUE(layer_state_is(get_tri_layer_upper_layer()));
 95    EXPECT_FALSE(layer_state_is(get_tri_layer_adjust_layer()));
 96
 97    upper_layer_key.release();
 98    run_one_scan_loop();
 99    EXPECT_FALSE(layer_state_is(get_tri_layer_lower_layer()));
100    EXPECT_FALSE(layer_state_is(get_tri_layer_upper_layer()));
101    EXPECT_FALSE(layer_state_is(get_tri_layer_adjust_layer()));
102    VERIFY_AND_CLEAR(driver);
103}