KeyboardStateSingleTouchTests.java revision 83d81f2e34b28e56bb0f8505d2315ae53c8f9eef
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_MANUAL_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_MANUAL_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_MANUAL_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_MANUAL_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_MANUAL_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_MANUAL_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 -> alphabet.
402        // Load keyboard
403        loadKeyboard(ALPHABET_UNSHIFTED);
404        // Press/release shift key, enter alphabet shifted.
405        pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
406        // Press/release "?123" key, enter into symbols.
407        pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
408        // Press and slide from "ABC" key.
409        pressAndSlideFromKey(CODE_SYMBOL, ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED);
410        // Enter/release letter key, switch back to symbols.
411        pressAndReleaseKey('a', ALPHABET_UNSHIFTED, SYMBOLS_UNSHIFTED);
412        // Press/release "ABC" key, switch to alphabet (not alphabet shifted).
413        pressAndReleaseKey(CODE_SYMBOL, ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED);
414
415        // Alphabet shift locked -> symbols -> "ABC" key + letter -> symbols.
416        // -> alphabet shift locked.
417        // Load keyboard
418        loadKeyboard(ALPHABET_UNSHIFTED);
419        // Long press shift key, enter alphabet shift locked.
420        longPressShiftKey(ALPHABET_MANUAL_SHIFTED, ALPHABET_SHIFT_LOCKED);
421        // Press/release "?123" key, enter into symbols.
422        pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
423        // Press and slide from "ABC" key, enter alphabet shift locked.
424        pressAndSlideFromKey(CODE_SYMBOL, ALPHABET_SHIFT_LOCKED, ALPHABET_SHIFT_LOCKED);
425        // Enter/release letter key, switch back to symbols.
426        pressAndReleaseKey('A', ALPHABET_SHIFT_LOCKED, SYMBOLS_UNSHIFTED);
427        // Press/release "ABC" key, switch to alphabet shift locked.
428        pressAndReleaseKey(CODE_SYMBOL, ALPHABET_SHIFT_LOCKED, ALPHABET_SHIFT_LOCKED);
429    }
430
431    // Sliding input in symbols shifted.
432    public void testSlidingSymbolsShifted() {
433        // Symbols shifted -> "?123" + letter -> symbols shifted.
434        // Press/release "?123" key, enter into symbols.
435        pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
436        // Press/release "=\<" key, enter into symbols shifted.
437        pressAndReleaseKey(CODE_SHIFT, SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
438        // Press and slide from shift key, enter symbols.
439        pressAndSlideFromKey(CODE_SHIFT, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
440        // Enter/release symbol letter key, switch back to symbols shifted.
441        pressAndReleaseKey('1', SYMBOLS_UNSHIFTED, SYMBOLS_SHIFTED);
442
443        // Symbols shifted -> "ABC" key + letter -> symbols shifted.
444        // Press and slide from "ABC" key, enter alphabet.
445        pressAndSlideFromKey(CODE_SYMBOL, ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED);
446        // Enter/release letter key, switch back to symbols shifted.
447        pressAndReleaseKey('a', ALPHABET_UNSHIFTED, SYMBOLS_SHIFTED);
448        // Press/release "ABC" key, switch to alphabet.
449        pressAndReleaseKey(CODE_SYMBOL, ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED);
450
451        // Alphabet shifted -> symbols shifted -> "ABC" + letter -> symbols shifted -> alphabet.
452        // Load keyboard
453        loadKeyboard(ALPHABET_UNSHIFTED);
454        // Press/release shift key, enter alphabet shifted.
455        pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
456        // Press/release "?123" key, enter into symbols.
457        pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
458        // Press/release "=\<" key, enter into symbols shifted.
459        pressAndReleaseKey(CODE_SHIFT, SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
460        // Press and slide from "ABC" key.
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 (not alphabet shifted).
465        pressAndReleaseKey(CODE_SYMBOL, ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED);
466
467        // Alphabet shift locked -> symbols shifted -> "ABC" + letter -> symbols shifted
468        // -> alphabet shift locked.
469        // Load keyboard
470        loadKeyboard(ALPHABET_UNSHIFTED);
471        // Long press shift key, enter alphabet shift locked.
472        longPressShiftKey(ALPHABET_MANUAL_SHIFTED, ALPHABET_SHIFT_LOCKED);
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_SHIFT_LOCKED, ALPHABET_SHIFT_LOCKED);
479        // Enter/release letter key, switch back to symbols shifted.
480        pressAndReleaseKey('A', ALPHABET_SHIFT_LOCKED, SYMBOLS_SHIFTED);
481        // Press/release "ABC" key, switch to alphabet shift locked.
482        pressAndReleaseKey(CODE_SYMBOL, ALPHABET_SHIFT_LOCKED, ALPHABET_SHIFT_LOCKED);
483    }
484
485    // Change focus to new text field.
486    public void testChangeFocus() {
487        // Press/release shift key.
488        pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
489        // Change focus to new text field.
490        loadKeyboard(ALPHABET_UNSHIFTED);
491
492        // Long press shift key, enter alphabet shift locked.
493        longPressShiftKey(ALPHABET_MANUAL_SHIFTED, ALPHABET_SHIFT_LOCKED);
494        // Change focus to new text field.
495        loadKeyboard(ALPHABET_UNSHIFTED);
496
497        // Press/release "?123" key.
498        pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
499        // Change focus to new text field.
500        loadKeyboard(ALPHABET_UNSHIFTED);
501
502        // Press/release "?123" key.
503        pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
504        // Press/release "=\<" key.
505        pressAndReleaseKey(CODE_SHIFT, SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
506        // Change focus to new text field.
507        loadKeyboard(ALPHABET_UNSHIFTED);
508    }
509
510    // Change focus to auto caps text field.
511    public void testChangeFocusAutoCaps() {
512        // Set auto caps mode on.
513        setAutoCapsMode(AUTO_CAPS);
514
515        // Update shift state.
516        updateShiftState(ALPHABET_AUTOMATIC_SHIFTED);
517        // Change focus to new text field.
518        loadKeyboard(ALPHABET_AUTOMATIC_SHIFTED);
519
520        // Press/release shift key, enter alphabet.
521        pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_UNSHIFTED);
522        // Change focus to new text field.
523        loadKeyboard(ALPHABET_AUTOMATIC_SHIFTED);
524
525        // Long press shift key, enter alphabet shift locked.
526        longPressShiftKey(ALPHABET_MANUAL_SHIFTED, ALPHABET_SHIFT_LOCKED);
527        // Change focus to new text field.
528        loadKeyboard(ALPHABET_AUTOMATIC_SHIFTED);
529
530        // Press/release "?123" key.
531        pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
532        // Change focus to new text field.
533        loadKeyboard(ALPHABET_AUTOMATIC_SHIFTED);
534
535        // Press/release "?123" key.
536        pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
537        // Press/release "=\<" key.
538        pressAndReleaseKey(CODE_SHIFT, SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
539        // Change focus to new text field.
540        loadKeyboard(ALPHABET_AUTOMATIC_SHIFTED);
541    }
542
543    // Change orientation.
544    public void testChangeOrientation() {
545        // Press/release shift key.
546        pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
547        // Rotate device.
548        rotateDevice(ALPHABET_MANUAL_SHIFTED);
549
550        // Long press shift key, enter alphabet shift locked.
551        longPressShiftKey(ALPHABET_MANUAL_SHIFTED, ALPHABET_SHIFT_LOCKED);
552        // Rotate device.
553        rotateDevice(ALPHABET_SHIFT_LOCKED);
554
555        // Press/release "?123" key.
556        pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
557        // Rotate device.
558        rotateDevice(SYMBOLS_UNSHIFTED);
559
560        // Press/release "=\<" key.
561        pressAndReleaseKey(CODE_SHIFT, SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
562        // Rotate device.
563        rotateDevice(SYMBOLS_SHIFTED);
564    }
565}
566