|
@@ -27,28 +27,13 @@ class Secure : public TestFixture {
|
|
void SetUp() override {
|
|
void SetUp() override {
|
|
secure_lock();
|
|
secure_lock();
|
|
}
|
|
}
|
|
- // Convenience function to tap `key`.
|
|
|
|
- void TapKey(KeymapKey key) {
|
|
|
|
- key.press();
|
|
|
|
- run_one_scan_loop();
|
|
|
|
- key.release();
|
|
|
|
- run_one_scan_loop();
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- // Taps in order each key in `keys`.
|
|
|
|
- template <typename... Ts>
|
|
|
|
- void TapKeys(Ts... keys) {
|
|
|
|
- for (KeymapKey key : {keys...}) {
|
|
|
|
- TapKey(key);
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
};
|
|
};
|
|
|
|
|
|
TEST_F(Secure, test_lock) {
|
|
TEST_F(Secure, test_lock) {
|
|
TestDriver driver;
|
|
TestDriver driver;
|
|
|
|
|
|
- // Allow any number of empty reports.
|
|
|
|
- EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport())).Times(0);
|
|
|
|
|
|
+ // Don't allow empty reports.
|
|
|
|
+ EXPECT_NO_REPORT(driver);
|
|
|
|
|
|
EXPECT_FALSE(secure_is_unlocked());
|
|
EXPECT_FALSE(secure_is_unlocked());
|
|
secure_unlock();
|
|
secure_unlock();
|
|
@@ -64,8 +49,8 @@ TEST_F(Secure, test_lock) {
|
|
TEST_F(Secure, test_unlock_timeout) {
|
|
TEST_F(Secure, test_unlock_timeout) {
|
|
TestDriver driver;
|
|
TestDriver driver;
|
|
|
|
|
|
- // Allow any number of empty reports.
|
|
|
|
- EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport())).Times(0);
|
|
|
|
|
|
+ // Don't allow empty reports.
|
|
|
|
+ EXPECT_NO_REPORT(driver);
|
|
|
|
|
|
EXPECT_FALSE(secure_is_unlocked());
|
|
EXPECT_FALSE(secure_is_unlocked());
|
|
secure_unlock();
|
|
secure_unlock();
|
|
@@ -86,13 +71,13 @@ TEST_F(Secure, test_unlock_request) {
|
|
|
|
|
|
set_keymap({key_mo, key_a, key_b, key_c, key_d});
|
|
set_keymap({key_mo, key_a, key_b, key_c, key_d});
|
|
|
|
|
|
- // Allow any number of empty reports.
|
|
|
|
- EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport())).Times(0);
|
|
|
|
|
|
+ // Don't allow empty reports.
|
|
|
|
+ EXPECT_NO_REPORT(driver);
|
|
|
|
|
|
EXPECT_TRUE(secure_is_locked());
|
|
EXPECT_TRUE(secure_is_locked());
|
|
secure_request_unlock();
|
|
secure_request_unlock();
|
|
EXPECT_TRUE(secure_is_unlocking());
|
|
EXPECT_TRUE(secure_is_unlocking());
|
|
- TapKeys(key_a, key_b, key_c, key_d);
|
|
|
|
|
|
+ tap_keys(key_a, key_b, key_c, key_d);
|
|
EXPECT_TRUE(secure_is_unlocked());
|
|
EXPECT_TRUE(secure_is_unlocked());
|
|
|
|
|
|
testing::Mock::VerifyAndClearExpectations(&driver);
|
|
testing::Mock::VerifyAndClearExpectations(&driver);
|
|
@@ -109,18 +94,18 @@ TEST_F(Secure, test_unlock_request_fail) {
|
|
set_keymap({key_e, key_a, key_b, key_c, key_d});
|
|
set_keymap({key_e, key_a, key_b, key_c, key_d});
|
|
|
|
|
|
// Allow any number of empty reports.
|
|
// Allow any number of empty reports.
|
|
- EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport())).Times(AnyNumber());
|
|
|
|
|
|
+ EXPECT_EMPTY_REPORT(driver).Times(AnyNumber());
|
|
{ // Expect the following reports in this order.
|
|
{ // Expect the following reports in this order.
|
|
InSequence s;
|
|
InSequence s;
|
|
- EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_A)));
|
|
|
|
- EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_B)));
|
|
|
|
- EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_C)));
|
|
|
|
- EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_D)));
|
|
|
|
|
|
+ EXPECT_REPORT(driver, (KC_A));
|
|
|
|
+ EXPECT_REPORT(driver, (KC_B));
|
|
|
|
+ EXPECT_REPORT(driver, (KC_C));
|
|
|
|
+ EXPECT_REPORT(driver, (KC_D));
|
|
}
|
|
}
|
|
EXPECT_TRUE(secure_is_locked());
|
|
EXPECT_TRUE(secure_is_locked());
|
|
secure_request_unlock();
|
|
secure_request_unlock();
|
|
EXPECT_TRUE(secure_is_unlocking());
|
|
EXPECT_TRUE(secure_is_unlocking());
|
|
- TapKeys(key_e, key_a, key_b, key_c, key_d);
|
|
|
|
|
|
+ tap_keys(key_e, key_a, key_b, key_c, key_d);
|
|
EXPECT_FALSE(secure_is_unlocked());
|
|
EXPECT_FALSE(secure_is_unlocked());
|
|
|
|
|
|
testing::Mock::VerifyAndClearExpectations(&driver);
|
|
testing::Mock::VerifyAndClearExpectations(&driver);
|
|
@@ -129,8 +114,8 @@ TEST_F(Secure, test_unlock_request_fail) {
|
|
TEST_F(Secure, test_unlock_request_timeout) {
|
|
TEST_F(Secure, test_unlock_request_timeout) {
|
|
TestDriver driver;
|
|
TestDriver driver;
|
|
|
|
|
|
- // Allow any number of empty reports.
|
|
|
|
- EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport())).Times(0);
|
|
|
|
|
|
+ // Don't allow empty reports.
|
|
|
|
+ EXPECT_NO_REPORT(driver);
|
|
|
|
|
|
EXPECT_FALSE(secure_is_unlocked());
|
|
EXPECT_FALSE(secure_is_unlocked());
|
|
secure_request_unlock();
|
|
secure_request_unlock();
|
|
@@ -153,16 +138,16 @@ TEST_F(Secure, test_unlock_request_fail_mid) {
|
|
set_keymap({key_e, key_a, key_b, key_c, key_d});
|
|
set_keymap({key_e, key_a, key_b, key_c, key_d});
|
|
|
|
|
|
// Allow any number of empty reports.
|
|
// Allow any number of empty reports.
|
|
- EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport())).Times(AnyNumber());
|
|
|
|
|
|
+ EXPECT_EMPTY_REPORT(driver).Times(AnyNumber());
|
|
{ // Expect the following reports in this order.
|
|
{ // Expect the following reports in this order.
|
|
InSequence s;
|
|
InSequence s;
|
|
- EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_C)));
|
|
|
|
- EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_D)));
|
|
|
|
|
|
+ EXPECT_REPORT(driver, (KC_C));
|
|
|
|
+ EXPECT_REPORT(driver, (KC_D));
|
|
}
|
|
}
|
|
EXPECT_FALSE(secure_is_unlocked());
|
|
EXPECT_FALSE(secure_is_unlocked());
|
|
secure_request_unlock();
|
|
secure_request_unlock();
|
|
EXPECT_TRUE(secure_is_unlocking());
|
|
EXPECT_TRUE(secure_is_unlocking());
|
|
- TapKeys(key_a, key_b, key_e, key_c, key_d);
|
|
|
|
|
|
+ tap_keys(key_a, key_b, key_e, key_c, key_d);
|
|
EXPECT_FALSE(secure_is_unlocking());
|
|
EXPECT_FALSE(secure_is_unlocking());
|
|
EXPECT_FALSE(secure_is_unlocked());
|
|
EXPECT_FALSE(secure_is_unlocked());
|
|
|
|
|
|
@@ -180,16 +165,16 @@ TEST_F(Secure, test_unlock_request_fail_out_of_order) {
|
|
set_keymap({key_e, key_a, key_b, key_c, key_d});
|
|
set_keymap({key_e, key_a, key_b, key_c, key_d});
|
|
|
|
|
|
// Allow any number of empty reports.
|
|
// Allow any number of empty reports.
|
|
- EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport())).Times(AnyNumber());
|
|
|
|
|
|
+ EXPECT_EMPTY_REPORT(driver).Times(AnyNumber());
|
|
{ // Expect the following reports in this order.
|
|
{ // Expect the following reports in this order.
|
|
InSequence s;
|
|
InSequence s;
|
|
- EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_B)));
|
|
|
|
- EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_C)));
|
|
|
|
|
|
+ EXPECT_REPORT(driver, (KC_B));
|
|
|
|
+ EXPECT_REPORT(driver, (KC_C));
|
|
}
|
|
}
|
|
EXPECT_FALSE(secure_is_unlocked());
|
|
EXPECT_FALSE(secure_is_unlocked());
|
|
secure_request_unlock();
|
|
secure_request_unlock();
|
|
EXPECT_TRUE(secure_is_unlocking());
|
|
EXPECT_TRUE(secure_is_unlocking());
|
|
- TapKeys(key_a, key_d, key_b, key_c);
|
|
|
|
|
|
+ tap_keys(key_a, key_d, key_b, key_c);
|
|
EXPECT_TRUE(secure_is_locked());
|
|
EXPECT_TRUE(secure_is_locked());
|
|
EXPECT_FALSE(secure_is_unlocking());
|
|
EXPECT_FALSE(secure_is_unlocking());
|
|
EXPECT_FALSE(secure_is_unlocked());
|
|
EXPECT_FALSE(secure_is_unlocked());
|
|
@@ -207,8 +192,8 @@ TEST_F(Secure, test_unlock_request_on_layer) {
|
|
|
|
|
|
set_keymap({key_mo, key_a, key_b, key_c, key_d});
|
|
set_keymap({key_mo, key_a, key_b, key_c, key_d});
|
|
|
|
|
|
- // Allow any number of empty reports.
|
|
|
|
- EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport())).Times(0);
|
|
|
|
|
|
+ // Don't allow empty reports.
|
|
|
|
+ EXPECT_NO_REPORT(driver);
|
|
|
|
|
|
EXPECT_TRUE(secure_is_locked());
|
|
EXPECT_TRUE(secure_is_locked());
|
|
key_mo.press();
|
|
key_mo.press();
|
|
@@ -217,7 +202,7 @@ TEST_F(Secure, test_unlock_request_on_layer) {
|
|
key_mo.release();
|
|
key_mo.release();
|
|
run_one_scan_loop();
|
|
run_one_scan_loop();
|
|
EXPECT_TRUE(secure_is_unlocking());
|
|
EXPECT_TRUE(secure_is_unlocking());
|
|
- TapKeys(key_a, key_b, key_c, key_d);
|
|
|
|
|
|
+ tap_keys(key_a, key_b, key_c, key_d);
|
|
EXPECT_TRUE(secure_is_unlocked());
|
|
EXPECT_TRUE(secure_is_unlocked());
|
|
EXPECT_FALSE(layer_state_is(1));
|
|
EXPECT_FALSE(layer_state_is(1));
|
|
|
|
|
|
@@ -234,9 +219,8 @@ TEST_F(Secure, test_unlock_request_mid_stroke) {
|
|
|
|
|
|
set_keymap({key_e, key_a, key_b, key_c, key_d});
|
|
set_keymap({key_e, key_a, key_b, key_c, key_d});
|
|
|
|
|
|
- // Allow any number of empty reports.
|
|
|
|
- EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_E)));
|
|
|
|
- EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport()));
|
|
|
|
|
|
+ EXPECT_REPORT(driver, (KC_E));
|
|
|
|
+ EXPECT_EMPTY_REPORT(driver);
|
|
EXPECT_TRUE(secure_is_locked());
|
|
EXPECT_TRUE(secure_is_locked());
|
|
key_e.press();
|
|
key_e.press();
|
|
run_one_scan_loop();
|
|
run_one_scan_loop();
|
|
@@ -244,7 +228,7 @@ TEST_F(Secure, test_unlock_request_mid_stroke) {
|
|
key_e.release();
|
|
key_e.release();
|
|
run_one_scan_loop();
|
|
run_one_scan_loop();
|
|
EXPECT_TRUE(secure_is_unlocking());
|
|
EXPECT_TRUE(secure_is_unlocking());
|
|
- TapKeys(key_a, key_b, key_c, key_d);
|
|
|
|
|
|
+ tap_keys(key_a, key_b, key_c, key_d);
|
|
EXPECT_TRUE(secure_is_unlocked());
|
|
EXPECT_TRUE(secure_is_unlocked());
|
|
|
|
|
|
testing::Mock::VerifyAndClearExpectations(&driver);
|
|
testing::Mock::VerifyAndClearExpectations(&driver);
|
|
@@ -260,9 +244,8 @@ TEST_F(Secure, test_unlock_request_mods) {
|
|
|
|
|
|
set_keymap({key_lsft, key_a, key_b, key_c, key_d});
|
|
set_keymap({key_lsft, key_a, key_b, key_c, key_d});
|
|
|
|
|
|
- // Allow any number of empty reports.
|
|
|
|
- EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(key_lsft.report_code)));
|
|
|
|
- EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport()));
|
|
|
|
|
|
+ EXPECT_REPORT(driver, (key_lsft.report_code));
|
|
|
|
+ EXPECT_EMPTY_REPORT(driver);
|
|
EXPECT_TRUE(secure_is_locked());
|
|
EXPECT_TRUE(secure_is_locked());
|
|
key_lsft.press();
|
|
key_lsft.press();
|
|
run_one_scan_loop();
|
|
run_one_scan_loop();
|
|
@@ -270,7 +253,7 @@ TEST_F(Secure, test_unlock_request_mods) {
|
|
key_lsft.release();
|
|
key_lsft.release();
|
|
run_one_scan_loop();
|
|
run_one_scan_loop();
|
|
EXPECT_TRUE(secure_is_unlocking());
|
|
EXPECT_TRUE(secure_is_unlocking());
|
|
- TapKeys(key_a, key_b, key_c, key_d);
|
|
|
|
|
|
+ tap_keys(key_a, key_b, key_c, key_d);
|
|
EXPECT_TRUE(secure_is_unlocked());
|
|
EXPECT_TRUE(secure_is_unlocked());
|
|
|
|
|
|
testing::Mock::VerifyAndClearExpectations(&driver);
|
|
testing::Mock::VerifyAndClearExpectations(&driver);
|