qmk_firmware

QMK firmware for my keyboards (Corne, Sweep Ferris) and trackball (Ploopy Adept)
Log | Files | Refs | Submodules | LICENSE

test_unicode.cpp (2266B)


      1 // Copyright 2023 QMK
      2 // SPDX-License-Identifier: GPL-2.0-or-later
      3 
      4 #include "keyboard_report_util.hpp"
      5 #include "keycode.h"
      6 #include "test_common.hpp"
      7 #include "test_keymap_key.hpp"
      8 
      9 using testing::_;
     10 
     11 class Unicode : public TestFixture {};
     12 
     13 TEST_F(Unicode, sends_bmp_unicode_sequence) {
     14     TestDriver driver;
     15 
     16     set_unicode_input_mode(UNICODE_MODE_LINUX);
     17 
     18     EXPECT_UNICODE(driver, 0x03A8); // Ψ
     19     register_unicode(0x03A8);
     20 
     21     VERIFY_AND_CLEAR(driver);
     22 }
     23 
     24 TEST_F(Unicode, sends_smp_unicode_sequence) {
     25     TestDriver driver;
     26 
     27     set_unicode_input_mode(UNICODE_MODE_LINUX);
     28 
     29     EXPECT_UNICODE(driver, 0x1F9D9); // 🧙
     30     register_unicode(0x1F9D9);
     31 
     32     VERIFY_AND_CLEAR(driver);
     33 }
     34 
     35 TEST_F(Unicode, sends_surrogate_pair_for_macos) {
     36     TestDriver driver;
     37 
     38     set_unicode_input_mode(UNICODE_MODE_MACOS);
     39 
     40     // EXPECT_UNICODE() assumes Linux input mode
     41     {
     42         testing::InSequence s;
     43 
     44         // Alt+D83EDDD9 🧙
     45         EXPECT_REPORT(driver, (KC_LEFT_ALT));
     46         EXPECT_REPORT(driver, (KC_D, KC_LEFT_ALT));
     47         EXPECT_REPORT(driver, (KC_LEFT_ALT));
     48         EXPECT_REPORT(driver, (KC_8, KC_LEFT_ALT));
     49         EXPECT_REPORT(driver, (KC_LEFT_ALT));
     50         EXPECT_REPORT(driver, (KC_3, KC_LEFT_ALT));
     51         EXPECT_REPORT(driver, (KC_LEFT_ALT));
     52         EXPECT_REPORT(driver, (KC_E, KC_LEFT_ALT));
     53         EXPECT_REPORT(driver, (KC_LEFT_ALT));
     54         EXPECT_REPORT(driver, (KC_D, KC_LEFT_ALT));
     55         EXPECT_REPORT(driver, (KC_LEFT_ALT));
     56         EXPECT_REPORT(driver, (KC_D, KC_LEFT_ALT));
     57         EXPECT_REPORT(driver, (KC_LEFT_ALT));
     58         EXPECT_REPORT(driver, (KC_D, KC_LEFT_ALT));
     59         EXPECT_REPORT(driver, (KC_LEFT_ALT));
     60         EXPECT_REPORT(driver, (KC_9, KC_LEFT_ALT));
     61         EXPECT_REPORT(driver, (KC_LEFT_ALT));
     62         EXPECT_EMPTY_REPORT(driver);
     63     }
     64 
     65     register_unicode(0x1F9D9);
     66 
     67     VERIFY_AND_CLEAR(driver);
     68 }
     69 
     70 TEST_F(Unicode, sends_unicode_string) {
     71     TestDriver driver;
     72 
     73     set_unicode_input_mode(UNICODE_MODE_LINUX);
     74 
     75     {
     76         testing::InSequence s;
     77 
     78         EXPECT_UNICODE(driver, 0xFF31);
     79         EXPECT_UNICODE(driver, 0xFF2D);
     80         EXPECT_UNICODE(driver, 0xFF2B);
     81         EXPECT_UNICODE(driver, 0xFF01);
     82     }
     83     send_unicode_string("QMK!");
     84 
     85     VERIFY_AND_CLEAR(driver);
     86 }