KeyboardStateSingleTouchTests.java revision f057b25cddb3e5e18bc56e8ddaab541044c6ba58
1/*
2 * Copyright (C) 2012 The Android Open Source Project
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License"); you may not
5 * use this file except in compliance with the License. You may obtain a copy of
6 * 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, WITHOUT
12 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
13 * License for the specific language governing permissions and limitations under
14 * the License.
15 */
16
17package com.android.inputmethod.keyboard.internal;
18
19public class KeyboardStateSingleTouchTests extends KeyboardStateTestsBase {
20    // Shift key in alphabet.
21    public void testShiftAlphabet() {
22        // Press/release shift key, enter into alphabet shifted.
23        pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
24
25        // Press/release shift key, back to alphabet.
26        pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_UNSHIFTED);
27
28        // Press/release shift key, enter into alphabet shifted.
29        pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
30        // Press/release letter key, switch back to alphabet.
31        pressAndReleaseKey('Z', ALPHABET_MANUAL_SHIFTED, ALPHABET_UNSHIFTED);
32    }
33
34    // Shift key in symbols.
35    public void testShiftSymbols() {
36        // Press/release "?123" key, enter into symbols.
37        pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
38
39        // Press/release "=\<" key, enter into symbols shifted.
40        pressAndReleaseKey(CODE_SHIFT, SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
41
42        // Press/release "?123" key, back to symbols.
43        pressAndReleaseKey(CODE_SHIFT, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
44
45        // Press/release "=\<" key, enter into symbols shifted.
46        pressAndReleaseKey(CODE_SHIFT, SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
47        // Press/release symbol letter key, remain in symbols shifted.
48        pressAndReleaseKey('1', SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
49    }
50
51    // Switching between alphabet and symbols.
52    public void testAlphabetAndSymbols() {
53        // Press/release "?123" key, enter into symbols.
54        pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
55        // Press/release "ABC" key, back to alphabet.
56        pressAndReleaseKey(CODE_SYMBOL, ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED);
57        // Press/release "?123" key, enter into symbols.
58        pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
59
60        // Press/release "=\<" key, enter into symbols shifted.
61        pressAndReleaseKey(CODE_SHIFT, SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
62        // Press/release "ABC" key, back to alphabet.
63        pressAndReleaseKey(CODE_SYMBOL, ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED);
64        // Press/release "?123" key, back to symbols (not symbols shifted).
65        pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
66    }
67
68    // Switching between alphabet shifted and symbols.
69    public void testAlphabetShiftedAndSymbols() {
70        // Press/release shift key, enter into alphabet shifted.
71        pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
72
73        // Press/release "?123" key, enter into symbols.
74        pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
75        // Press/release "ABC" key, back to alphabet (not alphabet shifted).
76        pressAndReleaseKey(CODE_SYMBOL, ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED);
77
78        // Press/release shift key, enter into alphabet shifted.
79        pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
80        // Press/release "?123" key, enter into symbols.
81        pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
82        // Press/release "=\< key, enter into symbols shifted.
83        pressAndReleaseKey(CODE_SHIFT, SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
84        // Press/release "ABC" key, back to alphabet (not alphabet shifted).
85        pressAndReleaseKey(CODE_SYMBOL, ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED);
86    }
87
88    // Switching between alphabet shift locked and symbols.
89    public void testAlphabetShiftLockedAndSymbols() {
90        // Long press shift key, enter alphabet shift locked.
91        longPressShiftKey(ALPHABET_MANUAL_SHIFTED, ALPHABET_SHIFT_LOCKED);
92
93        // Press/release "?123" key, enter into symbols.
94        pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
95        // Press/release "ABC" key, back to alphabet shift locked.
96        pressAndReleaseKey(CODE_SYMBOL, ALPHABET_SHIFT_LOCKED, ALPHABET_SHIFT_LOCKED);
97        // Press/release "?123" key, enter into symbols.
98        pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
99
100        // Press/release "=\<" key, enter into symbols shifted.
101        pressAndReleaseKey(CODE_SHIFT, SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
102        // Press/release "ABC" key, back to alphabet shift locked.
103        pressAndReleaseKey(CODE_SYMBOL, ALPHABET_SHIFT_LOCKED, ALPHABET_SHIFT_LOCKED);
104        // Press/release "?123" key, back to symbols (not symbols shifted).
105        pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
106    }
107
108    // Automatic switch back to alphabet by space key.
109    public void testSwitchBackBySpace() {
110        // Press/release "?123" key, enter into symbols.
111        pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
112        // Enter symbol letter.
113        pressAndReleaseKey('1', SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
114        // Enter space, switch back to alphabet.
115        pressAndReleaseKey(CODE_SPACE, SYMBOLS_UNSHIFTED, ALPHABET_UNSHIFTED);
116
117        // Press/release "?123" key, enter into symbols.
118        pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
119        // Press/release "=\<" key, enter into symbols shifted.
120        pressAndReleaseKey(CODE_SHIFT, SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
121        // Enter symbol shift letter.
122        pressAndReleaseKey('~', SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
123        // Enter space, switch back to alphabet.
124        pressAndReleaseKey(CODE_SPACE, SYMBOLS_SHIFTED, ALPHABET_UNSHIFTED);
125    }
126
127    // Automatic switch back to alphabet shift locked test by space key.
128    public void testSwitchBackBySpaceShiftLocked() {
129        // Long press shift key, enter alphabet shift locked.
130        longPressShiftKey(ALPHABET_MANUAL_SHIFTED, ALPHABET_SHIFT_LOCKED);
131
132        // Press/release "?123" key, enter into symbols.
133        pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
134        // Enter symbol letter.
135        pressAndReleaseKey('1', SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
136        // Enter space, switch back to alphabet shift locked.
137        pressAndReleaseKey(CODE_SPACE, SYMBOLS_UNSHIFTED, ALPHABET_SHIFT_LOCKED);
138
139        // Press/release "?123" key, enter into symbols.
140        pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
141        // Press/release "=\<" key, enter into symbols shifted.
142        pressAndReleaseKey(CODE_SHIFT, SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
143        // Enter symbol shift letter.
144        pressAndReleaseKey('~', SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
145        // Enter space, switch back to alphabet shift locked.
146        pressAndReleaseKey(CODE_SPACE, SYMBOLS_SHIFTED, ALPHABET_SHIFT_LOCKED);
147    }
148
149    // Automatic switch back to alphabet by registered letters.
150    public void testSwitchBackChar() {
151        // Set switch back chars.
152        final String switchBackSymbols = "'";
153        final int switchBackCode = switchBackSymbols.codePointAt(0);
154        setLayoutSwitchBackSymbols(switchBackSymbols);
155        loadKeyboard(ALPHABET_UNSHIFTED);
156
157        // Press/release "?123" key, enter into symbols.
158        pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
159        // Enter symbol letter.
160        pressAndReleaseKey('1', SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
161        // Enter switch back letter, switch back to alphabet.
162        pressAndReleaseKey(switchBackCode, SYMBOLS_UNSHIFTED, ALPHABET_UNSHIFTED);
163
164        // Press/release "?123" key, enter into symbols.
165        pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
166        // Press/release "=\<" key, enter into symbols shifted.
167        pressAndReleaseKey(CODE_SHIFT, SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
168        // Enter symbol shift letter.
169        pressAndReleaseKey('~', SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
170        // Enter switch abck letter, switch back to alphabet.
171        pressAndReleaseKey(switchBackCode, SYMBOLS_SHIFTED, ALPHABET_UNSHIFTED);
172    }
173
174    // Automatic switch back to alphabet shift locked by registered letters.
175    public void testSwitchBackCharShiftLocked() {
176        // Set switch back chars.
177        final String switchBackSymbols = "'";
178        final int switchBackCode = switchBackSymbols.codePointAt(0);
179        setLayoutSwitchBackSymbols(switchBackSymbols);
180        loadKeyboard(ALPHABET_UNSHIFTED);
181        // Long press shift key, enter alphabet shift locked.
182        longPressShiftKey(ALPHABET_MANUAL_SHIFTED, ALPHABET_SHIFT_LOCKED);
183
184        // Press/release "?123" key, enter into symbols.
185        pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
186        // Enter symbol letter.
187        pressAndReleaseKey('1', SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
188        // Enter switch back letter, switch back to alphabet shift locked.
189        pressAndReleaseKey(switchBackCode, SYMBOLS_UNSHIFTED, ALPHABET_SHIFT_LOCKED);
190
191        // Press/release "?123" key, enter into symbols.
192        pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
193        // Press/release "=\<" key, enter into symbols shifted.
194        pressAndReleaseKey(CODE_SHIFT, SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
195        // Enter symbol shift letter.
196        pressAndReleaseKey(CODE_SPACE, SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
197        // Enter switch back letter, switch back to alphabet shift locked.
198        pressAndReleaseKey(switchBackCode, SYMBOLS_SHIFTED, ALPHABET_SHIFT_LOCKED);
199    }
200
201    // Automatic upper case test
202    public void testAutomaticUpperCase() {
203        // Set auto caps mode on.
204        setAutoCapsMode(AUTO_CAPS);
205        // Load keyboard, should be in automatic shifted.
206        loadKeyboard(ALPHABET_AUTOMATIC_SHIFTED);
207
208        // Press/release letter key, switch to alphabet.
209        pressAndReleaseKey('A', ALPHABET_AUTOMATIC_SHIFTED, ALPHABET_UNSHIFTED);
210        // Press/release auto caps trigger letter, should be in automatic shifted.
211        pressAndReleaseKey(CODE_AUTO_CAPS_TRIGGER, ALPHABET_UNSHIFTED, ALPHABET_AUTOMATIC_SHIFTED);
212
213        // Press/release shift key, back to alphabet.
214        pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_UNSHIFTED);
215        // Press/release letter key, remain in alphabet.
216        pressAndReleaseKey('a', ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED);
217        // Press/release auto caps trigger letter, should be in automatic shifted.
218        pressAndReleaseKey(CODE_AUTO_CAPS_TRIGGER, ALPHABET_UNSHIFTED, ALPHABET_AUTOMATIC_SHIFTED);
219
220        // Press/release "?123" key, enter into symbols.
221        pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
222        // Press/release symbol letter key, remain in symbols.
223        pressAndReleaseKey('1', SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
224        // Press/release space, switch back to automatic shifted.
225        pressAndReleaseKey(CODE_SPACE, SYMBOLS_UNSHIFTED, ALPHABET_AUTOMATIC_SHIFTED);
226
227        // Press/release "?123" key, enter into symbols.
228        pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
229        // Press/release "=\<" key, enter into symbols shifted.
230        pressAndReleaseKey(CODE_SHIFT, SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
231        // Press/release symbol shift letter key, remain in symbols shifted.
232        pressAndReleaseKey('~', SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
233        // Press/release space, switch back to automatic shifted.
234        pressAndReleaseKey(CODE_SPACE, SYMBOLS_SHIFTED, ALPHABET_AUTOMATIC_SHIFTED);
235    }
236
237    // Long press shift key.
238    // TODO: Move long press recognizing timer/logic into KeyboardState.
239    public void testLongPressShift() {
240        // Long press shift key, enter alphabet shift locked.
241        longPressShiftKey(ALPHABET_MANUAL_SHIFTED, ALPHABET_SHIFT_LOCKED);
242
243        // Press/release letter key, remain in shift locked.
244        pressAndReleaseKey('A', ALPHABET_SHIFT_LOCKED, ALPHABET_SHIFT_LOCKED);
245        // Press/release word separator, remain in shift locked.
246        pressAndReleaseKey(CODE_SPACE, ALPHABET_SHIFT_LOCKED, ALPHABET_SHIFT_LOCKED);
247
248        // Press/release shift key, back to alphabet.
249        pressAndReleaseKey(CODE_SHIFT, ALPHABET_SHIFT_LOCK_SHIFTED, ALPHABET_UNSHIFTED);
250
251        // Long press shift key, enter alphabet shift locked.
252        longPressShiftKey(ALPHABET_MANUAL_SHIFTED, ALPHABET_SHIFT_LOCKED);
253
254        // Long press shift key, back to alphabet.
255        longPressShiftKey(ALPHABET_SHIFT_LOCK_SHIFTED, ALPHABET_UNSHIFTED);
256    }
257
258    // Double tap shift key.
259    // TODO: Move double tap recognizing timer/logic into KeyboardState.
260    public void testDoubleTapShift() {
261        // First shift key tap.
262        pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
263        // Second shift key tap.
264        // Double tap recognized in LatinKeyboardView.KeyTimerHandler.
265        secondTapShiftKey(ALPHABET_SHIFT_LOCKED);
266
267        // First shift key tap.
268        pressAndReleaseKey(CODE_SHIFT, ALPHABET_SHIFT_LOCK_SHIFTED, ALPHABET_UNSHIFTED);
269        // Second shift key tap.
270        // Second tap is ignored in LatinKeyboardView.KeyTimerHandler.
271    }
272
273    // Update shift state.
274    public void testUpdateShiftState() {
275        // Set auto caps mode off.
276        setAutoCapsMode(NO_AUTO_CAPS);
277        // Load keyboard, should be in alphabet.
278        loadKeyboard(ALPHABET_UNSHIFTED);
279        // Update shift state, remained in alphabet.
280        updateShiftState(ALPHABET_UNSHIFTED);
281
282        // Press/release shift key, enter alphabet shifted.
283        pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
284        // Update shift state, back to alphabet.
285        updateShiftState(ALPHABET_UNSHIFTED);
286
287        // Long press shift key, enter alphabet shift locked.
288        longPressShiftKey(ALPHABET_MANUAL_SHIFTED, ALPHABET_SHIFT_LOCKED);
289        // Update shift state, remained in alphabet shift locked.
290        updateShiftState(ALPHABET_SHIFT_LOCKED);
291        // Long press shift key, back to alphabet.
292        longPressShiftKey(ALPHABET_SHIFT_LOCK_SHIFTED, ALPHABET_UNSHIFTED);
293
294        // Press/release "?123" key, enter into symbols.
295        pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
296        // Update shift state, remained in symbols.
297        updateShiftState(SYMBOLS_UNSHIFTED);
298
299        // Press/release "=\<" key, enter symbols shifted.
300        pressAndReleaseKey(CODE_SHIFT, SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
301        // Update shift state, remained in symbols shifted.
302        updateShiftState(SYMBOLS_SHIFTED);
303
304        // Set auto caps mode on.
305        setAutoCapsMode(AUTO_CAPS);
306        // Load keyboard, should be in automatic shifted.
307        loadKeyboard(ALPHABET_AUTOMATIC_SHIFTED);
308        // Update shift state, remained in automatic shifted.
309        updateShiftState(ALPHABET_AUTOMATIC_SHIFTED);
310
311        // Press/release shift key, enter alphabet.
312        pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_UNSHIFTED);
313        // Press/release shift key, enter alphabet shifted.
314        pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
315        // Update shift state, enter to automatic shifted (not alphabet shifted).
316        updateShiftState(ALPHABET_AUTOMATIC_SHIFTED);
317
318        // Long press shift key, enter alphabet shift locked.
319        longPressShiftKey(ALPHABET_MANUAL_SHIFTED, ALPHABET_SHIFT_LOCKED);
320        // Update shift state, remained in alphabet shift locked (not automatic shifted).
321        updateShiftState(ALPHABET_SHIFT_LOCKED);
322        // Long press shift key, back to alphabet.
323        longPressShiftKey(ALPHABET_SHIFT_LOCK_SHIFTED, ALPHABET_UNSHIFTED);
324
325        // Load keyboard, should be in automatic shifted.
326        loadKeyboard(ALPHABET_AUTOMATIC_SHIFTED);
327        // Press/release "?123" key, enter into symbols.
328        pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
329        // Update shift state, remained in symbols.
330        updateShiftState(SYMBOLS_UNSHIFTED);
331
332        // Press/release "=\<" key, enter symbols shifted.
333        pressAndReleaseKey(CODE_SHIFT, SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
334        // Update shift state, remained in symbols shifted.
335        updateShiftState(SYMBOLS_SHIFTED);
336    }
337
338    // Sliding input in alphabet.
339    public void testSlidingAlphabet() {
340        // Alphabet -> shift key + letter -> alphabet.
341        // Press and slide from shift key, enter alphabet shifted.
342        pressAndSlideFromKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
343        // Enter/release letter key, switch back to alphabet.
344        pressAndReleaseKey('Z', ALPHABET_MANUAL_SHIFTED, ALPHABET_UNSHIFTED);
345
346        // Alphabet -> "?123" key + letter -> alphabet.
347        // Press and slide from "123?" key, enter symbols.
348        pressAndSlideFromKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
349        // Enter/release into symbol letter key, switch back to alphabet.
350        pressAndReleaseKey('!', SYMBOLS_UNSHIFTED, ALPHABET_UNSHIFTED);
351
352        // Alphabet shifted -> shift key + letter -> alphabet.
353        // Press/release shift key, enter alphabet shifted.
354        pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
355        // Press and slide from shift key, remain alphabet shifted.
356        pressAndSlideFromKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
357        // Enter/release letter key, switch back to alphabet (not alphabet shifted).
358        pressAndReleaseKey('Z', ALPHABET_MANUAL_SHIFTED, ALPHABET_UNSHIFTED);
359
360        // Alphabet shifted -> "?123" key + letter -> alphabet.
361        // Press/release shift key, enter alphabet shifted.
362        pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
363        // Press and slide from "123?" key, enter symbols.
364        pressAndSlideFromKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
365        // Enter/release into symbol letter key, switch back to alphabet (not alphabet shifted).
366        pressAndReleaseKey('!', SYMBOLS_UNSHIFTED, ALPHABET_UNSHIFTED);
367
368        // Alphabet shift locked -> shift key + letter -> alphabet shift locked.
369        // Long press shift key, enter alphabet shift locked.
370        longPressShiftKey(ALPHABET_MANUAL_SHIFTED, ALPHABET_SHIFT_LOCKED);
371        // Press and slide from "123?" key, enter symbols.
372        pressAndSlideFromKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
373        // Enter/release into symbol letter key, switch back to alphabet shift locked.
374        pressAndReleaseKey('!', SYMBOLS_UNSHIFTED, ALPHABET_SHIFT_LOCKED);
375
376        // Alphabet shift locked -> "?123" key + letter -> alphabet shift locked.
377        // Press and slide from shift key, enter alphabet shifted.
378        pressAndSlideFromKey(CODE_SHIFT, ALPHABET_SHIFT_LOCK_SHIFTED, ALPHABET_SHIFT_LOCKED);
379        // Enter/release letter key, switch back to shift locked.
380        pressAndReleaseKey('Z', ALPHABET_SHIFT_LOCKED, ALPHABET_SHIFT_LOCKED);
381    }
382
383    // Sliding input in symbols.
384    public void testSlidingSymbols() {
385        // Symbols -> "=\<" key + letter -> symbols.
386        // Press/release "?123" key, enter into symbols.
387        pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
388        // Press and slide from shift key, enter symols shifted.
389        pressAndSlideFromKey(CODE_SHIFT, SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
390        // Enter/release symbol shifted letter key, switch back to symbols.
391        pressAndReleaseKey('~', SYMBOLS_SHIFTED, SYMBOLS_UNSHIFTED);
392
393        // Symbols -> "ABC" key + letter -> Symbols.
394        // Press and slide from "ABC" key, enter alphabet.
395        pressAndSlideFromKey(CODE_SYMBOL, ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED);
396        // Enter/release letter key, switch back to symbols.
397        pressAndReleaseKey('a', ALPHABET_UNSHIFTED, SYMBOLS_UNSHIFTED);
398        // Press/release "ABC" key, switch to alphabet.
399        pressAndReleaseKey(CODE_SYMBOL, ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED);
400
401        // Alphabet shifted -> symbols -> "ABC" key + letter -> symbols ->
402        // alphabet.
403        // Load keyboard
404        loadKeyboard(ALPHABET_UNSHIFTED);
405        // Press/release shift key, enter alphabet shifted.
406        pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
407        // Press/release "?123" key, enter into symbols.
408        pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
409        // Press and slide from "ABC" key.
410        pressAndSlideFromKey(CODE_SYMBOL, ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED);
411        // Enter/release letter key, switch back to symbols.
412        pressAndReleaseKey('a', ALPHABET_UNSHIFTED, SYMBOLS_UNSHIFTED);
413        // Press/release "ABC" key, switch to alphabet (not alphabet shifted).
414        pressAndReleaseKey(CODE_SYMBOL, ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED);
415
416        // Alphabet shift locked -> symbols -> "ABC" key + letter -> symbols ->
417        // alphabet shift locked.
418        // Load keyboard
419        loadKeyboard(ALPHABET_UNSHIFTED);
420        // Long press shift key, enter alphabet shift locked.
421        longPressShiftKey(ALPHABET_MANUAL_SHIFTED, ALPHABET_SHIFT_LOCKED);
422        // Press/release "?123" key, enter into symbols.
423        pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
424        // Press and slide from "ABC" key, enter alphabet shift locked.
425        pressAndSlideFromKey(CODE_SYMBOL, ALPHABET_SHIFT_LOCKED, ALPHABET_SHIFT_LOCKED);
426        // Enter/release letter key, switch back to symbols.
427        pressAndReleaseKey('A', ALPHABET_SHIFT_LOCKED, SYMBOLS_UNSHIFTED);
428        // Press/release "ABC" key, switch to alphabet shift locked.
429        pressAndReleaseKey(CODE_SYMBOL, ALPHABET_SHIFT_LOCKED, ALPHABET_SHIFT_LOCKED);
430
431        // Alphabet shift locked -> symbols -> "=\<" key + letter -> symbols ->
432        // alphabet shift locked.
433        // Load keyboard
434        loadKeyboard(ALPHABET_UNSHIFTED);
435        // Long press shift key, enter alphabet shift locked.
436        longPressShiftKey(ALPHABET_MANUAL_SHIFTED, ALPHABET_SHIFT_LOCKED);
437        // Press/release "?123" key, enter into symbols.
438        pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
439        // Press and slide from "=\<" key, enter symbols shifted.
440        pressAndSlideFromKey(CODE_SHIFT, SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
441        // Enter/release symbols shift letter key, switch back to symbols.
442        pressAndReleaseKey('~', SYMBOLS_SHIFTED, SYMBOLS_UNSHIFTED);
443        // Press/release "ABC" key, switch to alphabet shift locked.
444        pressAndReleaseKey(CODE_SYMBOL, ALPHABET_SHIFT_LOCKED, ALPHABET_SHIFT_LOCKED);
445    }
446
447    // Sliding input in symbols shifted.
448    public void testSlidingSymbolsShifted() {
449        // Symbols shifted -> "?123" + letter -> symbols shifted.
450        // Press/release "?123" key, enter into symbols.
451        pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
452        // Press/release "=\<" key, enter into symbols shifted.
453        pressAndReleaseKey(CODE_SHIFT, SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
454        // Press and slide from shift key, enter symbols.
455        pressAndSlideFromKey(CODE_SHIFT, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
456        // Enter/release symbol letter key, switch back to symbols shifted.
457        pressAndReleaseKey('1', SYMBOLS_UNSHIFTED, SYMBOLS_SHIFTED);
458
459        // Symbols shifted -> "ABC" key + letter -> symbols shifted.
460        // Press and slide from "ABC" key, enter alphabet.
461        pressAndSlideFromKey(CODE_SYMBOL, ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED);
462        // Enter/release letter key, switch back to symbols shifted.
463        pressAndReleaseKey('a', ALPHABET_UNSHIFTED, SYMBOLS_SHIFTED);
464        // Press/release "ABC" key, switch to alphabet.
465        pressAndReleaseKey(CODE_SYMBOL, ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED);
466
467        // Alphabet shifted -> symbols shifted -> "ABC" + letter -> symbols shifted ->
468        // alphabet.
469        // Load keyboard
470        loadKeyboard(ALPHABET_UNSHIFTED);
471        // Press/release shift key, enter alphabet shifted.
472        pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
473        // Press/release "?123" key, enter into symbols.
474        pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
475        // Press/release "=\<" key, enter into symbols shifted.
476        pressAndReleaseKey(CODE_SHIFT, SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
477        // Press and slide from "ABC" key.
478        pressAndSlideFromKey(CODE_SYMBOL, ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED);
479        // Enter/release letter key, switch back to symbols shifted.
480        pressAndReleaseKey('a', ALPHABET_UNSHIFTED, SYMBOLS_SHIFTED);
481        // Press/release "ABC" key, switch to alphabet (not alphabet shifted).
482        pressAndReleaseKey(CODE_SYMBOL, ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED);
483
484        // Alphabet shift locked -> symbols shifted -> "ABC" + letter -> symbols shifted ->
485        // alphabet shift locked.
486        // Load keyboard
487        loadKeyboard(ALPHABET_UNSHIFTED);
488        // Long press shift key, enter alphabet shift locked.
489        longPressShiftKey(ALPHABET_MANUAL_SHIFTED, ALPHABET_SHIFT_LOCKED);
490        // Press/release "?123" key, enter into symbols.
491        pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
492        // Press/release "=\<" key, enter into symbols shifted.
493        pressAndReleaseKey(CODE_SHIFT, SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
494        // Press and slide from "ABC" key.
495        pressAndSlideFromKey(CODE_SYMBOL, ALPHABET_SHIFT_LOCKED, ALPHABET_SHIFT_LOCKED);
496        // Enter/release letter key, switch back to symbols shifted.
497        pressAndReleaseKey('A', ALPHABET_SHIFT_LOCKED, SYMBOLS_SHIFTED);
498        // Press/release "ABC" key, switch to alphabet shift locked.
499        pressAndReleaseKey(CODE_SYMBOL, ALPHABET_SHIFT_LOCKED, ALPHABET_SHIFT_LOCKED);
500
501        // Alphabet shift locked -> symbols shifted -> "?123" + letter -> symbols shifted ->
502        // alphabet shift locked.
503        // Load keyboard
504        loadKeyboard(ALPHABET_UNSHIFTED);
505        // Long press shift key, enter alphabet shift locked.
506        longPressShiftKey(ALPHABET_MANUAL_SHIFTED, ALPHABET_SHIFT_LOCKED);
507        // Press/release "?123" key, enter into symbols.
508        pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
509        // Press/release "=\<" key, enter into symbols shifted.
510        pressAndReleaseKey(CODE_SHIFT, SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
511        // Press and slide from "?123" key.
512        pressAndSlideFromKey(CODE_SHIFT, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
513        // Enter/release symbol letter key, switch back to symbols shifted.
514        pressAndReleaseKey('1', SYMBOLS_UNSHIFTED, SYMBOLS_SHIFTED);
515        // Press/release "ABC" key, switch to alphabet shift locked.
516        pressAndReleaseKey(CODE_SYMBOL, ALPHABET_SHIFT_LOCKED, ALPHABET_SHIFT_LOCKED);
517    }
518
519    // Change focus to new text field.
520    public void testChangeFocus() {
521        // Press/release shift key.
522        pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
523        // Change focus to new text field.
524        loadKeyboard(ALPHABET_UNSHIFTED);
525
526        // Long press shift key, enter alphabet shift locked.
527        longPressShiftKey(ALPHABET_MANUAL_SHIFTED, ALPHABET_SHIFT_LOCKED);
528        // Change focus to new text field.
529        loadKeyboard(ALPHABET_UNSHIFTED);
530
531        // Press/release "?123" key.
532        pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
533        // Change focus to new text field.
534        loadKeyboard(ALPHABET_UNSHIFTED);
535
536        // Press/release "?123" key.
537        pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
538        // Press/release "=\<" key.
539        pressAndReleaseKey(CODE_SHIFT, SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
540        // Change focus to new text field.
541        loadKeyboard(ALPHABET_UNSHIFTED);
542    }
543
544    // Change focus to auto caps text field.
545    public void testChangeFocusAutoCaps() {
546        // Set auto caps mode on.
547        setAutoCapsMode(AUTO_CAPS);
548
549        // Update shift state.
550        updateShiftState(ALPHABET_AUTOMATIC_SHIFTED);
551        // Change focus to new text field.
552        loadKeyboard(ALPHABET_AUTOMATIC_SHIFTED);
553
554        // Press/release shift key, enter alphabet.
555        pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_UNSHIFTED);
556        // Change focus to new text field.
557        loadKeyboard(ALPHABET_AUTOMATIC_SHIFTED);
558
559        // Long press shift key, enter alphabet shift locked.
560        longPressShiftKey(ALPHABET_MANUAL_SHIFTED, ALPHABET_SHIFT_LOCKED);
561        // Change focus to new text field.
562        loadKeyboard(ALPHABET_AUTOMATIC_SHIFTED);
563
564        // Press/release "?123" key.
565        pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
566        // Change focus to new text field.
567        loadKeyboard(ALPHABET_AUTOMATIC_SHIFTED);
568
569        // Press/release "?123" key.
570        pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
571        // Press/release "=\<" key.
572        pressAndReleaseKey(CODE_SHIFT, SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
573        // Change focus to new text field.
574        loadKeyboard(ALPHABET_AUTOMATIC_SHIFTED);
575    }
576
577    // Change orientation.
578    public void testChangeOrientation() {
579        // Press/release shift key.
580        pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
581        // Rotate device.
582        rotateDevice(ALPHABET_MANUAL_SHIFTED);
583
584        // Long press shift key, enter alphabet shift locked.
585        longPressShiftKey(ALPHABET_MANUAL_SHIFTED, ALPHABET_SHIFT_LOCKED);
586        // Rotate device.
587        rotateDevice(ALPHABET_SHIFT_LOCKED);
588
589        // Press/release "?123" key.
590        pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
591        // Rotate device.
592        rotateDevice(SYMBOLS_UNSHIFTED);
593
594        // Press/release "=\<" key.
595        pressAndReleaseKey(CODE_SHIFT, SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
596        // Rotate device.
597        rotateDevice(SYMBOLS_SHIFTED);
598    }
599}
600