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

Commit d5781eef authored by Satoshi Kataoka's avatar Satoshi Kataoka
Browse files

Fix Google spell checker tests

Bug: 8613307

Change-Id: Ief04a4abb6dc1f79660a2e419c9c5e271802b5a1
parent df2eae6e
Loading
Loading
Loading
Loading
+0 −3
Original line number Diff line number Diff line
@@ -119,9 +119,6 @@
    <!-- Threshold of the normalized score of the best suggestion for the spell checker to declare
         a word to be "recommended" -->
    <string name="spellchecker_recommended_threshold_value" translatable="false">0.11</string>
    <!-- Threshold of the normalized score of any dictionary lookup to be offered as a suggestion
         by the spell checker -->
    <string name="spellchecker_suggestion_threshold_value" translatable="false">0.03</string>
    <!--  Screen metrics for logging.
            0 = "mdpi phone screen"
            1 = "hdpi phone screen"
+9 −5
Original line number Diff line number Diff line
@@ -23,15 +23,19 @@ import com.android.inputmethod.latin.define.JniLibName;
public final class JniUtils {
    private static final String TAG = JniUtils.class.getSimpleName();

    private JniUtils() {
        // This utility class is not publicly instantiable.
    }

    public static void loadNativeLibrary() {
    static {
        try {
            System.loadLibrary(JniLibName.JNI_LIB_NAME);
        } catch (UnsatisfiedLinkError ule) {
            Log.e(TAG, "Could not load native library " + JniLibName.JNI_LIB_NAME, ule);
        }
    }

    private JniUtils() {
        // This utility class is not publicly instantiable.
    }

    public static void loadNativeLibrary() {
        // Ensures the static initializer is called
    }
}
+3 −14
Original line number Diff line number Diff line
@@ -64,8 +64,6 @@ public final class AndroidSpellCheckerService extends SpellCheckerService
            CollectionUtils.newSynchronizedTreeMap();
    private ContactsBinaryDictionary mContactsDictionary;

    // The threshold for a candidate to be offered as a suggestion.
    private float mSuggestionThreshold;
    // The threshold for a suggestion to be considered "recommended".
    private float mRecommendedThreshold;
    // Whether to use the contacts dictionary
@@ -112,8 +110,6 @@ public final class AndroidSpellCheckerService extends SpellCheckerService

    @Override public void onCreate() {
        super.onCreate();
        mSuggestionThreshold =
                Float.parseFloat(getString(R.string.spellchecker_suggestion_threshold_value));
        mRecommendedThreshold =
                Float.parseFloat(getString(R.string.spellchecker_recommended_threshold_value));
        final SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
@@ -198,8 +194,7 @@ public final class AndroidSpellCheckerService extends SpellCheckerService
    }

    public SuggestionsGatherer newSuggestionsGatherer(final String text, int maxLength) {
        return new SuggestionsGatherer(
                text, mSuggestionThreshold, mRecommendedThreshold, maxLength);
        return new SuggestionsGatherer(text, mRecommendedThreshold, maxLength);
    }

    // TODO: remove this class and replace it by storage local to the session.
@@ -217,7 +212,6 @@ public final class AndroidSpellCheckerService extends SpellCheckerService
        private final ArrayList<String> mSuggestions;
        private final int[] mScores;
        private final String mOriginalText;
        private final float mSuggestionThreshold;
        private final float mRecommendedThreshold;
        private final int mMaxLength;
        private int mLength = 0;
@@ -227,10 +221,9 @@ public final class AndroidSpellCheckerService extends SpellCheckerService
        private String mBestSuggestion = null;
        private int mBestScore = Integer.MIN_VALUE; // As small as possible

