qmk-firmware/tests/test_common
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Pascal Getreuer 95d20e6d8b
Fix and add unit tests for Caps Word to work with Unicode Map, Auto Shift, Retro Shift. (#17284)
* Fix Caps Word and Unicode Map

* Tests for Caps Word + Auto Shift and Unicode Map.

* Fix formatting

* Add additional keyboard report expectation macros

This commit defines five test utilities, EXPECT_REPORT, EXPECT_UNICODE,
EXPECT_EMPTY_REPORT, EXPECT_ANY_REPORT and EXPECT_NO_REPORT for use with
TestDriver.

EXPECT_REPORT sets a gmock expectation that a given keyboard report will
be sent. For instance,

  EXPECT_REPORT(driver, (KC_LSFT, KC_A));

is shorthand for

  EXPECT_CALL(driver,
      send_keyboard_mock(KeyboardReport(KC_LSFT, KC_A)));

EXPECT_UNICODE sets a gmock expectation that a given Unicode code point
will be sent using UC_LNX input mode. For instance for U+2013,

  EXPECT_UNICODE(driver, 0x2013);

expects the sequence of keys:

  "Ctrl+Shift+U, 2, 0, 1, 3, space".

EXPECT_EMPTY_REPORT sets a gmock expectation that a given keyboard
report will be sent. For instance

  EXPECT_EMPTY_REPORT(driver);

expects a single report without keypresses or modifiers.

EXPECT_ANY_REPORT sets a gmock expectation that a arbitrary keyboard
report will be sent, without matching its contents. For instance

  EXPECT_ANY_REPORT(driver).Times(1);

expects a single arbitrary keyboard report will be sent.

EXPECT_NO_REPORT sets a gmock expectation that no keyboard report will
be sent at all.

* Add tap_key() and tap_keys() to TestFixture.

This commit adds a `tap_key(key)` method to TestFixture that taps a
given KeymapKey, optionally with a specified delay between press and
release.

Similarly, the method `tap_keys(key_a, key_b, key_c)` taps a sequence of
KeymapKeys.

* Use EXPECT_REPORT, tap_keys, etc. in most tests.

This commit uses EXPECT_REPORT, EXPECT_UNICODE, EXPECT_EMPTY_REPORT,
EXPECT_NO_REPORT, tap_key() and tap_keys() test utilities from the
previous two commits in most tests. Particularly the EXPECT_REPORT
macro is frequently useful and makes a nice reduction in boilerplate
needed to express many tests.

Co-authored-by: David Kosorin <david@kosorin.net>
2022-06-05 09:14:02 +02:00
..
build.mk [Tests] Increase QMK test coverage take 2 (#15269) 2021-11-23 13:31:01 +11:00
keyboard_report_util.cpp Format code according to conventions (#16322) 2022-02-12 18:29:31 +00:00
keyboard_report_util.hpp Ensure single newline at EOF for core files (#11310) 2020-12-28 04:36:32 +11:00
keymap.c [Tests] Increase QMK test coverage take 2 (#15269) 2021-11-23 13:31:01 +11:00
main.cpp Allow output of logging when running unit tests (#13556) 2021-07-25 17:18:09 +01:00
matrix.c Format code according to conventions (#16322) 2022-02-12 18:29:31 +00:00
test_common.h [Tests] Increase QMK test coverage take 2 (#15269) 2021-11-23 13:31:01 +11:00
test_common.hpp add tests for action_layer.c and reset layer state after tests 2017-12-15 13:23:30 -05:00
test_driver.cpp Fix and add unit tests for Caps Word to work with Unicode Map, Auto Shift, Retro Shift. (#17284) 2022-06-05 09:14:02 +02:00
test_driver.hpp Fix and add unit tests for Caps Word to work with Unicode Map, Auto Shift, Retro Shift. (#17284) 2022-06-05 09:14:02 +02:00
test_fixture.cpp Fix and add unit tests for Caps Word to work with Unicode Map, Auto Shift, Retro Shift. (#17284) 2022-06-05 09:14:02 +02:00
test_fixture.hpp Fix and add unit tests for Caps Word to work with Unicode Map, Auto Shift, Retro Shift. (#17284) 2022-06-05 09:14:02 +02:00
test_keymap_key.cpp [Tests] Increase QMK test coverage take 2 (#15269) 2021-11-23 13:31:01 +11:00
test_keymap_key.hpp [Tests] Increase QMK test coverage take 2 (#15269) 2021-11-23 13:31:01 +11:00
test_logger.cpp Format code according to conventions (#16322) 2022-02-12 18:29:31 +00:00
test_logger.hpp [Tests] Increase QMK test coverage take 2 (#15269) 2021-11-23 13:31:01 +11:00
test_matrix.h Missed a couple more #pragma onces (#11351) 2020-12-30 15:44:53 +00:00