SuggestionStripLayoutHelperTests.java revision 2637be27c51be03e39b0db1c66312c4cc55bc7de
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
17package com.android.inputmethod.latin.suggestions;
18
19import android.test.AndroidTestCase;
20import android.test.suitebuilder.annotation.SmallTest;
21
22import com.android.inputmethod.latin.SuggestedWords;
23
24@SmallTest
25public 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