Add unit tests for double tap shift key

Bug: 6568746
Change-Id: I84db31ce86e3e043ac9f9bb971663a629fa3d3c7
diff --git a/tests/src/com/android/inputmethod/keyboard/internal/KeyboardStateMultiTouchTests.java b/tests/src/com/android/inputmethod/keyboard/internal/KeyboardStateMultiTouchTests.java
index 588aa38..64cf7a6 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 @@
         // 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 dbde116..2770ed5 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 @@
         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);
     }
 }