aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--java/src/com/android/inputmethod/keyboard/KeyboardActionListener.java12
-rw-r--r--java/src/com/android/inputmethod/keyboard/KeyboardSwitcher.java14
-rw-r--r--java/src/com/android/inputmethod/keyboard/MainKeyboardView.java4
-rw-r--r--java/src/com/android/inputmethod/keyboard/PointerTracker.java19
-rw-r--r--java/src/com/android/inputmethod/keyboard/internal/KeyboardState.java45
-rw-r--r--java/src/com/android/inputmethod/keyboard/internal/PointerTrackerQueue.java58
-rw-r--r--java/src/com/android/inputmethod/latin/LatinIME.java13
-rw-r--r--tests/src/com/android/inputmethod/keyboard/internal/KeyboardStateSingleTouchTests.java300
-rw-r--r--tests/src/com/android/inputmethod/keyboard/internal/KeyboardStateTestsBase.java17
-rw-r--r--tests/src/com/android/inputmethod/keyboard/internal/MockKeyboardSwitcher.java10
-rw-r--r--tests/src/com/android/inputmethod/keyboard/internal/PointerTrackerQueueTests.java281
11 files changed, 524 insertions, 249 deletions
diff --git a/java/src/com/android/inputmethod/keyboard/KeyboardActionListener.java b/java/src/com/android/inputmethod/keyboard/KeyboardActionListener.java
index 60d09d6fd..9eeee5baf 100644
--- a/java/src/com/android/inputmethod/keyboard/KeyboardActionListener.java
+++ b/java/src/com/android/inputmethod/keyboard/KeyboardActionListener.java
@@ -27,8 +27,9 @@ public interface KeyboardActionListener {
*
* @param primaryCode the unicode of the key being pressed. If the touch is not on a valid key,
* the value will be zero.
+ * @param isSinglePointer true if pressing has occurred while no other key is being pressed.
*/
- public void onPressKey(int primaryCode);
+ public void onPressKey(int primaryCode, boolean isSinglePointer);
/**
* Called when the user releases a key. This is sent after the {@link #onCodeInput} is called.
@@ -88,6 +89,11 @@ public interface KeyboardActionListener {
public void onCancelInput();
/**
+ * Called when user finished sliding key input.
+ */
+ public void onFinishSlidingInput();
+
+ /**
* Send a non-"code input" custom request to the listener.
* @return true if the request has been consumed, false otherwise.
*/
@@ -97,7 +103,7 @@ public interface KeyboardActionListener {
public static final Adapter EMPTY_LISTENER = new Adapter();
@Override
- public void onPressKey(int primaryCode) {}
+ public void onPressKey(int primaryCode, boolean isSinglePointer) {}
@Override
public void onReleaseKey(int primaryCode, boolean withSliding) {}
@Override
@@ -115,6 +121,8 @@ public interface KeyboardActionListener {
@Override
public void onCancelInput() {}
@Override
+ public void onFinishSlidingInput() {}
+ @Override
public boolean onCustomRequest(int requestCode) {
return false;
}
diff --git a/java/src/com/android/inputmethod/keyboard/KeyboardSwitcher.java b/java/src/com/android/inputmethod/keyboard/KeyboardSwitcher.java
index 39afe9072..ad08d6477 100644
--- a/java/src/com/android/inputmethod/keyboard/KeyboardSwitcher.java
+++ b/java/src/com/android/inputmethod/keyboard/KeyboardSwitcher.java
@@ -216,19 +216,19 @@ public final class KeyboardSwitcher implements KeyboardState.SwitchActions {
mState.onResetKeyboardStateToAlphabet();
}
- public void onPressKey(final int code) {
+ public void onPressKey(final int code, final boolean isSinglePointer) {
if (isVibrateAndSoundFeedbackRequired()) {
mFeedbackManager.hapticAndAudioFeedback(code, mKeyboardView);
}
- mState.onPressKey(code, isSinglePointer(), mLatinIME.getCurrentAutoCapsState());
+ mState.onPressKey(code, isSinglePointer, mLatinIME.getCurrentAutoCapsState());
}
public void onReleaseKey(final int code, final boolean withSliding) {
mState.onReleaseKey(code, withSliding);
}
- public void onCancelInput() {
- mState.onCancelInput(isSinglePointer());
+ public void onFinishSlidingInput() {
+ mState.onFinishSlidingInput();
}
// Implements {@link KeyboardState.SwitchActions}.
@@ -346,15 +346,11 @@ public final class KeyboardSwitcher implements KeyboardState.SwitchActions {
return mKeyboardView != null && !mKeyboardView.isInSlidingKeyInput();
}
- private boolean isSinglePointer() {
- return mKeyboardView != null && mKeyboardView.getPointerCount() == 1;
- }
-
/**
* Updates state machine to figure out when to automatically switch back to the previous mode.
*/
public void onCodeInput(final int code) {
- mState.onCodeInput(code, isSinglePointer(), mLatinIME.getCurrentAutoCapsState());
+ mState.onCodeInput(code, mLatinIME.getCurrentAutoCapsState());
}
public MainKeyboardView getMainKeyboardView() {
diff --git a/java/src/com/android/inputmethod/keyboard/MainKeyboardView.java b/java/src/com/android/inputmethod/keyboard/MainKeyboardView.java
index 3201d2e5b..6c6fc6157 100644
--- a/java/src/com/android/inputmethod/keyboard/MainKeyboardView.java
+++ b/java/src/com/android/inputmethod/keyboard/MainKeyboardView.java
@@ -1100,10 +1100,6 @@ public final class MainKeyboardView extends KeyboardView implements PointerTrack
return false;
}
- public int getPointerCount() {
- return mOldPointerCount;
- }
-
@Override
public boolean dispatchTouchEvent(MotionEvent event) {
if (AccessibilityUtils.getInstance().isTouchExplorationEnabled()) {
diff --git a/java/src/com/android/inputmethod/keyboard/PointerTracker.java b/java/src/com/android/inputmethod/keyboard/PointerTracker.java
index a8327289b..174239325 100644
--- a/java/src/com/android/inputmethod/keyboard/PointerTracker.java
+++ b/java/src/com/android/inputmethod/keyboard/PointerTracker.java
@@ -459,7 +459,7 @@ public final class PointerTracker implements PointerTrackerQueue.Element {
return false;
}
if (key.isEnabled()) {
- mListener.onPressKey(key.mCode);
+ mListener.onPressKey(key.mCode, getActivePointerTrackerCount() == 1);
final boolean keyboardLayoutHasBeenChanged = mKeyboardLayoutHasBeenChanged;
mKeyboardLayoutHasBeenChanged = false;
mTimerProxy.startTypingStateTimer(key);
@@ -527,6 +527,13 @@ public final class PointerTracker implements PointerTrackerQueue.Element {
}
}
+ private void callListenerOnFinishSlidingInput() {
+ if (DEBUG_LISTENER) {
+ Log.d(TAG, String.format("[%d] onFinishSlidingInput", mPointerId));
+ }
+ mListener.onFinishSlidingInput();
+ }
+
private void callListenerOnCancelInput() {
if (DEBUG_LISTENER) {
Log.d(TAG, String.format("[%d] onCancelInput", mPointerId));
@@ -1036,7 +1043,7 @@ public final class PointerTracker implements PointerTrackerQueue.Element {
private void processSildeOutFromOldKey(final Key oldKey) {
setReleasedKeyGraphics(oldKey);
- callListenerOnRelease(oldKey, oldKey.mCode, true);
+ callListenerOnRelease(oldKey, oldKey.mCode, true /* withSliding */);
startSlidingKeyInput(oldKey);
mTimerProxy.cancelKeyTimers();
}
@@ -1169,6 +1176,7 @@ public final class PointerTracker implements PointerTrackerQueue.Element {
private void onUpEventInternal(final int x, final int y, final long eventTime) {
mTimerProxy.cancelKeyTimers();
final boolean isInSlidingKeyInput = mIsInSlidingKeyInput;
+ final boolean isInSlidingKeyInputFromModifier = mIsInSlidingKeyInputFromModifier;
resetSlidingKeyInput();
mIsDetectingGesture = false;
final Key currentKey = mCurrentKey;
@@ -1189,7 +1197,7 @@ public final class PointerTracker implements PointerTrackerQueue.Element {
if (sInGesture) {
if (currentKey != null) {
- callListenerOnRelease(currentKey, currentKey.mCode, true);
+ callListenerOnRelease(currentKey, currentKey.mCode, true /* withSliding */);
}
mayEndBatchInput(eventTime);
return;
@@ -1203,6 +1211,9 @@ public final class PointerTracker implements PointerTrackerQueue.Element {
return;
}
detectAndSendKey(currentKey, mKeyX, mKeyY, eventTime);
+ if (isInSlidingKeyInputFromModifier) {
+ callListenerOnFinishSlidingInput();
+ }
}
public void onShowMoreKeysPanel(final int translatedX, final int translatedY,
@@ -1328,7 +1339,7 @@ public final class PointerTracker implements PointerTrackerQueue.Element {
final int code = key.mCode;
callListenerOnCodeInput(key, code, x, y, eventTime);
- callListenerOnRelease(key, code, false);
+ callListenerOnRelease(key, code, false /* withSliding */);
}
private void printTouchEvent(final String title, final int x, final int y,
diff --git a/java/src/com/android/inputmethod/keyboard/internal/KeyboardState.java b/java/src/com/android/inputmethod/keyboard/internal/KeyboardState.java
index 962bde91e..6af1bd75f 100644
--- a/java/src/com/android/inputmethod/keyboard/internal/KeyboardState.java
+++ b/java/src/com/android/inputmethod/keyboard/internal/KeyboardState.java
@@ -28,9 +28,9 @@ import com.android.inputmethod.latin.RecapitalizeStatus;
* This class contains all keyboard state transition logic.
*
* The input events are {@link #onLoadKeyboard()}, {@link #onSaveKeyboardState()},
- * {@link #onPressKey(int, boolean, int)}, {@link #onReleaseKey(int, boolean)},
- * {@link #onCodeInput(int, boolean, int)}, {@link #onCancelInput(boolean)},
- * {@link #onUpdateShiftState(int, int)}, {@link #onLongPressTimeout(int)}.
+ * {@link #onPressKey(int,boolean,int)}, {@link #onReleaseKey(int,boolean)},
+ * {@link #onCodeInput(int,int)}, {@link #onFinishSlidingInput()}, {@link #onCancelInput()},
+ * {@link #onUpdateShiftState(int,int)}, {@link #onLongPressTimeout(int)}.
*
* The actions are {@link SwitchActions}'s methods.
*/
@@ -74,6 +74,7 @@ public final class KeyboardState {
private static final int SWITCH_STATE_SYMBOL = 2;
private static final int SWITCH_STATE_MOMENTARY_ALPHA_AND_SYMBOL = 3;
private static final int SWITCH_STATE_MOMENTARY_SYMBOL_AND_MORE = 4;
+ private static final int SWITCH_STATE_MOMENTARY_ALPHA_SHIFT = 5;
private int mSwitchState = SWITCH_STATE_ALPHA;
private boolean mIsAlphabetMode;
@@ -525,6 +526,9 @@ public final class KeyboardState {
} else if (mAlphabetShiftState.isShiftLockShifted() && withSliding) {
// In shift locked state, shift has been pressed and slid out to other key.
setShiftLocked(true);
+ } else if (mAlphabetShiftState.isManualShifted() && withSliding) {
+ // Shift has been pressed and slid out to other key.
+ mSwitchState = SWITCH_STATE_MOMENTARY_ALPHA_SHIFT;
} else if (isShiftLocked && !mAlphabetShiftState.isShiftLockShifted()
&& (mShiftKeyState.isPressing() || mShiftKeyState.isPressingOnShifted())
&& !withSliding) {
@@ -554,17 +558,21 @@ public final class KeyboardState {
mShiftKeyState.onRelease();
}
- public void onCancelInput(final boolean isSinglePointer) {
+ public void onFinishSlidingInput() {
if (DEBUG_EVENT) {
- Log.d(TAG, "onCancelInput: single=" + isSinglePointer + " " + this);
+ Log.d(TAG, "onFinishSlidingInput: " + this);
}
// Switch back to the previous keyboard mode if the user cancels sliding input.
- if (isSinglePointer) {
- if (mSwitchState == SWITCH_STATE_MOMENTARY_ALPHA_AND_SYMBOL) {
- toggleAlphabetAndSymbols();
- } else if (mSwitchState == SWITCH_STATE_MOMENTARY_SYMBOL_AND_MORE) {
- toggleShiftInSymbols();
- }
+ switch (mSwitchState) {
+ case SWITCH_STATE_MOMENTARY_ALPHA_AND_SYMBOL:
+ toggleAlphabetAndSymbols();
+ break;
+ case SWITCH_STATE_MOMENTARY_SYMBOL_AND_MORE:
+ toggleShiftInSymbols();
+ break;
+ case SWITCH_STATE_MOMENTARY_ALPHA_SHIFT:
+ setAlphabetKeyboard();
+ break;
}
}
@@ -577,10 +585,9 @@ public final class KeyboardState {
return c == Constants.CODE_SPACE || c == Constants.CODE_ENTER;
}
- public void onCodeInput(final int code, final boolean isSinglePointer, final int autoCaps) {
+ public void onCodeInput(final int code, final int autoCaps) {
if (DEBUG_EVENT) {
Log.d(TAG, "onCodeInput: code=" + Constants.printableCode(code)
- + " single=" + isSinglePointer
+ " autoCaps=" + autoCaps + " " + this);
}
@@ -593,23 +600,12 @@ public final class KeyboardState {
} else {
mSwitchState = SWITCH_STATE_SYMBOL_BEGIN;
}
- } else if (isSinglePointer) {
- // Switch back to the previous keyboard mode if the user pressed the mode change key
- // and slid to other key, then released the finger.
- // If the user cancels the sliding input, switching back to the previous keyboard
- // mode is handled by {@link #onCancelInput}.
- toggleAlphabetAndSymbols();
}
break;
case SWITCH_STATE_MOMENTARY_SYMBOL_AND_MORE:
if (code == Constants.CODE_SHIFT) {
// Detected only the shift key has been pressed on symbol layout, and then released.
mSwitchState = SWITCH_STATE_SYMBOL_BEGIN;
- } else if (isSinglePointer) {
- // Switch back to the previous keyboard mode if the user pressed the shift key on
- // symbol mode and slid to other key, then released the finger.
- toggleShiftInSymbols();
- mSwitchState = SWITCH_STATE_SYMBOL;
}
break;
case SWITCH_STATE_SYMBOL_BEGIN:
@@ -650,6 +646,7 @@ public final class KeyboardState {
case SWITCH_STATE_SYMBOL: return "SYMBOL";
case SWITCH_STATE_MOMENTARY_ALPHA_AND_SYMBOL: return "MOMENTARY-ALPHA-SYMBOL";
case SWITCH_STATE_MOMENTARY_SYMBOL_AND_MORE: return "MOMENTARY-SYMBOL-MORE";
+ case SWITCH_STATE_MOMENTARY_ALPHA_SHIFT: return "MOMENTARY-ALPHA_SHIFT";
default: return null;
}
}
diff --git a/java/src/com/android/inputmethod/keyboard/internal/PointerTrackerQueue.java b/java/src/com/android/inputmethod/keyboard/internal/PointerTrackerQueue.java
index 8901f99b7..31ef3cd8f 100644
--- a/java/src/com/android/inputmethod/keyboard/internal/PointerTrackerQueue.java
+++ b/java/src/com/android/inputmethod/keyboard/internal/PointerTrackerQueue.java
@@ -48,6 +48,9 @@ public final class PointerTrackerQueue {
public void add(final Element pointer) {
synchronized (mExpandableArrayOfActivePointers) {
+ if (DEBUG) {
+ Log.d(TAG, "add: " + pointer + " " + this);
+ }
final ArrayList<Element> expandableArray = mExpandableArrayOfActivePointers;
final int arraySize = mArraySize;
if (arraySize < expandableArray.size()) {
@@ -61,24 +64,27 @@ public final class PointerTrackerQueue {
public void remove(final Element pointer) {
synchronized (mExpandableArrayOfActivePointers) {
+ if (DEBUG) {
+ Log.d(TAG, "remove: " + pointer + " " + this);
+ }
final ArrayList<Element> expandableArray = mExpandableArrayOfActivePointers;
final int arraySize = mArraySize;
- int newSize = 0;
+ int newIndex = 0;
for (int index = 0; index < arraySize; index++) {
final Element element = expandableArray.get(index);
if (element == pointer) {
- if (newSize != index) {
+ if (newIndex != index) {
Log.w(TAG, "Found duplicated element in remove: " + pointer);
}
continue; // Remove this element from the expandableArray.
}
- if (newSize != index) {
+ if (newIndex != index) {
// Shift this element toward the beginning of the expandableArray.
- expandableArray.set(newSize, element);
+ expandableArray.set(newIndex, element);
}
- newSize++;
+ newIndex++;
}
- mArraySize = newSize;
+ mArraySize = newIndex;
}
}
@@ -95,8 +101,8 @@ public final class PointerTrackerQueue {
}
final ArrayList<Element> expandableArray = mExpandableArrayOfActivePointers;
final int arraySize = mArraySize;
- int newSize, index;
- for (newSize = index = 0; index < arraySize; index++) {
+ int newIndex, index;
+ for (newIndex = index = 0; index < arraySize; index++) {
final Element element = expandableArray.get(index);
if (element == pointer) {
break; // Stop releasing elements.
@@ -105,29 +111,30 @@ public final class PointerTrackerQueue {
element.onPhantomUpEvent(eventTime);
continue; // Remove this element from the expandableArray.
}
- if (newSize != index) {
+ if (newIndex != index) {
// Shift this element toward the beginning of the expandableArray.
- expandableArray.set(newSize, element);
+ expandableArray.set(newIndex, element);
}
- newSize++;
+ newIndex++;
}
// Shift rest of the expandableArray.
int count = 0;
for (; index < arraySize; index++) {
final Element element = expandableArray.get(index);
if (element == pointer) {
- if (count > 0) {
+ count++;
+ if (count > 1) {
Log.w(TAG, "Found duplicated element in releaseAllPointersOlderThan: "
+ pointer);
}
- count++;
}
- if (newSize != index) {
- expandableArray.set(newSize, expandableArray.get(index));
- newSize++;
+ if (newIndex != index) {
+ // Shift this element toward the beginning of the expandableArray.
+ expandableArray.set(newIndex, expandableArray.get(index));
}
+ newIndex++;
}
- mArraySize = newSize;
+ mArraySize = newIndex;
}
}
@@ -146,26 +153,26 @@ public final class PointerTrackerQueue {
}
final ArrayList<Element> expandableArray = mExpandableArrayOfActivePointers;
final int arraySize = mArraySize;
- int newSize = 0, count = 0;
+ int newIndex = 0, count = 0;
for (int index = 0; index < arraySize; index++) {
final Element element = expandableArray.get(index);
if (element == pointer) {
- if (count > 0) {
+ count++;
+ if (count > 1) {
Log.w(TAG, "Found duplicated element in releaseAllPointersExcept: "
+ pointer);
}
- count++;
} else {
element.onPhantomUpEvent(eventTime);
continue; // Remove this element from the expandableArray.
}
- if (newSize != index) {
+ if (newIndex != index) {
// Shift this element toward the beginning of the expandableArray.
- expandableArray.set(newSize, element);
+ expandableArray.set(newIndex, element);
}
- newSize++;
+ newIndex++;
}
- mArraySize = newSize;
+ mArraySize = newIndex;
}
}
@@ -202,6 +209,9 @@ public final class PointerTrackerQueue {
public void cancelAllPointerTracker() {
synchronized (mExpandableArrayOfActivePointers) {
+ if (DEBUG) {
+ Log.d(TAG, "cancelAllPointerTracker: " + this);
+ }
final ArrayList<Element> expandableArray = mExpandableArrayOfActivePointers;
final int arraySize = mArraySize;
for (int index = 0; index < arraySize; index++) {
diff --git a/java/src/com/android/inputmethod/latin/LatinIME.java b/java/src/com/android/inputmethod/latin/LatinIME.java
index fdd470cf1..9caec5592 100644
--- a/java/src/com/android/inputmethod/latin/LatinIME.java
+++ b/java/src/com/android/inputmethod/latin/LatinIME.java
@@ -1752,9 +1752,16 @@ public final class LatinIME extends InputMethodService implements KeyboardAction
// Called from PointerTracker through the KeyboardActionListener interface
@Override
+ public void onFinishSlidingInput() {
+ // User finished sliding input.
+ mKeyboardSwitcher.onFinishSlidingInput();
+ }
+
+ // Called from PointerTracker through the KeyboardActionListener interface
+ @Override
public void onCancelInput() {
// User released a finger outside any key
- mKeyboardSwitcher.onCancelInput();
+ // Nothing to do so far.
}
@Override
@@ -2612,8 +2619,8 @@ public final class LatinIME extends InputMethodService implements KeyboardAction
// Callback called by PointerTracker through the KeyboardActionListener. This is called when a
// key is depressed; release matching call is onReleaseKey below.
@Override
- public void onPressKey(final int primaryCode) {
- mKeyboardSwitcher.onPressKey(primaryCode);
+ public void onPressKey(final int primaryCode, final boolean isSinglePointer) {
+ mKeyboardSwitcher.onPressKey(primaryCode, isSinglePointer);
}
// Callback by PointerTracker through the KeyboardActionListener. This is called when a key
diff --git a/tests/src/com/android/inputmethod/keyboard/internal/KeyboardStateSingleTouchTests.java b/tests/src/com/android/inputmethod/keyboard/internal/KeyboardStateSingleTouchTests.java
index a3f9dbdcc..d5b9d1dfd 100644
--- a/tests/src/com/android/inputmethod/keyboard/internal/KeyboardStateSingleTouchTests.java
+++ b/tests/src/com/android/inputmethod/keyboard/internal/KeyboardStateSingleTouchTests.java
@@ -352,30 +352,34 @@ public class KeyboardStateSingleTouchTests extends KeyboardStateTestsBase {
// Alphabet -> shift key + letter -> alphabet.
// Press and slide from shift key, enter alphabet shifted.
pressAndSlideFromKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
- // Enter/release letter key, switch back to alphabet.
- pressAndReleaseKey('Z', ALPHABET_MANUAL_SHIFTED, ALPHABET_UNSHIFTED);
+ // Enter/release letter keys, switch back to alphabet.
+ pressAndSlideFromKey('A', ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
+ stopSlidingOnKey('Z', ALPHABET_MANUAL_SHIFTED, ALPHABET_UNSHIFTED);
// Alphabet -> "?123" key + letter -> alphabet.
// Press and slide from "123?" key, enter symbols.
pressAndSlideFromKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
- // Enter/release into symbol letter key, switch back to alphabet.
- pressAndReleaseKey('!', SYMBOLS_UNSHIFTED, ALPHABET_UNSHIFTED);
+ // Enter/release into symbol letter keys, switch back to alphabet.
+ pressAndSlideFromKey('@', SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
+ stopSlidingOnKey('!', SYMBOLS_UNSHIFTED, ALPHABET_UNSHIFTED);
// Alphabet shifted -> shift key + letter -> alphabet.
// Press/release shift key, enter alphabet shifted.
pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
// Press and slide from shift key, remain alphabet shifted.
pressAndSlideFromKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
- // Enter/release letter key, switch back to alphabet (not alphabet shifted).
- pressAndReleaseKey('Z', ALPHABET_MANUAL_SHIFTED, ALPHABET_UNSHIFTED);
+ // Enter/release letter keys, switch back to alphabet (not alphabet shifted).
+ pressAndSlideFromKey('A', ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
+ stopSlidingOnKey('Z', ALPHABET_MANUAL_SHIFTED, ALPHABET_UNSHIFTED);
// Alphabet shifted -> "?123" key + letter -> alphabet.
// Press/release shift key, enter alphabet shifted.
pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
// Press and slide from "123?" key, enter symbols.
pressAndSlideFromKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
- // Enter/release into symbol letter key, switch back to alphabet (not alphabet shifted).
- pressAndReleaseKey('!', SYMBOLS_UNSHIFTED, ALPHABET_UNSHIFTED);
+ // Enter/release into symbol letter keys, switch back to alphabet (not alphabet shifted).
+ pressAndSlideFromKey('@', SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
+ stopSlidingOnKey('!', SYMBOLS_UNSHIFTED, ALPHABET_UNSHIFTED);
// Alphabet shift locked -> shift key + letter -> alphabet shift locked.
// Long press shift key, enter alphabet shift locked.
@@ -383,14 +387,76 @@ public class KeyboardStateSingleTouchTests extends KeyboardStateTestsBase {
ALPHABET_SHIFT_LOCKED);
// Press and slide from "123?" key, enter symbols.
pressAndSlideFromKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
- // Enter/release into symbol letter key, switch back to alphabet shift locked.
- pressAndReleaseKey('!', SYMBOLS_UNSHIFTED, ALPHABET_SHIFT_LOCKED);
+ // Enter/release into symbol letter keys, switch back to alphabet shift locked.
+ pressAndSlideFromKey('!', SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
+ stopSlidingOnKey('!', SYMBOLS_UNSHIFTED, ALPHABET_SHIFT_LOCKED);
// Alphabet shift locked -> "?123" key + letter -> alphabet shift locked.
// Press and slide from shift key, enter alphabet shifted.
pressAndSlideFromKey(CODE_SHIFT, ALPHABET_SHIFT_LOCK_SHIFTED, ALPHABET_SHIFT_LOCKED);
+ // Enter/release letter keys, switch back to shift locked.
+ pressAndSlideFromKey('A', ALPHABET_SHIFT_LOCKED, ALPHABET_SHIFT_LOCKED);
+ stopSlidingOnKey('Z', ALPHABET_SHIFT_LOCKED, ALPHABET_SHIFT_LOCKED);
+ }
+
+ // Cancel sliding input in alphabet.
+ public void testSlidingAlphabetCancel() {
+ // Alphabet -> shift key + letter -> cancel -> alphabet.
+ // Press and slide from shift key, enter alphabet shifted.
+ pressAndSlideFromKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
+ // Press and slide from shift key, enter alphabet shifted.
+ pressAndSlideFromKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
+ // Enter/release letter key, remains in alphabet shifted.
+ pressAndSlideFromKey('Z', ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
+ // Cancel sliding, switch back to alphabet.
+ stopSlidingAndCancel(ALPHABET_UNSHIFTED);
+
+ // Alphabet -> "?123" key + letter -> cancel -> alphabet.
+ // Press and slide from "123?" key, enter symbols.
+ pressAndSlideFromKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
+ // Enter/release into symbol letter key, remains in symbols.
+ pressAndSlideFromKey('!', SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
+ // Cancel sliding, switch back to alphabet.
+ stopSlidingAndCancel(ALPHABET_UNSHIFTED);
+
+ // Alphabet shifted -> shift key + letter -> cancel -> alphabet.
+ // Press/release shift key, enter alphabet shifted.
+ pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
+ // Press and slide from shift key, remain alphabet shifted.
+ pressAndSlideFromKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
+ // Enter/release letter key, remains in alphabet shifted.
+ pressAndSlideFromKey('Z', ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
+ // Cancel sliding, switch back to alphabet (not alphabet shifted).
+ stopSlidingAndCancel(ALPHABET_UNSHIFTED);
+
+ // Alphabet shifted -> "?123" key + letter -> cancel -> alphabet.
+ // Press/release shift key, enter alphabet shifted.
+ pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
+ // Press and slide from "123?" key, enter symbols.
+ pressAndSlideFromKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
+ // Enter/release into symbol letter key, remains in symbols.
+ pressAndSlideFromKey('!', SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
+ // Cancel sliding, switch back to alphabet (not alphabet shifted).
+ stopSlidingAndCancel(ALPHABET_UNSHIFTED);
+
+ // Alphabet shift locked -> shift key + letter -> cancel -> alphabet shift locked.
+ // Long press shift key, enter alphabet shift locked.
+ longPressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED,
+ ALPHABET_SHIFT_LOCKED);
+ // Press and slide from "123?" key, enter symbols.
+ pressAndSlideFromKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
+ // Enter/release into symbol letter key, remains in symbols.
+ pressAndSlideFromKey('!', SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
+ // Cancel sliding, switch back to alphabet shift locked.
+ stopSlidingAndCancel( ALPHABET_SHIFT_LOCKED);
+
+ // Alphabet shift locked -> "?123" key + letter -> cancel -> alphabet shift locked.
+ // Press and slide from shift key, enter alphabet shifted.
+ pressAndSlideFromKey(CODE_SHIFT, ALPHABET_SHIFT_LOCK_SHIFTED, ALPHABET_SHIFT_LOCKED);
+ // Enter/release letter key, remains in alphabet shift locked.
+ pressAndSlideFromKey('Z', ALPHABET_SHIFT_LOCKED, ALPHABET_SHIFT_LOCKED);
// Enter/release letter key, switch back to shift locked.
- pressAndReleaseKey('Z', ALPHABET_SHIFT_LOCKED, ALPHABET_SHIFT_LOCKED);
+ stopSlidingAndCancel(ALPHABET_SHIFT_LOCKED);
}
// Sliding input in symbols.
@@ -398,16 +464,91 @@ public class KeyboardStateSingleTouchTests extends KeyboardStateTestsBase {
// Symbols -> "=\<" key + letter -> symbols.
// Press/release "?123" key, enter into symbols.
pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
- // Press and slide from shift key, enter symols shifted.
+ // Press and slide from shift key, enter symbols shifted.
+ pressAndSlideFromKey(CODE_SHIFT, SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
+ // Enter/release symbol shifted letter keys, switch back to symbols.
+ pressAndSlideFromKey('|', SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
+ stopSlidingOnKey('~', SYMBOLS_SHIFTED, SYMBOLS_UNSHIFTED);
+
+ // Symbols -> "ABC" key + letter -> Symbols.
+ // Press and slide from "ABC" key, enter alphabet.
+ pressAndSlideFromKey(CODE_SYMBOL, ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED);
+ // Enter/release letter keys, switch back to symbols.
+ pressAndSlideFromKey('z', ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED);
+ stopSlidingOnKey('a', ALPHABET_UNSHIFTED, SYMBOLS_UNSHIFTED);
+ // Press/release "ABC" key, switch to alphabet.
+ pressAndReleaseKey(CODE_SYMBOL, ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED);
+
+ // Alphabet shifted -> symbols -> "ABC" key + letter -> symbols ->
+ // alphabet.
+ // Load keyboard
+ loadKeyboard(ALPHABET_UNSHIFTED);
+ // Press/release shift key, enter alphabet shifted.
+ pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
+ // Press/release "?123" key, enter into symbols.
+ pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
+ // Press and slide from "ABC" key.
+ pressAndSlideFromKey(CODE_SYMBOL, ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED);
+ // Enter/release letter keys, switch back to symbols.
+ pressAndSlideFromKey('z', ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED);
+ stopSlidingOnKey('a', ALPHABET_UNSHIFTED, SYMBOLS_UNSHIFTED);
+ // Press/release "ABC" key, switch to alphabet (not alphabet shifted).
+ pressAndReleaseKey(CODE_SYMBOL, ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED);
+
+ // Alphabet shift locked -> symbols -> "ABC" key + letter -> symbols ->
+ // alphabet shift locked.
+ // Load keyboard
+ loadKeyboard(ALPHABET_UNSHIFTED);
+ // Long press shift key, enter alphabet shift locked.
+ longPressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED,
+ ALPHABET_SHIFT_LOCKED);
+ // Press/release "?123" key, enter into symbols.
+ pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
+ // Press and slide from "ABC" key, enter alphabet shift locked.
+ pressAndSlideFromKey(CODE_SYMBOL, ALPHABET_SHIFT_LOCKED, ALPHABET_SHIFT_LOCKED);
+ // Enter/release letter keys, switch back to symbols.
+ pressAndSlideFromKey('Z', ALPHABET_SHIFT_LOCKED, ALPHABET_SHIFT_LOCKED);
+ stopSlidingOnKey('A', ALPHABET_SHIFT_LOCKED, SYMBOLS_UNSHIFTED);
+ // Press/release "ABC" key, switch to alphabet shift locked.
+ pressAndReleaseKey(CODE_SYMBOL, ALPHABET_SHIFT_LOCKED, ALPHABET_SHIFT_LOCKED);
+
+ // Alphabet shift locked -> symbols -> "=\<" key + letter -> symbols ->
+ // alphabet shift locked.
+ // Load keyboard
+ loadKeyboard(ALPHABET_UNSHIFTED);
+ // Long press shift key, enter alphabet shift locked.
+ longPressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED,
+ ALPHABET_SHIFT_LOCKED);
+ // Press/release "?123" key, enter into symbols.
+ pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
+ // Press and slide from "=\<" key, enter symbols shifted.
+ pressAndSlideFromKey(CODE_SHIFT, SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
+ // Enter/release symbols shift letter keys, switch back to symbols.
+ pressAndSlideFromKey('|', SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
+ stopSlidingOnKey('~', SYMBOLS_SHIFTED, SYMBOLS_UNSHIFTED);
+ // Press/release "ABC" key, switch to alphabet shift locked.
+ pressAndReleaseKey(CODE_SYMBOL, ALPHABET_SHIFT_LOCKED, ALPHABET_SHIFT_LOCKED);
+ }
+
+ // Cancel sliding input in symbols.
+ public void testSlidingSymbolsCancel() {
+ // Symbols -> "=\<" key + letter -> cancel -> symbols.
+ // Press/release "?123" key, enter into symbols.
+ pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
+ // Press and slide from shift key, enter symbols shifted.
pressAndSlideFromKey(CODE_SHIFT, SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
- // Enter/release symbol shifted letter key, switch back to symbols.
- pressAndReleaseKey('~', SYMBOLS_SHIFTED, SYMBOLS_UNSHIFTED);
+ // Enter/release symbol shifted letter key, remains in symbols shifted.
+ pressAndSlideFromKey('|', SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
+ // Cancel sliding, switch back to symbols.
+ stopSlidingAndCancel(SYMBOLS_UNSHIFTED);
// Symbols -> "ABC" key + letter -> Symbols.
// Press and slide from "ABC" key, enter alphabet.
pressAndSlideFromKey(CODE_SYMBOL, ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED);
- // Enter/release letter key, switch back to symbols.
- pressAndReleaseKey('a', ALPHABET_UNSHIFTED, SYMBOLS_UNSHIFTED);
+ // Enter/release letter keys, remains in alphabet.
+ pressAndSlideFromKey('z', ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED);
+ // Cancel sliding, switch back to symbols.
+ stopSlidingAndCancel(SYMBOLS_UNSHIFTED);
// Press/release "ABC" key, switch to alphabet.
pressAndReleaseKey(CODE_SYMBOL, ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED);
@@ -421,8 +562,10 @@ public class KeyboardStateSingleTouchTests extends KeyboardStateTestsBase {
pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
// Press and slide from "ABC" key.
pressAndSlideFromKey(CODE_SYMBOL, ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED);
- // Enter/release letter key, switch back to symbols.
- pressAndReleaseKey('a', ALPHABET_UNSHIFTED, SYMBOLS_UNSHIFTED);
+ // Enter/release letter key, remains in alphabet.
+ pressAndSlideFromKey('z', ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED);
+ // Cancel sliding, switch back to symbols.
+ stopSlidingAndCancel(SYMBOLS_UNSHIFTED);
// Press/release "ABC" key, switch to alphabet (not alphabet shifted).
pressAndReleaseKey(CODE_SYMBOL, ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED);
@@ -437,8 +580,10 @@ public class KeyboardStateSingleTouchTests extends KeyboardStateTestsBase {
pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
// Press and slide from "ABC" key, enter alphabet shift locked.
pressAndSlideFromKey(CODE_SYMBOL, ALPHABET_SHIFT_LOCKED, ALPHABET_SHIFT_LOCKED);
- // Enter/release letter key, switch back to symbols.
- pressAndReleaseKey('A', ALPHABET_SHIFT_LOCKED, SYMBOLS_UNSHIFTED);
+ // Enter/release letter key, remains in alphabet shifted.
+ pressAndSlideFromKey('Z', ALPHABET_SHIFT_LOCKED, ALPHABET_SHIFT_LOCKED);
+ // Cancel sliding, switch back to symbols.
+ stopSlidingAndCancel(SYMBOLS_UNSHIFTED);
// Press/release "ABC" key, switch to alphabet shift locked.
pressAndReleaseKey(CODE_SYMBOL, ALPHABET_SHIFT_LOCKED, ALPHABET_SHIFT_LOCKED);
@@ -453,8 +598,10 @@ public class KeyboardStateSingleTouchTests extends KeyboardStateTestsBase {
pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
// Press and slide from "=\<" key, enter symbols shifted.
pressAndSlideFromKey(CODE_SHIFT, SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
- // Enter/release symbols shift letter key, switch back to symbols.
- pressAndReleaseKey('~', SYMBOLS_SHIFTED, SYMBOLS_UNSHIFTED);
+ // Enter/release symbols shift letter key, remains in symbols shifted.
+ pressAndSlideFromKey('|', SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
+ // Cancel sliding, switch back to symbols.
+ stopSlidingAndCancel(SYMBOLS_UNSHIFTED);
// Press/release "ABC" key, switch to alphabet shift locked.
pressAndReleaseKey(CODE_SYMBOL, ALPHABET_SHIFT_LOCKED, ALPHABET_SHIFT_LOCKED);
}
@@ -468,14 +615,97 @@ public class KeyboardStateSingleTouchTests extends KeyboardStateTestsBase {
pressAndReleaseKey(CODE_SHIFT, SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
// Press and slide from shift key, enter symbols.
pressAndSlideFromKey(CODE_SHIFT, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
- // Enter/release symbol letter key, switch back to symbols shifted.
- pressAndReleaseKey('1', SYMBOLS_UNSHIFTED, SYMBOLS_SHIFTED);
+ // Enter/release symbol letter keys, switch back to symbols shifted.
+ pressAndSlideFromKey('2', SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
+ stopSlidingOnKey('1', SYMBOLS_UNSHIFTED, SYMBOLS_SHIFTED);
+
+ // Symbols shifted -> "ABC" key + letter -> symbols shifted.
+ // Press and slide from "ABC" key, enter alphabet.
+ pressAndSlideFromKey(CODE_SYMBOL, ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED);
+ // Enter/release letter keys, switch back to symbols shifted.
+ pressAndSlideFromKey('z', ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED);
+ stopSlidingOnKey('a', ALPHABET_UNSHIFTED, SYMBOLS_SHIFTED);
+ // Press/release "ABC" key, switch to alphabet.
+ pressAndReleaseKey(CODE_SYMBOL, ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED);
+
+ // Alphabet shifted -> symbols shifted -> "ABC" + letter -> symbols shifted ->
+ // alphabet.
+ // Load keyboard
+ loadKeyboard(ALPHABET_UNSHIFTED);
+ // Press/release shift key, enter alphabet shifted.
+ pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
+ // Press/release "?123" key, enter into symbols.
+ pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
+ // Press/release "=\<" key, enter into symbols shifted.
+ pressAndReleaseKey(CODE_SHIFT, SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
+ // Press and slide from "ABC" key.
+ pressAndSlideFromKey(CODE_SYMBOL, ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED);
+ // Enter/release letter keys, switch back to symbols shifted.
+ pressAndSlideFromKey('z', ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED);
+ stopSlidingOnKey('a', ALPHABET_UNSHIFTED, SYMBOLS_SHIFTED);
+ // Press/release "ABC" key, switch to alphabet (not alphabet shifted).
+ pressAndReleaseKey(CODE_SYMBOL, ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED);
+
+ // Alphabet shift locked -> symbols shifted -> "ABC" + letter -> symbols shifted ->
+ // alphabet shift locked.
+ // Load keyboard
+ loadKeyboard(ALPHABET_UNSHIFTED);
+ // Long press shift key, enter alphabet shift locked.
+ longPressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED,
+ ALPHABET_SHIFT_LOCKED);
+ // Press/release "?123" key, enter into symbols.
+ pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
+ // Press/release "=\<" key, enter into symbols shifted.
+ pressAndReleaseKey(CODE_SHIFT, SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
+ // Press and slide from "ABC" key.
+ pressAndSlideFromKey(CODE_SYMBOL, ALPHABET_SHIFT_LOCKED, ALPHABET_SHIFT_LOCKED);
+ // Enter/release letter keys, switch back to symbols shifted.
+ pressAndSlideFromKey('Z', ALPHABET_SHIFT_LOCKED, ALPHABET_SHIFT_LOCKED);
+ stopSlidingOnKey('A', ALPHABET_SHIFT_LOCKED, SYMBOLS_SHIFTED);
+ // Press/release "ABC" key, switch to alphabet shift locked.
+ pressAndReleaseKey(CODE_SYMBOL, ALPHABET_SHIFT_LOCKED, ALPHABET_SHIFT_LOCKED);
+
+ // Alphabet shift locked -> symbols shifted -> "?123" + letter -> symbols shifted ->
+ // alphabet shift locked.
+ // Load keyboard
+ loadKeyboard(ALPHABET_UNSHIFTED);
+ // Long press shift key, enter alphabet shift locked.
+ longPressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED,
+ ALPHABET_SHIFT_LOCKED);
+ // Press/release "?123" key, enter into symbols.
+ pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
+ // Press/release "=\<" key, enter into symbols shifted.
+ pressAndReleaseKey(CODE_SHIFT, SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
+ // Press and slide from "?123" key.
+ pressAndSlideFromKey(CODE_SHIFT, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
+ // Enter/release symbol letter keys, switch back to symbols shifted.
+ pressAndSlideFromKey('2', SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
+ stopSlidingOnKey('1', SYMBOLS_UNSHIFTED, SYMBOLS_SHIFTED);
+ // Press/release "ABC" key, switch to alphabet shift locked.
+ pressAndReleaseKey(CODE_SYMBOL, ALPHABET_SHIFT_LOCKED, ALPHABET_SHIFT_LOCKED);
+ }
+
+ // Cancel sliding input in symbols shifted.
+ public void testSlidingSymbolsShiftedCancel() {
+ // Symbols shifted -> "?123" + letter -> symbols shifted.
+ // Press/release "?123" key, enter into symbols.
+ pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
+ // Press/release "=\<" key, enter into symbols shifted.
+ pressAndReleaseKey(CODE_SHIFT, SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
+ // Press and slide from shift key, enter symbols.
+ pressAndSlideFromKey(CODE_SHIFT, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
+ // Enter/release symbol letter key, remains in symbols.
+ pressAndSlideFromKey('2', SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
+ // Cancel sliding, switch back to symbols shifted.
+ stopSlidingAndCancel(SYMBOLS_SHIFTED);
// Symbols shifted -> "ABC" key + letter -> symbols shifted.
// Press and slide from "ABC" key, enter alphabet.
pressAndSlideFromKey(CODE_SYMBOL, ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED);
- // Enter/release letter key, switch back to symbols shifted.
- pressAndReleaseKey('a', ALPHABET_UNSHIFTED, SYMBOLS_SHIFTED);
+ // Enter/release letter key, remains in alphabet.
+ pressAndSlideFromKey('z', ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED);
+ // Cancel sliding, switch back to symbols shifted.
+ stopSlidingAndCancel(SYMBOLS_SHIFTED);
// Press/release "ABC" key, switch to alphabet.
pressAndReleaseKey(CODE_SYMBOL, ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED);
@@ -491,8 +721,10 @@ public class KeyboardStateSingleTouchTests extends KeyboardStateTestsBase {
pressAndReleaseKey(CODE_SHIFT, SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
// Press and slide from "ABC" key.
pressAndSlideFromKey(CODE_SYMBOL, ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED);
- // Enter/release letter key, switch back to symbols shifted.
- pressAndReleaseKey('a', ALPHABET_UNSHIFTED, SYMBOLS_SHIFTED);
+ // Enter/release letter key, remains in alphabet.
+ pressAndSlideFromKey('z', ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED);
+ // Cancel sliding, switch back to symbols shifted.
+ stopSlidingAndCancel(SYMBOLS_SHIFTED);
// Press/release "ABC" key, switch to alphabet (not alphabet shifted).
pressAndReleaseKey(CODE_SYMBOL, ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED);
@@ -509,8 +741,10 @@ public class KeyboardStateSingleTouchTests extends KeyboardStateTestsBase {
pressAndReleaseKey(CODE_SHIFT, SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
// Press and slide from "ABC" key.
pressAndSlideFromKey(CODE_SYMBOL, ALPHABET_SHIFT_LOCKED, ALPHABET_SHIFT_LOCKED);
- // Enter/release letter key, switch back to symbols shifted.
- pressAndReleaseKey('A', ALPHABET_SHIFT_LOCKED, SYMBOLS_SHIFTED);
+ // Enter/release letter key, remains in alphabet shift locked.
+ pressAndSlideFromKey('Z', ALPHABET_SHIFT_LOCKED, ALPHABET_SHIFT_LOCKED);
+ // Cancel sliding, switch back to symbols shifted.
+ stopSlidingAndCancel(SYMBOLS_SHIFTED);
// Press/release "ABC" key, switch to alphabet shift locked.
pressAndReleaseKey(CODE_SYMBOL, ALPHABET_SHIFT_LOCKED, ALPHABET_SHIFT_LOCKED);
@@ -527,8 +761,10 @@ public class KeyboardStateSingleTouchTests extends KeyboardStateTestsBase {
pressAndReleaseKey(CODE_SHIFT, SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
// Press and slide from "?123" key.
pressAndSlideFromKey(CODE_SHIFT, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
- // Enter/release symbol letter key, switch back to symbols shifted.
- pressAndReleaseKey('1', SYMBOLS_UNSHIFTED, SYMBOLS_SHIFTED);
+ // Enter/release symbol letter key, remains in symbols.
+ pressAndSlideFromKey('2', SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
+ // Cancel sliding, switch back to symbols shifted.
+ stopSlidingAndCancel(SYMBOLS_SHIFTED);
// Press/release "ABC" key, switch to alphabet shift locked.
pressAndReleaseKey(CODE_SYMBOL, ALPHABET_SHIFT_LOCKED, ALPHABET_SHIFT_LOCKED);
}
diff --git a/tests/src/com/android/inputmethod/keyboard/internal/KeyboardStateTestsBase.java b/tests/src/com/android/inputmethod/keyboard/internal/KeyboardStateTestsBase.java
index 5e94aebf6..e06ca064a 100644
--- a/tests/src/com/android/inputmethod/keyboard/internal/KeyboardStateTestsBase.java
+++ b/tests/src/com/android/inputmethod/keyboard/internal/KeyboardStateTestsBase.java
@@ -71,7 +71,7 @@ public class KeyboardStateTestsBase extends AndroidTestCase
}
public void releaseKey(final int code, final int afterRelease) {
- mSwitcher.onCodeInput(code, SINGLE);
+ mSwitcher.onCodeInput(code);
mSwitcher.onReleaseKey(code, NOT_SLIDING);
assertLayout("afterRelease", afterRelease, mSwitcher.getLayoutId());
}
@@ -87,7 +87,7 @@ public class KeyboardStateTestsBase extends AndroidTestCase
}
public void chordingReleaseKey(final int code, final int afterRelease) {
- mSwitcher.onCodeInput(code, MULTI);
+ mSwitcher.onCodeInput(code);
mSwitcher.onReleaseKey(code, NOT_SLIDING);
assertLayout("afterRelease", afterRelease, mSwitcher.getLayoutId());
}
@@ -104,6 +104,19 @@ public class KeyboardStateTestsBase extends AndroidTestCase
assertLayout("afterSlide", afterSlide, mSwitcher.getLayoutId());
}
+ public void stopSlidingOnKey(final int code, final int afterPress, final int afterSlide) {
+ pressKey(code, afterPress);
+ mSwitcher.onCodeInput(code);
+ mSwitcher.onReleaseKey(code, NOT_SLIDING);
+ mSwitcher.onFinishSlidingInput();
+ assertLayout("afterSlide", afterSlide, mSwitcher.getLayoutId());
+ }
+
+ public void stopSlidingAndCancel(final int afterCancelSliding) {
+ mSwitcher.onFinishSlidingInput();
+ assertLayout("afterCancelSliding", afterCancelSliding, mSwitcher.getLayoutId());
+ }
+
public void longPressKey(final int code, final int afterPress, final int afterLongPress) {
pressKey(code, afterPress);
mSwitcher.onLongPressTimeout(code);
diff --git a/tests/src/com/android/inputmethod/keyboard/internal/MockKeyboardSwitcher.java b/tests/src/com/android/inputmethod/keyboard/internal/MockKeyboardSwitcher.java
index 74506d26a..2544b6c52 100644
--- a/tests/src/com/android/inputmethod/keyboard/internal/MockKeyboardSwitcher.java
+++ b/tests/src/com/android/inputmethod/keyboard/internal/MockKeyboardSwitcher.java
@@ -185,7 +185,7 @@ public class MockKeyboardSwitcher implements KeyboardState.SwitchActions {
}
}
- public void onCodeInput(final int code, final boolean isSinglePointer) {
+ public void onCodeInput(final int code) {
if (mAutoCapsMode == MockConstants.CAP_MODE_WORDS) {
if (Constants.isLetterCode(code)) {
mAutoCapsState = (code == MockConstants.CODE_AUTO_CAPS_TRIGGER)
@@ -194,10 +194,10 @@ public class MockKeyboardSwitcher implements KeyboardState.SwitchActions {
} else {
mAutoCapsState = mAutoCapsMode;
}
- mState.onCodeInput(code, isSinglePointer, mAutoCapsState);
+ mState.onCodeInput(code, mAutoCapsState);
}
- public void onCancelInput(final boolean isSinglePointer) {
- mState.onCancelInput(isSinglePointer);
+ public void onFinishSlidingInput() {
+ mState.onFinishSlidingInput();
}
-} \ No newline at end of file
+}
diff --git a/tests/src/com/android/inputmethod/keyboard/internal/PointerTrackerQueueTests.java b/tests/src/com/android/inputmethod/keyboard/internal/PointerTrackerQueueTests.java
index a572daa8a..279559cfe 100644
--- a/tests/src/com/android/inputmethod/keyboard/internal/PointerTrackerQueueTests.java
+++ b/tests/src/com/android/inputmethod/keyboard/internal/PointerTrackerQueueTests.java
@@ -66,23 +66,23 @@ public class PointerTrackerQueueTests extends AndroidTestCase {
private final PointerTrackerQueue mQueue = new PointerTrackerQueue();
public void testEmpty() {
- assertEquals("empty queue", 0, mQueue.size());
- assertEquals("empty queue", "[]", mQueue.toString());
+ assertEquals(0, mQueue.size());
+ assertEquals("[]", mQueue.toString());
}
public void testAdd() {
mQueue.add(mElement1);
- assertEquals("add element1", 1, mQueue.size());
- assertEquals("after adding element1", "[1]", mQueue.toString());
+ assertEquals(1, mQueue.size());
+ assertEquals("[1]", mQueue.toString());
mQueue.add(mElement2);
- assertEquals("add element2", 2, mQueue.size());
- assertEquals("after adding element2", "[1 2]", mQueue.toString());
+ assertEquals(2, mQueue.size());
+ assertEquals("[1 2]", mQueue.toString());
mQueue.add(mElement3);
- assertEquals("add element3", 3, mQueue.size());
- assertEquals("after adding element3", "[1 2 3]", mQueue.toString());
+ assertEquals(3, mQueue.size());
+ assertEquals("[1 2 3]", mQueue.toString());
mQueue.add(mElement4);
- assertEquals("add element4", 4, mQueue.size());
- assertEquals("after adding element4", "[1 2 3 4]", mQueue.toString());
+ assertEquals(4, mQueue.size());
+ assertEquals("[1 2 3 4]", mQueue.toString());
}
public void testRemove() {
@@ -94,33 +94,29 @@ public class PointerTrackerQueueTests extends AndroidTestCase {
mQueue.add(mElement4);
mQueue.remove(mElement2);
- assertEquals("remove element2", 3, mQueue.size());
- assertEquals("after removing element2", "[1 3 4]", mQueue.toString());
+ assertEquals(3, mQueue.size());
+ assertEquals("[1 3 4]", mQueue.toString());
mQueue.remove(mElement4);
- assertEquals("remove element4", 2, mQueue.size());
- assertEquals("after removing element4", "[1 3]", mQueue.toString());
+ assertEquals(2, mQueue.size());
+ assertEquals("[1 3]", mQueue.toString());
mQueue.remove(mElement4);
- assertEquals("remove element4 again", 2, mQueue.size());
- assertEquals("after removing element4 again", "[1 3]", mQueue.toString());
+ assertEquals(2, mQueue.size());
+ assertEquals("[1 3]", mQueue.toString());
mQueue.remove(mElement1);
- assertEquals("remove element1", 1, mQueue.size());
- assertEquals("after removing element4", "[3]", mQueue.toString());
+ assertEquals(1, mQueue.size());
+ assertEquals("[3]", mQueue.toString());
mQueue.remove(mElement3);
- assertEquals("remove element3", 0, mQueue.size());
- assertEquals("after removing element3", "[]", mQueue.toString());
+ assertEquals(0, mQueue.size());
+ assertEquals("[]", mQueue.toString());
mQueue.remove(mElement1);
- assertEquals("remove element1 again", 0, mQueue.size());
- assertEquals("after removing element1 again", "[]", mQueue.toString());
-
- assertEquals("after remove elements", 0, Element.sPhantomUpCount);
- assertEquals("after remove element1",
- Element.NOT_HAPPENED, mElement1.mPhantomUpEventTime);
- assertEquals("after remove element2",
- Element.NOT_HAPPENED, mElement2.mPhantomUpEventTime);
- assertEquals("after remove element3",
- Element.NOT_HAPPENED, mElement3.mPhantomUpEventTime);
- assertEquals("after remove element4",
- Element.NOT_HAPPENED, mElement4.mPhantomUpEventTime);
+ assertEquals(0, mQueue.size());
+ assertEquals("[]", mQueue.toString());
+
+ assertEquals(0, Element.sPhantomUpCount);
+ assertEquals(Element.NOT_HAPPENED, mElement1.mPhantomUpEventTime);
+ assertEquals(Element.NOT_HAPPENED, mElement2.mPhantomUpEventTime);
+ assertEquals(Element.NOT_HAPPENED, mElement3.mPhantomUpEventTime);
+ assertEquals(Element.NOT_HAPPENED, mElement4.mPhantomUpEventTime);
}
public void testAddAndRemove() {
@@ -132,38 +128,34 @@ public class PointerTrackerQueueTests extends AndroidTestCase {
mQueue.add(mElement4);
mQueue.remove(mElement2);
- assertEquals("remove element2", 3, mQueue.size());
- assertEquals("after removing element2", "[1 3 4]", mQueue.toString());
+ assertEquals(3, mQueue.size());
+ assertEquals("[1 3 4]", mQueue.toString());
mQueue.remove(mElement4);
- assertEquals("remove element4", 2, mQueue.size());
- assertEquals("after removing element4", "[1 3]", mQueue.toString());
+ assertEquals(2, mQueue.size());
+ assertEquals("[1 3]", mQueue.toString());
mQueue.add(mElement2);
- assertEquals("add element2", 3, mQueue.size());
- assertEquals("after adding element2", "[1 3 2]", mQueue.toString());
+ assertEquals(3, mQueue.size());
+ assertEquals("[1 3 2]", mQueue.toString());
mQueue.remove(mElement4);
- assertEquals("remove element4 again", 3, mQueue.size());
- assertEquals("after removing element4 again", "[1 3 2]", mQueue.toString());
+ assertEquals(3, mQueue.size());
+ assertEquals("[1 3 2]", mQueue.toString());
mQueue.remove(mElement1);
- assertEquals("remove element1", 2, mQueue.size());
- assertEquals("after removing element4", "[3 2]", mQueue.toString());
+ assertEquals(2, mQueue.size());
+ assertEquals("[3 2]", mQueue.toString());
mQueue.add(mElement1);
- assertEquals("add element1", 3, mQueue.size());
- assertEquals("after adding element1", "[3 2 1]", mQueue.toString());
+ assertEquals(3, mQueue.size());
+ assertEquals("[3 2 1]", mQueue.toString());
mQueue.remove(mElement3);
- assertEquals("remove element3", 2, mQueue.size());
- assertEquals("after removing element3", "[2 1]", mQueue.toString());
+ assertEquals(2, mQueue.size());
+ assertEquals("[2 1]", mQueue.toString());
mQueue.remove(mElement1);
- assertEquals("remove element1 again", 1, mQueue.size());
- assertEquals("after removing element1 again", "[2]", mQueue.toString());
-
- assertEquals("after remove element1",
- Element.NOT_HAPPENED, mElement1.mPhantomUpEventTime);
- assertEquals("after remove element2",
- Element.NOT_HAPPENED, mElement2.mPhantomUpEventTime);
- assertEquals("after remove element3",
- Element.NOT_HAPPENED, mElement3.mPhantomUpEventTime);
- assertEquals("after remove element4",
- Element.NOT_HAPPENED, mElement4.mPhantomUpEventTime);
+ assertEquals(1, mQueue.size());
+ assertEquals("[2]", mQueue.toString());
+
+ assertEquals(Element.NOT_HAPPENED, mElement1.mPhantomUpEventTime);
+ assertEquals(Element.NOT_HAPPENED, mElement2.mPhantomUpEventTime);
+ assertEquals(Element.NOT_HAPPENED, mElement3.mPhantomUpEventTime);
+ assertEquals(Element.NOT_HAPPENED, mElement4.mPhantomUpEventTime);
}
public void testReleaseAllPointers() {
@@ -176,20 +168,33 @@ public class PointerTrackerQueueTests extends AndroidTestCase {
final long eventTime = 123;
Element.sPhantomUpCount = 0;
mQueue.releaseAllPointers(eventTime);
- assertEquals("after releaseAllPointers", 4, Element.sPhantomUpCount);
- assertEquals("after releaseAllPointers", 0, mQueue.size());
- assertEquals("after releaseAllPointers", "[]", mQueue.toString());
- assertEquals("after releaseAllPointers element1",
- eventTime + 1, mElement1.mPhantomUpEventTime);
- assertEquals("after releaseAllPointers element2",
- eventTime + 2, mElement2.mPhantomUpEventTime);
- assertEquals("after releaseAllPointers element3",
- eventTime + 3, mElement3.mPhantomUpEventTime);
- assertEquals("after releaseAllPointers element4",
- eventTime + 4, mElement4.mPhantomUpEventTime);
+ assertEquals(4, Element.sPhantomUpCount);
+ assertEquals(0, mQueue.size());
+ assertEquals("[]", mQueue.toString());
+ assertEquals(eventTime + 1, mElement1.mPhantomUpEventTime);
+ assertEquals(eventTime + 2, mElement2.mPhantomUpEventTime);
+ assertEquals(eventTime + 3, mElement3.mPhantomUpEventTime);
+ assertEquals(eventTime + 4, mElement4.mPhantomUpEventTime);
+ }
+
+ public void testReleaseAllPointersOlderThanFirst() {
+ mElement2.mIsModifier = true;
+ mQueue.add(mElement1);
+ mQueue.add(mElement2);
+ mQueue.add(mElement3);
+
+ final long eventTime = 123;
+ Element.sPhantomUpCount = 0;
+ mQueue.releaseAllPointersOlderThan(mElement1, eventTime);
+ assertEquals(0, Element.sPhantomUpCount);
+ assertEquals(3, mQueue.size());
+ assertEquals("[1 2 3]", mQueue.toString());
+ assertEquals(Element.NOT_HAPPENED, mElement1.mPhantomUpEventTime);
+ assertEquals(Element.NOT_HAPPENED, mElement2.mPhantomUpEventTime);
+ assertEquals(Element.NOT_HAPPENED, mElement3.mPhantomUpEventTime);
}
- public void testReleaseAllPointersOlderThan() {
+ public void testReleaseAllPointersOlderThanLast() {
mElement2.mIsModifier = true;
mQueue.add(mElement1);
mQueue.add(mElement2);
@@ -199,20 +204,34 @@ public class PointerTrackerQueueTests extends AndroidTestCase {
final long eventTime = 123;
Element.sPhantomUpCount = 0;
mQueue.releaseAllPointersOlderThan(mElement4, eventTime);
- assertEquals("after releaseAllPointersOlderThan", 2, Element.sPhantomUpCount);
- assertEquals("after releaseAllPointersOlderThan", 2, mQueue.size());
- assertEquals("after releaseAllPointersOlderThan", "[2 4]", mQueue.toString());
- assertEquals("after releaseAllPointersOlderThan element1",
- eventTime + 1, mElement1.mPhantomUpEventTime);
- assertEquals("after releaseAllPointersOlderThan element2",
- Element.NOT_HAPPENED, mElement2.mPhantomUpEventTime);
- assertEquals("after releaseAllPointersOlderThan element3",
- eventTime + 2, mElement3.mPhantomUpEventTime);
- assertEquals("after releaseAllPointersOlderThan element4",
- Element.NOT_HAPPENED, mElement4.mPhantomUpEventTime);
+ assertEquals(2, Element.sPhantomUpCount);
+ assertEquals(2, mQueue.size());
+ assertEquals("[2 4]", mQueue.toString());
+ assertEquals(eventTime + 1, mElement1.mPhantomUpEventTime);
+ assertEquals(Element.NOT_HAPPENED, mElement2.mPhantomUpEventTime);
+ assertEquals(eventTime + 2, mElement3.mPhantomUpEventTime);
+ assertEquals(Element.NOT_HAPPENED, mElement4.mPhantomUpEventTime);
+ }
+
+ public void testReleaseAllPointersOlderThanWithoutModifierMiddle() {
+ mQueue.add(mElement1);
+ mQueue.add(mElement2);
+ mQueue.add(mElement3);
+ mQueue.add(mElement4);
+
+ final long eventTime = 123;
+ Element.sPhantomUpCount = 0;
+ mQueue.releaseAllPointersOlderThan(mElement3, eventTime);
+ assertEquals(2, Element.sPhantomUpCount);
+ assertEquals(2, mQueue.size());
+ assertEquals("[3 4]", mQueue.toString());
+ assertEquals(eventTime + 1, mElement1.mPhantomUpEventTime);
+ assertEquals(eventTime + 2, mElement2.mPhantomUpEventTime);
+ assertEquals(Element.NOT_HAPPENED, mElement3.mPhantomUpEventTime);
+ assertEquals(Element.NOT_HAPPENED, mElement4.mPhantomUpEventTime);
}
- public void testReleaseAllPointersOlderThanWithoutModifier() {
+ public void testReleaseAllPointersOlderThanWithoutModifierLast() {
mQueue.add(mElement1);
mQueue.add(mElement2);
mQueue.add(mElement3);
@@ -221,19 +240,13 @@ public class PointerTrackerQueueTests extends AndroidTestCase {
final long eventTime = 123;
Element.sPhantomUpCount = 0;
mQueue.releaseAllPointersOlderThan(mElement4, eventTime);
- assertEquals("after releaseAllPointersOlderThan without modifier",
- 3, Element.sPhantomUpCount);
- assertEquals("after releaseAllPointersOlderThan without modifier", 1, mQueue.size());
- assertEquals("after releaseAllPointersOlderThan without modifier",
- "[4]", mQueue.toString());
- assertEquals("after releaseAllPointersOlderThan without modifier element1",
- eventTime + 1, mElement1.mPhantomUpEventTime);
- assertEquals("after releaseAllPointersOlderThan without modifier element2",
- eventTime + 2, mElement2.mPhantomUpEventTime);
- assertEquals("after releaseAllPointersOlderThan without modifier element3",
- eventTime + 3, mElement3.mPhantomUpEventTime);
- assertEquals("after releaseAllPointersOlderThan without modifier element4",
- Element.NOT_HAPPENED, mElement4.mPhantomUpEventTime);
+ assertEquals(3, Element.sPhantomUpCount);
+ assertEquals(1, mQueue.size());
+ assertEquals("[4]", mQueue.toString());
+ assertEquals(eventTime + 1, mElement1.mPhantomUpEventTime);
+ assertEquals(eventTime + 2, mElement2.mPhantomUpEventTime);
+ assertEquals(eventTime + 3, mElement3.mPhantomUpEventTime);
+ assertEquals(Element.NOT_HAPPENED, mElement4.mPhantomUpEventTime);
}
public void testReleaseAllPointersExcept() {
@@ -246,17 +259,13 @@ public class PointerTrackerQueueTests extends AndroidTestCase {
final long eventTime = 123;
Element.sPhantomUpCount = 0;
mQueue.releaseAllPointersExcept(mElement3, eventTime);
- assertEquals("after releaseAllPointersExcept", 3, Element.sPhantomUpCount);
- assertEquals("after releaseAllPointersExcept", 1, mQueue.size());
- assertEquals("after releaseAllPointersExcept", "[3]", mQueue.toString());
- assertEquals("after releaseAllPointersExcept element1",
- eventTime + 1, mElement1.mPhantomUpEventTime);
- assertEquals("after releaseAllPointersExcept element2",
- eventTime + 2, mElement2.mPhantomUpEventTime);
- assertEquals("after releaseAllPointersExcept element3",
- Element.NOT_HAPPENED, mElement3.mPhantomUpEventTime);
- assertEquals("after releaseAllPointersExcept element4",
- eventTime + 3, mElement4.mPhantomUpEventTime);
+ assertEquals(3, Element.sPhantomUpCount);
+ assertEquals(1, mQueue.size());
+ assertEquals("[3]", mQueue.toString());
+ assertEquals(eventTime + 1, mElement1.mPhantomUpEventTime);
+ assertEquals(eventTime + 2, mElement2.mPhantomUpEventTime);
+ assertEquals(Element.NOT_HAPPENED, mElement3.mPhantomUpEventTime);
+ assertEquals(eventTime + 3, mElement4.mPhantomUpEventTime);
}
public void testHasModifierKeyOlderThan() {
@@ -268,54 +277,46 @@ public class PointerTrackerQueueTests extends AndroidTestCase {
mQueue.add(mElement3);
mQueue.add(mElement4);
- assertFalse("hasModifierKeyOlderThan element1", mQueue.hasModifierKeyOlderThan(mElement1));
- assertFalse("hasModifierKeyOlderThan element2", mQueue.hasModifierKeyOlderThan(mElement2));
- assertFalse("hasModifierKeyOlderThan element3", mQueue.hasModifierKeyOlderThan(mElement3));
- assertFalse("hasModifierKeyOlderThan element4", mQueue.hasModifierKeyOlderThan(mElement4));
+ assertFalse(mQueue.hasModifierKeyOlderThan(mElement1));
+ assertFalse(mQueue.hasModifierKeyOlderThan(mElement2));
+ assertFalse(mQueue.hasModifierKeyOlderThan(mElement3));
+ assertFalse(mQueue.hasModifierKeyOlderThan(mElement4));
mElement2.mIsModifier = true;
- assertFalse("hasModifierKeyOlderThan element1", mQueue.hasModifierKeyOlderThan(mElement1));
- assertFalse("hasModifierKeyOlderThan element2", mQueue.hasModifierKeyOlderThan(mElement2));
- assertTrue("hasModifierKeyOlderThan element3", mQueue.hasModifierKeyOlderThan(mElement3));
- assertTrue("hasModifierKeyOlderThan element4", mQueue.hasModifierKeyOlderThan(mElement4));
-
- assertEquals("after hasModifierKeyOlderThan", 0, Element.sPhantomUpCount);
- assertEquals("after hasModifierKeyOlderThan", 4, mQueue.size());
- assertEquals("after hasModifierKeyOlderThan", "[1 2 3 4]", mQueue.toString());
- assertEquals("after hasModifierKeyOlderThan element1",
- Element.NOT_HAPPENED, mElement1.mPhantomUpEventTime);
- assertEquals("after hasModifierKeyOlderThan element2",
- Element.NOT_HAPPENED, mElement2.mPhantomUpEventTime);
- assertEquals("after hasModifierKeyOlderThan element3",
- Element.NOT_HAPPENED, mElement3.mPhantomUpEventTime);
- assertEquals("after hasModifierKeyOlderThan element4",
- Element.NOT_HAPPENED, mElement4.mPhantomUpEventTime);
+ assertFalse(mQueue.hasModifierKeyOlderThan(mElement1));
+ assertFalse(mQueue.hasModifierKeyOlderThan(mElement2));
+ assertTrue(mQueue.hasModifierKeyOlderThan(mElement3));
+ assertTrue(mQueue.hasModifierKeyOlderThan(mElement4));
+
+ assertEquals(0, Element.sPhantomUpCount);
+ assertEquals(4, mQueue.size());
+ assertEquals("[1 2 3 4]", mQueue.toString());
+ assertEquals(Element.NOT_HAPPENED, mElement1.mPhantomUpEventTime);
+ assertEquals(Element.NOT_HAPPENED, mElement2.mPhantomUpEventTime);
+ assertEquals(Element.NOT_HAPPENED, mElement3.mPhantomUpEventTime);
+ assertEquals(Element.NOT_HAPPENED, mElement4.mPhantomUpEventTime);
}
public void testIsAnyInSlidingKeyInput() {
Element.sPhantomUpCount = 0;
- assertFalse("isAnyInSlidingKeyInput empty", mQueue.isAnyInSlidingKeyInput());
+ assertFalse(mQueue.isAnyInSlidingKeyInput());
mQueue.add(mElement1);
mQueue.add(mElement2);
mQueue.add(mElement3);
mQueue.add(mElement4);
- assertFalse("isAnyInSlidingKeyInput element1", mQueue.isAnyInSlidingKeyInput());
+ assertFalse(mQueue.isAnyInSlidingKeyInput());
mElement3.mIsInSlidingKeyInput = true;
- assertTrue("isAnyInSlidingKeyInput element1", mQueue.isAnyInSlidingKeyInput());
-
- assertEquals("after isAnyInSlidingKeyInput", 0, Element.sPhantomUpCount);
- assertEquals("after isAnyInSlidingKeyInput", 4, mQueue.size());
- assertEquals("after isAnyInSlidingKeyInput", "[1 2 3 4]", mQueue.toString());
- assertEquals("after isAnyInSlidingKeyInput element1",
- Element.NOT_HAPPENED, mElement1.mPhantomUpEventTime);
- assertEquals("after isAnyInSlidingKeyInput element2",
- Element.NOT_HAPPENED, mElement2.mPhantomUpEventTime);
- assertEquals("after isAnyInSlidingKeyInput element3",
- Element.NOT_HAPPENED, mElement3.mPhantomUpEventTime);
- assertEquals("after isAnyInSlidingKeyInput element4",
- Element.NOT_HAPPENED, mElement4.mPhantomUpEventTime);
+ assertTrue(mQueue.isAnyInSlidingKeyInput());
+
+ assertEquals(0, Element.sPhantomUpCount);
+ assertEquals(4, mQueue.size());
+ assertEquals("[1 2 3 4]", mQueue.toString());
+ assertEquals(Element.NOT_HAPPENED, mElement1.mPhantomUpEventTime);
+ assertEquals(Element.NOT_HAPPENED, mElement2.mPhantomUpEventTime);
+ assertEquals(Element.NOT_HAPPENED, mElement3.mPhantomUpEventTime);
+ assertEquals(Element.NOT_HAPPENED, mElement4.mPhantomUpEventTime);
}
}