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

Commit 1e4684ad authored by Jean Chalard's avatar Jean Chalard
Browse files

Test that delete actually removes any selected text.

Bug: 5699301
Change-Id: I09a967eb03690251e8bd69503285c982d6958a7d
parent 470e5049
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -680,7 +680,7 @@ public class Keyboard {
            a.recycle();
            if (resourceId == 0) {
                if (LatinImeLogger.sDBG)
                    throw new RuntimeException("touchPositionCorrectionData is not defined");
                    Log.e(TAG, "touchPositionCorrectionData is not defined");
                return;
            }

+27 −7
Original line number Diff line number Diff line
@@ -41,6 +41,7 @@ public class InputLogicTests extends ServiceTestCase<LatinIME> {

    private LatinIME mLatinIME;
    private TextView mTextView;
    private InputConnection mInputConnection;

    public InputLogicTests() {
        super(LatinIME.class);
@@ -82,6 +83,7 @@ public class InputLogicTests extends ServiceTestCase<LatinIME> {
        mLatinIME.onCreateInputView();
        mLatinIME.onStartInputView(ei, false);
        mLatinIME.onCreateInputMethodInterface().startInput(ic, ei);
        mInputConnection = ic;
    }

    // type(int) and type(String): helper methods to send a code point resp. a string to LatinIME.
@@ -106,17 +108,35 @@ public class InputLogicTests extends ServiceTestCase<LatinIME> {
    }

    public void testTypeWord() {
        final String wordToType = "abcd";
        type(wordToType);
        assertEquals("type word", wordToType, mTextView.getText().toString());
        final String WORD_TO_TYPE = "abcd";
        type(WORD_TO_TYPE);
        assertEquals("type word", WORD_TO_TYPE, mTextView.getText().toString());
    }

    public void testPickSuggestionThenBackspace() {
        final String wordToType = "tgis";
        type(wordToType);
        mLatinIME.pickSuggestionManually(0, wordToType);
        final String WORD_TO_TYPE = "tgis";
        type(WORD_TO_TYPE);
        mLatinIME.pickSuggestionManually(0, WORD_TO_TYPE);
        type(Keyboard.CODE_DELETE);
        assertEquals("press suggestion then backspace", wordToType, mTextView.getText().toString());
        assertEquals("press suggestion then backspace", WORD_TO_TYPE,
                mTextView.getText().toString());
    }

    public void testDeleteSelection() {
        final String STRING_TO_TYPE = "some text delete me some text";
        final int SELECTION_START = 10;
        final int SELECTION_END = 19;
        final String EXPECTED_RESULT = "some text  some text";
        type(STRING_TO_TYPE);
        // There is no IMF to call onUpdateSelection for us so we must do it by hand.
        // Send once to simulate the cursor actually responding to the move caused by typing.
        // This is necessary because LatinIME is bookkeeping to avoid confusing a real cursor
        // move with a move triggered by LatinIME inputting stuff.
        mLatinIME.onUpdateSelection(0, 0, STRING_TO_TYPE.length(), STRING_TO_TYPE.length(), -1, -1);
        mInputConnection.setSelection(SELECTION_START, SELECTION_END);
        // And now we simulate the user actually selecting some text.
        mLatinIME.onUpdateSelection(0, 0, SELECTION_START, SELECTION_END, -1, -1);
        type(Keyboard.CODE_DELETE);
        assertEquals("delete selection", EXPECTED_RESULT, mTextView.getText().toString());
    }
}