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