aboutsummaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/basic/keymap.c9
-rw-r--r--tests/basic/keypress.cpp17
-rw-r--r--tests/test_common/keyboard_report_util.cpp14
3 files changed, 32 insertions, 8 deletions
diff --git a/tests/basic/keymap.c b/tests/basic/keymap.c
index c0e0dfb49..a3e1aaf66 100644
--- a/tests/basic/keymap.c
+++ b/tests/basic/keymap.c
@@ -20,9 +20,10 @@
20// Col2, Row 0 has to be KC_NO, because tests rely on it 20// Col2, Row 0 has to be KC_NO, because tests rely on it
21const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { 21const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
22 [0] = { 22 [0] = {
23 {KC_A, KC_B, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO}, 23 // 0 1 2 3 4 5 6 7 8 9
24 {KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO}, 24 {KC_A, KC_B, KC_NO, KC_LSFT, KC_RSFT, KC_LCTL, KC_NO, KC_NO, KC_NO, KC_NO},
25 {KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO}, 25 {KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO},
26 {KC_C, KC_D, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO}, 26 {KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO},
27 {KC_C, KC_D, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO},
27 }, 28 },
28}; 29};
diff --git a/tests/basic/keypress.cpp b/tests/basic/keypress.cpp
index e2cc7279f..4424e8696 100644
--- a/tests/basic/keypress.cpp
+++ b/tests/basic/keypress.cpp
@@ -68,4 +68,21 @@ TEST_F(KeyPress, ANonMappedKeyDoesNothing) {
68 EXPECT_CALL(driver, send_keyboard_mock(_)).Times(0); 68 EXPECT_CALL(driver, send_keyboard_mock(_)).Times(0);
69 keyboard_task(); 69 keyboard_task();
70 keyboard_task(); 70 keyboard_task();
71}
72
73TEST_F(KeyPress, LeftShiftIsReportedCorrectly) {
74 TestDriver driver;
75 press_key(3, 0);
76 press_key(0, 0);
77 // Unfortunately modifiers are also processed in the wrong order
78 EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_A)));
79 keyboard_task();
80 EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_A, KC_LSFT)));
81 keyboard_task();
82 release_key(0, 0);
83 EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_LSFT)));
84 keyboard_task();
85 release_key(3, 0);
86 EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport()));
87 keyboard_task();
71} \ No newline at end of file 88} \ No newline at end of file
diff --git a/tests/test_common/keyboard_report_util.cpp b/tests/test_common/keyboard_report_util.cpp
index aca4433dd..aa096e416 100644
--- a/tests/test_common/keyboard_report_util.cpp
+++ b/tests/test_common/keyboard_report_util.cpp
@@ -47,19 +47,25 @@ bool operator==(const report_keyboard_t& lhs, const report_keyboard_t& rhs) {
47 47
48std::ostream& operator<<(std::ostream& stream, const report_keyboard_t& value) { 48std::ostream& operator<<(std::ostream& stream, const report_keyboard_t& value) {
49 stream << "Keyboard report:" << std::endl; 49 stream << "Keyboard report:" << std::endl;
50 stream << "Mods: " << value.mods << std::endl; 50 stream << "Mods: " << (uint32_t)value.mods << std::endl;
51 stream << "Keys: ";
51 // TODO: This should probably print friendly names for the keys 52 // TODO: This should probably print friendly names for the keys
52 for (uint32_t k: get_keys(value)) { 53 for (uint32_t k: get_keys(value)) {
53 stream << k << std::endl; 54 stream << k << " ";
54 } 55 }
56 stream << std::endl;
55 return stream; 57 return stream;
56} 58}
57 59
58KeyboardReportMatcher::KeyboardReportMatcher(const std::vector<uint8_t>& keys) { 60KeyboardReportMatcher::KeyboardReportMatcher(const std::vector<uint8_t>& keys) {
59 // TODO: Support modifiers
60 memset(m_report.raw, 0, sizeof(m_report.raw)); 61 memset(m_report.raw, 0, sizeof(m_report.raw));
61 for (auto k: keys) { 62 for (auto k: keys) {
62 add_key_to_report(&m_report, k); 63 if (IS_MOD(k)) {
64 m_report.mods |= MOD_BIT(k);
65 }
66 else {
67 add_key_to_report(&m_report, k);
68 }
63 } 69 }
64} 70}
65 71