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

Commit 20f437cc authored by Jean Chalard's avatar Jean Chalard Committed by Android (Google) Code Review
Browse files

Merge "Test that delete actually removes any selected text."

parents 196da4a7 1e4684ad
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());
    }
}