diff --git a/tests/src/com/android/inputmethod/keyboard/internal/KeyboardStateMultiTouchTests.java b/tests/src/com/android/inputmethod/keyboard/internal/KeyboardStateMultiTouchTests.java index 588aa388f..64cf7a61b 100644 --- a/tests/src/com/android/inputmethod/keyboard/internal/KeyboardStateMultiTouchTests.java +++ b/tests/src/com/android/inputmethod/keyboard/internal/KeyboardStateMultiTouchTests.java @@ -417,4 +417,41 @@ public class KeyboardStateMultiTouchTests extends KeyboardStateTestsBase { // Release shift key, back to alphabet (not shift locked). releaseKey(CODE_SHIFT, ALPHABET_UNSHIFTED); } + + public void testDoubleTapShiftAndChording() { + // TODO: The following tests fail due to bug. Temporarily commented. + // First shift key tap. + pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED); + // Second shift key tap, maybe shift locked. + secondPressKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED); + // Press/release letter key, remain in manual shifted. + chordingPressAndReleaseKey('A', ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED); + // Release shift key, back to alphabet shifted (not shift locked). + releaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED); + + // Long press shift key, enter alphabet shift locked. + longPressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED, + ALPHABET_SHIFT_LOCKED); + // First shift key tap. + pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_UNSHIFTED); + // Second shift key tap, maybe shift unlocked. + secondPressKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED); + // Press/release letter key, remain in manual shifted. + chordingPressAndReleaseKey('A', ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED); + // Release shift key, back to alphabet (not shift locked). + releaseKey(CODE_SHIFT, ALPHABET_UNSHIFTED); + + // Set capitalize the first character of all words mode. + setAutoCapsMode(CAP_MODE_WORDS); + // Load keyboard, should be in automatic shifted. + loadKeyboard(ALPHABET_AUTOMATIC_SHIFTED); + // First shift key tap. + pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_UNSHIFTED); + // Second shift key tap, maybe shift locked. + secondPressKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED); + // Press/release letter key, remain in manual shifted. + chordingPressAndReleaseKey('A', ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED); + // Release shift key, back to alphabet (not shift locked). + releaseKey(CODE_SHIFT, ALPHABET_UNSHIFTED); + } } diff --git a/tests/src/com/android/inputmethod/keyboard/internal/KeyboardStateTestsBase.java b/tests/src/com/android/inputmethod/keyboard/internal/KeyboardStateTestsBase.java index dbde116fc..2770ed54a 100644 --- a/tests/src/com/android/inputmethod/keyboard/internal/KeyboardStateTestsBase.java +++ b/tests/src/com/android/inputmethod/keyboard/internal/KeyboardStateTestsBase.java @@ -120,8 +120,12 @@ public class KeyboardStateTestsBase extends AndroidTestCase releaseKey(code, afterRelease); } - public void secondPressAndReleaseKey(int code, int afterPress, int afterRelease) { + public void secondPressKey(int code, int afterPress) { pressKeyWithoutTimerExpire(code, true, afterPress); + } + + public void secondPressAndReleaseKey(int code, int afterPress, int afterRelease) { + secondPressKey(code, afterPress); releaseKey(code, afterRelease); } }