KeyboardStateSingleTouchTests.java revision 60c4594ee6415b266b3418e46d09e6a5b3ed23e1
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 mode.
21    public void testShift() {
22        // Press/release shift key, enter into shift state.
23        pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
24        // Press/release shift key, back to normal state.
25        pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_UNSHIFTED);
26
27        // Press/release shift key, enter into shift state.
28        pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
29        // Press/release letter key, snap back to normal state.
30        pressAndReleaseKey('Z', ALPHABET_MANUAL_SHIFTED, ALPHABET_UNSHIFTED);
31    }
32
33    // Shift key sliding input.
34    public void testShiftSliding() {
35        // Press and slide from shift key.
36        pressAndSlideFromKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
37
38        // Enter/release letter key, snap back to alphabet.
39        pressAndReleaseKey('Z', ALPHABET_MANUAL_SHIFTED, ALPHABET_UNSHIFTED);
40    }
41
42    // Switching between alphabet and symbols.
43    public void testAlphabetAndSymbols() {
44        // Press/release "?123" key, enter into symbols.
45        pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
46        // Press/release "?123" key, back to alphabet.
47        pressAndReleaseKey(CODE_SYMBOL, ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED);
48    }
49
50    // Switching between alphabet shift locked and symbols.
51    public void testAlphabetShiftLockedAndSymbols() {
52        // Long press shift key, enter alphabet shift locked.
53        longPressShiftKey(ALPHABET_MANUAL_SHIFTED, ALPHABET_SHIFT_LOCKED);
54
55        // Press/release "?123" key, enter into symbols.
56        pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
57
58        // Press/release "ABC" key, switch back to shift locked mode.
59        pressAndReleaseKey(CODE_SYMBOL, ALPHABET_SHIFT_LOCKED, ALPHABET_SHIFT_LOCKED);
60    }
61
62    // Symbols key sliding input.
63    public void testSymbolsSliding() {
64        // Press and slide from "123?" key.
65        pressAndSlideFromKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
66
67        // Enter/release into symbol key, snap back to alphabet.
68        pressAndReleaseKey('!', SYMBOLS_UNSHIFTED, ALPHABET_UNSHIFTED);
69    }
70
71    // Switching between symbols and symbols shifted.
72    public void testSymbolsAndSymbolsShifted() {
73        // Press/release "?123" key, enter into symbols.
74        pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
75
76        // Press/release "=\<" key, enter into symbols shifted.
77        pressAndReleaseKey(CODE_SHIFT, SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
78
79        // Press/release "?123" key, enter into symbols.
80        pressAndReleaseKey(CODE_SHIFT, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
81    }
82
83    // Symbols shift sliding input
84    public void testSymbolsShiftSliding() {
85        // Press/release "?123" key, enter into symbols.
86        pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
87
88        // Press and slide from "=\<" key.
89        pressAndSlideFromKey(CODE_SHIFT, SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
90
91        // Enter/release symbol shifted letter key, snap back to symbols.
92        pressAndReleaseKey('~', SYMBOLS_SHIFTED, SYMBOLS_UNSHIFTED);
93    }
94
95    // Symbols shift sliding input from symbols shifted.
96    public void testSymbolsShiftSliding2() {
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
103        // Press and slide from "123?" key.
104        pressAndSlideFromKey(CODE_SHIFT, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
105
106        // Enter/release symbol letter key, snap back to symbols shifted.
107        pressAndReleaseKey('1', SYMBOLS_UNSHIFTED, SYMBOLS_SHIFTED);
108    }
109
110    // Automatic snap back to alphabet from symbols by space key.
111    public void testSnapBackBySpace() {
112        // Press/release "?123" key, enter into symbols.
113        pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
114
115        // Enter a symbol letter.
116        pressAndReleaseKey('1', SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
117
118        // Enter space, snap back to alphabet.
119        pressAndReleaseKey(CODE_SPACE, SYMBOLS_UNSHIFTED, ALPHABET_UNSHIFTED);
120    }
121
122    // TODO: Add automatic snap back to shift locked test.
123
124    // Automatic snap back to alphabet from symbols by registered letters.
125    public void testSnapBack() {
126        // Set snap back chars.
127        final String snapBackChars = "'";
128        final int snapBackCode = snapBackChars.codePointAt(0);
129        loadKeyboard(snapBackChars, ALPHABET_UNSHIFTED);
130
131        // Press/release "?123" key, enter into symbols.
132        pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
133
134        // Enter a symbol letter.
135        pressAndReleaseKey('1', SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
136
137        // Enter snap back letter, snap back to alphabet.
138        pressAndReleaseKey(snapBackCode, SYMBOLS_UNSHIFTED, ALPHABET_UNSHIFTED);
139    }
140
141    // Automatic upper case test
142    public void testAutomaticUpperCase() {
143        // Set auto caps mode on.
144        setAutoCapsMode(AUTO_CAPS);
145
146        // Update shift state with auto caps enabled.
147        updateShiftState(ALPHABET_AUTOMATIC_SHIFTED);
148
149        // Press/release shift key, back to alphabet.
150        pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_UNSHIFTED);
151    }
152
153    // Sliding from shift key in automatic upper case.
154    public void testAutomaticUpperCaseSliding() {
155        // Set auto caps mode on.
156        setAutoCapsMode(AUTO_CAPS);
157
158        // Update shift state with auto caps enabled.
159        updateShiftState(ALPHABET_AUTOMATIC_SHIFTED);
160
161        // Press and slide from shift key.
162        pressAndSlideFromKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
163
164        // Enter and release letter key, back to alphabet.
165        pressAndReleaseKey('Z', ALPHABET_MANUAL_SHIFTED, ALPHABET_UNSHIFTED);
166    }
167
168    // Sliding from symbol key in automatic upper case.
169    public void testAutomaticUpperCaseSliding2() {
170        // Set auto caps mode on.
171        setAutoCapsMode(AUTO_CAPS);
172
173        // Update shift state with auto caps enabled.
174        updateShiftState(ALPHABET_AUTOMATIC_SHIFTED);
175
176        // Press and slide from "123?" key.
177        pressAndSlideFromKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
178
179        // Enter and release symbol letter keys, back to alphabet.
180        pressAndReleaseKey('1', SYMBOLS_UNSHIFTED, ALPHABET_UNSHIFTED);
181    }
182
183    // Long press shift key.
184    // TODO: Move long press recognizing timer/logic into KeyboardState.
185    public void testLongPressShift() {
186        // Long press shift key, enter alphabet shift locked.
187        longPressShiftKey(ALPHABET_MANUAL_SHIFTED, ALPHABET_SHIFT_LOCKED);
188
189        // Press/release letter key, remain in shift locked.
190        pressAndReleaseKey('A', ALPHABET_SHIFT_LOCKED, ALPHABET_SHIFT_LOCKED);
191
192        // Press/release letter key, remain in shift locked.
193        pressAndReleaseKey('B', ALPHABET_SHIFT_LOCKED, ALPHABET_SHIFT_LOCKED);
194
195        // Press/release word separator, remain in shift locked.
196        pressAndReleaseKey(CODE_SPACE, ALPHABET_SHIFT_LOCKED, ALPHABET_SHIFT_LOCKED);
197
198        // Long press shift key, back to alphabet.
199        longPressShiftKey(ALPHABET_MANUAL_SHIFTED, ALPHABET_UNSHIFTED);
200     }
201
202    // Leave shift lock with single tap shift key.
203    public void testShiftInShiftLock() {
204        // Long press shift key, enter alphabet shift locked.
205        longPressShiftKey(ALPHABET_MANUAL_SHIFTED, ALPHABET_SHIFT_LOCKED);
206
207        // Press/release shift key, back to alphabet.
208        pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_UNSHIFTED);
209    }
210
211    // Double tap shift key.
212    // TODO: Move double tap recognizing timer/logic into KeyboardState.
213    public void testDoubleTapShift() {
214        // First shift key tap.
215        pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
216
217        // Second shift key tap.
218        // Double tap recognized in LatinKeyboardView.KeyTimerHandler.
219        secondTapShiftKey(ALPHABET_SHIFT_LOCKED);
220
221        // First shift key tap.
222        pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_UNSHIFTED);
223
224        // Second shift key tap.
225        // Second tap is ignored in LatinKeyboardView.KeyTimerHandler.
226    }
227
228    // Update shift state.
229    public void testUpdateShiftState() {
230        // Set auto caps mode on.
231        setAutoCapsMode(AUTO_CAPS);
232
233        // Update shift state.
234        updateShiftState(ALPHABET_AUTOMATIC_SHIFTED);
235
236        // Press/release letter key, back to alphabet.
237        pressAndReleaseKey('A', ALPHABET_AUTOMATIC_SHIFTED, ALPHABET_UNSHIFTED);
238
239        // Press/release letter key
240        pressAndReleaseKey('b', ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED);
241
242        // Press/release auto caps trigger letter, back to automatic shifted.
243        pressAndReleaseKey(CODE_AUTO_CAPS_TRIGGER, ALPHABET_UNSHIFTED, ALPHABET_AUTOMATIC_SHIFTED);
244    }
245
246    // Update shift state when shift locked.
247    public void testUpdateShiftStateInShiftLocked() {
248        // Set auto caps mode on.
249        setAutoCapsMode(AUTO_CAPS);
250
251        // Long press shift key, enter alphabet shift locked.
252        longPressShiftKey(ALPHABET_MANUAL_SHIFTED, ALPHABET_SHIFT_LOCKED);
253
254        // Update shift state when shift locked
255        updateShiftState(ALPHABET_SHIFT_LOCKED);
256    }
257
258    // TODO: Change focus test.
259
260    // TODO: Change orientation test.
261}
262