Home | History | Annotate | Download | only in suggestions
      1 /*
      2  * Copyright (C) 2014 The Android Open Source Project
      3  *
      4  * Licensed under the Apache License, Version 2.0 (the "License");
      5  * you may not use this file except in compliance with the License.
      6  * You may obtain a copy of the License at
      7  *
      8  *      http://www.apache.org/licenses/LICENSE-2.0
      9  *
     10  * Unless required by applicable law or agreed to in writing, software
     11  * distributed under the License is distributed on an "AS IS" BASIS,
     12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     13  * See the License for the specific language governing permissions and
     14  * limitations under the License.
     15  */
     16 
     17 package com.android.inputmethod.latin.suggestions;
     18 
     19 import android.test.AndroidTestCase;
     20 import android.test.suitebuilder.annotation.SmallTest;
     21 
     22 import com.android.inputmethod.latin.SuggestedWords;
     23 
     24 @SmallTest
     25 public class SuggestionStripLayoutHelperTests extends AndroidTestCase {
     26     private static void confirmShowTypedWord(final String message, final int inputType) {
     27         assertFalse(message, SuggestionStripLayoutHelper.shouldOmitTypedWord(
     28                 inputType,
     29                 false /* gestureFloatingPreviewTextEnabled */,
     30                 false /* shouldShowUiToAcceptTypedWord */));
     31         assertFalse(message, SuggestionStripLayoutHelper.shouldOmitTypedWord(
     32                 inputType,
     33                 true /* gestureFloatingPreviewTextEnabled */,
     34                 false /* shouldShowUiToAcceptTypedWord */));
     35         assertFalse(message, SuggestionStripLayoutHelper.shouldOmitTypedWord(
     36                 inputType,
     37                 false /* gestureFloatingPreviewTextEnabled */,
     38                 true /* shouldShowUiToAcceptTypedWord */));
     39         assertFalse(message, SuggestionStripLayoutHelper.shouldOmitTypedWord(
     40                 inputType,
     41                 true /* gestureFloatingPreviewTextEnabled */,
     42                 true /* shouldShowUiToAcceptTypedWord */));
     43     }
     44 
     45     public void testShouldShowTypedWord() {
     46         confirmShowTypedWord("no input style",
     47                 SuggestedWords.INPUT_STYLE_NONE);
     48         confirmShowTypedWord("application specifed",
     49                 SuggestedWords.INPUT_STYLE_APPLICATION_SPECIFIED);
     50         confirmShowTypedWord("recorrection",
     51                 SuggestedWords.INPUT_STYLE_RECORRECTION);
     52     }
     53 
     54     public void testshouldOmitTypedWordWhileTyping() {
     55         assertFalse("typing", SuggestionStripLayoutHelper.shouldOmitTypedWord(
     56                 SuggestedWords.INPUT_STYLE_TYPING,
     57                 false /* gestureFloatingPreviewTextEnabled */,
     58                 false /* shouldShowUiToAcceptTypedWord */));
     59         assertFalse("typing", SuggestionStripLayoutHelper.shouldOmitTypedWord(
     60                 SuggestedWords.INPUT_STYLE_TYPING,
     61                 true /* gestureFloatingPreviewTextEnabled */,
     62                 false /* shouldShowUiToAcceptTypedWord */));
     63         assertTrue("typing", SuggestionStripLayoutHelper.shouldOmitTypedWord(
     64                 SuggestedWords.INPUT_STYLE_TYPING,
     65                 false /* gestureFloatingPreviewTextEnabled */,
     66                 true /* shouldShowUiToAcceptTypedWord */));
     67         assertTrue("typing", SuggestionStripLayoutHelper.shouldOmitTypedWord(
     68                 SuggestedWords.INPUT_STYLE_TYPING,
     69                 true /* gestureFloatingPreviewTextEnabled */,
     70                 true /* shouldShowUiToAcceptTypedWord */));
     71     }
     72 
     73     public void testshouldOmitTypedWordWhileGesturing() {
     74         assertFalse("gesturing", SuggestionStripLayoutHelper.shouldOmitTypedWord(
     75                 SuggestedWords.INPUT_STYLE_UPDATE_BATCH,
     76                 false /* gestureFloatingPreviewTextEnabled */,
     77                 false /* shouldShowUiToAcceptTypedWord */));
     78         assertFalse("gesturing", SuggestionStripLayoutHelper.shouldOmitTypedWord(
     79                 SuggestedWords.INPUT_STYLE_UPDATE_BATCH,
     80                 true /* gestureFloatingPreviewTextEnabled */,
     81                 false /* shouldShowUiToAcceptTypedWord */));
     82         assertFalse("gesturing", SuggestionStripLayoutHelper.shouldOmitTypedWord(
     83                 SuggestedWords.INPUT_STYLE_UPDATE_BATCH,
     84                 false /* gestureFloatingPreviewTextEnabled */,
     85                 true /* shouldShowUiToAcceptTypedWord */));
     86         assertTrue("gesturing", SuggestionStripLayoutHelper.shouldOmitTypedWord(
     87                 SuggestedWords.INPUT_STYLE_UPDATE_BATCH,
     88                 true /* gestureFloatingPreviewTextEnabled */,
     89                 true /* shouldShowUiToAcceptTypedWord */));
     90     }
     91 
     92     public void testshouldOmitTypedWordWhenGestured() {
     93         assertFalse("gestured", SuggestionStripLayoutHelper.shouldOmitTypedWord(
     94                 SuggestedWords.INPUT_STYLE_TAIL_BATCH,
     95                 false /* gestureFloatingPreviewTextEnabled */,
     96                 false /* shouldShowUiToAcceptTypedWord */));
     97         assertFalse("gestured", SuggestionStripLayoutHelper.shouldOmitTypedWord(
     98                 SuggestedWords.INPUT_STYLE_TAIL_BATCH,
     99                 true /* gestureFloatingPreviewTextEnabled */,
    100                 false /* shouldShowUiToAcceptTypedWord */));
    101         assertTrue("gestured", SuggestionStripLayoutHelper.shouldOmitTypedWord(
    102                 SuggestedWords.INPUT_STYLE_TAIL_BATCH,
    103                 false /* gestureFloatingPreviewTextEnabled */,
    104                 true /* shouldShowUiToAcceptTypedWord */));
    105         assertTrue("gestured", SuggestionStripLayoutHelper.shouldOmitTypedWord(
    106                 SuggestedWords.INPUT_STYLE_TAIL_BATCH,
    107                 true /* gestureFloatingPreviewTextEnabled */,
    108                 true /* shouldShowUiToAcceptTypedWord */));
    109     }
    110 
    111     // Note that this unit test assumes that the number of suggested words in the suggestion strip
    112     // is 3.
    113     private static final int POSITION_OMIT = -1;
    114     private static final int POSITION_LEFT = 0;
    115     private static final int POSITION_CENTER = 1;
    116     private static final int POSITION_RIGHT = 2;
    117 
    118     public void testGetPositionInSuggestionStrip() {
    119         assertEquals("1st word without auto correction", POSITION_CENTER,
    120                 SuggestionStripLayoutHelper.getPositionInSuggestionStrip(
    121                         SuggestedWords.INDEX_OF_TYPED_WORD /* indexInSuggestedWords */,
    122                         false /* willAutoCorrect */,
    123                         false /* omitTypedWord */,
    124                         POSITION_CENTER /* centerPositionInStrip */,
    125                         POSITION_LEFT /* typedWordPositionWhenAutoCorrect */));
    126         assertEquals("2nd word without auto correction", POSITION_LEFT,
    127                 SuggestionStripLayoutHelper.getPositionInSuggestionStrip(
    128                         SuggestedWords.INDEX_OF_AUTO_CORRECTION /* indexInSuggestedWords */,
    129                         false /* willAutoCorrect */,
    130                         false /* omitTypedWord */,
    131                         POSITION_CENTER /* centerPositionInStrip */,
    132                         POSITION_LEFT /* typedWordPositionWhenAutoCorrect */));
    133         assertEquals("3rd word without auto correction", POSITION_RIGHT,
    134                 SuggestionStripLayoutHelper.getPositionInSuggestionStrip(
    135                         2 /* indexInSuggestedWords */,
    136                         false /* willAutoCorrect */,
    137                         false /* omitTypedWord */,
    138                         POSITION_CENTER /* centerPositionInStrip */,
    139                         POSITION_LEFT /* typedWordPositionWhenAutoCorrect */));
    140 
    141         assertEquals("typed word with auto correction", POSITION_LEFT,
    142                 SuggestionStripLayoutHelper.getPositionInSuggestionStrip(
    143                         SuggestedWords.INDEX_OF_TYPED_WORD /* indexInSuggestedWords */,
    144                         true /* willAutoCorrect */,
    145                         false /* omitTypedWord */,
    146                         POSITION_CENTER /* centerPositionInStrip */,
    147                         POSITION_LEFT /* typedWordPositionWhenAutoCorrect */));
    148         assertEquals("2nd word with auto correction", POSITION_CENTER,
    149                 SuggestionStripLayoutHelper.getPositionInSuggestionStrip(
    150                         SuggestedWords.INDEX_OF_AUTO_CORRECTION /* indexInSuggestedWords */,
    151                         true /* willAutoCorrect */,
    152                         false /* omitTypedWord */,
    153                         POSITION_CENTER /* centerPositionInStrip */,
    154                         POSITION_LEFT /* typedWordPositionWhenAutoCorrect */));
    155         assertEquals("3rd word with auto correction", POSITION_RIGHT,
    156                 SuggestionStripLayoutHelper.getPositionInSuggestionStrip(
    157                         2 /* indexInSuggestedWords */,
    158                         true /* willAutoCorrect */,
    159                         false /* omitTypedWord */,
    160                         POSITION_CENTER /* centerPositionInStrip */,
    161                         POSITION_LEFT /* typedWordPositionWhenAutoCorrect */));
    162 
    163         assertEquals("1st word without auto correction", POSITION_OMIT,
    164                 SuggestionStripLayoutHelper.getPositionInSuggestionStrip(
    165                         SuggestedWords.INDEX_OF_TYPED_WORD /* indexInSuggestedWords */,
    166                         false /* willAutoCorrect */,
    167                         true /* omitTypedWord */,
    168                         POSITION_CENTER /* centerPositionInStrip */,
    169                         POSITION_LEFT /* typedWordPositionWhenAutoCorrect */));
    170         assertEquals("2nd word without auto correction", POSITION_CENTER,
    171                 SuggestionStripLayoutHelper.getPositionInSuggestionStrip(
    172                         SuggestedWords.INDEX_OF_AUTO_CORRECTION /* indexInSuggestedWords */,
    173                         false /* willAutoCorrect */,
    174                         true /* omitTypedWord */,
    175                         POSITION_CENTER /* centerPositionInStrip */,
    176                         POSITION_LEFT /* typedWordPositionWhenAutoCorrect */));
    177         assertEquals("3rd word without auto correction", POSITION_LEFT,
    178                 SuggestionStripLayoutHelper.getPositionInSuggestionStrip(
    179                         2 /* indexInSuggestedWords */,
    180                         false /* willAutoCorrect */,
    181                         true /* omitTypedWord */,
    182                         POSITION_CENTER /* centerPositionInStrip */,
    183                         POSITION_LEFT /* typedWordPositionWhenAutoCorrect */));
    184         assertEquals("4th word without auto correction", POSITION_RIGHT,
    185                 SuggestionStripLayoutHelper.getPositionInSuggestionStrip(
    186                         3 /* indexInSuggestedWords */,
    187                         false /* willAutoCorrect */,
    188                         true /* omitTypedWord */,
    189                         POSITION_CENTER /* centerPositionInStrip */,
    190                         POSITION_LEFT /* typedWordPositionWhenAutoCorrect */));
    191 
    192         assertEquals("typed word with auto correction", POSITION_OMIT,
    193                 SuggestionStripLayoutHelper.getPositionInSuggestionStrip(
    194                         SuggestedWords.INDEX_OF_TYPED_WORD /* indexInSuggestedWords */,
    195                         true /* willAutoCorrect */,
    196                         true /* omitTypedWord */,
    197                         POSITION_CENTER /* centerPositionInStrip */,
    198                         POSITION_LEFT /* typedWordPositionWhenAutoCorrect */));
    199         assertEquals("2nd word with auto correction", POSITION_CENTER,
    200                 SuggestionStripLayoutHelper.getPositionInSuggestionStrip(
    201                         SuggestedWords.INDEX_OF_AUTO_CORRECTION /* indexInSuggestedWords */,
    202                         true /* willAutoCorrect */,
    203                         true /* omitTypedWord */,
    204                         POSITION_CENTER /* centerPositionInStrip */,
    205                         POSITION_LEFT /* typedWordPositionWhenAutoCorrect */));
    206         assertEquals("3rd word with auto correction", POSITION_LEFT,
    207                 SuggestionStripLayoutHelper.getPositionInSuggestionStrip(
    208                         2 /* indexInSuggestedWords */,
    209                         true /* willAutoCorrect */,
    210                         true /* omitTypedWord */,
    211                         POSITION_CENTER /* centerPositionInStrip */,
    212                         POSITION_LEFT /* typedWordPositionWhenAutoCorrect */));
    213         assertEquals("4th word with auto correction", POSITION_RIGHT,
    214                 SuggestionStripLayoutHelper.getPositionInSuggestionStrip(
    215                         3 /* indexInSuggestedWords */,
    216                         true /* willAutoCorrect */,
    217                         true /* omitTypedWord */,
    218                         POSITION_CENTER /* centerPositionInStrip */,
    219                         POSITION_LEFT /* typedWordPositionWhenAutoCorrect */));
    220     }
    221 }
    222