diff options
Diffstat (limited to 'tests/basic/test_macro.cpp')
| -rw-r--r-- | tests/basic/test_macro.cpp | 94 |
1 files changed, 33 insertions, 61 deletions
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 |
