KeyboardStateSingleTouchTests.java revision 06bc1db017b14614353137fde035d2eed666a74f
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, switch 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, switch 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, switch 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, switch 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, switch back to symbols shifted. 107 pressAndReleaseKey('1', SYMBOLS_UNSHIFTED, SYMBOLS_SHIFTED); 108 } 109 110 // Automatic switch back to alphabet from symbols by space key. 111 public void testSwitchBackBySpace() { 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, switch back to alphabet. 119 pressAndReleaseKey(CODE_SPACE, SYMBOLS_UNSHIFTED, ALPHABET_UNSHIFTED); 120 } 121 122 // Automatic switch back to shift locked test. 123 public void testSwitchBackBySpaceInShiftLocked() { 124 // Long press shift key, enter alphabet shift locked. 125 longPressShiftKey(ALPHABET_MANUAL_SHIFTED, ALPHABET_SHIFT_LOCKED); 126 127 // Press/release "?123" key, enter into symbols. 128 pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED); 129 130 // Enter a symbol letter. 131 pressAndReleaseKey('1', SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED); 132 133 // Enter space, switch back to alphabet. 134 pressAndReleaseKey(CODE_SPACE, SYMBOLS_UNSHIFTED, ALPHABET_SHIFT_LOCKED); 135 } 136 137 138 // Automatic switch back to alphabet from symbols by registered letters. 139 public void testSwitchBackChar() { 140 // Set switch back chars. 141 final String switchBackSymbols = "'"; 142 final int switchBackCode = switchBackSymbols.codePointAt(0); 143 setLayoutSwitchBackSymbols(switchBackSymbols); 144 loadKeyboard(ALPHABET_UNSHIFTED); 145 146 // Press/release "?123" key, enter into symbols. 147 pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED); 148 149 // Enter a symbol letter. 150 pressAndReleaseKey('1', SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED); 151 152 // Enter switch back letter, switch back to alphabet. 153 pressAndReleaseKey(switchBackCode, SYMBOLS_UNSHIFTED, ALPHABET_UNSHIFTED); 154 } 155 156 // Automatic upper case test 157 public void testAutomaticUpperCase() { 158 // Set auto caps mode on. 159 setAutoCapsMode(AUTO_CAPS); 160 161 // Update shift state with auto caps enabled. 162 updateShiftState(ALPHABET_AUTOMATIC_SHIFTED); 163 164 // Press/release shift key, back to alphabet. 165 pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_UNSHIFTED); 166 } 167 168 // Sliding from shift key in automatic upper case. 169 public void testAutomaticUpperCaseSliding() { 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 shift key. 177 pressAndSlideFromKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED); 178 179 // Enter and release letter key, back to alphabet. 180 pressAndReleaseKey('Z', ALPHABET_MANUAL_SHIFTED, ALPHABET_UNSHIFTED); 181 } 182 183 // Sliding from symbol key in automatic upper case. 184 public void testAutomaticUpperCaseSliding2() { 185 // Set auto caps mode on. 186 setAutoCapsMode(AUTO_CAPS); 187 188 // Update shift state with auto caps enabled. 189 updateShiftState(ALPHABET_AUTOMATIC_SHIFTED); 190 191 // Press and slide from "123?" key. 192 pressAndSlideFromKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED); 193 194 // Enter and release symbol letter keys, back to alphabet. 195 pressAndReleaseKey('1', SYMBOLS_UNSHIFTED, ALPHABET_UNSHIFTED); 196 } 197 198 // Long press shift key. 199 // TODO: Move long press recognizing timer/logic into KeyboardState. 200 public void testLongPressShift() { 201 // Long press shift key, enter alphabet shift locked. 202 longPressShiftKey(ALPHABET_MANUAL_SHIFTED, ALPHABET_SHIFT_LOCKED); 203 204 // Press/release letter key, remain in shift locked. 205 pressAndReleaseKey('A', ALPHABET_SHIFT_LOCKED, ALPHABET_SHIFT_LOCKED); 206 207 // Press/release letter key, remain in shift locked. 208 pressAndReleaseKey('B', ALPHABET_SHIFT_LOCKED, ALPHABET_SHIFT_LOCKED); 209 210 // Press/release word separator, remain in shift locked. 211 pressAndReleaseKey(CODE_SPACE, ALPHABET_SHIFT_LOCKED, ALPHABET_SHIFT_LOCKED); 212 213 // Long press shift key, back to alphabet. 214 longPressShiftKey(ALPHABET_MANUAL_SHIFTED, ALPHABET_UNSHIFTED); 215 } 216 217 // Leave shift lock with single tap shift key. 218 public void testShiftInShiftLock() { 219 // Long press shift key, enter alphabet shift locked. 220 longPressShiftKey(ALPHABET_MANUAL_SHIFTED, ALPHABET_SHIFT_LOCKED); 221 222 // Press/release shift key, back to alphabet. 223 pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_UNSHIFTED); 224 } 225 226 // Double tap shift key. 227 // TODO: Move double tap recognizing timer/logic into KeyboardState. 228 public void testDoubleTapShift() { 229 // First shift key tap. 230 pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED); 231 232 // Second shift key tap. 233 // Double tap recognized in LatinKeyboardView.KeyTimerHandler. 234 secondTapShiftKey(ALPHABET_SHIFT_LOCKED); 235 236 // First shift key tap. 237 pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_UNSHIFTED); 238 239 // Second shift key tap. 240 // Second tap is ignored in LatinKeyboardView.KeyTimerHandler. 241 } 242 243 // Update shift state. 244 public void testUpdateShiftState() { 245 // Set auto caps mode on. 246 setAutoCapsMode(AUTO_CAPS); 247 248 // Update shift state. 249 updateShiftState(ALPHABET_AUTOMATIC_SHIFTED); 250 251 // Press/release letter key, back to alphabet. 252 pressAndReleaseKey('A', ALPHABET_AUTOMATIC_SHIFTED, ALPHABET_UNSHIFTED); 253 254 // Press/release letter key 255 pressAndReleaseKey('b', ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED); 256 257 // Press/release auto caps trigger letter, back to automatic shifted. 258 pressAndReleaseKey(CODE_AUTO_CAPS_TRIGGER, ALPHABET_UNSHIFTED, ALPHABET_AUTOMATIC_SHIFTED); 259 } 260 261 // Update shift state when shift locked. 262 public void testUpdateShiftStateInShiftLocked() { 263 // Set auto caps mode on. 264 setAutoCapsMode(AUTO_CAPS); 265 266 // Long press shift key, enter alphabet shift locked. 267 longPressShiftKey(ALPHABET_MANUAL_SHIFTED, ALPHABET_SHIFT_LOCKED); 268 269 // Update shift state when shift locked 270 updateShiftState(ALPHABET_SHIFT_LOCKED); 271 } 272 273 // Change focus to new text field. 274 public void testChangeFocus() { 275 // Press/release shift key. 276 pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED); 277 // Change focus to new text field. 278 loadKeyboard(ALPHABET_UNSHIFTED); 279 280 // Long press shift key, enter alphabet shift locked. 281 longPressShiftKey(ALPHABET_MANUAL_SHIFTED, ALPHABET_SHIFT_LOCKED); 282 // Change focus to new text field. 283 loadKeyboard(ALPHABET_UNSHIFTED); 284 285 // Press/release symbol key. 286 pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED); 287 // Change focus to new text field. 288 loadKeyboard(ALPHABET_UNSHIFTED); 289 290 // Press/release symbol key. 291 pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED); 292 // Press/release shift key. 293 pressAndReleaseKey(CODE_SHIFT, SYMBOLS_SHIFTED, SYMBOLS_SHIFTED); 294 // Change focus to new text field. 295 loadKeyboard(ALPHABET_UNSHIFTED); 296 } 297 298 // Change focus to auto caps text field. 299 public void testChangeFocusAutoCaps() { 300 // Set auto caps mode on. 301 setAutoCapsMode(AUTO_CAPS); 302 303 // Update shift state. 304 updateShiftState(ALPHABET_AUTOMATIC_SHIFTED); 305 // Change focus to new text field. 306 loadKeyboard(ALPHABET_AUTOMATIC_SHIFTED); 307 308 // Press/release shift key, enter alphabet. 309 pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_UNSHIFTED); 310 // Change focus to new text field. 311 loadKeyboard(ALPHABET_AUTOMATIC_SHIFTED); 312 313 // Long press shift key, enter alphabet shift locked. 314 longPressShiftKey(ALPHABET_MANUAL_SHIFTED, ALPHABET_SHIFT_LOCKED); 315 // Change focus to new text field. 316 loadKeyboard(ALPHABET_AUTOMATIC_SHIFTED); 317 318 // Press/release symbol key. 319 pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED); 320 // Change focus to new text field. 321 loadKeyboard(ALPHABET_AUTOMATIC_SHIFTED); 322 323 // Press/release symbol key. 324 pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED); 325 // Press/release shift key. 326 pressAndReleaseKey(CODE_SHIFT, SYMBOLS_SHIFTED, SYMBOLS_SHIFTED); 327 // Change focus to new text field. 328 loadKeyboard(ALPHABET_AUTOMATIC_SHIFTED); 329 } 330 331 // Change orientation. 332 public void testChangeOrientation() { 333 // Press/release shift key. 334 pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED); 335 // Rotate device. 336 rotateDevice(ALPHABET_MANUAL_SHIFTED); 337 338 // Long press shift key, enter alphabet shift locked. 339 longPressShiftKey(ALPHABET_MANUAL_SHIFTED, ALPHABET_SHIFT_LOCKED); 340 // Rotate device. 341 rotateDevice(ALPHABET_SHIFT_LOCKED); 342 343 // Press/release symbol key. 344 pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED); 345 // Rotate device. 346 rotateDevice(SYMBOLS_UNSHIFTED); 347 348 // Press/release shift key. 349 pressAndReleaseKey(CODE_SHIFT, SYMBOLS_SHIFTED, SYMBOLS_SHIFTED); 350 // Rotate device. 351 rotateDevice(SYMBOLS_SHIFTED); 352 } 353} 354