• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 
17 package com.android.inputmethod.keyboard.internal;
18 
19 import android.test.AndroidTestCase;
20 
21 public class KeyboardStateTestsBase extends AndroidTestCase
22         implements MockKeyboardSwitcher.Constants {
23     protected MockKeyboardSwitcher mSwitcher;
24 
25     private String mLayoutSwitchBackSymbols = "";
26 
27     @Override
setUp()28     protected void setUp() throws Exception {
29         super.setUp();
30 
31         mSwitcher = new MockKeyboardSwitcher();
32         mSwitcher.setAutoCapsMode(CAP_MODE_OFF);
33 
34         loadKeyboard(ALPHABET_UNSHIFTED);
35     }
36 
setAutoCapsMode(int autoCaps)37     public void setAutoCapsMode(int autoCaps) {
38         mSwitcher.setAutoCapsMode(autoCaps);
39     }
40 
setLayoutSwitchBackSymbols(String switchBackSymbols)41     public void setLayoutSwitchBackSymbols(String switchBackSymbols) {
42         mLayoutSwitchBackSymbols = switchBackSymbols;
43     }
44 
assertLayout(String message, int expected, int actual)45     private static void assertLayout(String message, int expected, int actual) {
46         assertTrue(message + ": expected=" + MockKeyboardSwitcher.getLayoutName(expected)
47                 + " actual=" + MockKeyboardSwitcher.getLayoutName(actual),
48                 expected == actual);
49     }
50 
updateShiftState(int afterUpdate)51     public void updateShiftState(int afterUpdate) {
52         mSwitcher.updateShiftState();
53         assertLayout("afterUpdate", afterUpdate, mSwitcher.getLayoutId());
54     }
55 
loadKeyboard(int afterLoad)56     public void loadKeyboard(int afterLoad) {
57         mSwitcher.loadKeyboard(mLayoutSwitchBackSymbols);
58         mSwitcher.updateShiftState();
59         assertLayout("afterLoad", afterLoad, mSwitcher.getLayoutId());
60     }
61 
rotateDevice(int afterRotate)62     public void rotateDevice(int afterRotate) {
63         mSwitcher.saveKeyboardState();
64         mSwitcher.loadKeyboard(mLayoutSwitchBackSymbols);
65         assertLayout("afterRotate", afterRotate, mSwitcher.getLayoutId());
66     }
67 
pressKeyWithoutTimerExpire(int code, boolean isSinglePointer, int afterPress)68     private void pressKeyWithoutTimerExpire(int code, boolean isSinglePointer, int afterPress) {
69         mSwitcher.onPressKey(code, isSinglePointer);
70         assertLayout("afterPress", afterPress, mSwitcher.getLayoutId());
71     }
72 
pressKey(int code, int afterPress)73     public void pressKey(int code, int afterPress) {
74         mSwitcher.expireDoubleTapTimeout();
75         pressKeyWithoutTimerExpire(code, true, afterPress);
76     }
77 
releaseKey(int code, int afterRelease)78     public void releaseKey(int code, int afterRelease) {
79         mSwitcher.onCodeInput(code, SINGLE);
80         mSwitcher.onReleaseKey(code, NOT_SLIDING);
81         assertLayout("afterRelease", afterRelease, mSwitcher.getLayoutId());
82     }
83 
pressAndReleaseKey(int code, int afterPress, int afterRelease)84     public void pressAndReleaseKey(int code, int afterPress, int afterRelease) {
85         pressKey(code, afterPress);
86         releaseKey(code, afterRelease);
87     }
88 
chordingPressKey(int code, int afterPress)89     public void chordingPressKey(int code, int afterPress) {
90         mSwitcher.expireDoubleTapTimeout();
91         pressKeyWithoutTimerExpire(code, false, afterPress);
92     }
93 
chordingReleaseKey(int code, int afterRelease)94     public void chordingReleaseKey(int code, int afterRelease) {
95         mSwitcher.onCodeInput(code, MULTI);
96         mSwitcher.onReleaseKey(code, NOT_SLIDING);
97         assertLayout("afterRelease", afterRelease, mSwitcher.getLayoutId());
98     }
99 
chordingPressAndReleaseKey(int code, int afterPress, int afterRelease)100     public void chordingPressAndReleaseKey(int code, int afterPress, int afterRelease) {
101         chordingPressKey(code, afterPress);
102         chordingReleaseKey(code, afterRelease);
103     }
104 
pressAndSlideFromKey(int code, int afterPress, int afterSlide)105     public void pressAndSlideFromKey(int code, int afterPress, int afterSlide) {
106         pressKey(code, afterPress);
107         mSwitcher.onReleaseKey(code, SLIDING);
108         assertLayout("afterSlide", afterSlide, mSwitcher.getLayoutId());
109     }
110 
longPressKey(int code, int afterPress, int afterLongPress)111     public void longPressKey(int code, int afterPress, int afterLongPress) {
112         pressKey(code, afterPress);
113         mSwitcher.onLongPressTimeout(code);
114         assertLayout("afterLongPress", afterLongPress, mSwitcher.getLayoutId());
115     }
116 
longPressAndReleaseKey(int code, int afterPress, int afterLongPress, int afterRelease)117     public void longPressAndReleaseKey(int code, int afterPress, int afterLongPress,
118             int afterRelease) {
119         longPressKey(code, afterPress, afterLongPress);
120         releaseKey(code, afterRelease);
121     }
122 
secondPressKey(int code, int afterPress)123     public void secondPressKey(int code, int afterPress) {
124         pressKeyWithoutTimerExpire(code, true, afterPress);
125     }
126 
secondPressAndReleaseKey(int code, int afterPress, int afterRelease)127     public void secondPressAndReleaseKey(int code, int afterPress, int afterRelease) {
128         secondPressKey(code, afterPress);
129         releaseKey(code, afterRelease);
130     }
131 }
132