Add more KeyboardState unit test cases

Bug: 5708602
Change-Id: Ib9d2b7a2878f78adecc857fd569fba8965cf4a03
main
Tadashi G. Takaoka 2012-01-10 14:31:47 +09:00
parent d3f1caec0e
commit 6d5c9c9edc
1 changed files with 328 additions and 34 deletions

View File

@ -75,46 +75,143 @@ public class KeyboardStateTests extends AndroidTestCase {
// Shift key in alphabet mode. // Shift key in alphabet mode.
public void testShift() { public void testShift() {
// Press/release shift key. // Press/release shift key, enter into shift state.
mSwitcher.onPressShift(NOT_SLIDING); mSwitcher.onPressShift(NOT_SLIDING);
assertAlphabetManualShifted(); assertAlphabetManualShifted();
mSwitcher.onReleaseShift(NOT_SLIDING); mSwitcher.onReleaseShift(NOT_SLIDING);
assertAlphabetManualShifted(); assertAlphabetManualShifted();
// Press/release shift key, back to normal state.
// Press/release shift key.
mSwitcher.onPressShift(NOT_SLIDING); mSwitcher.onPressShift(NOT_SLIDING);
assertAlphabetManualShifted(); assertAlphabetManualShifted();
mSwitcher.onReleaseShift(NOT_SLIDING); mSwitcher.onReleaseShift(NOT_SLIDING);
assertAlphabetNormal(); assertAlphabetNormal();
// TODO: Sliding test // Press/release shift key, enter into shift state.
mSwitcher.onPressShift(NOT_SLIDING);
assertAlphabetManualShifted();
mSwitcher.onReleaseShift(NOT_SLIDING);
assertAlphabetManualShifted();
// Press/release letter key, snap back to normal state.
mSwitcher.onOtherKeyPressed();
mSwitcher.onCodeInput('Z', SINGLE);
assertAlphabetNormal();
}
// Shift key chording input.
public void testShiftChording() {
// Press shift key and hold, enter into choring shift state.
mSwitcher.onPressShift(NOT_SLIDING);
assertAlphabetManualShifted();
// Press/release letter keys.
mSwitcher.onOtherKeyPressed();
mSwitcher.onCodeInput('Z', MULTI);
assertAlphabetManualShifted();
mSwitcher.onOtherKeyPressed();
mSwitcher.onCodeInput('X', MULTI);
assertAlphabetManualShifted();
// Release shift key, snap back to normal state.
mSwitcher.onCodeInput(Keyboard.CODE_SHIFT, SINGLE);
mSwitcher.onReleaseShift(NOT_SLIDING);
mSwitcher.updateShiftState();
assertAlphabetNormal();
}
// Shift key sliding input.
public void testShiftSliding() {
// Press shift key.
mSwitcher.onPressShift(NOT_SLIDING);
assertAlphabetManualShifted();
// Slide out shift key.
mSwitcher.onReleaseShift(SLIDING);
assertAlphabetManualShifted();
// Enter into letter key.
mSwitcher.onOtherKeyPressed();
assertAlphabetManualShifted();
// Release letter key, snap back to alphabet.
mSwitcher.onCodeInput('Z', SINGLE);
assertAlphabetNormal();
}
private void enterSymbolsMode() {
// Press/release "?123" key.
mSwitcher.onPressSymbol();
assertSymbolsNormal();
mSwitcher.onCodeInput(Keyboard.CODE_SWITCH_ALPHA_SYMBOL, SINGLE);
mSwitcher.onReleaseSymbol();
assertSymbolsNormal();
}
private void leaveSymbolsMode() {
// Press/release "ABC" key.
mSwitcher.onPressSymbol();
assertAlphabetNormal();
mSwitcher.onCodeInput(Keyboard.CODE_SWITCH_ALPHA_SYMBOL, SINGLE);
assertAlphabetNormal();
} }
// Switching between alphabet and symbols. // Switching between alphabet and symbols.
public void testAlphabetAndSymbols() { public void testAlphabetAndSymbols() {
// Press/release "?123" key. enterSymbolsMode();
leaveSymbolsMode();
}
// Switching between alphabet shift locked and symbols.
public void testAlphabetShiftLockedAndSymbols() {
enterShiftLockWithLongPressShift();
enterSymbolsMode();
// Press/release "ABC" key, switch back to shift locked mode.
mSwitcher.onPressSymbol();
assertAlphabetShiftLocked();
mSwitcher.onCodeInput(Keyboard.CODE_SWITCH_ALPHA_SYMBOL, SINGLE);
mSwitcher.onReleaseSymbol();
assertAlphabetShiftLocked();
}
// Symbols key chording input.
public void testSymbolsChording() {
// Press symbols key and hold, enter into choring shift state.
mSwitcher.onPressSymbol(); mSwitcher.onPressSymbol();
assertSymbolsNormal(); assertSymbolsNormal();
// Press/release symbol letter keys.
mSwitcher.onOtherKeyPressed();
mSwitcher.onCodeInput('1', MULTI);
assertSymbolsNormal();
mSwitcher.onOtherKeyPressed();
mSwitcher.onCodeInput('2', MULTI);
assertSymbolsNormal();
// Release shift key, snap back to normal state.
mSwitcher.onCodeInput(Keyboard.CODE_SWITCH_ALPHA_SYMBOL, SINGLE);
mSwitcher.onReleaseSymbol();
mSwitcher.updateShiftState();
assertAlphabetNormal();
}
// Symbols key sliding input.
public void testSymbolsSliding() {
// Press "123?" key.
mSwitcher.onPressSymbol();
assertSymbolsNormal();
// Slide out from "123?" key.
mSwitcher.onReleaseSymbol(); mSwitcher.onReleaseSymbol();
assertSymbolsNormal(); assertSymbolsNormal();
// Press/release "ABC" key. // Enter into letter key.
mSwitcher.onPressSymbol(); mSwitcher.onOtherKeyPressed();
assertSymbolsNormal();
// Release letter key, snap back to alphabet.
mSwitcher.onCodeInput('z', SINGLE);
assertAlphabetNormal(); assertAlphabetNormal();
mSwitcher.onReleaseSymbol();
assertAlphabetNormal();
// TODO: Sliding test
// TODO: Snap back test
} }
// Switching between symbols and symbols shifted. // Switching between symbols and symbols shifted.
public void testSymbolsAndSymbolsShifted() { public void testSymbolsAndSymbolsShifted() {
// Press/release "?123" key. enterSymbolsMode();
mSwitcher.onPressSymbol();
assertSymbolsNormal();
mSwitcher.onReleaseSymbol();
assertSymbolsNormal();
// Press/release "=\<" key. // Press/release "=\<" key.
mSwitcher.onPressShift(NOT_SLIDING); mSwitcher.onPressShift(NOT_SLIDING);
@ -122,14 +219,94 @@ public class KeyboardStateTests extends AndroidTestCase {
mSwitcher.onReleaseShift(NOT_SLIDING); mSwitcher.onReleaseShift(NOT_SLIDING);
assertSymbolsShifted(); assertSymbolsShifted();
// Press/release "ABC" key. // Press/release "?123" key.
mSwitcher.onPressSymbol(); mSwitcher.onPressShift(NOT_SLIDING);
assertAlphabetNormal(); assertSymbolsNormal();
mSwitcher.onReleaseSymbol(); mSwitcher.onReleaseShift(NOT_SLIDING);
assertAlphabetNormal(); assertSymbolsNormal();
// TODO: Sliding test leaveSymbolsMode();
// TODO: Snap back test }
// Symbols shift sliding input
public void testSymbolsShiftSliding() {
enterSymbolsMode();
// Press "=\<" key.
mSwitcher.onPressShift(NOT_SLIDING);
assertSymbolsShifted();
// Slide out "=\<" key.
mSwitcher.onReleaseShift(SLIDING);
assertSymbolsShifted();
// Enter into symbol shifted letter key.
mSwitcher.onOtherKeyPressed();
assertSymbolsShifted();
// Release symbol shifted letter key, snap back to symbols.
mSwitcher.onCodeInput('~', SINGLE);
assertSymbolsNormal();
}
// Symbols shift sliding input from symbols shifted.
public void testSymbolsShiftSliding2() {
enterSymbolsMode();
// Press/release "=\<" key.
mSwitcher.onPressShift(NOT_SLIDING);
assertSymbolsShifted();
mSwitcher.onReleaseShift(NOT_SLIDING);
assertSymbolsShifted();
// Press "123?" key.
mSwitcher.onPressShift(NOT_SLIDING);
assertSymbolsNormal();
// Slide out "123?" key.
mSwitcher.onReleaseShift(SLIDING);
assertSymbolsNormal();
// Enter into symbol letter key.
mSwitcher.onOtherKeyPressed();
assertSymbolsNormal();
// Release symbol letter key, snap back to symbols shift.
mSwitcher.onCodeInput('1', SINGLE);
assertSymbolsShifted();
}
// Automatic snap back to alphabet from symbols by space key.
public void testSnapBackBySpace() {
enterSymbolsMode();
// Enter a symbol letter.
mSwitcher.onOtherKeyPressed();
assertSymbolsNormal();
mSwitcher.onCodeInput('1', SINGLE);
assertSymbolsNormal();
// Enter space, snap back to alphabet.
mSwitcher.onOtherKeyPressed();
assertSymbolsNormal();
mSwitcher.onCodeInput(Keyboard.CODE_SPACE, SINGLE);
assertAlphabetNormal();
}
// Automatic snap back to alphabet from symbols by registered letters.
public void testSnapBack() {
final String snapBackChars = "'";
final int snapBackCode = snapBackChars.codePointAt(0);
final boolean hasDistinctMultitouch = true;
mSwitcher.loadKeyboard(snapBackChars, hasDistinctMultitouch);
enterSymbolsMode();
// Enter a symbol letter.
mSwitcher.onOtherKeyPressed();
assertSymbolsNormal();
mSwitcher.onCodeInput('1', SINGLE);
assertSymbolsNormal();
// Enter snap back letter, snap back to alphabet.
mSwitcher.onOtherKeyPressed();
assertSymbolsNormal();
mSwitcher.onCodeInput(snapBackCode, SINGLE);
assertAlphabetNormal();
} }
// Automatic upper case test // Automatic upper case test
@ -145,21 +322,92 @@ public class KeyboardStateTests extends AndroidTestCase {
// Release shift key. // Release shift key.
mSwitcher.onReleaseShift(NOT_SLIDING); mSwitcher.onReleaseShift(NOT_SLIDING);
assertAlphabetNormal(); assertAlphabetNormal();
// TODO: Chording test.
} }
// TODO: UpdateShiftState with shift locked, etc. // Chording shift key in automatic upper case.
public void testAutomaticUpperCaseChording() {
mSwitcher.setAutoCapsMode(AUTO_CAPS);
// Update shift state with auto caps enabled.
mSwitcher.updateShiftState();
assertAlphabetAutomaticShifted();
// TODO: Multitouch test // Press shift key.
mSwitcher.onPressShift(NOT_SLIDING);
assertAlphabetManualShifted();
// Press/release letter keys.
mSwitcher.onOtherKeyPressed();
mSwitcher.onCodeInput('Z', MULTI);
assertAlphabetManualShifted();
// Release shift key, snap back to alphabet.
mSwitcher.onCodeInput(Keyboard.CODE_SHIFT, SINGLE);
mSwitcher.onReleaseShift(NOT_SLIDING);
assertAlphabetNormal();
}
// TODO: Change focus test. // Chording symbol key in automatic upper case.
public void testAutomaticUpperCaseChrding2() {
mSwitcher.setAutoCapsMode(AUTO_CAPS);
// Update shift state with auto caps enabled.
mSwitcher.updateShiftState();
assertAlphabetAutomaticShifted();
// TODO: Change orientation test. // Press "123?" key.
mSwitcher.onPressSymbol();
assertSymbolsNormal();
// Press/release symbol letter keys.
mSwitcher.onOtherKeyPressed();
assertSymbolsNormal();
mSwitcher.onCodeInput('1', MULTI);
assertSymbolsNormal();
// Release "123?" key, snap back to alphabet.
mSwitcher.onCodeInput(Keyboard.CODE_SWITCH_ALPHA_SYMBOL, SINGLE);
mSwitcher.onReleaseSymbol();
assertAlphabetNormal();
}
// Long press shift key. // Sliding from shift key in automatic upper case.
// TODO: Move long press recognizing timer/logic into KeyboardState. public void testAutomaticUpperCaseSliding() {
public void testLongPressShift() { mSwitcher.setAutoCapsMode(AUTO_CAPS);
// Update shift state with auto caps enabled.
mSwitcher.updateShiftState();
assertAlphabetAutomaticShifted();
// Press shift key.
mSwitcher.onPressShift(NOT_SLIDING);
assertAlphabetManualShifted();
// Slide out shift key.
mSwitcher.onReleaseShift(SLIDING);
assertAlphabetManualShifted();
// Enter into letter key.
mSwitcher.onOtherKeyPressed();
assertAlphabetManualShifted();
// Release letter key, snap back to alphabet.
mSwitcher.onCodeInput('Z', SINGLE);
assertAlphabetNormal();
}
// Sliding from symbol key in automatic upper case.
public void testAutomaticUpperCaseSliding2() {
mSwitcher.setAutoCapsMode(AUTO_CAPS);
// Update shift state with auto caps enabled.
mSwitcher.updateShiftState();
assertAlphabetAutomaticShifted();
// Press "123?" key.
mSwitcher.onPressSymbol();
assertSymbolsNormal();
// Slide out "123?" key.
mSwitcher.onReleaseSymbol();
assertSymbolsNormal();
// Enter into symbol letter keys.
mSwitcher.onOtherKeyPressed();
assertSymbolsNormal();
// Release symbol letter key, snap back to alphabet.
mSwitcher.onCodeInput('1', SINGLE);
assertAlphabetNormal();
}
private void enterShiftLockWithLongPressShift() {
// Long press shift key // Long press shift key
mSwitcher.onPressShift(NOT_SLIDING); mSwitcher.onPressShift(NOT_SLIDING);
assertAlphabetManualShifted(); assertAlphabetManualShifted();
@ -170,8 +418,9 @@ public class KeyboardStateTests extends AndroidTestCase {
assertAlphabetShiftLocked(); assertAlphabetShiftLocked();
mSwitcher.onReleaseShift(NOT_SLIDING); mSwitcher.onReleaseShift(NOT_SLIDING);
assertAlphabetShiftLocked(); assertAlphabetShiftLocked();
}
// Long press shift key. private void leaveShiftLockWithLongPressShift() {
mSwitcher.onPressShift(NOT_SLIDING); mSwitcher.onPressShift(NOT_SLIDING);
assertAlphabetManualShifted(); assertAlphabetManualShifted();
// Long press recognized in LatinKeyboardView.KeyTimerHandler. // Long press recognized in LatinKeyboardView.KeyTimerHandler.
@ -183,6 +432,27 @@ public class KeyboardStateTests extends AndroidTestCase {
assertAlphabetNormal(); assertAlphabetNormal();
} }
// Long press shift key.
// TODO: Move long press recognizing timer/logic into KeyboardState.
public void testLongPressShift() {
enterShiftLockWithLongPressShift();
leaveShiftLockWithLongPressShift();
}
// Leave shift lock with single tap shift key.
public void testShiftInShiftLock() {
enterShiftLockWithLongPressShift();
assertAlphabetShiftLocked();
// Tap shift key.
mSwitcher.onPressShift(NOT_SLIDING);
assertAlphabetManualShifted();
mSwitcher.onCodeInput(Keyboard.CODE_SHIFT, SINGLE);
assertAlphabetManualShifted();
mSwitcher.onReleaseShift(NOT_SLIDING);
assertAlphabetNormal();
}
// Double tap shift key. // Double tap shift key.
// TODO: Move double tap recognizing timer/logic into KeyboardState. // TODO: Move double tap recognizing timer/logic into KeyboardState.
public void testDoubleTapShift() { public void testDoubleTapShift() {
@ -210,4 +480,28 @@ public class KeyboardStateTests extends AndroidTestCase {
// Second shift key tap. // Second shift key tap.
// Second tap is ignored in LatinKeyboardView.KeyTimerHandler. // Second tap is ignored in LatinKeyboardView.KeyTimerHandler.
} }
// Update shift state.
public void testUpdateShiftState() {
mSwitcher.setAutoCapsMode(AUTO_CAPS);
// Update shift state.
mSwitcher.updateShiftState();
assertAlphabetAutomaticShifted();
}
// Update shift state when shift locked.
public void testUpdateShiftStateInShiftLocked() {
mSwitcher.setAutoCapsMode(AUTO_CAPS);
enterShiftLockWithLongPressShift();
assertAlphabetShiftLocked();
// Update shift state when shift locked
mSwitcher.updateShiftState();
assertAlphabetShiftLocked();
}
// TODO: Multitouch test
// TODO: Change focus test.
// TODO: Change orientation test.
} }