#include "test_common.hpp"
#include "action_tapping.h"
using testing::_;
using testing::InSequence;
class Tapping : public TestFixture {};
TEST_F(Tapping, TapA_SHFT_T_KeyReportsKey) {
TestDriver driver;
InSequence s;
press_key(7, 0);
EXPECT_CALL(driver, send_keyboard_mock(_)).Times(0);
run_one_scan_loop();
release_key(7, 0);
EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_P)));
EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport()));
run_one_scan_loop();
}
TEST_F(Tapping, HoldA_SHFT_T_KeyReportsShift) {
TestDriver driver;
InSequence s;
press_key(7, 0);
EXPECT_CALL(driver, send_keyboard_mock(_)).Times(0);
idle_for(TAPPING_TERM);
EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_LSFT)));
run_one_scan_loop();
}
TEST_F(Tapping, ANewTapWithinTappingTermIsBuggy) {
TestDriver driver;
InSequence s;
press_key(7, 0);
EXPECT_CALL(driver, send_keyboard_mock(_)).Times(0);
run_one_scan_loop();
release_key(7, 0);
EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_P)));
EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport()));
run_one_scan_loop();
press_key(7, 0);
EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_P)));
run_one_scan_loop();
release_key(7, 0);
EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport()));
idle_for(TAPPING_TERM + 1);
press_key(7, 0);
EXPECT_CALL(driver, send_keyboard_mock(_)).Times(0);
run_one_scan_loop();
release_key(7, 0);
EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_P)));
EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport()));
idle_for(TAPPING_TERM + 1);
press_key(7, 0);
EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_LSFT))).Times(1);
idle_for(TAPPING_TERM);
}