diff options
Diffstat (limited to 'tests/basic')
| -rw-r--r-- | tests/basic/keymap.c | 26 | ||||
| -rw-r--r-- | tests/basic/test_keypress.cpp | 6 | ||||
| -rw-r--r-- | tests/basic/test_macro.cpp | 94 |
3 files changed, 50 insertions, 76 deletions
diff --git a/tests/basic/keymap.c b/tests/basic/keymap.c index 5dd9aaeb6..02b3cc961 100644 --- a/tests/basic/keymap.c +++ b/tests/basic/keymap.c | |||
| @@ -21,22 +21,24 @@ | |||
| 21 | 21 | ||
| 22 | #define COMBO1 RSFT(LCTL(KC_O)) | 22 | #define COMBO1 RSFT(LCTL(KC_O)) |
| 23 | 23 | ||
| 24 | const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | 24 | const uint16_t PROGMEM |
| 25 | [0] = { | 25 | keymaps[][MATRIX_ROWS][MATRIX_COLS] = |
| 26 | // 0 1 2 3 4 5 6 7 8 9 | 26 | { |
| 27 | {KC_A, KC_B, KC_NO, KC_LSFT, KC_RSFT, KC_LCTL, COMBO1, SFT_T(KC_P), M(0), KC_NO}, | 27 | [0] = |
| 28 | {KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO}, | 28 | { |
| 29 | {KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO}, | 29 | // 0 1 2 3 4 5 6 7 8 9 |
| 30 | {KC_C, KC_D, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO}, | 30 | {KC_A, KC_B, KC_NO, KC_LSFT, KC_RSFT, KC_LCTL, COMBO1, SFT_T(KC_P), M(0), KC_NO}, |
| 31 | }, | 31 | {KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO}, |
| 32 | {KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO}, | ||
| 33 | {KC_C, KC_D, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO}, | ||
| 34 | }, | ||
| 32 | }; | 35 | }; |
| 33 | 36 | ||
| 34 | const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) { | 37 | const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) { |
| 35 | if (record->event.pressed) { | 38 | if (record->event.pressed) { |
| 36 | switch(id) { | 39 | switch (id) { |
| 37 | case 0: | 40 | case 0: |
| 38 | return MACRO(D(LSFT), T(H), U(LSFT), T(E), T(L), T(L), T(O), T(SPACE), W(100), | 41 | return MACRO(D(LSFT), T(H), U(LSFT), T(E), T(L), T(L), T(O), T(SPACE), W(100), D(LSFT), T(W), U(LSFT), I(10), T(O), T(R), T(L), T(D), D(LSFT), T(1), U(LSFT), END); |
| 39 | D(LSFT), T(W), U(LSFT), I(10), T(O), T(R), T(L), T(D), D(LSFT), T(1), U(LSFT), END); | ||
| 40 | } | 42 | } |
| 41 | } | 43 | } |
| 42 | return MACRO_NONE; | 44 | return MACRO_NONE; |
diff --git a/tests/basic/test_keypress.cpp b/tests/basic/test_keypress.cpp index 194b1745b..e5247911c 100644 --- a/tests/basic/test_keypress.cpp +++ b/tests/basic/test_keypress.cpp | |||
| @@ -41,15 +41,15 @@ TEST_F(KeyPress, CorrectKeysAreReportedWhenTwoKeysArePressed) { | |||
| 41 | TestDriver driver; | 41 | TestDriver driver; |
| 42 | press_key(1, 0); | 42 | press_key(1, 0); |
| 43 | press_key(0, 3); | 43 | press_key(0, 3); |
| 44 | //Note that QMK only processes one key at a time | 44 | // Note that QMK only processes one key at a time |
| 45 | //See issue #1476 for more information | 45 | // See issue #1476 for more information |
| 46 | EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_B))); | 46 | EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_B))); |
| 47 | keyboard_task(); | 47 | keyboard_task(); |
| 48 | EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_B, KC_C))); | 48 | EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_B, KC_C))); |
| 49 | keyboard_task(); | 49 | keyboard_task(); |
| 50 | release_key(1, 0); | 50 | release_key(1, 0); |
| 51 | release_key(0, 3); | 51 | release_key(0, 3); |
| 52 | //Note that the first key released is the first one in the matrix order | 52 | // Note that the first key released is the first one in the matrix order |
| 53 | EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_C))); | 53 | EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_C))); |
| 54 | keyboard_task(); | 54 | keyboard_task(); |
| 55 | EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport())); | 55 | EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport())); |
diff --git a/tests/basic/test_macro.cpp b/tests/basic/test_macro.cpp index 80676d515..a1fa31708 100644 --- a/tests/basic/test_macro.cpp +++ b/tests/basic/test_macro.cpp | |||
| @@ -22,78 +22,50 @@ using testing::InvokeWithoutArgs; | |||
| 22 | 22 | ||
| 23 | class Macro : public TestFixture {}; | 23 | class Macro : public TestFixture {}; |
| 24 | 24 | ||
| 25 | #define AT_TIME(t) WillOnce(InvokeWithoutArgs([current_time]() {EXPECT_EQ(timer_elapsed32(current_time), t);})) | 25 | #define AT_TIME(t) WillOnce(InvokeWithoutArgs([current_time]() { EXPECT_EQ(timer_elapsed32(current_time), t); })) |
| 26 | 26 | ||
| 27 | TEST_F(Macro, PlayASimpleMacro) { | 27 | TEST_F(Macro, PlayASimpleMacro) { |
| 28 | TestDriver driver; | 28 | TestDriver driver; |
| 29 | InSequence s; | 29 | InSequence s; |
| 30 | press_key(8, 0); | 30 | press_key(8, 0); |
| 31 | uint32_t current_time = timer_read32(); | 31 | uint32_t current_time = timer_read32(); |
| 32 | EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_LSFT))) | 32 | EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_LSFT))).AT_TIME(0); |
| 33 | .AT_TIME(0); | 33 | EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_LSFT, KC_H))).AT_TIME(0); |
| 34 | EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_LSFT, KC_H))) | 34 | EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_LSFT))).AT_TIME(0); |
| 35 | .AT_TIME(0); | 35 | EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport())).AT_TIME(0); |
| 36 | EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_LSFT))) | 36 | EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_E))).AT_TIME(0); |
| 37 | .AT_TIME(0); | ||
| 38 | EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport())) | ||
| 39 | .AT_TIME(0); | ||
| 40 | EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_E))) | ||
| 41 | .AT_TIME(0); | ||
| 42 | // The macro system could actually skip these empty keyboard reports | 37 | // The macro system could actually skip these empty keyboard reports |
| 43 | // it should be enough to just send a report with the next key down | 38 | // it should be enough to just send a report with the next key down |
| 44 | EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport())) | 39 | EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport())).AT_TIME(0); |
| 45 | .AT_TIME(0); | 40 | EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_L))).AT_TIME(0); |
| 46 | EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_L))) | 41 | EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport())).AT_TIME(0); |
| 47 | .AT_TIME(0); | 42 | EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_L))).AT_TIME(0); |
| 48 | EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport())) | 43 | EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport())).AT_TIME(0); |
| 49 | .AT_TIME(0); | 44 | EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_O))).AT_TIME(0); |
| 50 | EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_L))) | 45 | EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport())).AT_TIME(0); |
| 51 | .AT_TIME(0); | 46 | EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_SPACE))).AT_TIME(0); |
| 52 | EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport())) | 47 | EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport())).AT_TIME(0); |
| 53 | .AT_TIME(0); | 48 | EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_LSFT))).AT_TIME(100); |
| 54 | EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_O))) | 49 | EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_LSFT, KC_W))).AT_TIME(100); |
| 55 | .AT_TIME(0); | 50 | EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_LSFT))).AT_TIME(100); |
| 56 | EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport())) | 51 | EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport())).AT_TIME(100); |
| 57 | .AT_TIME(0); | ||
| 58 | EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_SPACE))) | ||
| 59 | .AT_TIME(0); | ||
| 60 | EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport())) | ||
| 61 | .AT_TIME(0); | ||
| 62 | EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_LSFT))) | ||
| 63 | .AT_TIME(100); | ||
| 64 | EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_LSFT, KC_W))) | ||
| 65 | .AT_TIME(100); | ||
| 66 | EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_LSFT))) | ||
| 67 | .AT_TIME(100); | ||
| 68 | EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport())) | ||
| 69 | .AT_TIME(100); | ||
| 70 | EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_O))) | 52 | EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_O))) |
| 71 | // BUG: The timer should not really have advanced 10 ms here | 53 | // BUG: The timer should not really have advanced 10 ms here |
| 72 | // See issue #1477 | 54 | // See issue #1477 |
| 73 | .AT_TIME(110); | 55 | .AT_TIME(110); |
| 74 | EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport())) | 56 | EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport())) |
| 75 | // BUG: The timer should not advance on both keydown and key-up | 57 | // BUG: The timer should not advance on both keydown and key-up |
| 76 | // See issue #1477 | 58 | // See issue #1477 |
| 77 | .AT_TIME(120); | 59 | .AT_TIME(120); |
| 78 | EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_R))) | 60 | EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_R))).AT_TIME(130); |
| 79 | .AT_TIME(130); | 61 | EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport())).AT_TIME(140); |
| 80 | EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport())) | 62 | EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_L))).AT_TIME(150); |
| 81 | .AT_TIME(140); | 63 | EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport())).AT_TIME(160); |
| 82 | EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_L))) | 64 | EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_D))).AT_TIME(170); |
| 83 | .AT_TIME(150); | 65 | EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport())).AT_TIME(180); |
| 84 | EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport())) | 66 | EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_LSFT))).AT_TIME(190); |
| 85 | .AT_TIME(160); | 67 | EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_LSFT, KC_1))).AT_TIME(200); |
| 86 | EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_D))) | 68 | EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_LSFT))).AT_TIME(210); |
| 87 | .AT_TIME(170); | 69 | EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport())).AT_TIME(220); |
| 88 | EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport())) | ||
| 89 | .AT_TIME(180); | ||
| 90 | EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_LSFT))) | ||
| 91 | .AT_TIME(190); | ||
| 92 | EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_LSFT, KC_1))) | ||
| 93 | .AT_TIME(200); | ||
| 94 | EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_LSFT))) | ||
| 95 | .AT_TIME(210); | ||
| 96 | EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport())) | ||
| 97 | .AT_TIME(220); | ||
| 98 | run_one_scan_loop(); | 70 | run_one_scan_loop(); |
| 99 | } \ No newline at end of file | 71 | } \ No newline at end of file |
