blob: 7e3106d7f20fe59559a919c1dc05b782a4618310 [file] [log] [blame]
Tadashi G. Takaoka04c96ab2011-01-19 20:59:57 +09001/*
2 * Copyright (C) 2011 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;
18
19import com.android.inputmethod.keyboard.MiniKeyboardBuilder.MiniKeyboardLayoutParams;
20
21import android.test.AndroidTestCase;
22
23public class MiniKeyboardBuilderTests extends AndroidTestCase {
24 private static final int MAX_COLUMNS = 5;
25 private static final int WIDTH = 10;
26 private static final int HEIGHT = 10;
27
28 @Override
29 protected void setUp() throws Exception {
30 super.setUp();
31 }
32
33 public void testLayoutError() {
34 MiniKeyboardLayoutParams params = null;
35 try {
36 params = new MiniKeyboardLayoutParams(
37 10, MAX_COLUMNS + 1, WIDTH, HEIGHT,
38 WIDTH * 2, WIDTH * MAX_COLUMNS);
39 fail("Should throw IllegalArgumentException");
40 } catch (IllegalArgumentException e) {
41 // Too small keyboard to hold mini keyboard.
42 }
43 assertNull("Too small keyboard to hold mini keyboard", params);
44 }
45
46 // Mini keyboard layout test.
47 // "[n]" represents n-th key position in mini keyboard.
48 // "[1]" is the default key.
49
50 // [1]
51 public void testLayout1Key() {
52 MiniKeyboardLayoutParams params = new MiniKeyboardLayoutParams(
53 1, MAX_COLUMNS, WIDTH, HEIGHT,
54 WIDTH * 5, WIDTH * 10);
55 assertEquals("1 key columns", 1, params.mNumColumns);
56 assertEquals("1 key rows", 1, params.mNumRows);
57 assertEquals("1 key left", 0, params.mLeftKeys);
58 assertEquals("1 key right", 1, params.mRightKeys);
59 assertEquals("1 key [1]", 0, params.getColumnPos(0));
60 assertEquals("1 key centering", false, params.mTopRowNeedsCentering);
61 assertEquals("1 key default", 0, params.getDefaultKeyCoordX());
62 }
63
64 // [1] [2]
65 public void testLayout2Key() {
66 MiniKeyboardLayoutParams params = new MiniKeyboardLayoutParams(
67 2, MAX_COLUMNS, WIDTH, HEIGHT,
68 WIDTH * 5, WIDTH * 10);
69 assertEquals("2 key columns", 2, params.mNumColumns);
70 assertEquals("2 key rows", 1, params.mNumRows);
71 assertEquals("2 key left", 0, params.mLeftKeys);
72 assertEquals("2 key right", 2, params.mRightKeys);
73 assertEquals("2 key [1]", 0, params.getColumnPos(0));
74 assertEquals("2 key [2]", 1, params.getColumnPos(1));
75 assertEquals("2 key centering", false, params.mTopRowNeedsCentering);
76 assertEquals("2 key default", 0, params.getDefaultKeyCoordX());
77 }
78
79 // [3] [1] [2]
80 public void testLayout3Key() {
81 MiniKeyboardLayoutParams params = new MiniKeyboardLayoutParams(
82 3, MAX_COLUMNS, WIDTH, HEIGHT,
83 WIDTH * 5, WIDTH * 10);
84 assertEquals("3 key columns", 3, params.mNumColumns);
85 assertEquals("3 key rows", 1, params.mNumRows);
86 assertEquals("3 key left", 1, params.mLeftKeys);
87 assertEquals("3 key right", 2, params.mRightKeys);
88 assertEquals("3 key [1]", 0, params.getColumnPos(0));
89 assertEquals("3 key [2]", 1, params.getColumnPos(1));
90 assertEquals("3 key [3]", -1, params.getColumnPos(2));
91 assertEquals("3 key centering", false, params.mTopRowNeedsCentering);
92 assertEquals("3 key default", WIDTH, params.getDefaultKeyCoordX());
93 }
94
95 // [3] [1] [2] [4]
96 public void testLayout4Key() {
97 MiniKeyboardLayoutParams params = new MiniKeyboardLayoutParams(
98 4, MAX_COLUMNS, WIDTH, HEIGHT,
99 WIDTH * 5, WIDTH * 10);
100 assertEquals("4 key columns", 4, params.mNumColumns);
101 assertEquals("4 key rows", 1, params.mNumRows);
102 assertEquals("4 key left", 1, params.mLeftKeys);
103 assertEquals("4 key right", 3, params.mRightKeys);
104 assertEquals("4 key [1]", 0, params.getColumnPos(0));
105 assertEquals("4 key [2]", 1, params.getColumnPos(1));
106 assertEquals("4 key [3]", -1, params.getColumnPos(2));
107 assertEquals("4 key [4]", 2, params.getColumnPos(3));
108 assertEquals("4 key centering", false, params.mTopRowNeedsCentering);
109 assertEquals("4 key default", WIDTH, params.getDefaultKeyCoordX());
110 }
111
112 // [5] [3] [1] [2] [4]
113 public void testLayout5Key() {
114 MiniKeyboardLayoutParams params = new MiniKeyboardLayoutParams(
115 5, MAX_COLUMNS, WIDTH, HEIGHT,
116 WIDTH * 5, WIDTH * 10);
117 assertEquals("5 key columns", 5, params.mNumColumns);
118 assertEquals("5 key rows", 1, params.mNumRows);
119 assertEquals("5 key left", 2, params.mLeftKeys);
120 assertEquals("5 key right", 3, params.mRightKeys);
121 assertEquals("5 key [1]", 0, params.getColumnPos(0));
122 assertEquals("5 key [2]", 1, params.getColumnPos(1));
123 assertEquals("5 key [3]", -1, params.getColumnPos(2));
124 assertEquals("5 key [4]", 2, params.getColumnPos(3));
125 assertEquals("5 key [5]", -2, params.getColumnPos(4));
126 assertEquals("5 key centering", false, params.mTopRowNeedsCentering);
127 assertEquals("5 key default", WIDTH * 2, params.getDefaultKeyCoordX());
128 }
129
130 // [6]
131 // [5] [3] [1] [2] [4]
132 public void testLayout6Key() {
133 MiniKeyboardLayoutParams params = new MiniKeyboardLayoutParams(
134 6, MAX_COLUMNS, WIDTH, HEIGHT,
135 WIDTH * 5, WIDTH * 10);
136 assertEquals("6 key columns", 5, params.mNumColumns);
137 assertEquals("6 key rows", 2, params.mNumRows);
138 assertEquals("6 key left", 2, params.mLeftKeys);
139 assertEquals("6 key right", 3, params.mRightKeys);
140 assertEquals("6 key [1]", 0, params.getColumnPos(0));
141 assertEquals("6 key [2]", 1, params.getColumnPos(1));
142 assertEquals("6 key [3]", -1, params.getColumnPos(2));
143 assertEquals("6 key [4]", 2, params.getColumnPos(3));
144 assertEquals("6 key [5]", -2, params.getColumnPos(4));
145 assertEquals("6 key [6]", 0, params.getColumnPos(5));
146 assertEquals("6 key centering", false, params.mTopRowNeedsCentering);
147 assertEquals("6 key default", WIDTH * 2, params.getDefaultKeyCoordX());
148 }
149
150 // [6] [7]
151 // [5] [3] [1] [2] [4]
152 public void testLayout7Key() {
153 MiniKeyboardLayoutParams params = new MiniKeyboardLayoutParams(
154 7, MAX_COLUMNS, WIDTH, HEIGHT,
155 WIDTH * 5, WIDTH * 10);
156 assertEquals("7 key columns", 5, params.mNumColumns);
157 assertEquals("7 key rows", 2, params.mNumRows);
158 assertEquals("7 key left", 2, params.mLeftKeys);
159 assertEquals("7 key right", 3, params.mRightKeys);
160 assertEquals("7 key [1]", 0, params.getColumnPos(0));
161 assertEquals("7 key [2]", 1, params.getColumnPos(1));
162 assertEquals("7 key [3]", -1, params.getColumnPos(2));
163 assertEquals("7 key [4]", 2, params.getColumnPos(3));
164 assertEquals("7 key [5]", -2, params.getColumnPos(4));
165 assertEquals("7 key [6]", 0, params.getColumnPos(5));
166 assertEquals("7 key [7]", 1, params.getColumnPos(6));
167 assertEquals("7 key centering", true, params.mTopRowNeedsCentering);
168 assertEquals("7 key default", WIDTH * 2, params.getDefaultKeyCoordX());
169 }
170
171 // [8] [6] [7]
172 // [5] [3] [1] [2] [4]
173 public void testLayout8Key() {
174 MiniKeyboardLayoutParams params = new MiniKeyboardLayoutParams(
175 8, MAX_COLUMNS, WIDTH, HEIGHT,
176 WIDTH * 5, WIDTH * 10);
177 assertEquals("8 key columns", 5, params.mNumColumns);
178 assertEquals("8 key rows", 2, params.mNumRows);
179 assertEquals("8 key left", 2, params.mLeftKeys);
180 assertEquals("8 key right", 3, params.mRightKeys);
181 assertEquals("8 key [1]", 0, params.getColumnPos(0));
182 assertEquals("8 key [2]", 1, params.getColumnPos(1));
183 assertEquals("8 key [3]", -1, params.getColumnPos(2));
184 assertEquals("8 key [4]", 2, params.getColumnPos(3));
185 assertEquals("8 key [5]", -2, params.getColumnPos(4));
186 assertEquals("8 key [6]", 0, params.getColumnPos(5));
187 assertEquals("8 key [7]", 1, params.getColumnPos(6));
188 assertEquals("8 key [8]", -1, params.getColumnPos(7));
189 assertEquals("8 key centering", false, params.mTopRowNeedsCentering);
190 assertEquals("8 key default", WIDTH * 2, params.getDefaultKeyCoordX());
191 }
192
193 // [8] [6] [7] [9]
194 // [5] [3] [1] [2] [4]
195 public void testLayout9Key() {
196 MiniKeyboardLayoutParams params = new MiniKeyboardLayoutParams(
197 9, MAX_COLUMNS, WIDTH, HEIGHT,
198 WIDTH * 5, WIDTH * 10);
199 assertEquals("9 key columns", 5, params.mNumColumns);
200 assertEquals("9 key rows", 2, params.mNumRows);
201 assertEquals("9 key left", 2, params.mLeftKeys);
202 assertEquals("9 key right", 3, params.mRightKeys);
203 assertEquals("9 key [1]", 0, params.getColumnPos(0));
204 assertEquals("9 key [2]", 1, params.getColumnPos(1));
205 assertEquals("9 key [3]", -1, params.getColumnPos(2));
206 assertEquals("9 key [4]", 2, params.getColumnPos(3));
207 assertEquals("9 key [5]", -2, params.getColumnPos(4));
208 assertEquals("9 key [6]", 0, params.getColumnPos(5));
209 assertEquals("9 key [7]", 1, params.getColumnPos(6));
210 assertEquals("9 key [8]", -1, params.getColumnPos(7));
211 assertEquals("9 key [9]", 2, params.getColumnPos(8));
212 assertEquals("9 key centering", true, params.mTopRowNeedsCentering);
213 assertEquals("9 key default", WIDTH * 2, params.getDefaultKeyCoordX());
214 }
215
216 // Nine keys test. There is no key space for mini keyboard at left of the parent key.
217 // [6] [7] [8] [9]
218 // [1] [2] [3] [4] [5]
219 public void testLayout9KeyLeft() {
220 MiniKeyboardLayoutParams params = new MiniKeyboardLayoutParams(
221 9, MAX_COLUMNS, WIDTH, HEIGHT,
222 0, WIDTH * 10);
223 assertEquals("9 key left columns", 5, params.mNumColumns);
224 assertEquals("9 key left rows", 2, params.mNumRows);
225 assertEquals("9 key left left", 0, params.mLeftKeys);
226 assertEquals("9 key left right", 5, params.mRightKeys);
227 assertEquals("9 key left [1]", 0, params.getColumnPos(0));
228 assertEquals("9 key left [2]", 1, params.getColumnPos(1));
229 assertEquals("9 key left [3]", 2, params.getColumnPos(2));
230 assertEquals("9 key left [4]", 3, params.getColumnPos(3));
231 assertEquals("9 key left [5]", 4, params.getColumnPos(4));
232 assertEquals("9 key left [6]", 0, params.getColumnPos(5));
233 assertEquals("9 key left [7]", 1, params.getColumnPos(6));
234 assertEquals("9 key left [8]", 2, params.getColumnPos(7));
235 assertEquals("9 key left [9]", 3, params.getColumnPos(8));
236 assertEquals("9 key left centering", true, params.mTopRowNeedsCentering);
237 assertEquals("9 key left default", 0, params.getDefaultKeyCoordX());
238 }
239
240 // Nine keys test. There is only one key space for mini keyboard at left of the parent key.
241 // [8] [6] [7] [9]
242 // [3] [1] [2] [4] [5]
243 public void testLayout9KeyNearLeft() {
244 MiniKeyboardLayoutParams params = new MiniKeyboardLayoutParams(
245 9, MAX_COLUMNS, WIDTH, HEIGHT,
246 WIDTH, WIDTH * 10);
247 assertEquals("9 key near left columns", 5, params.mNumColumns);
248 assertEquals("9 key near left rows", 2, params.mNumRows);
249 assertEquals("9 key near left left", 1, params.mLeftKeys);
250 assertEquals("9 key near left right", 4, params.mRightKeys);
251 assertEquals("9 key near left [1]", 0, params.getColumnPos(0));
252 assertEquals("9 key near left [2]", 1, params.getColumnPos(1));
253 assertEquals("9 key near left [3]", -1, params.getColumnPos(2));
254 assertEquals("9 key near left [4]", 2, params.getColumnPos(3));
255 assertEquals("9 key near left [5]", 3, params.getColumnPos(4));
256 assertEquals("9 key near left [6]", 0, params.getColumnPos(5));
257 assertEquals("9 key near left [7]", 1, params.getColumnPos(6));
258 assertEquals("9 key near left [8]", -1, params.getColumnPos(7));
259 assertEquals("9 key near left [9]", 2, params.getColumnPos(8));
260 assertEquals("9 key near left centering", true, params.mTopRowNeedsCentering);
261 assertEquals("9 key near left default", WIDTH, params.getDefaultKeyCoordX());
262 }
263
264
265 // Nine keys test. There is no key space for mini keyboard at right of the parent key.
266 // [9] [8] [7] [6]
267 // [5] [4] [3] [2] [1]
268 public void testLayout9KeyRight() {
269 MiniKeyboardLayoutParams params = new MiniKeyboardLayoutParams(
270 9, MAX_COLUMNS, WIDTH, HEIGHT,
271 WIDTH * 9, WIDTH * 10);
272 assertEquals("9 key right columns", 5, params.mNumColumns);
273 assertEquals("9 key right rows", 2, params.mNumRows);
274 assertEquals("9 key right left", 4, params.mLeftKeys);
275 assertEquals("9 key right right", 1, params.mRightKeys);
276 assertEquals("9 key right [1]", 0, params.getColumnPos(0));
277 assertEquals("9 key right [2]", -1, params.getColumnPos(1));
278 assertEquals("9 key right [3]", -2, params.getColumnPos(2));
279 assertEquals("9 key right [4]", -3, params.getColumnPos(3));
280 assertEquals("9 key right [5]", -4, params.getColumnPos(4));
281 assertEquals("9 key right [6]", 0, params.getColumnPos(5));
282 assertEquals("9 key right [7]", -1, params.getColumnPos(6));
283 assertEquals("9 key right [8]", -2, params.getColumnPos(7));
284 assertEquals("9 key right [9]", -3, params.getColumnPos(8));
285 assertEquals("9 key right centering", true, params.mTopRowNeedsCentering);
286 assertEquals("9 key right default", WIDTH * 4, params.getDefaultKeyCoordX());
287 }
288
289 // Nine keys test. There is only one key space for mini keyboard at right of the parent key.
290 // [9] [8] [6] [7]
291 // [5] [4] [3] [1] [2]
292 public void testLayout9KeyNearRight() {
293 MiniKeyboardLayoutParams params = new MiniKeyboardLayoutParams(
294 9, MAX_COLUMNS, WIDTH, HEIGHT,
295 WIDTH * 8, WIDTH * 10);
296 assertEquals("9 key near right columns", 5, params.mNumColumns);
297 assertEquals("9 key near right rows", 2, params.mNumRows);
298 assertEquals("9 key near right left", 3, params.mLeftKeys);
299 assertEquals("9 key near right right", 2, params.mRightKeys);
300 assertEquals("9 key near right [1]", 0, params.getColumnPos(0));
301 assertEquals("9 key near right [2]", 1, params.getColumnPos(1));
302 assertEquals("9 key near right [3]", -1, params.getColumnPos(2));
303 assertEquals("9 key near right [4]", -2, params.getColumnPos(3));
304 assertEquals("9 key near right [5]", -3, params.getColumnPos(4));
305 assertEquals("9 key near right [6]", 0, params.getColumnPos(5));
306 assertEquals("9 key near right [7]", 1, params.getColumnPos(6));
307 assertEquals("9 key near right [8]", -1, params.getColumnPos(7));
308 assertEquals("9 key near right [9]", -2, params.getColumnPos(8));
309 assertEquals("9 key near right centering", true, params.mTopRowNeedsCentering);
310 assertEquals("9 key near right default", WIDTH * 3, params.getDefaultKeyCoordX());
311 }
312}