aboutsummaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/src/com/android/inputmethod/keyboard/internal/KeyboardStateSingleTouchTests.java92
-rw-r--r--tests/src/com/android/inputmethod/keyboard/internal/KeyboardStateTestsBase.java13
-rw-r--r--tests/src/com/android/inputmethod/keyboard/internal/MockKeyboardSwitcher.java17
-rw-r--r--tests/src/com/android/inputmethod/latin/SuggestHelper.java17
4 files changed, 114 insertions, 25 deletions
diff --git a/tests/src/com/android/inputmethod/keyboard/internal/KeyboardStateSingleTouchTests.java b/tests/src/com/android/inputmethod/keyboard/internal/KeyboardStateSingleTouchTests.java
index e2feb9e84..55147f613 100644
--- a/tests/src/com/android/inputmethod/keyboard/internal/KeyboardStateSingleTouchTests.java
+++ b/tests/src/com/android/inputmethod/keyboard/internal/KeyboardStateSingleTouchTests.java
@@ -256,18 +256,44 @@ public class KeyboardStateSingleTouchTests extends KeyboardStateTestsBase {
}
// Double tap shift key.
- // TODO: Move double tap recognizing timer/logic into KeyboardState.
public void testDoubleTapShift() {
// First shift key tap.
pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
// Second shift key tap.
- // Double tap recognized in LatinKeyboardView.KeyTimerHandler.
- secondTapShiftKey(ALPHABET_SHIFT_LOCKED);
+ secondPressAndReleaseKey(CODE_SHIFT, ALPHABET_SHIFT_LOCKED, ALPHABET_SHIFT_LOCKED);
// First shift key tap.
pressAndReleaseKey(CODE_SHIFT, ALPHABET_SHIFT_LOCK_SHIFTED, ALPHABET_UNSHIFTED);
// Second shift key tap.
- // Second tap is ignored in LatinKeyboardView.KeyTimerHandler.
+ secondPressAndReleaseKey(CODE_SHIFT, ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED);
+
+ // Press/release shift key, enter alphabet manual shifted.
+ pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
+
+ // First shift key tap.
+ pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_UNSHIFTED);
+ // Second shift key tap.
+ secondPressAndReleaseKey(CODE_SHIFT, ALPHABET_SHIFT_LOCKED, ALPHABET_SHIFT_LOCKED);
+
+ // First shift key tap.
+ pressAndReleaseKey(CODE_SHIFT, ALPHABET_SHIFT_LOCK_SHIFTED, ALPHABET_UNSHIFTED);
+ // Second shift key tap.
+ secondPressAndReleaseKey(CODE_SHIFT, ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED);
+
+ // Set auto caps mode on.
+ setAutoCapsMode(AUTO_CAPS);
+ // 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.
+ secondPressAndReleaseKey(CODE_SHIFT, ALPHABET_SHIFT_LOCKED, ALPHABET_SHIFT_LOCKED);
+
+ // First shift key tap.
+ pressAndReleaseKey(CODE_SHIFT, ALPHABET_SHIFT_LOCK_SHIFTED, ALPHABET_UNSHIFTED);
+ // Second shift key tap.
+ secondPressAndReleaseKey(CODE_SHIFT, ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED);
}
// Update shift state.
@@ -576,24 +602,68 @@ public class KeyboardStateSingleTouchTests extends KeyboardStateTestsBase {
// Change orientation.
public void testChangeOrientation() {
- // Press/release shift key.
+ // Alphabet -> rotate -> alphabet.
+ updateShiftState(ALPHABET_UNSHIFTED);
+ // Rotate device, remain in alphabet.
+ rotateDevice(ALPHABET_UNSHIFTED);
+
+ // Alphabet shifted -> rotate -> alphabet shifted.
+ // Press/release shift key, enter alphabet shifted.
pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
- // Rotate device.
+ // Rotate device, remain in alphabet shifted.
rotateDevice(ALPHABET_MANUAL_SHIFTED);
+ // Alphabet shift locked -> rotate -> alphabet shift locked.
// Long press shift key, enter alphabet shift locked.
longPressShiftKey(ALPHABET_MANUAL_SHIFTED, ALPHABET_SHIFT_LOCKED);
- // Rotate device.
+ // Rotate device, remain in alphabet shift locked.
rotateDevice(ALPHABET_SHIFT_LOCKED);
- // Press/release "?123" key.
+ // Alphabet shift locked -> symbols -> rotate -> symbols ->
+ // Alphabet shift locked.
+ // Press/release "?123" key, enter symbols.
pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
- // Rotate device.
+ // Rotate device, remain in symbols,
rotateDevice(SYMBOLS_UNSHIFTED);
+ // Press/release "ABC" key, alphabet shift locked state should be maintained.
+ pressAndReleaseKey(CODE_SYMBOL, ALPHABET_SHIFT_LOCKED, ALPHABET_SHIFT_LOCKED);
- // Press/release "=\<" key.
+ // Alphabet shift locked -> symbols shifted -> rotate -> symbols shifted ->
+ // Alphabet shift locked.
+ // Press/release "?123" key, enter symbols.
+ pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
+ // Press/release "=\<" key, enter symbols shifted.
pressAndReleaseKey(CODE_SHIFT, SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
- // Rotate device.
+ // Rotate device, remain in symbols shifted.
rotateDevice(SYMBOLS_SHIFTED);
+ // Press/release "ABC" key, alphabet shift locked state should be maintained.
+ pressAndReleaseKey(CODE_SYMBOL, ALPHABET_SHIFT_LOCKED, ALPHABET_SHIFT_LOCKED);
+
+ // Alphabet shift locked -> symbols shifted -> alphabet shift locked -> rotate ->
+ // Alphabet shift locked -> symbols.
+ // Press/release "?123" key, enter symbols.
+ pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
+ // Press/release "=\<" key, enter symbols shifted.
+ pressAndReleaseKey(CODE_SHIFT, SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
+ // Press/release "ABC" key, enter alphabet shift locked.
+ pressAndReleaseKey(CODE_SYMBOL, ALPHABET_SHIFT_LOCKED, ALPHABET_SHIFT_LOCKED);
+ // Rotate device, remain in alphabet shift locked.
+ rotateDevice(ALPHABET_SHIFT_LOCKED);
+ // Press/release "?123" key, enter symbols (not symbols shifted).
+ pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
+
+ // Alphabet -> symbols shifted -> alphabet -> rotate ->
+ // Alphabet -> symbols.
+ loadKeyboard(ALPHABET_UNSHIFTED);
+ // Press/release "?123" key, enter symbols.
+ pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
+ // Press/release "=\<" key, enter symbols shifted.
+ pressAndReleaseKey(CODE_SHIFT, SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
+ // Press/release "ABC" key, enter alphabet.
+ pressAndReleaseKey(CODE_SYMBOL, ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED);
+ // Rotate device, remain in alphabet shift locked.
+ rotateDevice(ALPHABET_UNSHIFTED);
+ // Press/release "?123" key, enter symbols (not symbols shifted).
+ pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
}
}
diff --git a/tests/src/com/android/inputmethod/keyboard/internal/KeyboardStateTestsBase.java b/tests/src/com/android/inputmethod/keyboard/internal/KeyboardStateTestsBase.java
index 4055ef727..76b84364c 100644
--- a/tests/src/com/android/inputmethod/keyboard/internal/KeyboardStateTestsBase.java
+++ b/tests/src/com/android/inputmethod/keyboard/internal/KeyboardStateTestsBase.java
@@ -64,11 +64,16 @@ public class KeyboardStateTestsBase extends AndroidTestCase
assertLayout(afterRotate, mSwitcher.getLayoutId());
}
- public void pressKey(int code, int afterPress) {
+ private void pressKeyWithoutTimerExpire(int code, int afterPress) {
mSwitcher.onPressKey(code);
assertLayout(afterPress, mSwitcher.getLayoutId());
}
+ public void pressKey(int code, int afterPress) {
+ mSwitcher.expireDoubleTapTimeout();
+ pressKeyWithoutTimerExpire(code, afterPress);
+ }
+
public void releaseKey(int code, int afterRelease) {
mSwitcher.onCodeInput(code, SINGLE);
mSwitcher.onReleaseKey(code, NOT_SLIDING);
@@ -112,8 +117,8 @@ public class KeyboardStateTestsBase extends AndroidTestCase
assertLayout(afterLongPress, mSwitcher.getLayoutId());
}
- public void secondTapShiftKey(int afterTap) {
- mSwitcher.onCodeInput(CODE_CAPSLOCK, SINGLE);
- assertLayout(afterTap, mSwitcher.getLayoutId());
+ public void secondPressAndReleaseKey(int code, int afterPress, int afterRelease) {
+ pressKeyWithoutTimerExpire(code, afterPress);
+ releaseKey(code, afterRelease);
}
}
diff --git a/tests/src/com/android/inputmethod/keyboard/internal/MockKeyboardSwitcher.java b/tests/src/com/android/inputmethod/keyboard/internal/MockKeyboardSwitcher.java
index f17b45235..2f39340c9 100644
--- a/tests/src/com/android/inputmethod/keyboard/internal/MockKeyboardSwitcher.java
+++ b/tests/src/com/android/inputmethod/keyboard/internal/MockKeyboardSwitcher.java
@@ -17,7 +17,6 @@
package com.android.inputmethod.keyboard.internal;
import com.android.inputmethod.keyboard.Keyboard;
-import com.android.inputmethod.keyboard.internal.KeyboardState.SwitchActions;
public class MockKeyboardSwitcher implements KeyboardState.SwitchActions {
public interface Constants {
@@ -51,6 +50,8 @@ public class MockKeyboardSwitcher implements KeyboardState.SwitchActions {
// Following InputConnection's behavior. Simulating InputType.TYPE_TEXT_FLAG_CAP_WORDS.
private boolean mAutoCapsState = true;
+ private boolean mIsInDoubleTapTimeout;
+
private final KeyboardState mState = new KeyboardState(this);
public int getLayoutId() {
@@ -74,6 +75,10 @@ public class MockKeyboardSwitcher implements KeyboardState.SwitchActions {
mAutoCapsMode = autoCaps;
}
+ public void expireDoubleTapTimeout() {
+ mIsInDoubleTapTimeout = false;
+ }
+
@Override
public void setAlphabetKeyboard() {
mLayout = Constants.ALPHABET_UNSHIFTED;
@@ -114,6 +119,16 @@ public class MockKeyboardSwitcher implements KeyboardState.SwitchActions {
mState.onUpdateShiftState(mAutoCapsMode && mAutoCapsState);
}
+ @Override
+ public void startDoubleTapTimer() {
+ mIsInDoubleTapTimeout = true;
+ }
+
+ @Override
+ public boolean isInDoubleTapTimeout() {
+ return mIsInDoubleTapTimeout;
+ }
+
public void updateShiftState() {
mState.onUpdateShiftState(mAutoCapsMode && mAutoCapsState);
}
diff --git a/tests/src/com/android/inputmethod/latin/SuggestHelper.java b/tests/src/com/android/inputmethod/latin/SuggestHelper.java
index 2e362458b..0c023bd78 100644
--- a/tests/src/com/android/inputmethod/latin/SuggestHelper.java
+++ b/tests/src/com/android/inputmethod/latin/SuggestHelper.java
@@ -21,6 +21,7 @@ import android.text.TextUtils;
import com.android.inputmethod.keyboard.KeyDetector;
import com.android.inputmethod.keyboard.Keyboard;
+import com.android.inputmethod.keyboard.KeyboardId;
import com.android.inputmethod.keyboard.KeyboardSet;
import java.io.File;
@@ -35,22 +36,20 @@ public class SuggestHelper {
public SuggestHelper(Context context, int dictionaryId, KeyboardSet keyboardSet) {
// Use null as the locale for Suggest so as to force it to use the internal dictionary
// (and not try to find a dictionary provider for a specified locale)
- mSuggest = new Suggest(context, dictionaryId, null);
- mKeyboard = keyboardSet.getMainKeyboard();
- mKeyDetector = new KeyDetector(0);
- init();
+ this(new Suggest(context, dictionaryId, null), keyboardSet);
}
protected SuggestHelper(final Context context, final File dictionaryPath,
final long startOffset, final long length, final KeyboardSet keyboardSet,
final Locale locale) {
- mSuggest = new Suggest(context, dictionaryPath, startOffset, length, null, locale);
- mKeyboard = keyboardSet.getMainKeyboard();
- mKeyDetector = new KeyDetector(0);
- init();
+ this(new Suggest(context, dictionaryPath, startOffset, length, null, locale), keyboardSet);
}
- private void init() {
+ private SuggestHelper(final Suggest suggest, final KeyboardSet keyboardSet) {
+ mSuggest = suggest;
+ mKeyboard = keyboardSet.getKeyboard(KeyboardId.ELEMENT_ALPHABET);
+ mKeyDetector = new KeyDetector(0);
+
setCorrectionMode(Suggest.CORRECTION_FULL);
mKeyDetector.setKeyboard(mKeyboard, 0, 0);
mKeyDetector.setProximityCorrectionEnabled(true);