        SuggestionsGatherer(final String originalText, final float suggestionThreshold,
                final float recommendedThreshold, final int maxLength) {
        SuggestionsGatherer(final String originalText, final float recommendedThreshold,
                final int maxLength) {
            mOriginalText = originalText;
            mSuggestionThreshold = suggestionThreshold;
            mRecommendedThreshold = recommendedThreshold;
            mMaxLength = maxLength;
            mSuggestions = CollectionUtils.newArrayList(maxLength + 1);
@@ -272,10 +265,6 @@ public final class AndroidSpellCheckerService extends SpellCheckerService
            final String wordString = new String(word, wordOffset, wordLength);
            final float normalizedScore =
                    BinaryDictionary.calcNormalizedScore(mOriginalText, wordString, score);
            if (normalizedScore < mSuggestionThreshold) {
                if (DBG) Log.i(TAG, wordString + " does not make the score threshold");
                return true;
            }

            if (mLength < mMaxLength) {
                final int copyLen = mLength - insertIndex;
+7 −7
Original line number Diff line number Diff line
@@ -30,7 +30,7 @@ public class BlueUnderlineTests extends InputTestsBase {
        type(STRING_TO_TYPE);
        sleep(DELAY_TO_WAIT_FOR_UNDERLINE);
        runMessages();
        final SpanGetter span = new SpanGetter(mTextView.getText(), SuggestionSpan.class);
        final SpanGetter span = new SpanGetter(mEditText.getText(), SuggestionSpan.class);
        assertEquals("show blue underline, span start", EXPECTED_SPAN_START, span.mStart);
        assertEquals("show blue underline, span end", EXPECTED_SPAN_END, span.mEnd);
        assertEquals("show blue underline, span color", true, span.isAutoCorrectionIndicator());
@@ -47,7 +47,7 @@ public class BlueUnderlineTests extends InputTestsBase {
        type(STRING_2_TO_TYPE);
        // We haven't have time to look into the dictionary yet, so the line should still be
        // blue to avoid any flicker.
        final SpanGetter spanBefore = new SpanGetter(mTextView.getText(), SuggestionSpan.class);
        final SpanGetter spanBefore = new SpanGetter(mEditText.getText(), SuggestionSpan.class);
        assertEquals("extend blue underline, span start", EXPECTED_SPAN_START, spanBefore.mStart);
        assertEquals("extend blue underline, span end", EXPECTED_SPAN_END, spanBefore.mEnd);
        assertEquals("extend blue underline, span color", true,
@@ -55,7 +55,7 @@ public class BlueUnderlineTests extends InputTestsBase {
        sleep(DELAY_TO_WAIT_FOR_UNDERLINE);
        runMessages();
        // Now we have been able to re-evaluate the word, there shouldn't be an auto-correction span
        final SpanGetter spanAfter = new SpanGetter(mTextView.getText(), SuggestionSpan.class);
        final SpanGetter spanAfter = new SpanGetter(mEditText.getText(), SuggestionSpan.class);
        assertNull("hide blue underline", spanAfter.mSpan);
    }

@@ -76,10 +76,10 @@ public class BlueUnderlineTests extends InputTestsBase {
        type(Constants.CODE_DELETE);
        sleep(DELAY_TO_WAIT_FOR_UNDERLINE);
        runMessages();
        final SpanGetter suggestionSpan = new SpanGetter(mTextView.getText(), SuggestionSpan.class);
        final SpanGetter suggestionSpan = new SpanGetter(mEditText.getText(), SuggestionSpan.class);
        assertEquals("show no blue underline after backspace, span start should be -1",
                EXPECTED_SUGGESTION_SPAN_START, suggestionSpan.mStart);
        final SpanGetter underlineSpan = new SpanGetter(mTextView.getText(), UnderlineSpan.class);
        final SpanGetter underlineSpan = new SpanGetter(mEditText.getText(), UnderlineSpan.class);
        assertEquals("should be composing, so should have an underline span",
                EXPECTED_UNDERLINE_SPAN_START, underlineSpan.mStart);
        assertEquals("should be composing, so should have an underline span",
@@ -103,7 +103,7 @@ public class BlueUnderlineTests extends InputTestsBase {
                NEW_CURSOR_POSITION, NEW_CURSOR_POSITION, -1, -1);
        sleep(DELAY_TO_WAIT_FOR_UNDERLINE);
        runMessages();
        final SpanGetter span = new SpanGetter(mTextView.getText(), SuggestionSpan.class);
        final SpanGetter span = new SpanGetter(mEditText.getText(), SuggestionSpan.class);
        assertNull("blue underline removed when cursor is moved", span.mSpan);
    }

@@ -117,7 +117,7 @@ public class BlueUnderlineTests extends InputTestsBase {
        // Here the blue underline has been set. testBlueUnderline() is testing for this already,
        // so let's not test it here again.
        // Now simulate the user moving the cursor.
        SpanGetter span = new SpanGetter(mTextView.getText(), UnderlineSpan.class);
        SpanGetter span = new SpanGetter(mEditText.getText(), UnderlineSpan.class);
        assertNull("should not be composing, so should not have an underline span", span.mSpan);
    }
}
+26 −26
Original line number Diff line number Diff line
@@ -24,7 +24,7 @@ public class InputLogicTests extends InputTestsBase {
    public void testTypeWord() {
        final String WORD_TO_TYPE = "abcd";
        type(WORD_TO_TYPE);
        assertEquals("type word", WORD_TO_TYPE, mTextView.getText().toString());
        assertEquals("type word", WORD_TO_TYPE, mEditText.getText().toString());
    }

    public void testPickSuggestionThenBackspace() {
@@ -35,7 +35,7 @@ public class InputLogicTests extends InputTestsBase {
        mLatinIME.onUpdateSelection(0, 0, WORD_TO_TYPE.length(), WORD_TO_TYPE.length(), -1, -1);
        type(Constants.CODE_DELETE);
        assertEquals("press suggestion then backspace", EXPECTED_RESULT,
                mTextView.getText().toString());
                mEditText.getText().toString());
    }

    public void testPickAutoCorrectionThenBackspace() {
@@ -48,10 +48,10 @@ public class InputLogicTests extends InputTestsBase {
        pickSuggestionManually(0, WORD_TO_PICK);
        mLatinIME.onUpdateSelection(0, 0, WORD_TO_TYPE.length(), WORD_TO_TYPE.length(), -1, -1);
        assertEquals("pick typed word over auto-correction then backspace", WORD_TO_PICK,
                mTextView.getText().toString());
                mEditText.getText().toString());
        type(Constants.CODE_DELETE);
        assertEquals("pick typed word over auto-correction then backspace", EXPECTED_RESULT,
                mTextView.getText().toString());
                mEditText.getText().toString());
    }

    public void testPickTypedWordOverAutoCorrectionThenBackspace() {
@@ -63,10 +63,10 @@ public class InputLogicTests extends InputTestsBase {
        pickSuggestionManually(1, WORD_TO_TYPE);
        mLatinIME.onUpdateSelection(0, 0, WORD_TO_TYPE.length(), WORD_TO_TYPE.length(), -1, -1);
        assertEquals("pick typed word over auto-correction then backspace", WORD_TO_TYPE,
                mTextView.getText().toString());
                mEditText.getText().toString());
        type(Constants.CODE_DELETE);
        assertEquals("pick typed word over auto-correction then backspace", EXPECTED_RESULT,
                mTextView.getText().toString());
                mEditText.getText().toString());
    }

    public void testPickDifferentSuggestionThenBackspace() {
@@ -79,10 +79,10 @@ public class InputLogicTests extends InputTestsBase {
        pickSuggestionManually(2, WORD_TO_PICK);
        mLatinIME.onUpdateSelection(0, 0, WORD_TO_TYPE.length(), WORD_TO_TYPE.length(), -1, -1);
        assertEquals("pick different suggestion then backspace", WORD_TO_PICK,
                mTextView.getText().toString());
                mEditText.getText().toString());
        type(Constants.CODE_DELETE);
        assertEquals("pick different suggestion then backspace", EXPECTED_RESULT,
                mTextView.getText().toString());
                mEditText.getText().toString());
    }

    public void testDeleteSelection() {
@@ -102,7 +102,7 @@ public class InputLogicTests extends InputTestsBase {
        mLatinIME.onUpdateSelection(typedLength, typedLength,
                SELECTION_START, SELECTION_END, -1, -1);
        type(Constants.CODE_DELETE);
        assertEquals("delete selection", EXPECTED_RESULT, mTextView.getText().toString());
        assertEquals("delete selection", EXPECTED_RESULT, mEditText.getText().toString());
    }

    public void testDeleteSelectionTwice() {
@@ -123,21 +123,21 @@ public class InputLogicTests extends InputTestsBase {
                SELECTION_START, SELECTION_END, -1, -1);
        type(Constants.CODE_DELETE);
        type(Constants.CODE_DELETE);
        assertEquals("delete selection twice", EXPECTED_RESULT, mTextView.getText().toString());
        assertEquals("delete selection twice", EXPECTED_RESULT, mEditText.getText().toString());
    }

    public void testAutoCorrect() {
        final String STRING_TO_TYPE = "tgis ";
        final String EXPECTED_RESULT = "this ";
        type(STRING_TO_TYPE);
        assertEquals("simple auto-correct", EXPECTED_RESULT, mTextView.getText().toString());
        assertEquals("simple auto-correct", EXPECTED_RESULT, mEditText.getText().toString());
    }

    public void testAutoCorrectWithPeriod() {
        final String STRING_TO_TYPE = "tgis.";
        final String EXPECTED_RESULT = "this.";
        type(STRING_TO_TYPE);
        assertEquals("auto-correct with period", EXPECTED_RESULT, mTextView.getText().toString());
        assertEquals("auto-correct with period", EXPECTED_RESULT, mEditText.getText().toString());
    }

    public void testAutoCorrectWithPeriodThenRevert() {
@@ -147,7 +147,7 @@ public class InputLogicTests extends InputTestsBase {
        mLatinIME.onUpdateSelection(0, 0, STRING_TO_TYPE.length(), STRING_TO_TYPE.length(), -1, -1);
        type(Constants.CODE_DELETE);
        assertEquals("auto-correct with period then revert", EXPECTED_RESULT,
                mTextView.getText().toString());
                mEditText.getText().toString());
    }

    public void testAutoCorrectWithSpaceThenRevert() {
@@ -157,7 +157,7 @@ public class InputLogicTests extends InputTestsBase {
        mLatinIME.onUpdateSelection(0, 0, STRING_TO_TYPE.length(), STRING_TO_TYPE.length(), -1, -1);
        type(Constants.CODE_DELETE);
        assertEquals("auto-correct with space then revert", EXPECTED_RESULT,
                mTextView.getText().toString());
                mEditText.getText().toString());
    }

    public void testAutoCorrectToSelfDoesNotRevert() {
@@ -167,14 +167,14 @@ public class InputLogicTests extends InputTestsBase {
        mLatinIME.onUpdateSelection(0, 0, STRING_TO_TYPE.length(), STRING_TO_TYPE.length(), -1, -1);
        type(Constants.CODE_DELETE);
        assertEquals("auto-correct with space does not revert", EXPECTED_RESULT,
                mTextView.getText().toString());
                mEditText.getText().toString());
    }

    public void testDoubleSpace() {
        final String STRING_TO_TYPE = "this  ";
        final String EXPECTED_RESULT = "this. ";
        type(STRING_TO_TYPE);
        assertEquals("double space make a period", EXPECTED_RESULT, mTextView.getText().toString());
        assertEquals("double space make a period", EXPECTED_RESULT, mEditText.getText().toString());
    }

    public void testCancelDoubleSpace() {
@@ -182,7 +182,7 @@ public class InputLogicTests extends InputTestsBase {
        final String EXPECTED_RESULT = "this  ";
        type(STRING_TO_TYPE);
        type(Constants.CODE_DELETE);
        assertEquals("double space make a period", EXPECTED_RESULT, mTextView.getText().toString());
        assertEquals("double space make a period", EXPECTED_RESULT, mEditText.getText().toString());
    }

    public void testBackspaceAtStartAfterAutocorrect() {
@@ -197,7 +197,7 @@ public class InputLogicTests extends InputTestsBase {
                NEW_CURSOR_POSITION, NEW_CURSOR_POSITION, -1, -1);
        type(Constants.CODE_DELETE);
        assertEquals("auto correct then move cursor to start of line then backspace",
                EXPECTED_RESULT, mTextView.getText().toString());
                EXPECTED_RESULT, mEditText.getText().toString());
    }

    public void testAutoCorrectThenMoveCursorThenBackspace() {
@@ -212,7 +212,7 @@ public class InputLogicTests extends InputTestsBase {
                NEW_CURSOR_POSITION, NEW_CURSOR_POSITION, -1, -1);
        type(Constants.CODE_DELETE);
        assertEquals("auto correct then move cursor then backspace",
                EXPECTED_RESULT, mTextView.getText().toString());
                EXPECTED_RESULT, mEditText.getText().toString());
    }

    public void testNoSpaceAfterManualPick() {
@@ -221,7 +221,7 @@ public class InputLogicTests extends InputTestsBase {
        type(WORD_TO_TYPE);
        pickSuggestionManually(0, WORD_TO_TYPE);
        assertEquals("no space after manual pick", EXPECTED_RESULT,
                mTextView.getText().toString());
                mEditText.getText().toString());
    }

    public void testManualPickThenType() {
@@ -231,7 +231,7 @@ public class InputLogicTests extends InputTestsBase {
        type(WORD1_TO_TYPE);
        pickSuggestionManually(0, WORD1_TO_TYPE);
        type(WORD2_TO_TYPE);
        assertEquals("manual pick then type", EXPECTED_RESULT, mTextView.getText().toString());
        assertEquals("manual pick then type", EXPECTED_RESULT, mEditText.getText().toString());
    }

    public void testManualPickThenSeparator() {
@@ -241,7 +241,7 @@ public class InputLogicTests extends InputTestsBase {
        type(WORD1_TO_TYPE);
        pickSuggestionManually(0, WORD1_TO_TYPE);
        type(WORD2_TO_TYPE);
        assertEquals("manual pick then separator", EXPECTED_RESULT, mTextView.getText().toString());
        assertEquals("manual pick then separator", EXPECTED_RESULT, mEditText.getText().toString());
    }

    public void testManualPickThenStripperThenPick() {
@@ -254,7 +254,7 @@ public class InputLogicTests extends InputTestsBase {
        type(WORD_TO_TYPE);
        pickSuggestionManually(0, WORD_TO_TYPE);
        assertEquals("manual pick then \\n then manual pick", EXPECTED_RESULT,
                mTextView.getText().toString());
                mEditText.getText().toString());
    }

    public void testManualPickThenSpaceThenType() {
@@ -265,7 +265,7 @@ public class InputLogicTests extends InputTestsBase {
        pickSuggestionManually(0, WORD1_TO_TYPE);
        type(WORD2_TO_TYPE);
        assertEquals("manual pick then space then type", EXPECTED_RESULT,
                mTextView.getText().toString());
                mEditText.getText().toString());
    }

    public void testManualPickThenManualPick() {
@@ -279,7 +279,7 @@ public class InputLogicTests extends InputTestsBase {
        // to actually pass the right string.
        pickSuggestionManually(1, WORD2_TO_PICK);
        assertEquals("manual pick then manual pick", EXPECTED_RESULT,
                mTextView.getText().toString());
                mEditText.getText().toString());
    }

    public void testDeleteWholeComposingWord() {
@@ -288,7 +288,7 @@ public class InputLogicTests extends InputTestsBase {
        for (int i = 0; i < WORD_TO_TYPE.length(); ++i) {
            type(Constants.CODE_DELETE);
        }
        assertEquals("delete whole composing word", "", mTextView.getText().toString());
        assertEquals("delete whole composing word", "", mEditText.getText().toString());
    }
    // TODO: Add some tests for non-BMP characters
}
Loading