KeyboardStateMultiTouchTests.java revision d26d63b35d34333a8f6737572b1c306b774eebd0
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 KeyboardStateMultiTouchTests extends KeyboardStateTestsBase {
20    // Shift key chording input.
21    public void testChording() {
22        // Press shift key and hold, enter into choring shift state.
23        pressKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED);
24
25        // Press/release letter keys.
26        chordingPressAndReleaseKey('Z', ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
27        chordingPressAndReleaseKey('X', ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
28
29        // Release shift key, switch back to alphabet.
30        releaseKey(CODE_SHIFT, ALPHABET_UNSHIFTED);
31
32        // Press symbols key and hold, enter into choring symbols state.
33        pressKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED);
34
35        // Press/release symbol letter keys.
36        chordingPressAndReleaseKey('1', SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
37        chordingPressAndReleaseKey('2', SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
38
39        // Release symbols key, switch back to alphabet.
40        releaseKey(CODE_SYMBOL, ALPHABET_UNSHIFTED);
41    }
42
43    // Shift key chording input in shift locked.
44    public void testShiftChordingShiftLocked() {
45        // Long press shift key, enter alphabet shift locked.
46        longPressShiftKey(ALPHABET_MANUAL_SHIFTED, ALPHABET_SHIFT_LOCKED);
47
48        // Press shift key and hold, enter into choring shift state.
49        pressKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED);
50
51        // Press/release letter keys.
52        chordingPressAndReleaseKey('Z', ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
53        chordingPressAndReleaseKey('X', ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
54
55        // Release shift key, switch back to alphabet shift locked.
56        releaseKey(CODE_SHIFT, ALPHABET_SHIFT_LOCKED);
57
58        // Press symbols key and hold, enter into choring symbols state.
59        pressKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED);
60
61        // Press/release symbol letter keys.
62        chordingPressAndReleaseKey('1', SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
63        chordingPressAndReleaseKey('2', SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
64
65        // Release symbols key, switch back to alphabet shift locked.
66        releaseKey(CODE_SYMBOL, ALPHABET_SHIFT_LOCKED);
67    }
68
69    // Symbols key chording input.
70    public void testSymbolsChording() {
71        // Press/release symbols key, enter symbols.
72        pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
73
74        // Press shift key and hold, enter into choring symbols shifted state.
75        pressKey(CODE_SHIFT, SYMBOLS_SHIFTED);
76
77        // Press/release symbols keys.
78        chordingPressAndReleaseKey('1', SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
79        chordingPressAndReleaseKey('2', SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
80
81        // Release shift key, switch back to symbols.
82        releaseKey(CODE_SHIFT, SYMBOLS_UNSHIFTED);
83
84        // Press "ABC" key and hold, enter into choring alphabet state.
85        pressKey(CODE_SYMBOL, ALPHABET_UNSHIFTED);
86
87        // Press/release letter keys.
88        chordingPressAndReleaseKey('a', ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED);
89        chordingPressAndReleaseKey('b', ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED);
90
91        // Release "ABC" key, switch back to symbols.
92        releaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED);
93    }
94
95    // Symbols shifted key chording input in symbol.
96    public void testSymbolsShiftedChording() {
97        // Press/release symbols key, enter symbols.
98        pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
99        // Press/release shift key, enter symbols shifted.
100        pressAndReleaseKey(CODE_SHIFT, SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
101
102        // Press shift key and hold, enter into chording symbols state.
103        pressKey(CODE_SHIFT, SYMBOLS_UNSHIFTED);
104
105        // Press/release symbol letter keys.
106        chordingPressAndReleaseKey('1', SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
107        chordingPressAndReleaseKey('2', SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
108
109        // Release shift key, switch back to symbols shifted state.
110        releaseKey(CODE_SHIFT, SYMBOLS_SHIFTED);
111
112        // TODO: This test fails due to bug.
113//        // Press "ABC" key and hold, enter into choring alphabet state.
114//        pressKey(CODE_SYMBOL, ALPHABET_UNSHIFTED);
115//
116//        // Press/release letter keys.
117//        chordingPressAndReleaseKey('a', ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED);
118//        chordingPressAndReleaseKey('b', ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED);
119//
120//        // Release "ABC" key, switch back to symbols.
121//        releaseKey(CODE_SYMBOL, SYMBOLS_SHIFTED);
122    }
123
124    // Chording shift key in automatic upper case.
125    public void testAutomaticUpperCaseChording() {
126        // Set auto caps mode on.
127        setAutoCapsMode(AUTO_CAPS);
128
129        // Update shift state with auto caps enabled.
130        updateShiftState(ALPHABET_AUTOMATIC_SHIFTED);
131
132        // Press shift key and hold, enter into chording shift state.
133        pressKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED);
134
135        // Press/release letter keys.
136        chordingPressAndReleaseKey('Z', ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
137
138        // Release shift key, switch back to alphabet.
139        releaseKey(CODE_SHIFT, ALPHABET_UNSHIFTED);
140    }
141
142    // Chording symbol key in automatic upper case.
143    public void testAutomaticUpperCaseChording2() {
144        // Set auto caps mode on.
145        setAutoCapsMode(AUTO_CAPS);
146
147        // Update shift state with auto caps enabled.
148        updateShiftState(ALPHABET_AUTOMATIC_SHIFTED);
149
150        // Press "123?" key and hold, enter into chording symbols state.
151        pressKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED);
152
153        // Press/release symbol letter keys.
154        chordingPressAndReleaseKey('1', SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
155
156        // Release "123?" key, switch back to alphabet.
157        releaseKey(CODE_SYMBOL, ALPHABET_UNSHIFTED);
158    }
159
160    // TODO: Multitouch test
161
162    // TODO: n-Keys roll over test
163}
164