Add unit tests for long press shift key

Bug: 5424586
Change-Id: I8465b7e2cebb07a135e24ea33eb7b7fb6752f7a2
diff --git a/tests/src/com/android/inputmethod/keyboard/internal/KeyboardStateMultiTouchTests.java b/tests/src/com/android/inputmethod/keyboard/internal/KeyboardStateMultiTouchTests.java
index 2a08309..9cdabe0 100644
--- a/tests/src/com/android/inputmethod/keyboard/internal/KeyboardStateMultiTouchTests.java
+++ b/tests/src/com/android/inputmethod/keyboard/internal/KeyboardStateMultiTouchTests.java
@@ -375,4 +375,47 @@
         // Release shift key.
         releaseKey(CODE_SHIFT, ALPHABET_UNSHIFTED);
     }
+
+    public void testLongPressShiftAndChording() {
+        // TODO: The following tests fail due to bug. Temporarily commented.
+//        // Long press shift key, enter maybe shift locked.
+//        longPressKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, 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);
+//
+//        // Long press shift key, enter alphabet shift locked.
+//        longPressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED,
+//                ALPHABET_SHIFT_LOCKED);
+//        // Long press shift key, enter maybe alphabet.
+//        longPressKey(CODE_SHIFT, ALPHABET_SHIFT_LOCK_SHIFTED, ALPHABET_SHIFT_LOCK_SHIFTED);
+//        // Press/release letter key, remain in manual shifted.
+//        chordingPressAndReleaseKey('A', ALPHABET_SHIFT_LOCK_SHIFTED, ALPHABET_SHIFT_LOCK_SHIFTED);
+//        // Release shift key, back to shift locked (not alphabet).
+//        releaseKey(CODE_SHIFT, ALPHABET_SHIFT_LOCKED);
+//        // Long press shift key, enter alphabet
+//        longPressAndReleaseKey(CODE_SHIFT, ALPHABET_SHIFT_LOCK_SHIFTED, ALPHABET_SHIFT_LOCK_SHIFTED,
+//                ALPHABET_UNSHIFTED);
+//
+//        // Press/release shift key, enter alphabet shifted.
+//        pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
+//        // Long press shift key, enter maybe alphabet.
+//        longPressKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, 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 alphabet).
+//        releaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED);
+//
+//        // Set capitalize the first character of all words mode.
+//        setAutoCapsMode(CAP_MODE_WORDS);
+//        // Load keyboard, should be in automatic shifted.
+//        loadKeyboard(ALPHABET_AUTOMATIC_SHIFTED);
+//        // Long press shift key, enter maybe shift locked.
+//        longPressKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, 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 21d0a33..dbde116 100644
--- a/tests/src/com/android/inputmethod/keyboard/internal/KeyboardStateTestsBase.java
+++ b/tests/src/com/android/inputmethod/keyboard/internal/KeyboardStateTestsBase.java
@@ -108,11 +108,15 @@
         assertLayout("afterSlide", afterSlide, mSwitcher.getLayoutId());
     }
 
-    public void longPressAndReleaseKey(int code, int afterPress, int afterLongPress,
-            int afterRelease) {
+    public void longPressKey(int code, int afterPress, int afterLongPress) {
         pressKey(code, afterPress);
         mSwitcher.onLongPressTimeout(code);
         assertLayout("afterLongPress", afterLongPress, mSwitcher.getLayoutId());
+    }
+
+    public void longPressAndReleaseKey(int code, int afterPress, int afterLongPress,
+            int afterRelease) {
+        longPressKey(code, afterPress, afterLongPress);
         releaseKey(code, afterRelease);
     }