| /* |
| * Copyright (C) 2014 The Android Open Source Project |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); |
| * you may not use this file except in compliance with the License. |
| * You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| |
| package com.android.inputmethod.latin.suggestions; |
| |
| import static junit.framework.TestCase.assertEquals; |
| |
| import static org.junit.Assert.assertFalse; |
| import static org.junit.Assert.assertTrue; |
| |
| import androidx.test.filters.SmallTest; |
| import androidx.test.runner.AndroidJUnit4; |
| |
| import com.android.inputmethod.latin.SuggestedWords; |
| |
| import org.junit.Test; |
| import org.junit.runner.RunWith; |
| |
| @SmallTest |
| @RunWith(AndroidJUnit4.class) |
| public class SuggestionStripLayoutHelperTests { |
| private static void confirmShowTypedWord(final String message, final int inputType) { |
| assertFalse(message, SuggestionStripLayoutHelper.shouldOmitTypedWord( |
| inputType, |
| false /* gestureFloatingPreviewTextEnabled */, |
| false /* shouldShowUiToAcceptTypedWord */)); |
| assertFalse(message, SuggestionStripLayoutHelper.shouldOmitTypedWord( |
| inputType, |
| true /* gestureFloatingPreviewTextEnabled */, |
| false /* shouldShowUiToAcceptTypedWord */)); |
| assertFalse(message, SuggestionStripLayoutHelper.shouldOmitTypedWord( |
| inputType, |
| false /* gestureFloatingPreviewTextEnabled */, |
| true /* shouldShowUiToAcceptTypedWord */)); |
| assertFalse(message, SuggestionStripLayoutHelper.shouldOmitTypedWord( |
| inputType, |
| true /* gestureFloatingPreviewTextEnabled */, |
| true /* shouldShowUiToAcceptTypedWord */)); |
| } |
| |
| @Test |
| public void testShouldShowTypedWord() { |
| confirmShowTypedWord("no input style", |
| SuggestedWords.INPUT_STYLE_NONE); |
| confirmShowTypedWord("application specifed", |
| SuggestedWords.INPUT_STYLE_APPLICATION_SPECIFIED); |
| confirmShowTypedWord("recorrection", |
| SuggestedWords.INPUT_STYLE_RECORRECTION); |
| } |
| |
| @Test |
| public void testShouldOmitTypedWordWhileTyping() { |
| assertFalse("typing", SuggestionStripLayoutHelper.shouldOmitTypedWord( |
| SuggestedWords.INPUT_STYLE_TYPING, |
| false /* gestureFloatingPreviewTextEnabled */, |
| false /* shouldShowUiToAcceptTypedWord */)); |
| assertFalse("typing", SuggestionStripLayoutHelper.shouldOmitTypedWord( |
| SuggestedWords.INPUT_STYLE_TYPING, |
| true /* gestureFloatingPreviewTextEnabled */, |
| false /* shouldShowUiToAcceptTypedWord */)); |
| assertTrue("typing", SuggestionStripLayoutHelper.shouldOmitTypedWord( |
| SuggestedWords.INPUT_STYLE_TYPING, |
| false /* gestureFloatingPreviewTextEnabled */, |
| true /* shouldShowUiToAcceptTypedWord */)); |
| assertTrue("typing", SuggestionStripLayoutHelper.shouldOmitTypedWord( |
| SuggestedWords.INPUT_STYLE_TYPING, |
| true /* gestureFloatingPreviewTextEnabled */, |
| true /* shouldShowUiToAcceptTypedWord */)); |
| } |
| |
| @Test |
| public void testShouldOmitTypedWordWhileGesturing() { |
| assertFalse("gesturing", SuggestionStripLayoutHelper.shouldOmitTypedWord( |
| SuggestedWords.INPUT_STYLE_UPDATE_BATCH, |
| false /* gestureFloatingPreviewTextEnabled */, |
| false /* shouldShowUiToAcceptTypedWord */)); |
| assertFalse("gesturing", SuggestionStripLayoutHelper.shouldOmitTypedWord( |
| SuggestedWords.INPUT_STYLE_UPDATE_BATCH, |
| true /* gestureFloatingPreviewTextEnabled */, |
| false /* shouldShowUiToAcceptTypedWord */)); |
| assertFalse("gesturing", SuggestionStripLayoutHelper.shouldOmitTypedWord( |
| SuggestedWords.INPUT_STYLE_UPDATE_BATCH, |
| false /* gestureFloatingPreviewTextEnabled */, |
| true /* shouldShowUiToAcceptTypedWord */)); |
| assertTrue("gesturing", SuggestionStripLayoutHelper.shouldOmitTypedWord( |
| SuggestedWords.INPUT_STYLE_UPDATE_BATCH, |
| true /* gestureFloatingPreviewTextEnabled */, |
| true /* shouldShowUiToAcceptTypedWord */)); |
| } |
| |
| @Test |
| public void testShouldOmitTypedWordWhenGestured() { |
| assertFalse("gestured", SuggestionStripLayoutHelper.shouldOmitTypedWord( |
| SuggestedWords.INPUT_STYLE_TAIL_BATCH, |
| false /* gestureFloatingPreviewTextEnabled */, |
| false /* shouldShowUiToAcceptTypedWord */)); |
| assertFalse("gestured", SuggestionStripLayoutHelper.shouldOmitTypedWord( |
| SuggestedWords.INPUT_STYLE_TAIL_BATCH, |
| true /* gestureFloatingPreviewTextEnabled */, |
| false /* shouldShowUiToAcceptTypedWord */)); |
| assertTrue("gestured", SuggestionStripLayoutHelper.shouldOmitTypedWord( |
| SuggestedWords.INPUT_STYLE_TAIL_BATCH, |
| false /* gestureFloatingPreviewTextEnabled */, |
| true /* shouldShowUiToAcceptTypedWord */)); |
| assertTrue("gestured", SuggestionStripLayoutHelper.shouldOmitTypedWord( |
| SuggestedWords.INPUT_STYLE_TAIL_BATCH, |
| true /* gestureFloatingPreviewTextEnabled */, |
| true /* shouldShowUiToAcceptTypedWord */)); |
| } |
| |
| // Note that this unit test assumes that the number of suggested words in the suggestion strip |
| // is 3. |
| private static final int POSITION_OMIT = -1; |
| private static final int POSITION_LEFT = 0; |
| private static final int POSITION_CENTER = 1; |
| private static final int POSITION_RIGHT = 2; |
| |
| @Test |
| public void testGetPositionInSuggestionStrip() { |
| assertEquals("1st word without auto correction", POSITION_CENTER, |
| SuggestionStripLayoutHelper.getPositionInSuggestionStrip( |
| SuggestedWords.INDEX_OF_TYPED_WORD /* indexInSuggestedWords */, |
| false /* willAutoCorrect */, |
| false /* omitTypedWord */, |
| POSITION_CENTER /* centerPositionInStrip */, |
| POSITION_LEFT /* typedWordPositionWhenAutoCorrect */)); |
| assertEquals("2nd word without auto correction", POSITION_LEFT, |
| SuggestionStripLayoutHelper.getPositionInSuggestionStrip( |
| SuggestedWords.INDEX_OF_AUTO_CORRECTION /* indexInSuggestedWords */, |
| false /* willAutoCorrect */, |
| false /* omitTypedWord */, |
| POSITION_CENTER /* centerPositionInStrip */, |
| POSITION_LEFT /* typedWordPositionWhenAutoCorrect */)); |
| assertEquals("3rd word without auto correction", POSITION_RIGHT, |
| SuggestionStripLayoutHelper.getPositionInSuggestionStrip( |
| 2 /* indexInSuggestedWords */, |
| false /* willAutoCorrect */, |
| false /* omitTypedWord */, |
| POSITION_CENTER /* centerPositionInStrip */, |
| POSITION_LEFT /* typedWordPositionWhenAutoCorrect */)); |
| |
| assertEquals("typed word with auto correction", POSITION_LEFT, |
| SuggestionStripLayoutHelper.getPositionInSuggestionStrip( |
| SuggestedWords.INDEX_OF_TYPED_WORD /* indexInSuggestedWords */, |
| true /* willAutoCorrect */, |
| false /* omitTypedWord */, |
| POSITION_CENTER /* centerPositionInStrip */, |
| POSITION_LEFT /* typedWordPositionWhenAutoCorrect */)); |
| assertEquals("2nd word with auto correction", POSITION_CENTER, |
| SuggestionStripLayoutHelper.getPositionInSuggestionStrip( |
| SuggestedWords.INDEX_OF_AUTO_CORRECTION /* indexInSuggestedWords */, |
| true /* willAutoCorrect */, |
| false /* omitTypedWord */, |
| POSITION_CENTER /* centerPositionInStrip */, |
| POSITION_LEFT /* typedWordPositionWhenAutoCorrect */)); |
| assertEquals("3rd word with auto correction", POSITION_RIGHT, |
| SuggestionStripLayoutHelper.getPositionInSuggestionStrip( |
| 2 /* indexInSuggestedWords */, |
| true /* willAutoCorrect */, |
| false /* omitTypedWord */, |
| POSITION_CENTER /* centerPositionInStrip */, |
| POSITION_LEFT /* typedWordPositionWhenAutoCorrect */)); |
| |
| assertEquals("1st word without auto correction", POSITION_OMIT, |
| SuggestionStripLayoutHelper.getPositionInSuggestionStrip( |
| SuggestedWords.INDEX_OF_TYPED_WORD /* indexInSuggestedWords */, |
| false /* willAutoCorrect */, |
| true /* omitTypedWord */, |
| POSITION_CENTER /* centerPositionInStrip */, |
| POSITION_LEFT /* typedWordPositionWhenAutoCorrect */)); |
| assertEquals("2nd word without auto correction", POSITION_CENTER, |
| SuggestionStripLayoutHelper.getPositionInSuggestionStrip( |
| SuggestedWords.INDEX_OF_AUTO_CORRECTION /* indexInSuggestedWords */, |
| false /* willAutoCorrect */, |
| true /* omitTypedWord */, |
| POSITION_CENTER /* centerPositionInStrip */, |
| POSITION_LEFT /* typedWordPositionWhenAutoCorrect */)); |
| assertEquals("3rd word without auto correction", POSITION_LEFT, |
| SuggestionStripLayoutHelper.getPositionInSuggestionStrip( |
| 2 /* indexInSuggestedWords */, |
| false /* willAutoCorrect */, |
| true /* omitTypedWord */, |
| POSITION_CENTER /* centerPositionInStrip */, |
| POSITION_LEFT /* typedWordPositionWhenAutoCorrect */)); |
| assertEquals("4th word without auto correction", POSITION_RIGHT, |
| SuggestionStripLayoutHelper.getPositionInSuggestionStrip( |
| 3 /* indexInSuggestedWords */, |
| false /* willAutoCorrect */, |
| true /* omitTypedWord */, |
| POSITION_CENTER /* centerPositionInStrip */, |
| POSITION_LEFT /* typedWordPositionWhenAutoCorrect */)); |
| |
| assertEquals("typed word with auto correction", POSITION_OMIT, |
| SuggestionStripLayoutHelper.getPositionInSuggestionStrip( |
| SuggestedWords.INDEX_OF_TYPED_WORD /* indexInSuggestedWords */, |
| true /* willAutoCorrect */, |
| true /* omitTypedWord */, |
| POSITION_CENTER /* centerPositionInStrip */, |
| POSITION_LEFT /* typedWordPositionWhenAutoCorrect */)); |
| assertEquals("2nd word with auto correction", POSITION_CENTER, |
| SuggestionStripLayoutHelper.getPositionInSuggestionStrip( |
| SuggestedWords.INDEX_OF_AUTO_CORRECTION /* indexInSuggestedWords */, |
| true /* willAutoCorrect */, |
| true /* omitTypedWord */, |
| POSITION_CENTER /* centerPositionInStrip */, |
| POSITION_LEFT /* typedWordPositionWhenAutoCorrect */)); |
| assertEquals("3rd word with auto correction", POSITION_LEFT, |
| SuggestionStripLayoutHelper.getPositionInSuggestionStrip( |
| 2 /* indexInSuggestedWords */, |
| true /* willAutoCorrect */, |
| true /* omitTypedWord */, |
| POSITION_CENTER /* centerPositionInStrip */, |
| POSITION_LEFT /* typedWordPositionWhenAutoCorrect */)); |
| assertEquals("4th word with auto correction", POSITION_RIGHT, |
| SuggestionStripLayoutHelper.getPositionInSuggestionStrip( |
| 3 /* indexInSuggestedWords */, |
| true /* willAutoCorrect */, |
| true /* omitTypedWord */, |
| POSITION_CENTER /* centerPositionInStrip */, |
| POSITION_LEFT /* typedWordPositionWhenAutoCorrect */)); |
| } |
| } |