diff options
Diffstat (limited to 'tests/caps_word')
-rw-r--r-- | tests/caps_word/auto_shift/config.h | 21 | ||||
-rw-r--r-- | tests/caps_word/auto_shift/retro_shift/config.h (renamed from tests/caps_word/caps_word_autoshift/config.h) | 0 | ||||
-rw-r--r-- | tests/caps_word/auto_shift/retro_shift/test.mk (renamed from tests/caps_word/caps_word_autoshift/test.mk) | 0 | ||||
-rw-r--r-- | tests/caps_word/auto_shift/retro_shift/test_caps_word_retroshift.cpp (renamed from tests/caps_word/caps_word_autoshift/test_caps_word_autoshift.cpp) | 4 | ||||
-rw-r--r-- | tests/caps_word/auto_shift/test.mk | 18 | ||||
-rw-r--r-- | tests/caps_word/auto_shift/test_caps_word_autoshift.cpp | 66 | ||||
-rw-r--r-- | tests/caps_word/unicodemap/config.h (renamed from tests/caps_word/caps_word_unicodemap/config.h) | 0 | ||||
-rw-r--r-- | tests/caps_word/unicodemap/test.mk (renamed from tests/caps_word/caps_word_unicodemap/test.mk) | 0 | ||||
-rw-r--r-- | tests/caps_word/unicodemap/test_caps_word_unicodemap.cpp (renamed from tests/caps_word/caps_word_unicodemap/test_caps_word_unicodemap.cpp) | 0 |
9 files changed, 109 insertions, 0 deletions
diff --git a/tests/caps_word/auto_shift/config.h b/tests/caps_word/auto_shift/config.h new file mode 100644 index 0000000000..aff389100e --- /dev/null +++ b/tests/caps_word/auto_shift/config.h @@ -0,0 +1,21 @@ +// Copyright 2022 Google LLC +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 2 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see <http://www.gnu.org/licenses/>. + +#pragma once + +#include "test_common.h" + +#define TAPPING_TERM 200 +#define AUTO_SHIFT_TIMEOUT 150 diff --git a/tests/caps_word/caps_word_autoshift/config.h b/tests/caps_word/auto_shift/retro_shift/config.h index b80f53b9dd..b80f53b9dd 100644 --- a/tests/caps_word/caps_word_autoshift/config.h +++ b/tests/caps_word/auto_shift/retro_shift/config.h diff --git a/tests/caps_word/caps_word_autoshift/test.mk b/tests/caps_word/auto_shift/retro_shift/test.mk index 7f717d7fc1..7f717d7fc1 100644 --- a/tests/caps_word/caps_word_autoshift/test.mk +++ b/tests/caps_word/auto_shift/retro_shift/test.mk diff --git a/tests/caps_word/caps_word_autoshift/test_caps_word_autoshift.cpp b/tests/caps_word/auto_shift/retro_shift/test_caps_word_retroshift.cpp index 01b1a78a5f..03a7a61a73 100644 --- a/tests/caps_word/caps_word_autoshift/test_caps_word_autoshift.cpp +++ b/tests/caps_word/auto_shift/retro_shift/test_caps_word_retroshift.cpp @@ -27,6 +27,10 @@ KeyboardReport(KC_LSFT)))) // clang-format on +bool get_auto_shifted_key(uint16_t keycode, keyrecord_t *record) { + return true; +} + using ::testing::_; using ::testing::AnyNumber; using ::testing::AnyOf; diff --git a/tests/caps_word/auto_shift/test.mk b/tests/caps_word/auto_shift/test.mk new file mode 100644 index 0000000000..7f717d7fc1 --- /dev/null +++ b/tests/caps_word/auto_shift/test.mk @@ -0,0 +1,18 @@ +# Copyright 2022 Google LLC +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. + +CAPS_WORD_ENABLE = yes +AUTO_SHIFT_ENABLE = yes + diff --git a/tests/caps_word/auto_shift/test_caps_word_autoshift.cpp b/tests/caps_word/auto_shift/test_caps_word_autoshift.cpp new file mode 100644 index 0000000000..849b993525 --- /dev/null +++ b/tests/caps_word/auto_shift/test_caps_word_autoshift.cpp @@ -0,0 +1,66 @@ +// Copyright 2022 Google LLC +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 2 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see <http://www.gnu.org/licenses/>. + +#include "keyboard_report_util.hpp" +#include "keycode.h" +#include "test_common.hpp" +#include "test_fixture.hpp" +#include "test_keymap_key.hpp" + +using ::testing::_; +using ::testing::AnyNumber; +using ::testing::AnyOf; +using ::testing::InSequence; + +class CapsWord : public TestFixture { + public: + void SetUp() override { + caps_word_off(); + } +}; + +// Tests that with Auto Shift, letter keys are shifted by Caps Word +// regardless of whether they are released before AUTO_SHIFT_TIMEOUT. +TEST_F(CapsWord, AutoShiftKeys) { + TestDriver driver; + KeymapKey key_a(0, 0, 0, KC_A); + KeymapKey key_spc(0, 1, 0, KC_SPC); + set_keymap({key_a, key_spc}); + + // Allow any number of reports with no keys or only KC_LSFT. + // clang-format off + EXPECT_CALL(driver, send_keyboard_mock(AnyOf( + KeyboardReport(), + KeyboardReport(KC_LSFT)))) + .Times(AnyNumber()); + // clang-format on + { // Expect: "A, A, space, a". + InSequence s; + EXPECT_REPORT(driver, (KC_LSFT, KC_A)); + EXPECT_REPORT(driver, (KC_LSFT, KC_A)); + EXPECT_REPORT(driver, (KC_SPC)); + EXPECT_REPORT(driver, (KC_A)); + } + + // Turn on Caps Word and type "A (quick tap), A (long press), space, A". + caps_word_on(); + + tap_key(key_a); // Tap A quickly. + tap_key(key_a, AUTO_SHIFT_TIMEOUT + 1); // Long press A. + tap_key(key_spc); + tap_key(key_a); + + testing::Mock::VerifyAndClearExpectations(&driver); +} diff --git a/tests/caps_word/caps_word_unicodemap/config.h b/tests/caps_word/unicodemap/config.h index 0f770337b1..0f770337b1 100644 --- a/tests/caps_word/caps_word_unicodemap/config.h +++ b/tests/caps_word/unicodemap/config.h diff --git a/tests/caps_word/caps_word_unicodemap/test.mk b/tests/caps_word/unicodemap/test.mk index 92bcba762c..92bcba762c 100644 --- a/tests/caps_word/caps_word_unicodemap/test.mk +++ b/tests/caps_word/unicodemap/test.mk diff --git a/tests/caps_word/caps_word_unicodemap/test_caps_word_unicodemap.cpp b/tests/caps_word/unicodemap/test_caps_word_unicodemap.cpp index 21e5493526..21e5493526 100644 --- a/tests/caps_word/caps_word_unicodemap/test_caps_word_unicodemap.cpp +++ b/tests/caps_word/unicodemap/test_caps_word_unicodemap.cpp |