at master 3.6 kB view raw
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}