Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 373f4525 authored by Tadashi G. Takaoka's avatar Tadashi G. Takaoka
Browse files

Add more sliding input unit test

Bug: 5881820
Change-Id: I9249d8b702ba9afbd1c7d0a4889ac5b2e929f85d
parent 4eb240eb
Loading
Loading
Loading
Loading
+33 −73
Original line number Diff line number Diff line
@@ -17,146 +17,106 @@
package com.android.inputmethod.keyboard.internal;

public class KeyboardStateMultiTouchTests extends KeyboardStateTestsBase {
    // Shift key chording input.
    public void testChording() {
    // Chording input in alphabet.
    public void testChordingAlphabet() {
        // Press shift key and hold, enter into choring shift state.
        pressKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED);

        // Press/release letter keys.
        // Press/release letter key.
        chordingPressAndReleaseKey('Z', ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
        chordingPressAndReleaseKey('X', ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);

        // Release shift key, switch back to alphabet.
        releaseKey(CODE_SHIFT, ALPHABET_UNSHIFTED);

        // Press symbols key and hold, enter into choring symbols state.
        // Press "?123" key and hold, enter into choring symbols state.
        pressKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED);

        // Press/release symbol letter keys.
        // Press/release symbol letter key.
        chordingPressAndReleaseKey('1', SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
        chordingPressAndReleaseKey('2', SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);

        // Release symbols key, switch back to alphabet.
        // Release "ABC" key, switch back to alphabet.
        releaseKey(CODE_SYMBOL, ALPHABET_UNSHIFTED);
    }

    // Shift key chording input in shift locked.
    public void testShiftChordingShiftLocked() {
    // Chording input in shift locked.
    public void testChordingShiftLocked() {
        // Long press shift key, enter alphabet shift locked.
        longPressShiftKey(ALPHABET_MANUAL_SHIFTED, ALPHABET_SHIFT_LOCKED);

        // Press shift key and hold, enter into choring shift state.
        pressKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED);

        // Press/release letter keys.
        // Press/release letter key.
        chordingPressAndReleaseKey('Z', ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
        chordingPressAndReleaseKey('X', ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);

        // Release shift key, switch back to alphabet shift locked.
        releaseKey(CODE_SHIFT, ALPHABET_SHIFT_LOCKED);

        // Press symbols key and hold, enter into choring symbols state.
        // Press "?123" key and hold, enter into choring symbols state.
        pressKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED);

        // Press/release symbol letter keys.
        // Press/release symbol letter key.
        chordingPressAndReleaseKey('1', SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
        chordingPressAndReleaseKey('2', SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);

        // Release symbols key, switch back to alphabet shift locked.
        // Release "123?" key, switch back to alphabet shift locked.
        releaseKey(CODE_SYMBOL, ALPHABET_SHIFT_LOCKED);
    }

    // Symbols key chording input.
    public void testSymbolsChording() {
        // Press/release symbols key, enter symbols.
    // Chording input in symbols.
    public void testChordingSymbols() {
        // Press/release "?123" key, enter symbols.
        pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);

        // Press shift key and hold, enter into choring symbols shifted state.
        // Press "=\<" key and hold, enter into choring symbols shifted state.
        pressKey(CODE_SHIFT, SYMBOLS_SHIFTED);

        // Press/release symbols keys.
        // Press/release symbol letter key.
        chordingPressAndReleaseKey('1', SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
        chordingPressAndReleaseKey('2', SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);

        // Release shift key, switch back to symbols.
        // Release "=\<" key, switch back to symbols.
        releaseKey(CODE_SHIFT, SYMBOLS_UNSHIFTED);

        // Press "ABC" key and hold, enter into choring alphabet state.
        pressKey(CODE_SYMBOL, ALPHABET_UNSHIFTED);

        // Press/release letter keys.
        // Press/release letter key.
        chordingPressAndReleaseKey('a', ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED);
        chordingPressAndReleaseKey('b', ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED);

        // Release "ABC" key, switch back to symbols.
        releaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED);
    }

    // Symbols shifted key chording input in symbol.
    public void testSymbolsShiftedChording() {
        // Press/release symbols key, enter symbols.
    // Chording input in symbol shifted.
    public void testChordingSymbolsShifted() {
        // Press/release "?123" key, enter symbols.
        pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
        // Press/release shift key, enter symbols shifted.
        // Press/release "=\<" key, enter symbols shifted.
        pressAndReleaseKey(CODE_SHIFT, SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);

        // Press shift key and hold, enter into chording symbols state.
        // Press "=\<" key and hold, enter into chording symbols state.
        pressKey(CODE_SHIFT, SYMBOLS_UNSHIFTED);

        // Press/release symbol letter keys.
        // Press/release symbol letter key.
        chordingPressAndReleaseKey('1', SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
        chordingPressAndReleaseKey('2', SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);

        // Release shift key, switch back to symbols shifted state.
        // Release "=\<" key, switch back to symbols shifted state.
        releaseKey(CODE_SHIFT, SYMBOLS_SHIFTED);

        // Press "ABC" key and hold, enter into choring alphabet state.
        pressKey(CODE_SYMBOL, ALPHABET_UNSHIFTED);

        // Press/release letter keys.
        // Press/release letter key.
        chordingPressAndReleaseKey('a', ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED);
        chordingPressAndReleaseKey('b', ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED);

        // Release "ABC" key, switch back to symbols.
        releaseKey(CODE_SYMBOL, SYMBOLS_SHIFTED);
    }

    // Chording shift key in automatic upper case.
    public void testAutomaticUpperCaseChording() {
    // Chording input in automatic upper case.
    public void testChordingAutomaticUpperCase() {
        // Set auto caps mode on.
        setAutoCapsMode(AUTO_CAPS);

        // Update shift state with auto caps enabled.
        updateShiftState(ALPHABET_AUTOMATIC_SHIFTED);

        pressAndReleaseKey(CODE_AUTO_CAPS_TRIGGER, ALPHABET_UNSHIFTED, ALPHABET_AUTOMATIC_SHIFTED);
        // Press shift key and hold, enter into chording shift state.
        pressKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED);

        // Press/release letter keys.
        // Press/release letter key.
        chordingPressAndReleaseKey('Z', ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);

        // Release shift key, switch back to alphabet.
        releaseKey(CODE_SHIFT, ALPHABET_UNSHIFTED);
    }

    // Chording symbol key in automatic upper case.
    public void testAutomaticUpperCaseChording2() {
        // Set auto caps mode on.
        setAutoCapsMode(AUTO_CAPS);

        // Update shift state with auto caps enabled.
        updateShiftState(ALPHABET_AUTOMATIC_SHIFTED);

        pressAndReleaseKey(CODE_AUTO_CAPS_TRIGGER, ALPHABET_UNSHIFTED, ALPHABET_AUTOMATIC_SHIFTED);
        // Press "123?" key and hold, enter into chording symbols state.
        pressKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED);

        // Press/release symbol letter keys.
        // Press/release symbol letter key.
        chordingPressAndReleaseKey('1', SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);

        // Release "123?" key, switch back to alphabet.
        releaseKey(CODE_SYMBOL, ALPHABET_UNSHIFTED);
    }

    // TODO: Multitouch test

    // TODO: n-Keys roll over test
}
+350 −133

File changed.

Preview size limit exceeded, changes collapsed.

+16 −10
Original line number Diff line number Diff line
@@ -42,9 +42,15 @@ public class KeyboardStateTestsBase extends AndroidTestCase
        mLayoutSwitchBackSymbols = switchBackSymbols;
    }

    private static void assertLayout(int expected, int actual) {
        assertTrue("expected=" + MockKeyboardSwitcher.getLayoutName(expected)
                + " actual=" + MockKeyboardSwitcher.getLayoutName(actual),
                expected == actual);
    }

    public void updateShiftState(int afterUpdate) {
        mSwitcher.updateShiftState();
        assertEquals(afterUpdate, mSwitcher.getLayoutId());
        assertLayout(afterUpdate, mSwitcher.getLayoutId());
    }

    public void loadKeyboard(int afterLoad) {
@@ -55,18 +61,18 @@ public class KeyboardStateTestsBase extends AndroidTestCase
    public void rotateDevice(int afterRotate) {
        mSwitcher.saveKeyboardState();
        mSwitcher.loadKeyboard(mLayoutSwitchBackSymbols);
        assertEquals(afterRotate, mSwitcher.getLayoutId());
        assertLayout(afterRotate, mSwitcher.getLayoutId());
    }

    public void pressKey(int code, int afterPress) {
        mSwitcher.onPressKey(code);
        assertEquals(afterPress, mSwitcher.getLayoutId());
        assertLayout(afterPress, mSwitcher.getLayoutId());
    }

    public void releaseKey(int code, int afterRelease) {
        mSwitcher.onCodeInput(code, SINGLE);
        mSwitcher.onReleaseKey(code, NOT_SLIDING);
        assertEquals(afterRelease, mSwitcher.getLayoutId());
        assertLayout(afterRelease, mSwitcher.getLayoutId());
    }

    public void pressAndReleaseKey(int code, int afterPress, int afterRelease) {
@@ -81,7 +87,7 @@ public class KeyboardStateTestsBase extends AndroidTestCase
    public void chordingReleaseKey(int code, int afterRelease) {
        mSwitcher.onCodeInput(code, MULTI);
        mSwitcher.onReleaseKey(code, NOT_SLIDING);
        assertEquals(afterRelease, mSwitcher.getLayoutId());
        assertLayout(afterRelease, mSwitcher.getLayoutId());
    }

    public void chordingPressAndReleaseKey(int code, int afterPress, int afterRelease) {
@@ -92,22 +98,22 @@ public class KeyboardStateTestsBase extends AndroidTestCase
    public void pressAndSlideFromKey(int code, int afterPress, int afterSlide) {
        pressKey(code, afterPress);
        mSwitcher.onReleaseKey(code, SLIDING);
        assertEquals(afterSlide, mSwitcher.getLayoutId());
        assertLayout(afterSlide, mSwitcher.getLayoutId());
    }

    public void longPressShiftKey(int afterPress, int afterLongPress) {
        // Long press shift key
        mSwitcher.onPressKey(CODE_SHIFT);
        assertEquals(afterPress, mSwitcher.getLayoutId());
        assertLayout(afterPress, mSwitcher.getLayoutId());
        // Long press recognized in LatinKeyboardView.KeyTimerHandler.
        mSwitcher.onCodeInput(CODE_CAPSLOCK, SINGLE);
        assertEquals(afterLongPress, mSwitcher.getLayoutId());
        assertLayout(afterLongPress, mSwitcher.getLayoutId());
        mSwitcher.onReleaseKey(CODE_SHIFT, NOT_SLIDING);
        assertEquals(afterLongPress, mSwitcher.getLayoutId());
        assertLayout(afterLongPress, mSwitcher.getLayoutId());
    }

    public void secondTapShiftKey(int afterTap) {
        mSwitcher.onCodeInput(CODE_CAPSLOCK, SINGLE);
        assertEquals(afterTap, mSwitcher.getLayoutId());
        assertLayout(afterTap, mSwitcher.getLayoutId());
    }
}
+12 −0
Original line number Diff line number Diff line
@@ -56,6 +56,18 @@ public class MockKeyboardSwitcher implements KeyboardState.SwitchActions {
        return mLayout;
    }

    public static String getLayoutName(int layoutId) {
        switch (layoutId) {
        case Constants.ALPHABET_UNSHIFTED: return "ALPHABET_UNSHIFTED";
        case Constants.ALPHABET_MANUAL_SHIFTED: return "ALPHABET_MANUAL_SHIFTED";
        case Constants.ALPHABET_AUTOMATIC_SHIFTED: return "ALPHABET_AUTOMATIC_SHIFTED";
        case Constants.ALPHABET_SHIFT_LOCKED: return "ALPHABET_SHIFT_LOCKED";
        case Constants.SYMBOLS_UNSHIFTED: return "SYMBOLS_UNSHIFTED";
        case Constants.SYMBOLS_SHIFTED: return "SYMBOLS_SHIFTED";
        default: return "UNKNOWN<" + layoutId + ">";
        }
    }

    public void setAutoCapsMode(boolean autoCaps) {
        mAutoCapsMode = autoCaps;
    }