#include "input/ShiftState.h" #include using Mode = ShiftState::Mode; class TestShiftState : public QObject { Q_OBJECT private Q_SLOTS: void tapShiftsOneCharacter() { ShiftState shift; shift.press(0); shift.release(); QCOMPARE(shift.mode(), Mode::Once); shift.characterTyped(); QCOMPARE(shift.mode(), Mode::Off); } void doubleTapLocks() { ShiftState shift; shift.press(0); shift.release(); shift.press(200); shift.release(); QCOMPARE(shift.mode(), Mode::Locked); shift.characterTyped(); shift.characterTyped(); QCOMPARE(shift.mode(), Mode::Locked); } void tapUnlocks() { ShiftState shift; shift.press(0); shift.press(100); shift.press(1000); QCOMPARE(shift.mode(), Mode::Off); } void slowSecondTapTurnsOff() { ShiftState shift; shift.press(0); shift.release(); shift.press(ShiftState::DoubleTapMs + 1); shift.release(); QCOMPARE(shift.mode(), Mode::Off); } void holdShiftsEveryCharacterUntilRelease() { ShiftState shift; shift.press(0); shift.characterTyped(); shift.characterTyped(); QCOMPARE(shift.mode(), Mode::Once); shift.release(); QCOMPARE(shift.mode(), Mode::Off); } void automaticIgnoredWhileLocked() { ShiftState shift; shift.press(0); shift.press(100); shift.release(); shift.setAutomatic(false); QCOMPARE(shift.mode(), Mode::Locked); } void automaticCapitalizes() { ShiftState shift; shift.setAutomatic(true); QCOMPARE(shift.mode(), Mode::Once); shift.characterTyped(); QCOMPARE(shift.mode(), Mode::Off); } }; QTEST_GUILESS_MAIN(TestShiftState) #include "tst_shiftstate.moc"