aboutsummaryrefslogtreecommitdiffstats
path: root/tests/src
diff options
context:
space:
mode:
Diffstat (limited to 'tests/src')
-rw-r--r--tests/src/com/android/inputmethod/compat/ArraysCompatUtilsTests.java103
-rw-r--r--tests/src/com/android/inputmethod/keyboard/MiniKeyboardBuilderTests.java1416
-rw-r--r--tests/src/com/android/inputmethod/keyboard/MoreKeysKeyboardBuilderFixedOrderTests.java2631
-rw-r--r--tests/src/com/android/inputmethod/keyboard/MoreKeysKeyboardBuilderTests.java2365
-rw-r--r--tests/src/com/android/inputmethod/keyboard/internal/KeySpecParserCsvTests.java303
-rw-r--r--tests/src/com/android/inputmethod/keyboard/internal/KeySpecParserTests.java497
-rw-r--r--tests/src/com/android/inputmethod/keyboard/internal/KeyStylesTests.java90
-rw-r--r--tests/src/com/android/inputmethod/keyboard/internal/KeyboardStateMultiTouchTests.java243
-rw-r--r--tests/src/com/android/inputmethod/keyboard/internal/KeyboardStateSingleTouchTests.java755
-rw-r--r--tests/src/com/android/inputmethod/keyboard/internal/KeyboardStateTestsBase.java120
-rw-r--r--tests/src/com/android/inputmethod/keyboard/internal/MockKeyboardSwitcher.java193
-rw-r--r--tests/src/com/android/inputmethod/keyboard/internal/MoreKeySpecParserTests.java220
-rw-r--r--tests/src/com/android/inputmethod/latin/BlueUnderlineTests.java102
-rw-r--r--tests/src/com/android/inputmethod/latin/EditDistanceTests.java18
-rw-r--r--tests/src/com/android/inputmethod/latin/InputLogicFrenchTests.java59
-rw-r--r--tests/src/com/android/inputmethod/latin/InputLogicTests.java233
-rw-r--r--tests/src/com/android/inputmethod/latin/InputTestsBase.java260
-rw-r--r--tests/src/com/android/inputmethod/latin/PunctuationTests.java149
-rw-r--r--tests/src/com/android/inputmethod/latin/SubtypeLocaleTests.java53
-rw-r--r--tests/src/com/android/inputmethod/latin/SuggestHelper.java167
-rw-r--r--tests/src/com/android/inputmethod/latin/SuggestTests.java189
-rw-r--r--tests/src/com/android/inputmethod/latin/SuggestTestsBase.java98
-rw-r--r--tests/src/com/android/inputmethod/latin/UserBigramSuggestHelper.java101
-rw-r--r--tests/src/com/android/inputmethod/latin/UserBigramSuggestTests.java115
-rw-r--r--tests/src/com/android/inputmethod/latin/UtilsTests.java2
25 files changed, 7941 insertions, 2541 deletions
diff --git a/tests/src/com/android/inputmethod/compat/ArraysCompatUtilsTests.java b/tests/src/com/android/inputmethod/compat/ArraysCompatUtilsTests.java
deleted file mode 100644
index 93681b616..000000000
--- a/tests/src/com/android/inputmethod/compat/ArraysCompatUtilsTests.java
+++ /dev/null
@@ -1,103 +0,0 @@
-/*
- * Copyright (C) 2011 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License"); you may not
- * use this file except in compliance with the License. You may obtain a copy of
- * the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
- * License for the specific language governing permissions and limitations under
- * the License.
- */
-
-package com.android.inputmethod.compat;
-
-import android.test.AndroidTestCase;
-
-public class ArraysCompatUtilsTests extends AndroidTestCase {
- // See {@link tests.api.java.util.ArraysTest}.
- private static final int ARRAY_SIZE = 100;
- private final int[] mIntArray = new int[ARRAY_SIZE];
-
- @Override
- protected void setUp() throws Exception {
- super.setUp();
- for (int counter = 0; counter < ARRAY_SIZE; counter++) {
- mIntArray[counter] = counter;
- }
- }
-
- public void testEmptyArray() {
- final int index = ArraysCompatUtils.binarySearch(mIntArray, 0, 0, 0);
- assertEquals("empty", ~0, index);
- final int compat = ArraysCompatUtils.compatBinarySearch(mIntArray, 0, 0, 0);
- assertEquals("empty compat", ~0, compat);
- }
-
- public void testEmptyRangeArray() {
- final int mid = ARRAY_SIZE / 3;
- final int index = ArraysCompatUtils.binarySearch(mIntArray, mid, mid, 1);
- assertEquals("empty", ~mid, index);
- final int compat = ArraysCompatUtils.compatBinarySearch(mIntArray, mid, mid, 1);
- assertEquals("empty compat", ~mid, compat);
- }
-
- public void testFind() {
- for (int counter = 0; counter < ARRAY_SIZE; counter++) {
- final int index = ArraysCompatUtils.binarySearch(mIntArray, 0, ARRAY_SIZE, counter);
- assertEquals("found", counter, index);
- }
- for (int counter = 0; counter < ARRAY_SIZE; counter++) {
- final int compat = ArraysCompatUtils.compatBinarySearch(
- mIntArray, 0, ARRAY_SIZE, counter);
- assertEquals("found compat", counter, compat);
- }
- }
-
- public void testFindNegative() {
- final int offset = ARRAY_SIZE / 2;
- for (int counter = 0; counter < ARRAY_SIZE; counter++) {
- mIntArray[counter] -= offset;
- }
- for (int counter = 0; counter < ARRAY_SIZE; counter++) {
- final int index = ArraysCompatUtils.binarySearch(
- mIntArray, 0, ARRAY_SIZE, counter - offset);
- assertEquals("found", counter, index);
- }
- for (int counter = 0; counter < ARRAY_SIZE; counter++) {
- final int compat = ArraysCompatUtils.compatBinarySearch(
- mIntArray, 0, ARRAY_SIZE, counter - offset);
- assertEquals("found compat", counter, compat);
- }
- }
-
- public void testNotFountAtTop() {
- final int index = ArraysCompatUtils.binarySearch(mIntArray, 0, ARRAY_SIZE, -1);
- assertEquals("not found top", ~0, index);
- final int compat = ArraysCompatUtils.compatBinarySearch(
- mIntArray, 0, ARRAY_SIZE, -1);
- assertEquals("not found top compat", ~0, compat);
- }
-
- public void testNotFountAtEnd() {
- final int index = ArraysCompatUtils.binarySearch(mIntArray, 0, ARRAY_SIZE, ARRAY_SIZE);
- assertEquals("not found end", ~ARRAY_SIZE, index);
- final int compat = ArraysCompatUtils.compatBinarySearch(
- mIntArray, 0, ARRAY_SIZE, ARRAY_SIZE);
- assertEquals("not found end compat", ~ARRAY_SIZE, compat);
- }
-
- public void testNotFountAtMid() {
- final int mid = ARRAY_SIZE / 3;
- mIntArray[mid] = mIntArray[mid + 1];
- final int index = ArraysCompatUtils.binarySearch(mIntArray, 0, ARRAY_SIZE, mid);
- assertEquals("not found mid", ~mid, index);
- final int compat = ArraysCompatUtils.compatBinarySearch(
- mIntArray, 0, ARRAY_SIZE, mid);
- assertEquals("not found mid compat", ~mid, compat);
- }
-}
diff --git a/tests/src/com/android/inputmethod/keyboard/MiniKeyboardBuilderTests.java b/tests/src/com/android/inputmethod/keyboard/MiniKeyboardBuilderTests.java
deleted file mode 100644
index a143bbad5..000000000
--- a/tests/src/com/android/inputmethod/keyboard/MiniKeyboardBuilderTests.java
+++ /dev/null
@@ -1,1416 +0,0 @@
-/*
- * Copyright (C) 2011 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License"); you may not
- * use this file except in compliance with the License. You may obtain a copy of
- * the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
- * License for the specific language governing permissions and limitations under
- * the License.
- */
-
-package com.android.inputmethod.keyboard;
-
-import com.android.inputmethod.keyboard.MiniKeyboard.Builder.MiniKeyboardParams;
-
-import android.test.AndroidTestCase;
-
-public class MiniKeyboardBuilderTests extends AndroidTestCase {
- private static final int MAX_COLUMNS = 5;
- private static final int WIDTH = 10;
- private static final int HEIGHT = 10;
-
- private static final int KEYBOARD_WIDTH = WIDTH * 10;
- private static final int XPOS_L0 = WIDTH * 0;
- private static final int XPOS_L1 = WIDTH * 1;
- private static final int XPOS_L2 = WIDTH * 2;
- private static final int XPOS_M0 = WIDTH * 5;
- private static final int XPOS_R3 = WIDTH * 6;
- private static final int XPOS_R2 = WIDTH * 7;
- private static final int XPOS_R1 = WIDTH * 8;
- private static final int XPOS_R0 = WIDTH * 9;
-
- @Override
- protected void setUp() throws Exception {
- super.setUp();
- }
-
- public void testLayoutError() {
- MiniKeyboardParams params = null;
- try {
- params = new MiniKeyboardParams(10, MAX_COLUMNS + 1, WIDTH, HEIGHT, WIDTH * 2,
- WIDTH * MAX_COLUMNS);
- fail("Should throw IllegalArgumentException");
- } catch (IllegalArgumentException e) {
- // Too small keyboard to hold mini keyboard.
- }
- assertNull("Too small keyboard to hold mini keyboard", params);
- }
-
- // Mini keyboard layout test.
- // "[n]" represents n-th key position in mini keyboard.
- // "[1]" is the default key.
-
- // [1]
- public void testLayout1KeyM0() {
- MiniKeyboardParams params = new MiniKeyboardParams(1, MAX_COLUMNS, WIDTH,
- HEIGHT, XPOS_M0, KEYBOARD_WIDTH);
- assertEquals("1 key M0 columns", 1, params.mNumColumns);
- assertEquals("1 key M0 rows", 1, params.mNumRows);
- assertEquals("1 key M0 left", 0, params.mLeftKeys);
- assertEquals("1 key M0 right", 1, params.mRightKeys);
- assertEquals("1 key M0 [1]", 0, params.getColumnPos(0));
- assertEquals("1 key M0 adjust", 0, params.mTopRowAdjustment);
- assertEquals("1 key M0 default", WIDTH * 0, params.getDefaultKeyCoordX());
- }
-
- // |[1]
- public void testLayout1KeyL0() {
- MiniKeyboardParams params = new MiniKeyboardParams(1, MAX_COLUMNS, WIDTH,
- HEIGHT, XPOS_L0, KEYBOARD_WIDTH);
- assertEquals("1 key L0 columns", 1, params.mNumColumns);
- assertEquals("1 key L0 rows", 1, params.mNumRows);
- assertEquals("1 key L0 left", 0, params.mLeftKeys);
- assertEquals("1 key L0 right", 1, params.mRightKeys);
- assertEquals("1 key L0 [1]", 0, params.getColumnPos(0));
- assertEquals("1 key L0 adjust", 0, params.mTopRowAdjustment);
- assertEquals("1 key L0 default", WIDTH * 0, params.getDefaultKeyCoordX());
- }
-
- // |___ [1]
- public void testLayout1KeyL1() {
- MiniKeyboardParams params = new MiniKeyboardParams(1, MAX_COLUMNS, WIDTH,
- HEIGHT, XPOS_L1, KEYBOARD_WIDTH);
- assertEquals("1 key L1 columns", 1, params.mNumColumns);
- assertEquals("1 key L1 rows", 1, params.mNumRows);
- assertEquals("1 key L1 left", 0, params.mLeftKeys);
- assertEquals("1 key L1 right", 1, params.mRightKeys);
- assertEquals("1 key L1 [1]", 0, params.getColumnPos(0));
- assertEquals("1 key L1 adjust", 0, params.mTopRowAdjustment);
- assertEquals("1 key L1 default", WIDTH * 0, params.getDefaultKeyCoordX());
- }
-
- // |___ ___ [1]
- public void testLayout1KeyL2() {
- MiniKeyboardParams params = new MiniKeyboardParams(1, MAX_COLUMNS, WIDTH,
- HEIGHT, XPOS_L2, KEYBOARD_WIDTH);
- assertEquals("1 key L2 columns", 1, params.mNumColumns);
- assertEquals("1 key L2 rows", 1, params.mNumRows);
- assertEquals("1 key L2 left", 0, params.mLeftKeys);
- assertEquals("1 key L2 right", 1, params.mRightKeys);
- assertEquals("1 key L2 [1]", 0, params.getColumnPos(0));
- assertEquals("1 key L2 adjust", 0, params.mTopRowAdjustment);
- assertEquals("1 key L2 default", WIDTH * 0, params.getDefaultKeyCoordX());
- }
-
- // [1]|
- public void testLayout1KeyR0() {
- MiniKeyboardParams params = new MiniKeyboardParams(1, MAX_COLUMNS, WIDTH,
- HEIGHT, XPOS_R0, KEYBOARD_WIDTH);
- assertEquals("1 key R0 columns", 1, params.mNumColumns);
- assertEquals("1 key R0 rows", 1, params.mNumRows);
- assertEquals("1 key R0 left", 0, params.mLeftKeys);
- assertEquals("1 key R0 right", 1, params.mRightKeys);
- assertEquals("1 key R0 [1]", 0, params.getColumnPos(0));
- assertEquals("1 key R0 adjust", 0, params.mTopRowAdjustment);
- assertEquals("1 key R0 default", WIDTH * 0, params.getDefaultKeyCoordX());
- }
-
- // [1] ___|
- public void testLayout1KeyR1() {
- MiniKeyboardParams params = new MiniKeyboardParams(1, MAX_COLUMNS, WIDTH,
- HEIGHT, XPOS_R1, KEYBOARD_WIDTH);
- assertEquals("1 key R1 columns", 1, params.mNumColumns);
- assertEquals("1 key R1 rows", 1, params.mNumRows);
- assertEquals("1 key R1 left", 0, params.mLeftKeys);
- assertEquals("1 key R1 right", 1, params.mRightKeys);
- assertEquals("1 key R1 [1]", 0, params.getColumnPos(0));
- assertEquals("1 key R1 adjust", 0, params.mTopRowAdjustment);
- assertEquals("1 key R1 default", WIDTH * 0, params.getDefaultKeyCoordX());
- }
-
- // [1] ___ ___|
- public void testLayout1KeyR2() {
- MiniKeyboardParams params = new MiniKeyboardParams(1, MAX_COLUMNS, WIDTH,
- HEIGHT, XPOS_R2, KEYBOARD_WIDTH);
- assertEquals("1 key R2 columns", 1, params.mNumColumns);
- assertEquals("1 key R2 rows", 1, params.mNumRows);
- assertEquals("1 key R2 left", 0, params.mLeftKeys);
- assertEquals("1 key R2 right", 1, params.mRightKeys);
- assertEquals("1 key R2 [1]", 0, params.getColumnPos(0));
- assertEquals("1 key R2 adjust", 0, params.mTopRowAdjustment);
- assertEquals("1 key R2 default", WIDTH * 0, params.getDefaultKeyCoordX());
- }
-
- // [1] [2]
- public void testLayout2KeyM0() {
- MiniKeyboardParams params = new MiniKeyboardParams(2, MAX_COLUMNS, WIDTH,
- HEIGHT, XPOS_M0, KEYBOARD_WIDTH);
- assertEquals("2 key M0 columns", 2, params.mNumColumns);
- assertEquals("2 key M0 rows", 1, params.mNumRows);
- assertEquals("2 key M0 left", 0, params.mLeftKeys);
- assertEquals("2 key M0 right", 2, params.mRightKeys);
- assertEquals("2 key M0 [1]", 0, params.getColumnPos(0));
- assertEquals("2 key M0 [2]", 1, params.getColumnPos(1));
- assertEquals("2 key M0 adjust", 0, params.mTopRowAdjustment);
- assertEquals("2 key M0 default", WIDTH * 0, params.getDefaultKeyCoordX());
- }
-
- // |[1] [2]
- public void testLayout2KeyL0() {
- MiniKeyboardParams params = new MiniKeyboardParams(2, MAX_COLUMNS, WIDTH,
- HEIGHT, XPOS_L0, KEYBOARD_WIDTH);
- assertEquals("2 key L0 columns", 2, params.mNumColumns);
- assertEquals("2 key L0 rows", 1, params.mNumRows);
- assertEquals("2 key L0 left", 0, params.mLeftKeys);
- assertEquals("2 key L0 right", 2, params.mRightKeys);
- assertEquals("2 key L0 [1]", 0, params.getColumnPos(0));
- assertEquals("2 key L0 [2]", 1, params.getColumnPos(1));
- assertEquals("2 key L0 adjust", 0, params.mTopRowAdjustment);
- assertEquals("2 key L0 default", WIDTH * 0, params.getDefaultKeyCoordX());
- }
-
- // |___ [1] [2]
- public void testLayout2KeyL1() {
- MiniKeyboardParams params = new MiniKeyboardParams(2, MAX_COLUMNS, WIDTH,
- HEIGHT, XPOS_L1, KEYBOARD_WIDTH);
- assertEquals("2 key L1 columns", 2, params.mNumColumns);
- assertEquals("2 key L1 rows", 1, params.mNumRows);
- assertEquals("2 key L1 left", 0, params.mLeftKeys);
- assertEquals("2 key L1 right", 2, params.mRightKeys);
- assertEquals("2 key L1 [1]", 0, params.getColumnPos(0));
- assertEquals("2 key L1 [2]", 1, params.getColumnPos(1));
- assertEquals("2 key L1 adjust", 0, params.mTopRowAdjustment);
- assertEquals("2 key L1 default", WIDTH * 0, params.getDefaultKeyCoordX());
- }
-
- // |___ ___ [1] [2]
- public void testLayout2KeyL2() {
- MiniKeyboardParams params = new MiniKeyboardParams(2, MAX_COLUMNS, WIDTH,
- HEIGHT, XPOS_L2, KEYBOARD_WIDTH);
- assertEquals("2 key L2 columns", 2, params.mNumColumns);
- assertEquals("2 key L2 rows", 1, params.mNumRows);
- assertEquals("2 key L2 left", 0, params.mLeftKeys);
- assertEquals("2 key L2 right", 2, params.mRightKeys);
- assertEquals("2 key L2 [1]", 0, params.getColumnPos(0));
- assertEquals("2 key L2 [2]", 1, params.getColumnPos(1));
- assertEquals("2 key L2 adjust", 0, params.mTopRowAdjustment);
- assertEquals("2 key L2 default", WIDTH * 0, params.getDefaultKeyCoordX());
- }
-
- // [2] [1]|
- public void testLayout2KeyR0() {
- MiniKeyboardParams params = new MiniKeyboardParams(2, MAX_COLUMNS, WIDTH,
- HEIGHT, XPOS_R0, KEYBOARD_WIDTH);
- assertEquals("2 key R0 columns", 2, params.mNumColumns);
- assertEquals("2 key R0 rows", 1, params.mNumRows);
- assertEquals("2 key R0 left", 1, params.mLeftKeys);
- assertEquals("2 key R0 right", 1, params.mRightKeys);
- assertEquals("2 key R0 [1]", 0, params.getColumnPos(0));
- assertEquals("2 key R0 [2]", -1, params.getColumnPos(1));
- assertEquals("2 key R0 adjust", 0, params.mTopRowAdjustment);
- assertEquals("2 key R0 default", WIDTH * 1, params.getDefaultKeyCoordX());
- }
-
- // [2] [1] ___|
- public void testLayout2KeyR1() {
- MiniKeyboardParams params = new MiniKeyboardParams(2, MAX_COLUMNS, WIDTH,
- HEIGHT, XPOS_R1, KEYBOARD_WIDTH);
- assertEquals("2 key R1 columns", 2, params.mNumColumns);
- assertEquals("2 key R1 rows", 1, params.mNumRows);
- assertEquals("2 key R1 left", 1, params.mLeftKeys);
- assertEquals("2 key R1 right", 1, params.mRightKeys);
- assertEquals("2 key R1 [1]", 0, params.getColumnPos(0));
- assertEquals("2 key R1 [2]", -1, params.getColumnPos(1));
- assertEquals("2 key R1 adjust", 0, params.mTopRowAdjustment);
- assertEquals("2 key R1 default", WIDTH * 1, params.getDefaultKeyCoordX());
- }
-
- // [1] [2] ___ ___|
- public void testLayout2KeyR2() {
- MiniKeyboardParams params = new MiniKeyboardParams(2, MAX_COLUMNS, WIDTH,
- HEIGHT, XPOS_R2, KEYBOARD_WIDTH);
- assertEquals("2 key R2 columns", 2, params.mNumColumns);
- assertEquals("2 key R2 rows", 1, params.mNumRows);
- assertEquals("2 key R2 left", 0, params.mLeftKeys);
- assertEquals("2 key R2 right", 2, params.mRightKeys);
- assertEquals("2 key R2 [1]", 0, params.getColumnPos(0));
- assertEquals("2 key R2 [2]", 1, params.getColumnPos(1));
- assertEquals("2 key R2 adjust", 0, params.mTopRowAdjustment);
- assertEquals("2 key R2 default", WIDTH * 0, params.getDefaultKeyCoordX());
- }
-
- // [3] [1] [2]
- public void testLayout3KeyM0() {
- MiniKeyboardParams params = new MiniKeyboardParams(3, MAX_COLUMNS, WIDTH,
- HEIGHT, XPOS_M0, KEYBOARD_WIDTH);
- assertEquals("3 key columns", 3, params.mNumColumns);
- assertEquals("3 key rows", 1, params.mNumRows);
- assertEquals("3 key left", 1, params.mLeftKeys);
- assertEquals("3 key right", 2, params.mRightKeys);
- assertEquals("3 key [1]", 0, params.getColumnPos(0));
- assertEquals("3 key [2]", 1, params.getColumnPos(1));
- assertEquals("3 key [3]", -1, params.getColumnPos(2));
- assertEquals("3 key adjust", 0, params.mTopRowAdjustment);
- assertEquals("3 key default", WIDTH * 1, params.getDefaultKeyCoordX());
- }
-
- // |[1] [2] [3]
- public void testLayout3KeyL0() {
- MiniKeyboardParams params = new MiniKeyboardParams(3, MAX_COLUMNS, WIDTH,
- HEIGHT, XPOS_L0, KEYBOARD_WIDTH);
- assertEquals("3 key L0 columns", 3, params.mNumColumns);
- assertEquals("3 key L0 rows", 1, params.mNumRows);
- assertEquals("3 key L0 left", 0, params.mLeftKeys);
- assertEquals("3 key L0 right", 3, params.mRightKeys);
- assertEquals("3 key L0 [1]", 0, params.getColumnPos(0));
- assertEquals("3 key L0 [2]", 1, params.getColumnPos(1));
- assertEquals("3 key L0 [3]", 2, params.getColumnPos(2));
- assertEquals("3 key L0 adjust", 0, params.mTopRowAdjustment);
- assertEquals("3 key L0 default", WIDTH * 0, params.getDefaultKeyCoordX());
- }
-
- // |___ [1] [2] [3]
- public void testLayout3KeyL1() {
- MiniKeyboardParams params = new MiniKeyboardParams(3, MAX_COLUMNS, WIDTH,
- HEIGHT, XPOS_L1, KEYBOARD_WIDTH);
- assertEquals("3 key L1 columns", 3, params.mNumColumns);
- assertEquals("3 key L1 rows", 1, params.mNumRows);
- assertEquals("3 key L1 left", 0, params.mLeftKeys);
- assertEquals("3 key L1 right", 3, params.mRightKeys);
- assertEquals("3 key L1 [1]", 0, params.getColumnPos(0));
- assertEquals("3 key L1 [2]", 1, params.getColumnPos(1));
- assertEquals("3 key L1 [3]", 2, params.getColumnPos(2));
- assertEquals("3 key L1 adjust", 0, params.mTopRowAdjustment);
- assertEquals("3 key L1 default", WIDTH * 0, params.getDefaultKeyCoordX());
- }
-
- // |___ ___ [3] [1] [2]
- public void testLayout3KeyL2() {
- MiniKeyboardParams params = new MiniKeyboardParams(3, MAX_COLUMNS, WIDTH,
- HEIGHT, XPOS_L2, KEYBOARD_WIDTH);
- assertEquals("3 key L2 columns", 3, params.mNumColumns);
- assertEquals("3 key L2 rows", 1, params.mNumRows);
- assertEquals("3 key L2 left", 1, params.mLeftKeys);
- assertEquals("3 key L2 right", 2, params.mRightKeys);
- assertEquals("3 key L2 [1]", 0, params.getColumnPos(0));
- assertEquals("3 key L2 [2]", 1, params.getColumnPos(1));
- assertEquals("3 key L2 [3]", -1, params.getColumnPos(2));
- assertEquals("3 key L2 adjust", 0, params.mTopRowAdjustment);
- assertEquals("3 key L2 default", WIDTH * 1, params.getDefaultKeyCoordX());
- }
-
- // [3] [2] [1]|
- public void testLayout3KeyR0() {
- MiniKeyboardParams params = new MiniKeyboardParams(3, MAX_COLUMNS, WIDTH,
- HEIGHT, XPOS_R0, KEYBOARD_WIDTH);
- assertEquals("3 key R0 columns", 3, params.mNumColumns);
- assertEquals("3 key R0 rows", 1, params.mNumRows);
- assertEquals("3 key R0 left", 2, params.mLeftKeys);
- assertEquals("3 key R0 right", 1, params.mRightKeys);
- assertEquals("3 key R0 [1]", 0, params.getColumnPos(0));
- assertEquals("3 key R0 [2]", -1, params.getColumnPos(1));
- assertEquals("3 key R0 [3]", -2, params.getColumnPos(2));
- assertEquals("3 key R0 adjust", 0, params.mTopRowAdjustment);
- assertEquals("3 key R0 default", WIDTH * 2, params.getDefaultKeyCoordX());
- }
-
- // [3] [2] [1] ___|
- public void testLayout3KeyR1() {
- MiniKeyboardParams params = new MiniKeyboardParams(3, MAX_COLUMNS, WIDTH,
- HEIGHT, XPOS_R1, KEYBOARD_WIDTH);
- assertEquals("3 key R1 columns", 3, params.mNumColumns);
- assertEquals("3 key R1 rows", 1, params.mNumRows);
- assertEquals("3 key R1 left", 2, params.mLeftKeys);
- assertEquals("3 key R1 right", 1, params.mRightKeys);
- assertEquals("3 key R1 [1]", 0, params.getColumnPos(0));
- assertEquals("3 key R1 [2]", -1, params.getColumnPos(1));
- assertEquals("3 key R1 [3]", -2, params.getColumnPos(2));
- assertEquals("3 key R1 adjust", 0, params.mTopRowAdjustment);
- assertEquals("3 key R1 default", WIDTH * 2, params.getDefaultKeyCoordX());
- }
-
- // [3] [1] [2] ___ ___|
- public void testLayout3KeyR2() {
- MiniKeyboardParams params = new MiniKeyboardParams(3, MAX_COLUMNS, WIDTH,
- HEIGHT, XPOS_R2, KEYBOARD_WIDTH);
- assertEquals("3 key R2 columns", 3, params.mNumColumns);
- assertEquals("3 key R2 rows", 1, params.mNumRows);
- assertEquals("3 key R2 left", 1, params.mLeftKeys);
- assertEquals("3 key R2 right", 2, params.mRightKeys);
- assertEquals("3 key R2 [1]", 0, params.getColumnPos(0));
- assertEquals("3 key R2 [2]", 1, params.getColumnPos(1));
- assertEquals("3 key R2 [3]", -1, params.getColumnPos(2));
- assertEquals("3 key R2 adjust", 0, params.mTopRowAdjustment);
- assertEquals("3 key R2 default", WIDTH * 1, params.getDefaultKeyCoordX());
- }
-
- // [3] [1] [2] [4]
- public void testLayout4KeyM0() {
- MiniKeyboardParams params = new MiniKeyboardParams(4, MAX_COLUMNS, WIDTH,
- HEIGHT, XPOS_M0, KEYBOARD_WIDTH);
- assertEquals("4 key columns", 4, params.mNumColumns);
- assertEquals("4 key rows", 1, params.mNumRows);
- assertEquals("4 key left", 1, params.mLeftKeys);
- assertEquals("4 key right", 3, params.mRightKeys);
- assertEquals("4 key [1]", 0, params.getColumnPos(0));
- assertEquals("4 key [2]", 1, params.getColumnPos(1));
- assertEquals("4 key [3]", -1, params.getColumnPos(2));
- assertEquals("4 key [4]", 2, params.getColumnPos(3));
- assertEquals("4 key adjust", 0, params.mTopRowAdjustment);
- assertEquals("4 key default", WIDTH * 1, params.getDefaultKeyCoordX());
- }
-
- // |[1] [2] [3] [4]
- public void testLayout4KeyL0() {
- MiniKeyboardParams params = new MiniKeyboardParams(4, MAX_COLUMNS, WIDTH,
- HEIGHT, XPOS_L0, KEYBOARD_WIDTH);
- assertEquals("4 key L0 columns", 4, params.mNumColumns);
- assertEquals("4 key L0 rows", 1, params.mNumRows);
- assertEquals("4 key L0 left", 0, params.mLeftKeys);
- assertEquals("4 key L0 right", 4, params.mRightKeys);
- assertEquals("4 key L0 [1]", 0, params.getColumnPos(0));
- assertEquals("4 key L0 [2]", 1, params.getColumnPos(1));
- assertEquals("4 key L0 [3]", 2, params.getColumnPos(2));
- assertEquals("4 key L0 [4]", 3, params.getColumnPos(3));
- assertEquals("4 key L0 adjust", 0, params.mTopRowAdjustment);
- assertEquals("4 key L0 default", WIDTH * 0, params.getDefaultKeyCoordX());
- }
-
- // |___ [1] [2] [3] [4]
- public void testLayout4KeyL1() {
- MiniKeyboardParams params = new MiniKeyboardParams(4, MAX_COLUMNS, WIDTH,
- HEIGHT, XPOS_L1, KEYBOARD_WIDTH);
- assertEquals("4 key L1 columns", 4, params.mNumColumns);
- assertEquals("4 key L1 rows", 1, params.mNumRows);
- assertEquals("4 key L1 left", 0, params.mLeftKeys);
- assertEquals("4 key L1 right", 4, params.mRightKeys);
- assertEquals("4 key L1 [1]", 0, params.getColumnPos(0));
- assertEquals("4 key L1 [2]", 1, params.getColumnPos(1));
- assertEquals("4 key L1 [3]", 2, params.getColumnPos(2));
- assertEquals("4 key L1 [4]", 3, params.getColumnPos(3));
- assertEquals("4 key L1 adjust", 0, params.mTopRowAdjustment);
- assertEquals("4 key L1 default", WIDTH * 0, params.getDefaultKeyCoordX());
- }
-
- // |___ ___ [3] [1] [2] [4]
- public void testLayout4KeyL2() {
- MiniKeyboardParams params = new MiniKeyboardParams(4, MAX_COLUMNS, WIDTH,
- HEIGHT, XPOS_L2, KEYBOARD_WIDTH);
- assertEquals("4 key L2 columns", 4, params.mNumColumns);
- assertEquals("4 key L2 rows", 1, params.mNumRows);
- assertEquals("4 key L2 left", 1, params.mLeftKeys);
- assertEquals("4 key L2 right", 3, params.mRightKeys);
- assertEquals("4 key L2 [1]", 0, params.getColumnPos(0));
- assertEquals("4 key L2 [2]", 1, params.getColumnPos(1));
- assertEquals("4 key L2 [3]", -1, params.getColumnPos(2));
- assertEquals("4 key L2 [4]", 2, params.getColumnPos(3));
- assertEquals("4 key L2 adjust", 0, params.mTopRowAdjustment);
- assertEquals("4 key L2 default", WIDTH * 1, params.getDefaultKeyCoordX());
- }
-
- // [4] [3] [2] [1]|
- public void testLayout4KeyR0() {
- MiniKeyboardParams params = new MiniKeyboardParams(4, MAX_COLUMNS, WIDTH,
- HEIGHT, XPOS_R0, KEYBOARD_WIDTH);
- assertEquals("4 key R0 columns", 4, params.mNumColumns);
- assertEquals("4 key R0 rows", 1, params.mNumRows);
- assertEquals("4 key R0 left", 3, params.mLeftKeys);
- assertEquals("4 key R0 right", 1, params.mRightKeys);
- assertEquals("4 key R0 [1]", 0, params.getColumnPos(0));
- assertEquals("4 key R0 [2]", -1, params.getColumnPos(1));
- assertEquals("4 key R0 [3]", -2, params.getColumnPos(2));
- assertEquals("4 key R0 [4]", -3, params.getColumnPos(3));
- assertEquals("4 key R0 adjust", 0, params.mTopRowAdjustment);
- assertEquals("4 key R0 default", WIDTH * 3, params.getDefaultKeyCoordX());
- }
-
- // [4] [3] [2] [1] ___|
- public void testLayout4KeyR1() {
- MiniKeyboardParams params = new MiniKeyboardParams(4, MAX_COLUMNS, WIDTH,
- HEIGHT, XPOS_R1, KEYBOARD_WIDTH);
- assertEquals("4 key R1 columns", 4, params.mNumColumns);
- assertEquals("4 key R1 rows", 1, params.mNumRows);
- assertEquals("4 key R1 left", 3, params.mLeftKeys);
- assertEquals("4 key R1 right", 1, params.mRightKeys);
- assertEquals("4 key R1 [1]", 0, params.getColumnPos(0));
- assertEquals("4 key R1 [2]", -1, params.getColumnPos(1));
- assertEquals("4 key R1 [3]", -2, params.getColumnPos(2));
- assertEquals("4 key R1 [4]", -3, params.getColumnPos(3));
- assertEquals("4 key R1 adjust", 0, params.mTopRowAdjustment);
- assertEquals("4 key R1 default", WIDTH * 3, params.getDefaultKeyCoordX());
- }
-
- // [4] [3] [1] [2] ___ ___|
- public void testLayout4KeyR2() {
- MiniKeyboardParams params = new MiniKeyboardParams(4, MAX_COLUMNS, WIDTH,
- HEIGHT, XPOS_R2, KEYBOARD_WIDTH);
- assertEquals("4 key R2 columns", 4, params.mNumColumns);
- assertEquals("4 key R2 rows", 1, params.mNumRows);
- assertEquals("4 key R2 left", 2, params.mLeftKeys);
- assertEquals("4 key R2 right", 2, params.mRightKeys);
- assertEquals("4 key R2 [1]", 0, params.getColumnPos(0));
- assertEquals("4 key R2 [2]", 1, params.getColumnPos(1));
- assertEquals("4 key R2 [3]", -1, params.getColumnPos(2));
- assertEquals("4 key R2 [4]", -2, params.getColumnPos(3));
- assertEquals("4 key R2 adjust", 0, params.mTopRowAdjustment);
- assertEquals("4 key R2 default", WIDTH * 2, params.getDefaultKeyCoordX());
- }
-
- // [5] [3] [1] [2] [4]
- public void testLayout5KeyM0() {
- MiniKeyboardParams params = new MiniKeyboardParams(5, MAX_COLUMNS, WIDTH,
- HEIGHT, XPOS_M0, KEYBOARD_WIDTH);
- assertEquals("5 key columns", 5, params.mNumColumns);
- assertEquals("5 key rows", 1, params.mNumRows);
- assertEquals("5 key left", 2, params.mLeftKeys);
- assertEquals("5 key right", 3, params.mRightKeys);
- assertEquals("5 key [1]", 0, params.getColumnPos(0));
- assertEquals("5 key [2]", 1, params.getColumnPos(1));
- assertEquals("5 key [3]", -1, params.getColumnPos(2));
- assertEquals("5 key [4]", 2, params.getColumnPos(3));
- assertEquals("5 key [5]", -2, params.getColumnPos(4));
- assertEquals("5 key adjust", 0, params.mTopRowAdjustment);
- assertEquals("5 key default", WIDTH * 2, params.getDefaultKeyCoordX());
- }
-
- // |[1] [2] [3] [4] [5]
- public void testLayout5KeyL0() {
- MiniKeyboardParams params = new MiniKeyboardParams(5, MAX_COLUMNS, WIDTH,
- HEIGHT, XPOS_L0, KEYBOARD_WIDTH);
- assertEquals("5 key L0 columns", 5, params.mNumColumns);
- assertEquals("5 key L0 rows", 1, params.mNumRows);
- assertEquals("5 key L0 left", 0, params.mLeftKeys);
- assertEquals("5 key L0 right", 5, params.mRightKeys);
- assertEquals("5 key L0 [1]", 0, params.getColumnPos(0));
- assertEquals("5 key L0 [2]", 1, params.getColumnPos(1));
- assertEquals("5 key L0 [3]", 2, params.getColumnPos(2));
- assertEquals("5 key L0 [4]", 3, params.getColumnPos(3));
- assertEquals("5 key L0 [5]", 4, params.getColumnPos(4));
- assertEquals("5 key L0 adjust", 0, params.mTopRowAdjustment);
- assertEquals("5 key L0 default", WIDTH * 0, params.getDefaultKeyCoordX());
- }
-
- // |___ [1] [2] [3] [4] [5]
- public void testLayout5KeyL1() {
- MiniKeyboardParams params = new MiniKeyboardParams(5, MAX_COLUMNS, WIDTH,
- HEIGHT, XPOS_L1, KEYBOARD_WIDTH);
- assertEquals("5 key L1 columns", 5, params.mNumColumns);
- assertEquals("5 key L1 rows", 1, params.mNumRows);
- assertEquals("5 key L1 left", 0, params.mLeftKeys);
- assertEquals("5 key L1 right", 5, params.mRightKeys);
- assertEquals("5 key L1 [1]", 0, params.getColumnPos(0));
- assertEquals("5 key L1 [2]", 1, params.getColumnPos(1));
- assertEquals("5 key L1 [3]", 2, params.getColumnPos(2));
- assertEquals("5 key L1 [4]", 3, params.getColumnPos(3));
- assertEquals("5 key L1 [5]", 4, params.getColumnPos(4));
- assertEquals("5 key L1 adjust", 0, params.mTopRowAdjustment);
- assertEquals("5 key L1 default", WIDTH * 0, params.getDefaultKeyCoordX());
- }
-
- // |___ ___ [3] [1] [2] [4] [5]
- public void testLayout5KeyL2() {
- MiniKeyboardParams params = new MiniKeyboardParams(5, MAX_COLUMNS, WIDTH,
- HEIGHT, XPOS_L2, KEYBOARD_WIDTH);
- assertEquals("5 key L2 columns", 5, params.mNumColumns);
- assertEquals("5 key L2 rows", 1, params.mNumRows);
- assertEquals("5 key L2 left", 1, params.mLeftKeys);
- assertEquals("5 key L2 right", 4, params.mRightKeys);
- assertEquals("5 key L2 [1]", 0, params.getColumnPos(0));
- assertEquals("5 key L2 [2]", 1, params.getColumnPos(1));
- assertEquals("5 key L2 [3]", -1, params.getColumnPos(2));
- assertEquals("5 key L2 [4]", 2, params.getColumnPos(3));
- assertEquals("5 key L2 [5]", 3, params.getColumnPos(4));
- assertEquals("5 key L2 adjust", 0, params.mTopRowAdjustment);
- assertEquals("5 key L2 default", WIDTH * 1, params.getDefaultKeyCoordX());
- }
-
- // [5] [4] [3] [2] [1]|
- public void testLayout5KeyR0() {
- MiniKeyboardParams params = new MiniKeyboardParams(5, MAX_COLUMNS, WIDTH,
- HEIGHT, XPOS_R0, KEYBOARD_WIDTH);
- assertEquals("5 key R0 columns", 5, params.mNumColumns);
- assertEquals("5 key R0 rows", 1, params.mNumRows);
- assertEquals("5 key R0 left", 4, params.mLeftKeys);
- assertEquals("5 key R0 right", 1, params.mRightKeys);
- assertEquals("5 key R0 [1]", 0, params.getColumnPos(0));
- assertEquals("5 key R0 [2]", -1, params.getColumnPos(1));
- assertEquals("5 key R0 [3]", -2, params.getColumnPos(2));
- assertEquals("5 key R0 [4]", -3, params.getColumnPos(3));
- assertEquals("5 key R0 [5]", -4, params.getColumnPos(4));
- assertEquals("5 key R0 adjust", 0, params.mTopRowAdjustment);
- assertEquals("5 key R0 default", WIDTH * 4, params.getDefaultKeyCoordX());
- }
-
- // [5] [4] [3] [2] [1] ___|
- public void testLayout5KeyR1() {
- MiniKeyboardParams params = new MiniKeyboardParams(5, MAX_COLUMNS, WIDTH,
- HEIGHT, XPOS_R1, KEYBOARD_WIDTH);
- assertEquals("5 key R1 columns", 5, params.mNumColumns);
- assertEquals("5 key R1 rows", 1, params.mNumRows);
- assertEquals("5 key R1 left", 4, params.mLeftKeys);
- assertEquals("5 key R1 right", 1, params.mRightKeys);
- assertEquals("5 key R1 [1]", 0, params.getColumnPos(0));
- assertEquals("5 key R1 [2]", -1, params.getColumnPos(1));
- assertEquals("5 key R1 [3]", -2, params.getColumnPos(2));
- assertEquals("5 key R1 [4]", -3, params.getColumnPos(3));
- assertEquals("5 key R1 [5]", -4, params.getColumnPos(4));
- assertEquals("5 key R1 adjust", 0, params.mTopRowAdjustment);
- assertEquals("5 key R1 default", WIDTH * 4, params.getDefaultKeyCoordX());
- }
-
- // [5] [4] [3] [1] [2] ___ ___|
- public void testLayout5KeyR2() {
- MiniKeyboardParams params = new MiniKeyboardParams(5, MAX_COLUMNS, WIDTH,
- HEIGHT, XPOS_R2, KEYBOARD_WIDTH);
- assertEquals("5 key R2 columns", 5, params.mNumColumns);
- assertEquals("5 key R2 rows", 1, params.mNumRows);
- assertEquals("5 key R2 left", 3, params.mLeftKeys);
- assertEquals("5 key R2 right", 2, params.mRightKeys);
- assertEquals("5 key R2 [1]", 0, params.getColumnPos(0));
- assertEquals("5 key R2 [2]", 1, params.getColumnPos(1));
- assertEquals("5 key R2 [3]", -1, params.getColumnPos(2));
- assertEquals("5 key R2 [4]", -2, params.getColumnPos(3));
- assertEquals("5 key R2 [5]", -3, params.getColumnPos(4));
- assertEquals("5 key R2 adjust", 0, params.mTopRowAdjustment);
- assertEquals("5 key R2 default", WIDTH * 3, params.getDefaultKeyCoordX());
- }
-
- // [6] [4] [5]
- // [3] [1] [2]
- public void testLayout6KeyM0() {
- MiniKeyboardParams params = new MiniKeyboardParams(6, MAX_COLUMNS, WIDTH,
- HEIGHT, XPOS_M0, KEYBOARD_WIDTH);
- assertEquals("6 key columns", 3, params.mNumColumns);
- assertEquals("6 key rows", 2, params.mNumRows);
- assertEquals("6 key left", 1, params.mLeftKeys);
- assertEquals("6 key right", 2, params.mRightKeys);
- assertEquals("6 key [1]", 0, params.getColumnPos(0));
- assertEquals("6 key [2]", 1, params.getColumnPos(1));
- assertEquals("6 key [3]", -1, params.getColumnPos(2));
- assertEquals("6 key [4]", 0, params.getColumnPos(3));
- assertEquals("6 key [5]", 1, params.getColumnPos(4));
- assertEquals("6 key [6]", -1, params.getColumnPos(5));
- assertEquals("6 key adjust", 0, params.mTopRowAdjustment);
- assertEquals("6 key default", WIDTH * 1, params.getDefaultKeyCoordX());
- }
-
- // |[4] [5] [6]
- // |[1] [2] [3]
- public void testLayout6KeyL0() {
- MiniKeyboardParams params = new MiniKeyboardParams(6, MAX_COLUMNS, WIDTH,
- HEIGHT, XPOS_L0, KEYBOARD_WIDTH);
- assertEquals("6 key L0 columns", 3, params.mNumColumns);
- assertEquals("6 key L0 rows", 2, params.mNumRows);
- assertEquals("6 key L0 left", 0, params.mLeftKeys);
- assertEquals("6 key L0 right", 3, params.mRightKeys);
- assertEquals("6 key L0 [1]", 0, params.getColumnPos(0));
- assertEquals("6 key L0 [2]", 1, params.getColumnPos(1));
- assertEquals("6 key L0 [3]", 2, params.getColumnPos(2));
- assertEquals("6 key L0 [4]", 0, params.getColumnPos(3));
- assertEquals("6 key L0 [5]", 1, params.getColumnPos(4));
- assertEquals("6 key L0 [6]", 2, params.getColumnPos(5));
- assertEquals("6 key L0 adjust", 0, params.mTopRowAdjustment);
- assertEquals("6 key L0 default", WIDTH * 0, params.getDefaultKeyCoordX());
- }
-
- // |___ [4] [5] [6]
- // |___ [1] [2] [3]
- public void testLayout6KeyL1() {
- MiniKeyboardParams params = new MiniKeyboardParams(6, MAX_COLUMNS, WIDTH,
- HEIGHT, XPOS_L1, KEYBOARD_WIDTH);
- assertEquals("6 key L1 columns", 3, params.mNumColumns);
- assertEquals("6 key L1 rows", 2, params.mNumRows);
- assertEquals("6 key L1 left", 0, params.mLeftKeys);
- assertEquals("6 key L1 right", 3, params.mRightKeys);
- assertEquals("6 key L1 [1]", 0, params.getColumnPos(0));
- assertEquals("6 key L1 [2]", 1, params.getColumnPos(1));
- assertEquals("6 key L1 [3]", 2, params.getColumnPos(2));
- assertEquals("6 key L1 [4]", 0, params.getColumnPos(3));
- assertEquals("6 key L1 [5]", 1, params.getColumnPos(4));
- assertEquals("6 key L1 [6]", 2, params.getColumnPos(5));
- assertEquals("6 key L1 adjust", 0, params.mTopRowAdjustment);
- assertEquals("6 key L1 default", WIDTH * 0, params.getDefaultKeyCoordX());
- }
-
- // |___ ___ [6] [4] [5]
- // |___ ___ [3] [1] [2]
- public void testLayout6KeyL2() {
- MiniKeyboardParams params = new MiniKeyboardParams(6, MAX_COLUMNS, WIDTH,
- HEIGHT, XPOS_L2, KEYBOARD_WIDTH);
- assertEquals("6 key L2 columns", 3, params.mNumColumns);
- assertEquals("6 key L2 rows", 2, params.mNumRows);
- assertEquals("6 key L2 left", 1, params.mLeftKeys);
- assertEquals("6 key L2 right", 2, params.mRightKeys);
- assertEquals("6 key L2 [1]", 0, params.getColumnPos(0));
- assertEquals("6 key L2 [2]", 1, params.getColumnPos(1));
- assertEquals("6 key L2 [3]", -1, params.getColumnPos(2));
- assertEquals("6 key L2 [4]", 0, params.getColumnPos(3));
- assertEquals("6 key L2 [5]", 1, params.getColumnPos(4));
- assertEquals("6 key L2 [6]", -1, params.getColumnPos(5));
- assertEquals("6 key L2 adjust", 0, params.mTopRowAdjustment);
- assertEquals("6 key L2 default", WIDTH * 1, params.getDefaultKeyCoordX());
- }
-
- // [6] [5] [4]|
- // [3] [2] [1]|
- public void testLayout6KeyR0() {
- MiniKeyboardParams params = new MiniKeyboardParams(6, MAX_COLUMNS, WIDTH,
- HEIGHT, XPOS_R0, KEYBOARD_WIDTH);
- assertEquals("6 key R0 columns", 3, params.mNumColumns);
- assertEquals("6 key R0 rows", 2, params.mNumRows);
- assertEquals("6 key R0 left", 2, params.mLeftKeys);
- assertEquals("6 key R0 right", 1, params.mRightKeys);
- assertEquals("6 key R0 [1]", 0, params.getColumnPos(0));
- assertEquals("6 key R0 [2]", -1, params.getColumnPos(1));
- assertEquals("6 key R0 [3]", -2, params.getColumnPos(2));
- assertEquals("6 key R0 [4]", 0, params.getColumnPos(3));
- assertEquals("6 key R0 [5]", -1, params.getColumnPos(4));
- assertEquals("6 key R0 [6]", -2, params.getColumnPos(5));
- assertEquals("6 key R0 adjust", 0, params.mTopRowAdjustment);
- assertEquals("6 key R0 default", WIDTH * 2, params.getDefaultKeyCoordX());
- }
-
- // [6] [5] [4] ___|
- // [3] [2] [1] ___|
- public void testLayout6KeyR1() {
- MiniKeyboardParams params = new MiniKeyboardParams(6, MAX_COLUMNS, WIDTH,
- HEIGHT, XPOS_R1, KEYBOARD_WIDTH);
- assertEquals("6 key R1 columns", 3, params.mNumColumns);
- assertEquals("6 key R1 rows", 2, params.mNumRows);
- assertEquals("6 key R1 left", 2, params.mLeftKeys);
- assertEquals("6 key R1 right", 1, params.mRightKeys);
- assertEquals("6 key R1 [1]", 0, params.getColumnPos(0));
- assertEquals("6 key R1 [2]", -1, params.getColumnPos(1));
- assertEquals("6 key R1 [3]", -2, params.getColumnPos(2));
- assertEquals("6 key R1 [4]", 0, params.getColumnPos(3));
- assertEquals("6 key R1 [5]", -1, params.getColumnPos(4));
- assertEquals("6 key R1 [6]", -2, params.getColumnPos(5));
- assertEquals("6 key R1 adjust", 0, params.mTopRowAdjustment);
- assertEquals("6 key R1 default", WIDTH * 2, params.getDefaultKeyCoordX());
- }
-
- // [6] [4] [5] ___ ___|
- // [3] [1] [2] ___ ___|
- public void testLayout6KeyR2() {
- MiniKeyboardParams params = new MiniKeyboardParams(6, MAX_COLUMNS, WIDTH,
- HEIGHT, XPOS_R2, KEYBOARD_WIDTH);
- assertEquals("6 key R2 columns", 3, params.mNumColumns);
- assertEquals("6 key R2 rows", 2, params.mNumRows);
- assertEquals("6 key R2 left", 1, params.mLeftKeys);
- assertEquals("6 key R2 right", 2, params.mRightKeys);
- assertEquals("6 key R2 [1]", 0, params.getColumnPos(0));
- assertEquals("6 key R2 [2]", 1, params.getColumnPos(1));
- assertEquals("6 key R2 [3]", -1, params.getColumnPos(2));
- assertEquals("6 key R2 [4]", 0, params.getColumnPos(3));
- assertEquals("6 key R2 [5]", 1, params.getColumnPos(4));
- assertEquals("6 key R2 [6]", -1, params.getColumnPos(5));
- assertEquals("6 key R2 adjust", 0, params.mTopRowAdjustment);
- assertEquals("6 key R2 default", WIDTH * 1, params.getDefaultKeyCoordX());
- }
-
- // [7] [5] [6]
- // [3] [1] [2] [4]
- public void testLayout7KeyM0() {
- MiniKeyboardParams params = new MiniKeyboardParams(7, MAX_COLUMNS, WIDTH,
- HEIGHT, XPOS_M0, KEYBOARD_WIDTH);
- assertEquals("7 key columns", 4, params.mNumColumns);
- assertEquals("7 key rows", 2, params.mNumRows);
- assertEquals("7 key left", 1, params.mLeftKeys);
- assertEquals("7 key right", 3, params.mRightKeys);
- assertEquals("7 key [1]", 0, params.getColumnPos(0));
- assertEquals("7 key [2]", 1, params.getColumnPos(1));
- assertEquals("7 key [3]", -1, params.getColumnPos(2));
- assertEquals("7 key [4]", 2, params.getColumnPos(3));
- assertEquals("7 key [5]", 0, params.getColumnPos(4));
- assertEquals("7 key [6]", 1, params.getColumnPos(5));
- assertEquals("7 key [7]", -1, params.getColumnPos(6));
- assertEquals("7 key adjust", 1, params.mTopRowAdjustment);
- assertEquals("7 key default", WIDTH * 1, params.getDefaultKeyCoordX());
- }
-
- // |[5] [6] [7]
- // |[1] [2] [3] [4]
- public void testLayout7KeyL0() {
- MiniKeyboardParams params = new MiniKeyboardParams(7, MAX_COLUMNS, WIDTH,
- HEIGHT, XPOS_L0, KEYBOARD_WIDTH);
- assertEquals("7 key L0 columns", 4, params.mNumColumns);
- assertEquals("7 key L0 rows", 2, params.mNumRows);
- assertEquals("7 key L0 left", 0, params.mLeftKeys);
- assertEquals("7 key L0 right", 4, params.mRightKeys);
- assertEquals("7 key L0 [1]", 0, params.getColumnPos(0));
- assertEquals("7 key L0 [2]", 1, params.getColumnPos(1));
- assertEquals("7 key L0 [3]", 2, params.getColumnPos(2));
- assertEquals("7 key L0 [4]", 3, params.getColumnPos(3));
- assertEquals("7 key L0 [5]", 0, params.getColumnPos(4));
- assertEquals("7 key L0 [6]", 1, params.getColumnPos(5));
- assertEquals("7 key L0 [7]", 2, params.getColumnPos(6));
- assertEquals("7 key L0 adjust", 0, params.mTopRowAdjustment);
- assertEquals("7 key L0 default", WIDTH * 0, params.getDefaultKeyCoordX());
- }
-
- // |___ [5] [6] [7]
- // |___ [1] [2] [3] [4]
- public void testLayout7KeyL1() {
- MiniKeyboardParams params = new MiniKeyboardParams(7, MAX_COLUMNS, WIDTH,
- HEIGHT, XPOS_L1, KEYBOARD_WIDTH);
- assertEquals("7 key L1 columns", 4, params.mNumColumns);
- assertEquals("7 key L1 rows", 2, params.mNumRows);
- assertEquals("7 key L1 left", 0, params.mLeftKeys);
- assertEquals("7 key L1 right", 4, params.mRightKeys);
- assertEquals("7 key L1 [1]", 0, params.getColumnPos(0));
- assertEquals("7 key L1 [2]", 1, params.getColumnPos(1));
- assertEquals("7 key L1 [3]", 2, params.getColumnPos(2));
- assertEquals("7 key L1 [4]", 3, params.getColumnPos(3));
- assertEquals("7 key L1 [5]", 0, params.getColumnPos(4));
- assertEquals("7 key L1 [6]", 1, params.getColumnPos(5));
- assertEquals("7 key L1 [7]", 2, params.getColumnPos(6));
- assertEquals("7 key L1 adjust", 0, params.mTopRowAdjustment);
- assertEquals("7 key L1 default", WIDTH * 0, params.getDefaultKeyCoordX());
- }
-
- // |___ ___ [7] [5] [6]
- // |___ ___ [3] [1] [2] [4]
- public void testLayout7KeyL2() {
- MiniKeyboardParams params = new MiniKeyboardParams(7, MAX_COLUMNS, WIDTH,
- HEIGHT, XPOS_L2, KEYBOARD_WIDTH);
- assertEquals("7 key L2 columns", 4, params.mNumColumns);
- assertEquals("7 key L2 rows", 2, params.mNumRows);
- assertEquals("7 key L2 left", 1, params.mLeftKeys);
- assertEquals("7 key L2 right", 3, params.mRightKeys);
- assertEquals("7 key L2 [1]", 0, params.getColumnPos(0));
- assertEquals("7 key L2 [2]", 1, params.getColumnPos(1));
- assertEquals("7 key L2 [3]", -1, params.getColumnPos(2));
- assertEquals("7 key L2 [4]", 2, params.getColumnPos(3));
- assertEquals("7 key L2 [5]", 0, params.getColumnPos(4));
- assertEquals("7 key L2 [6]", 1, params.getColumnPos(5));
- assertEquals("7 key L2 [7]", -1, params.getColumnPos(6));
- assertEquals("7 key L2 adjust", 1, params.mTopRowAdjustment);
- assertEquals("7 key L2 default", WIDTH * 1, params.getDefaultKeyCoordX());
- }
-
- // [7] [6] [5]|
- // [4] [3] [2] [1]|
- public void testLayout7KeyR0() {
- MiniKeyboardParams params = new MiniKeyboardParams(7, MAX_COLUMNS, WIDTH,
- HEIGHT, XPOS_R0, KEYBOARD_WIDTH);
- assertEquals("7 key R0 columns", 4, params.mNumColumns);
- assertEquals("7 key R0 rows", 2, params.mNumRows);
- assertEquals("7 key R0 left", 3, params.mLeftKeys);
- assertEquals("7 key R0 right", 1, params.mRightKeys);
- assertEquals("7 key R0 [1]", 0, params.getColumnPos(0));
- assertEquals("7 key R0 [2]", -1, params.getColumnPos(1));
- assertEquals("7 key R0 [3]", -2, params.getColumnPos(2));
- assertEquals("7 key R0 [4]", -3, params.getColumnPos(3));
- assertEquals("7 key R0 [5]", 0, params.getColumnPos(4));
- assertEquals("7 key R0 [6]", -1, params.getColumnPos(5));
- assertEquals("7 key R0 [7]", -2, params.getColumnPos(6));
- assertEquals("7 key R0 adjust", 0, params.mTopRowAdjustment);
- assertEquals("7 key R0 default", WIDTH * 3, params.getDefaultKeyCoordX());
- }
-
- // [7] [6] [5] ___|
- // [4] [3] [2] [1] ___|
- public void testLayout7KeyR1() {
- MiniKeyboardParams params = new MiniKeyboardParams(7, MAX_COLUMNS, WIDTH,
- HEIGHT, XPOS_R1, KEYBOARD_WIDTH);
- assertEquals("7 key R1 columns", 4, params.mNumColumns);
- assertEquals("7 key R1 rows", 2, params.mNumRows);
- assertEquals("7 key R1 left", 3, params.mLeftKeys);
- assertEquals("7 key R1 right", 1, params.mRightKeys);
- assertEquals("7 key R1 [1]", 0, params.getColumnPos(0));
- assertEquals("7 key R1 [2]", -1, params.getColumnPos(1));
- assertEquals("7 key R1 [3]", -2, params.getColumnPos(2));
- assertEquals("7 key R1 [4]", -3, params.getColumnPos(3));
- assertEquals("7 key R1 [5]", 0, params.getColumnPos(4));
- assertEquals("7 key R1 [6]", -1, params.getColumnPos(5));
- assertEquals("7 key R1 [7]", -2, params.getColumnPos(6));
- assertEquals("7 key R1 adjust", 0, params.mTopRowAdjustment);
- assertEquals("7 key R1 default", WIDTH * 3, params.getDefaultKeyCoordX());
- }
-
- // [7] [5] [6] ___ ___|
- // [4] [3] [1] [2] ___ ___|
- public void testLayout7KeyR2() {
- MiniKeyboardParams params = new MiniKeyboardParams(7, MAX_COLUMNS, WIDTH,
- HEIGHT, XPOS_R2, KEYBOARD_WIDTH);
- assertEquals("7 key R2 columns", 4, params.mNumColumns);
- assertEquals("7 key R2 rows", 2, params.mNumRows);
- assertEquals("7 key R2 left", 2, params.mLeftKeys);
- assertEquals("7 key R2 right", 2, params.mRightKeys);
- assertEquals("7 key R2 [1]", 0, params.getColumnPos(0));
- assertEquals("7 key R2 [2]", 1, params.getColumnPos(1));
- assertEquals("7 key R2 [3]", -1, params.getColumnPos(2));
- assertEquals("7 key R2 [4]", -2, params.getColumnPos(3));
- assertEquals("7 key R2 [5]", 0, params.getColumnPos(4));
- assertEquals("7 key R2 [6]", 1, params.getColumnPos(5));
- assertEquals("7 key R2 [7]", -1, params.getColumnPos(6));
- assertEquals("7 key R2 adjust", -1, params.mTopRowAdjustment);
- assertEquals("7 key R2 default", WIDTH * 2, params.getDefaultKeyCoordX());
- }
-
- // [7] [6] [5] [3] [1] [2] [4] ___|
- public void testLayout7KeyR3Max7() {
- MiniKeyboardParams params = new MiniKeyboardParams(7, 7, WIDTH,
- HEIGHT, XPOS_R3, KEYBOARD_WIDTH);
- assertEquals("7 key R2 columns", 7, params.mNumColumns);
- assertEquals("7 key R2 rows", 1, params.mNumRows);
- assertEquals("7 key R2 left", 4, params.mLeftKeys);
- assertEquals("7 key R2 right", 3, params.mRightKeys);
- assertEquals("7 key R2 [1]", 0, params.getColumnPos(0));
- assertEquals("7 key R2 [2]", 1, params.getColumnPos(1));
- assertEquals("7 key R2 [3]", -1, params.getColumnPos(2));
- assertEquals("7 key R2 [4]", 2, params.getColumnPos(3));
- assertEquals("7 key R2 [5]", -2, params.getColumnPos(4));
- assertEquals("7 key R2 [6]", -3, params.getColumnPos(5));
- assertEquals("7 key R2 [7]", -4, params.getColumnPos(6));
- assertEquals("7 key R2 adjust", 0, params.mTopRowAdjustment);
- assertEquals("7 key R2 default", WIDTH * 4, params.getDefaultKeyCoordX());
- }
-
- // [7] [5] [6] [8]
- // [3] [1] [2] [4]
- public void testLayout8KeyM0() {
- MiniKeyboardParams params = new MiniKeyboardParams(8, MAX_COLUMNS, WIDTH,
- HEIGHT, XPOS_M0, KEYBOARD_WIDTH);
- assertEquals("8 key M0 columns", 4, params.mNumColumns);
- assertEquals("8 key M0 rows", 2, params.mNumRows);
- assertEquals("8 key M0 left", 1, params.mLeftKeys);
- assertEquals("8 key M0 right", 3, params.mRightKeys);
- assertEquals("8 key M0 [1]", 0, params.getColumnPos(0));
- assertEquals("8 key M0 [2]", 1, params.getColumnPos(1));
- assertEquals("8 key M0 [3]", -1, params.getColumnPos(2));
- assertEquals("8 key M0 [4]", 2, params.getColumnPos(3));
- assertEquals("8 key M0 [5]", 0, params.getColumnPos(4));
- assertEquals("8 key M0 [6]", 1, params.getColumnPos(5));
- assertEquals("8 key M0 [7]", -1, params.getColumnPos(6));
- assertEquals("8 key M0 [8]", 2, params.getColumnPos(7));
- assertEquals("8 key M0 adjust", 0, params.mTopRowAdjustment);
- assertEquals("8 key M0 default", WIDTH * 1, params.getDefaultKeyCoordX());
- }
-
- // |[5] [6] [7] [8]
- // |[1] [2] [3] [4]
- public void testLayout8KeyL0() {
- MiniKeyboardParams params = new MiniKeyboardParams(8, MAX_COLUMNS, WIDTH,
- HEIGHT, XPOS_L0, KEYBOARD_WIDTH);
- assertEquals("8 key L0 columns", 4, params.mNumColumns);
- assertEquals("8 key L0 rows", 2, params.mNumRows);
- assertEquals("8 key L0 left", 0, params.mLeftKeys);
- assertEquals("8 key L0 right", 4, params.mRightKeys);
- assertEquals("8 key L0 [1]", 0, params.getColumnPos(0));
- assertEquals("8 key L0 [2]", 1, params.getColumnPos(1));
- assertEquals("8 key L0 [3]", 2, params.getColumnPos(2));
- assertEquals("8 key L0 [4]", 3, params.getColumnPos(3));
- assertEquals("8 key L0 [5]", 0, params.getColumnPos(4));
- assertEquals("8 key L0 [6]", 1, params.getColumnPos(5));
- assertEquals("8 key L0 [7]", 2, params.getColumnPos(6));
- assertEquals("8 key L0 [8]", 3, params.getColumnPos(7));
- assertEquals("8 key L0 adjust", 0, params.mTopRowAdjustment);
- assertEquals("8 key L0 default", WIDTH * 0, params.getDefaultKeyCoordX());
- }
-
- // |___ [5] [6] [7] [8]
- // |___ [1] [2] [3] [4]
- public void testLayout8KeyL1() {
- MiniKeyboardParams params = new MiniKeyboardParams(8, MAX_COLUMNS, WIDTH,
- HEIGHT, XPOS_L1, KEYBOARD_WIDTH);
- assertEquals("8 key L1 columns", 4, params.mNumColumns);
- assertEquals("8 key L1 rows", 2, params.mNumRows);
- assertEquals("8 key L1 left", 0, params.mLeftKeys);
- assertEquals("8 key L1 right", 4, params.mRightKeys);
- assertEquals("8 key L1 [1]", 0, params.getColumnPos(0));
- assertEquals("8 key L1 [2]", 1, params.getColumnPos(1));
- assertEquals("8 key L1 [3]", 2, params.getColumnPos(2));
- assertEquals("8 key L1 [4]", 3, params.getColumnPos(3));
- assertEquals("8 key L1 [5]", 0, params.getColumnPos(4));
- assertEquals("8 key L1 [6]", 1, params.getColumnPos(5));
- assertEquals("8 key L1 [7]", 2, params.getColumnPos(6));
- assertEquals("8 key L1 [8]", 3, params.getColumnPos(7));
- assertEquals("8 key L1 adjust", 0, params.mTopRowAdjustment);
- assertEquals("8 key L1 default", WIDTH * 0, params.getDefaultKeyCoordX());
- }
-
- // |___ ___ [7] [5] [6] [8]
- // |___ ___ [3] [1] [2] [4]
- public void testLayout8KeyL2() {
- MiniKeyboardParams params = new MiniKeyboardParams(8, MAX_COLUMNS, WIDTH,
- HEIGHT, XPOS_L2, KEYBOARD_WIDTH);
- assertEquals("8 key L2 columns", 4, params.mNumColumns);
- assertEquals("8 key L2 rows", 2, params.mNumRows);
- assertEquals("8 key L2 left", 1, params.mLeftKeys);
- assertEquals("8 key L2 right", 3, params.mRightKeys);
- assertEquals("8 key L2 [1]", 0, params.getColumnPos(0));
- assertEquals("8 key L2 [2]", 1, params.getColumnPos(1));
- assertEquals("8 key L2 [3]", -1, params.getColumnPos(2));
- assertEquals("8 key L2 [4]", 2, params.getColumnPos(3));
- assertEquals("8 key L2 [5]", 0, params.getColumnPos(4));
- assertEquals("8 key L2 [6]", 1, params.getColumnPos(5));
- assertEquals("8 key L2 [7]", -1, params.getColumnPos(6));
- assertEquals("8 key L2 [8]", 2, params.getColumnPos(7));
- assertEquals("8 key L2 adjust", 0, params.mTopRowAdjustment);
- assertEquals("8 key L2 default", WIDTH * 1, params.getDefaultKeyCoordX());
- }
-
- // [8] [7] [6] [5]|
- // [4] [3] [2] [1]|
- public void testLayout8KeyR0() {
- MiniKeyboardParams params = new MiniKeyboardParams(8, MAX_COLUMNS, WIDTH,
- HEIGHT, XPOS_R0, KEYBOARD_WIDTH);
- assertEquals("8 key R0 columns", 4, params.mNumColumns);
- assertEquals("8 key R0 rows", 2, params.mNumRows);
- assertEquals("8 key R0 left", 3, params.mLeftKeys);
- assertEquals("8 key R0 right", 1, params.mRightKeys);
- assertEquals("8 key R0 [1]", 0, params.getColumnPos(0));
- assertEquals("8 key R0 [2]", -1, params.getColumnPos(1));
- assertEquals("8 key R0 [3]", -2, params.getColumnPos(2));
- assertEquals("8 key R0 [4]", -3, params.getColumnPos(3));
- assertEquals("8 key R0 [5]", 0, params.getColumnPos(4));
- assertEquals("8 key R0 [6]", -1, params.getColumnPos(5));
- assertEquals("8 key R0 [7]", -2, params.getColumnPos(6));
- assertEquals("8 key R0 [8]", -3, params.getColumnPos(7));
- assertEquals("8 key R0 adjust", 0, params.mTopRowAdjustment);
- assertEquals("8 key R0 default", WIDTH * 3, params.getDefaultKeyCoordX());
- }
-
- // [8] [7] [6] [5] ___|
- // [4] [3] [2] [1] ___|
- public void testLayout8KeyR1() {
- MiniKeyboardParams params = new MiniKeyboardParams(8, MAX_COLUMNS, WIDTH,
- HEIGHT, XPOS_R1, KEYBOARD_WIDTH);
- assertEquals("8 key R1 columns", 4, params.mNumColumns);
- assertEquals("8 key R1 rows", 2, params.mNumRows);
- assertEquals("8 key R1 left", 3, params.mLeftKeys);
- assertEquals("8 key R1 right", 1, params.mRightKeys);
- assertEquals("8 key R1 [1]", 0, params.getColumnPos(0));
- assertEquals("8 key R1 [2]", -1, params.getColumnPos(1));
- assertEquals("8 key R1 [3]", -2, params.getColumnPos(2));
- assertEquals("8 key R1 [4]", -3, params.getColumnPos(3));
- assertEquals("8 key R1 [5]", 0, params.getColumnPos(4));
- assertEquals("8 key R1 [6]", -1, params.getColumnPos(5));
- assertEquals("8 key R1 [7]", -2, params.getColumnPos(6));
- assertEquals("8 key R1 [8]", -3, params.getColumnPos(7));
- assertEquals("8 key R1 adjust", 0, params.mTopRowAdjustment);
- assertEquals("8 key R1 default", WIDTH * 3, params.getDefaultKeyCoordX());
- }
-
- // [8] [7] [5] [6] ___ ___|
- // [4] [3] [1] [2] ___ ___|
- public void testLayout8KeyR2() {
- MiniKeyboardParams params = new MiniKeyboardParams(8, MAX_COLUMNS, WIDTH,
- HEIGHT, XPOS_R2, KEYBOARD_WIDTH);
- assertEquals("8 key R2 columns", 4, params.mNumColumns);
- assertEquals("8 key R2 rows", 2, params.mNumRows);
- assertEquals("8 key R2 left", 2, params.mLeftKeys);
- assertEquals("8 key R2 right", 2, params.mRightKeys);
- assertEquals("8 key R2 [1]", 0, params.getColumnPos(0));
- assertEquals("8 key R2 [2]", 1, params.getColumnPos(1));
- assertEquals("8 key R2 [3]", -1, params.getColumnPos(2));
- assertEquals("8 key R2 [4]", -2, params.getColumnPos(3));
- assertEquals("8 key R2 [5]", 0, params.getColumnPos(4));
- assertEquals("8 key R2 [6]", 1, params.getColumnPos(5));
- assertEquals("8 key R2 [7]", -1, params.getColumnPos(6));
- assertEquals("8 key R2 [8]", -2, params.getColumnPos(7));
- assertEquals("8 key R2 adjust", 0, params.mTopRowAdjustment);
- assertEquals("8 key R2 default", WIDTH * 2, params.getDefaultKeyCoordX());
- }
-
- // [8] [6] [7] [9]
- // [5] [3] [1] [2] [4]
- public void testLayout9KeyM0() {
- MiniKeyboardParams params = new MiniKeyboardParams(9, MAX_COLUMNS, WIDTH,
- HEIGHT, XPOS_M0, KEYBOARD_WIDTH);
- assertEquals("9 key M0 columns", 5, params.mNumColumns);
- assertEquals("9 key M0 rows", 2, params.mNumRows);
- assertEquals("9 key M0 left", 2, params.mLeftKeys);
- assertEquals("9 key M0 right", 3, params.mRightKeys);
- assertEquals("9 key M0 [1]", 0, params.getColumnPos(0));
- assertEquals("9 key M0 [2]", 1, params.getColumnPos(1));
- assertEquals("9 key M0 [3]", -1, params.getColumnPos(2));
- assertEquals("9 key M0 [4]", 2, params.getColumnPos(3));
- assertEquals("9 key M0 [5]", -2, params.getColumnPos(4));
- assertEquals("9 key M0 [6]", 0, params.getColumnPos(5));
- assertEquals("9 key M0 [7]", 1, params.getColumnPos(6));
- assertEquals("9 key M0 [8]", -1, params.getColumnPos(7));
- assertEquals("9 key M0 [9]", 2, params.getColumnPos(8));
- assertEquals("9 key M0 adjust", -1, params.mTopRowAdjustment);
- assertEquals("9 key M0 default", WIDTH * 2, params.getDefaultKeyCoordX());
- }
-
- // |[6] [7] [8] [9]
- // |[1] [2] [3] [4] [5]
- public void testLayout9KeyL0() {
- MiniKeyboardParams params = new MiniKeyboardParams(9, MAX_COLUMNS, WIDTH,
- HEIGHT, XPOS_L0, KEYBOARD_WIDTH);
- assertEquals("9 key L0 columns", 5, params.mNumColumns);
- assertEquals("9 key L0 rows", 2, params.mNumRows);
- assertEquals("9 key L0 left", 0, params.mLeftKeys);
- assertEquals("9 key L0 right", 5, params.mRightKeys);
- assertEquals("9 key L0 [1]", 0, params.getColumnPos(0));
- assertEquals("9 key L0 [2]", 1, params.getColumnPos(1));
- assertEquals("9 key L0 [3]", 2, params.getColumnPos(2));
- assertEquals("9 key L0 [4]", 3, params.getColumnPos(3));
- assertEquals("9 key L0 [5]", 4, params.getColumnPos(4));
- assertEquals("9 key L0 [6]", 0, params.getColumnPos(5));
- assertEquals("9 key L0 [7]", 1, params.getColumnPos(6));
- assertEquals("9 key L0 [8]", 2, params.getColumnPos(7));
- assertEquals("9 key L0 [9]", 3, params.getColumnPos(8));
- assertEquals("9 key L0 adjust", 0, params.mTopRowAdjustment);
- assertEquals("9 key L0 default", WIDTH * 0, params.getDefaultKeyCoordX());
- }
-
- // |___ [6] [7] [8] [9]
- // |___ [1] [2] [3] [4] [5]
- public void testLayout9KeyL1() {
- MiniKeyboardParams params = new MiniKeyboardParams(9, MAX_COLUMNS, WIDTH,
- HEIGHT, XPOS_L1, KEYBOARD_WIDTH);
- assertEquals("9 key L1 columns", 5, params.mNumColumns);
- assertEquals("9 key L1 rows", 2, params.mNumRows);
- assertEquals("9 key L1 left", 0, params.mLeftKeys);
- assertEquals("9 key L1 right", 5, params.mRightKeys);
- assertEquals("9 key L1 [1]", 0, params.getColumnPos(0));
- assertEquals("9 key L1 [2]", 1, params.getColumnPos(1));
- assertEquals("9 key L1 [3]", 2, params.getColumnPos(2));
- assertEquals("9 key L1 [4]", 3, params.getColumnPos(3));
- assertEquals("9 key L1 [5]", 4, params.getColumnPos(4));
- assertEquals("9 key L1 [6]", 0, params.getColumnPos(5));
- assertEquals("9 key L1 [7]", 1, params.getColumnPos(6));
- assertEquals("9 key L1 [8]", 2, params.getColumnPos(7));
- assertEquals("9 key L1 [9]", 3, params.getColumnPos(8));
- assertEquals("9 key L1 adjust", 0, params.mTopRowAdjustment);
- assertEquals("9 key L1 default", WIDTH * 0, params.getDefaultKeyCoordX());
- }
-
- // |___ ___ [8] [6] [7] [9]
- // |___ ___ [3] [1] [2] [4] [5]
- public void testLayout9KeyL2() {
- MiniKeyboardParams params = new MiniKeyboardParams(9, MAX_COLUMNS, WIDTH,
- HEIGHT, XPOS_L2, KEYBOARD_WIDTH);
- assertEquals("9 key L2 columns", 5, params.mNumColumns);
- assertEquals("9 key L2 rows", 2, params.mNumRows);
- assertEquals("9 key L2 left", 1, params.mLeftKeys);
- assertEquals("9 key L2 right", 4, params.mRightKeys);
- assertEquals("9 key L2 [1]", 0, params.getColumnPos(0));
- assertEquals("9 key L2 [2]", 1, params.getColumnPos(1));
- assertEquals("9 key L2 [3]", -1, params.getColumnPos(2));
- assertEquals("9 key L2 [4]", 2, params.getColumnPos(3));
- assertEquals("9 key L2 [5]", 3, params.getColumnPos(4));
- assertEquals("9 key L2 [6]", 0, params.getColumnPos(5));
- assertEquals("9 key L2 [7]", 1, params.getColumnPos(6));
- assertEquals("9 key L2 [8]", -1, params.getColumnPos(7));
- assertEquals("9 key L2 [9]", 2, params.getColumnPos(8));
- assertEquals("9 key L2 adjust", 1, params.mTopRowAdjustment);
- assertEquals("9 key L2 default", WIDTH * 1, params.getDefaultKeyCoordX());
- }
-
- // [9] [8] [7] [6]|
- // [5] [4] [3] [2] [1]|
- public void testLayout9KeyR0() {
- MiniKeyboardParams params = new MiniKeyboardParams(9, MAX_COLUMNS, WIDTH,
- HEIGHT, XPOS_R0, KEYBOARD_WIDTH);
- assertEquals("9 key R0 columns", 5, params.mNumColumns);
- assertEquals("9 key R0 rows", 2, params.mNumRows);
- assertEquals("9 key R0 left", 4, params.mLeftKeys);
- assertEquals("9 key R0 right", 1, params.mRightKeys);
- assertEquals("9 key R0 [1]", 0, params.getColumnPos(0));
- assertEquals("9 key R0 [2]", -1, params.getColumnPos(1));
- assertEquals("9 key R0 [3]", -2, params.getColumnPos(2));
- assertEquals("9 key R0 [4]", -3, params.getColumnPos(3));
- assertEquals("9 key R0 [5]", -4, params.getColumnPos(4));
- assertEquals("9 key R0 [6]", 0, params.getColumnPos(5));
- assertEquals("9 key R0 [7]", -1, params.getColumnPos(6));
- assertEquals("9 key R0 [8]", -2, params.getColumnPos(7));
- assertEquals("9 key R0 [9]", -3, params.getColumnPos(8));
- assertEquals("9 key R0 adjust", 0, params.mTopRowAdjustment);
- assertEquals("9 key R0 default", WIDTH * 4, params.getDefaultKeyCoordX());
- }
-
- // [9] [8] [7] [6] ___|
- // [5] [4] [3] [2] [1] ___|
- public void testLayout9KeyR1() {
- MiniKeyboardParams params = new MiniKeyboardParams(9, MAX_COLUMNS, WIDTH,
- HEIGHT, XPOS_R1, KEYBOARD_WIDTH);
- assertEquals("9 key R1 columns", 5, params.mNumColumns);
- assertEquals("9 key R1 rows", 2, params.mNumRows);
- assertEquals("9 key R1 left", 4, params.mLeftKeys);
- assertEquals("9 key R1 right", 1, params.mRightKeys);
- assertEquals("9 key R1 [1]", 0, params.getColumnPos(0));
- assertEquals("9 key R1 [2]", -1, params.getColumnPos(1));
- assertEquals("9 key R1 [3]", -2, params.getColumnPos(2));
- assertEquals("9 key R1 [4]", -3, params.getColumnPos(3));
- assertEquals("9 key R1 [5]", -4, params.getColumnPos(4));
- assertEquals("9 key R1 [6]", 0, params.getColumnPos(5));
- assertEquals("9 key R1 [7]", -1, params.getColumnPos(6));
- assertEquals("9 key R1 [8]", -2, params.getColumnPos(7));
- assertEquals("9 key R1 [9]", -3, params.getColumnPos(8));
- assertEquals("9 key R1 adjust", 0, params.mTopRowAdjustment);
- assertEquals("9 key R1 default", WIDTH * 4, params.getDefaultKeyCoordX());
- }
-
- // [9] [8] [6] [7] ___ ___|
- // [5] [4] [3] [1] [2] ___ ___|
- public void testLayout9KeyR2() {
- MiniKeyboardParams params = new MiniKeyboardParams(9, MAX_COLUMNS, WIDTH,
- HEIGHT, XPOS_R2, KEYBOARD_WIDTH);
- assertEquals("9 key R2 columns", 5, params.mNumColumns);
- assertEquals("9 key R2 rows", 2, params.mNumRows);
- assertEquals("9 key R2 left", 3, params.mLeftKeys);
- assertEquals("9 key R2 right", 2, params.mRightKeys);
- assertEquals("9 key R2 [1]", 0, params.getColumnPos(0));
- assertEquals("9 key R2 [2]", 1, params.getColumnPos(1));
- assertEquals("9 key R2 [3]", -1, params.getColumnPos(2));
- assertEquals("9 key R2 [4]", -2, params.getColumnPos(3));
- assertEquals("9 key R2 [5]", -3, params.getColumnPos(4));
- assertEquals("9 key R2 [6]", 0, params.getColumnPos(5));
- assertEquals("9 key R2 [7]", 1, params.getColumnPos(6));
- assertEquals("9 key R2 [8]", -1, params.getColumnPos(7));
- assertEquals("9 key R2 [9]", -2, params.getColumnPos(8));
- assertEquals("9 key R2 adjust", -1, params.mTopRowAdjustment);
- assertEquals("9 key R2 default", WIDTH * 3, params.getDefaultKeyCoordX());
- }
-
- // [A] [8] [6] [7] [9]
- // [5] [3] [1] [2] [4]
- public void testLayout10KeyM0() {
- MiniKeyboardParams params = new MiniKeyboardParams(10, MAX_COLUMNS, WIDTH,
- HEIGHT, XPOS_M0, KEYBOARD_WIDTH);
- assertEquals("10 key M0 columns", 5, params.mNumColumns);
- assertEquals("10 key M0 rows", 2, params.mNumRows);
- assertEquals("10 key M0 left", 2, params.mLeftKeys);
- assertEquals("10 key M0 right", 3, params.mRightKeys);
- assertEquals("10 key M0 [1]", 0, params.getColumnPos(0));
- assertEquals("10 key M0 [2]", 1, params.getColumnPos(1));
- assertEquals("10 key M0 [3]", -1, params.getColumnPos(2));
- assertEquals("10 key M0 [4]", 2, params.getColumnPos(3));
- assertEquals("10 key M0 [5]", -2, params.getColumnPos(4));
- assertEquals("10 key M0 [6]", 0, params.getColumnPos(5));
- assertEquals("10 key M0 [7]", 1, params.getColumnPos(6));
- assertEquals("10 key M0 [8]", -1, params.getColumnPos(7));
- assertEquals("10 key M0 [9]", 2, params.getColumnPos(8));
- assertEquals("10 key M0 [A]", -2, params.getColumnPos(9));
- assertEquals("10 key M0 adjust", 0, params.mTopRowAdjustment);
- assertEquals("10 key M0 default", WIDTH * 2, params.getDefaultKeyCoordX());
- }
-
- // |[6] [7] [8] [9] [A]
- // |[1] [2] [3] [4] [5]
- public void testLayout10KeyL0() {
- MiniKeyboardParams params = new MiniKeyboardParams(10, MAX_COLUMNS, WIDTH,
- HEIGHT, XPOS_L0, KEYBOARD_WIDTH);
- assertEquals("10 key L0 columns", 5, params.mNumColumns);
- assertEquals("10 key L0 rows", 2, params.mNumRows);
- assertEquals("10 key L0 left", 0, params.mLeftKeys);
- assertEquals("10 key L0 right", 5, params.mRightKeys);
- assertEquals("10 key L0 [1]", 0, params.getColumnPos(0));
- assertEquals("10 key L0 [2]", 1, params.getColumnPos(1));
- assertEquals("10 key L0 [3]", 2, params.getColumnPos(2));
- assertEquals("10 key L0 [4]", 3, params.getColumnPos(3));
- assertEquals("10 key L0 [5]", 4, params.getColumnPos(4));
- assertEquals("10 key L0 [6]", 0, params.getColumnPos(5));
- assertEquals("10 key L0 [7]", 1, params.getColumnPos(6));
- assertEquals("10 key L0 [8]", 2, params.getColumnPos(7));
- assertEquals("10 key L0 [9]", 3, params.getColumnPos(8));
- assertEquals("10 key L0 [A]", 4, params.getColumnPos(9));
- assertEquals("10 key L0 adjust", 0, params.mTopRowAdjustment);
- assertEquals("10 key L0 default", WIDTH * 0, params.getDefaultKeyCoordX());
- }
-
- // |___ [6] [7] [8] [9] [A]
- // |___ [1] [2] [3] [4] [5]
- public void testLayout10KeyL1() {
- MiniKeyboardParams params = new MiniKeyboardParams(10, MAX_COLUMNS, WIDTH,
- HEIGHT, XPOS_L1, KEYBOARD_WIDTH);
- assertEquals("10 key L1 columns", 5, params.mNumColumns);
- assertEquals("10 key L1 rows", 2, params.mNumRows);
- assertEquals("10 key L1 left", 0, params.mLeftKeys);
- assertEquals("10 key L1 right", 5, params.mRightKeys);
- assertEquals("10 key L1 [1]", 0, params.getColumnPos(0));
- assertEquals("10 key L1 [2]", 1, params.getColumnPos(1));
- assertEquals("10 key L1 [3]", 2, params.getColumnPos(2));
- assertEquals("10 key L1 [4]", 3, params.getColumnPos(3));
- assertEquals("10 key L1 [5]", 4, params.getColumnPos(4));
- assertEquals("10 key L1 [6]", 0, params.getColumnPos(5));
- assertEquals("10 key L1 [7]", 1, params.getColumnPos(6));
- assertEquals("10 key L1 [8]", 2, params.getColumnPos(7));
- assertEquals("10 key L1 [9]", 3, params.getColumnPos(8));
- assertEquals("10 key L1 [A]", 4, params.getColumnPos(9));
- assertEquals("10 key L1 adjust", 0, params.mTopRowAdjustment);
- assertEquals("10 key L1 default", WIDTH * 0, params.getDefaultKeyCoordX());
- }
-
- // |___ ___ [8] [6] [7] [9] [A]
- // |___ ___ [3] [1] [2] [4] [5]
- public void testLayout10KeyL2() {
- MiniKeyboardParams params = new MiniKeyboardParams(10, MAX_COLUMNS, WIDTH,
- HEIGHT, XPOS_L2, KEYBOARD_WIDTH);
- assertEquals("10 key L2 columns", 5, params.mNumColumns);
- assertEquals("10 key L2 rows", 2, params.mNumRows);
- assertEquals("10 key L2 left", 1, params.mLeftKeys);
- assertEquals("10 key L2 right", 4, params.mRightKeys);
- assertEquals("10 key L2 [1]", 0, params.getColumnPos(0));
- assertEquals("10 key L2 [2]", 1, params.getColumnPos(1));
- assertEquals("10 key L2 [3]", -1, params.getColumnPos(2));
- assertEquals("10 key L2 [4]", 2, params.getColumnPos(3));
- assertEquals("10 key L2 [5]", 3, params.getColumnPos(4));
- assertEquals("10 key L2 [6]", 0, params.getColumnPos(5));
- assertEquals("10 key L2 [7]", 1, params.getColumnPos(6));
- assertEquals("10 key L2 [8]", -1, params.getColumnPos(7));
- assertEquals("10 key L2 [9]", 2, params.getColumnPos(8));
- assertEquals("10 key L2 [A]", 3, params.getColumnPos(9));
- assertEquals("10 key L2 adjust", 0, params.mTopRowAdjustment);
- assertEquals("10 key L2 default", WIDTH * 1, params.getDefaultKeyCoordX());
- }
-
- // [A] [9] [8] [7] [6]|
- // [5] [4] [3] [2] [1]|
- public void testLayout10KeyR0() {
- MiniKeyboardParams params = new MiniKeyboardParams(10, MAX_COLUMNS, WIDTH,
- HEIGHT, XPOS_R0, KEYBOARD_WIDTH);
- assertEquals("10 key R0 columns", 5, params.mNumColumns);
- assertEquals("10 key R0 rows", 2, params.mNumRows);
- assertEquals("10 key R0 left", 4, params.mLeftKeys);
- assertEquals("10 key R0 right", 1, params.mRightKeys);
- assertEquals("10 key R0 [1]", 0, params.getColumnPos(0));
- assertEquals("10 key R0 [2]", -1, params.getColumnPos(1));
- assertEquals("10 key R0 [3]", -2, params.getColumnPos(2));
- assertEquals("10 key R0 [4]", -3, params.getColumnPos(3));
- assertEquals("10 key R0 [5]", -4, params.getColumnPos(4));
- assertEquals("10 key R0 [6]", 0, params.getColumnPos(5));
- assertEquals("10 key R0 [7]", -1, params.getColumnPos(6));
- assertEquals("10 key R0 [8]", -2, params.getColumnPos(7));
- assertEquals("10 key R0 [9]", -3, params.getColumnPos(8));
- assertEquals("10 key R0 [A]", -4, params.getColumnPos(9));
- assertEquals("10 key R0 adjust", 0, params.mTopRowAdjustment);
- assertEquals("10 key R0 default", WIDTH * 4, params.getDefaultKeyCoordX());
- }
-
- // [A] [9] [8] [7] [6] ___|
- // [5] [4] [3] [2] [1] ___|
- public void testLayout10KeyR1() {
- MiniKeyboardParams params = new MiniKeyboardParams(10, MAX_COLUMNS, WIDTH,
- HEIGHT, XPOS_R1, KEYBOARD_WIDTH);
- assertEquals("10 key R1 columns", 5, params.mNumColumns);
- assertEquals("10 key R1 rows", 2, params.mNumRows);
- assertEquals("10 key R1 left", 4, params.mLeftKeys);
- assertEquals("10 key R1 right", 1, params.mRightKeys);
- assertEquals("10 key R1 [1]", 0, params.getColumnPos(0));
- assertEquals("10 key R1 [2]", -1, params.getColumnPos(1));
- assertEquals("10 key R1 [3]", -2, params.getColumnPos(2));
- assertEquals("10 key R1 [4]", -3, params.getColumnPos(3));
- assertEquals("10 key R1 [5]", -4, params.getColumnPos(4));
- assertEquals("10 key R1 [6]", 0, params.getColumnPos(5));
- assertEquals("10 key R1 [7]", -1, params.getColumnPos(6));
- assertEquals("10 key R1 [8]", -2, params.getColumnPos(7));
- assertEquals("10 key R1 [9]", -3, params.getColumnPos(8));
- assertEquals("10 key R1 [A]", -4, params.getColumnPos(9));
- assertEquals("10 key R1 adjust", 0, params.mTopRowAdjustment);
- assertEquals("10 key R1 default", WIDTH * 4, params.getDefaultKeyCoordX());
- }
-
- // [A] [9] [8] [6] [7] ___ ___|
- // [5] [4] [3] [1] [2] ___ ___|
- public void testLayout10KeyR2() {
- MiniKeyboardParams params = new MiniKeyboardParams(10, MAX_COLUMNS, WIDTH,
- HEIGHT, XPOS_R2, KEYBOARD_WIDTH);
- assertEquals("10 key R2 columns", 5, params.mNumColumns);
- assertEquals("10 key R2 rows", 2, params.mNumRows);
- assertEquals("10 key R2 left", 3, params.mLeftKeys);
- assertEquals("10 key R2 right", 2, params.mRightKeys);
- assertEquals("10 key R2 [1]", 0, params.getColumnPos(0));
- assertEquals("10 key R2 [2]", 1, params.getColumnPos(1));
- assertEquals("10 key R2 [3]", -1, params.getColumnPos(2));
- assertEquals("10 key R2 [4]", -2, params.getColumnPos(3));
- assertEquals("10 key R2 [5]", -3, params.getColumnPos(4));
- assertEquals("10 key R2 [6]", 0, params.getColumnPos(5));
- assertEquals("10 key R2 [7]", 1, params.getColumnPos(6));
- assertEquals("10 key R2 [8]", -1, params.getColumnPos(7));
- assertEquals("10 key R2 [9]", -2, params.getColumnPos(8));
- assertEquals("10 key R2 [A]", -3, params.getColumnPos(9));
- assertEquals("10 key R2 adjust", 0, params.mTopRowAdjustment);
- assertEquals("10 key R2 default", WIDTH * 3, params.getDefaultKeyCoordX());
- }
-
- // [B] [9] [A]
- // [7] [5] [6] [8]
- // [3] [1] [2] [4]
- public void testLayout11KeyM0() {
- MiniKeyboardParams params = new MiniKeyboardParams(11, MAX_COLUMNS, WIDTH,
- HEIGHT, XPOS_M0, KEYBOARD_WIDTH);
- assertEquals("11 key M0 columns", 4, params.mNumColumns);
- assertEquals("11 key M0 rows", 3, params.mNumRows);
- assertEquals("11 key M0 left", 1, params.mLeftKeys);
- assertEquals("11 key M0 right", 3, params.mRightKeys);
- assertEquals("11 key M0 [1]", 0, params.getColumnPos(0));
- assertEquals("11 key M0 [2]", 1, params.getColumnPos(1));
- assertEquals("11 key M0 [3]", -1, params.getColumnPos(2));
- assertEquals("11 key M0 [4]", 2, params.getColumnPos(3));
- assertEquals("11 key M0 [5]", 0, params.getColumnPos(4));
- assertEquals("11 key M0 [6]", 1, params.getColumnPos(5));
- assertEquals("11 key M0 [7]", -1, params.getColumnPos(6));
- assertEquals("11 key M0 [8]", 2, params.getColumnPos(7));
- assertEquals("11 key M0 [9]", 0, params.getColumnPos(8));
- assertEquals("11 key M0 [A]", 1, params.getColumnPos(9));
- assertEquals("11 key M0 [B]", -1, params.getColumnPos(10));
- assertEquals("11 key M0 adjust", 1, params.mTopRowAdjustment);
- assertEquals("11 key M0 default", WIDTH * 1, params.getDefaultKeyCoordX());
- }
-
- // [B] [9] [A] [C]
- // [7] [5] [6] [8]
- // [3] [1] [2] [4]
- public void testLayout12KeyM0() {
- MiniKeyboardParams params = new MiniKeyboardParams(12, MAX_COLUMNS, WIDTH,
- HEIGHT, XPOS_M0, KEYBOARD_WIDTH);
- assertEquals("12 key M0 columns", 4, params.mNumColumns);
- assertEquals("12 key M0 rows", 3, params.mNumRows);
- assertEquals("12 key M0 left", 1, params.mLeftKeys);
- assertEquals("12 key M0 right", 3, params.mRightKeys);
- assertEquals("12 key M0 [1]", 0, params.getColumnPos(0));
- assertEquals("12 key M0 [2]", 1, params.getColumnPos(1));
- assertEquals("12 key M0 [3]", -1, params.getColumnPos(2));
- assertEquals("12 key M0 [4]", 2, params.getColumnPos(3));
- assertEquals("12 key M0 [5]", 0, params.getColumnPos(4));
- assertEquals("12 key M0 [6]", 1, params.getColumnPos(5));
- assertEquals("12 key M0 [7]", -1, params.getColumnPos(6));
- assertEquals("12 key M0 [8]", 2, params.getColumnPos(7));
- assertEquals("12 key M0 [9]", 0, params.getColumnPos(8));
- assertEquals("12 key M0 [A]", 1, params.getColumnPos(9));
- assertEquals("12 key M0 [B]", -1, params.getColumnPos(10));
- assertEquals("12 key M0 [C]", 2, params.getColumnPos(11));
- assertEquals("12 key M0 adjust", 0, params.mTopRowAdjustment);
- assertEquals("12 key M0 default", WIDTH * 1, params.getDefaultKeyCoordX());
- }
-
-
- // [D] [B] [C]
- // [A] [8] [6] [7] [9]
- // [5] [3] [1] [2] [4]
- public void testLayout13KeyM0() {
- MiniKeyboardParams params = new MiniKeyboardParams(13, MAX_COLUMNS, WIDTH,
- HEIGHT, XPOS_M0, KEYBOARD_WIDTH);
- assertEquals("13 key M0 columns", 5, params.mNumColumns);
- assertEquals("13 key M0 rows", 3, params.mNumRows);
- assertEquals("13 key M0 left", 2, params.mLeftKeys);
- assertEquals("13 key M0 right", 3, params.mRightKeys);
- assertEquals("13 key M0 [1]", 0, params.getColumnPos(0));
- assertEquals("13 key M0 [2]", 1, params.getColumnPos(1));
- assertEquals("13 key M0 [3]", -1, params.getColumnPos(2));
- assertEquals("13 key M0 [4]", 2, params.getColumnPos(3));
- assertEquals("13 key M0 [5]", -2, params.getColumnPos(4));
- assertEquals("13 key M0 [6]", 0, params.getColumnPos(5));
- assertEquals("13 key M0 [7]", 1, params.getColumnPos(6));
- assertEquals("13 key M0 [8]", -1, params.getColumnPos(7));
- assertEquals("13 key M0 [9]", 2, params.getColumnPos(8));
- assertEquals("13 key M0 [A]", -2, params.getColumnPos(9));
- assertEquals("13 key M0 [B]", 0, params.getColumnPos(10));
- assertEquals("13 key M0 [C]", 1, params.getColumnPos(11));
- assertEquals("13 key M0 [D]", -1, params.getColumnPos(12));
- assertEquals("13 key M0 adjust", 0, params.mTopRowAdjustment);
- assertEquals("13 key M0 default", WIDTH * 2, params.getDefaultKeyCoordX());
- }
-}
diff --git a/tests/src/com/android/inputmethod/keyboard/MoreKeysKeyboardBuilderFixedOrderTests.java b/tests/src/com/android/inputmethod/keyboard/MoreKeysKeyboardBuilderFixedOrderTests.java
new file mode 100644
index 000000000..5c6c83432
--- /dev/null
+++ b/tests/src/com/android/inputmethod/keyboard/MoreKeysKeyboardBuilderFixedOrderTests.java
@@ -0,0 +1,2631 @@
+/*
+ * Copyright (C) 2012 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
+package com.android.inputmethod.keyboard;
+
+import android.test.AndroidTestCase;
+
+import com.android.inputmethod.keyboard.MoreKeysKeyboard.Builder.MoreKeysKeyboardParams;
+
+public class MoreKeysKeyboardBuilderFixedOrderTests extends AndroidTestCase {
+ private static final int WIDTH = 10;
+ private static final int HEIGHT = 10;
+
+ private static final int KEYBOARD_WIDTH = WIDTH * 10;
+ private static final int XPOS_L0 = WIDTH * 0 + WIDTH / 2;
+ private static final int XPOS_L1 = WIDTH * 1 + WIDTH / 2;
+ private static final int XPOS_L2 = WIDTH * 2 + WIDTH / 2;
+ private static final int XPOS_L3 = WIDTH * 3 + WIDTH / 2;
+ private static final int XPOS_M0 = WIDTH * 4 + WIDTH / 2;
+ private static final int XPOS_M1 = WIDTH * 5 + WIDTH / 2;
+ private static final int XPOS_R3 = WIDTH * 6 + WIDTH / 2;
+ private static final int XPOS_R2 = WIDTH * 7 + WIDTH / 2;
+ private static final int XPOS_R1 = WIDTH * 8 + WIDTH / 2;
+ private static final int XPOS_R0 = WIDTH * 9 + WIDTH / 2;
+
+ @Override
+ protected void setUp() throws Exception {
+ super.setUp();
+ }
+
+ private static MoreKeysKeyboardParams createParams(int numKeys, int columnNum,
+ int coordXInParnet) {
+ final MoreKeysKeyboardParams params = new MoreKeysKeyboardParams();
+ params.setParameters(numKeys, columnNum, WIDTH, HEIGHT, coordXInParnet, KEYBOARD_WIDTH,
+ /* isFixedOrderColumn */true, /* dividerWidth */0);
+ return params;
+ }
+
+ public void testLayoutError() {
+ MoreKeysKeyboardParams params = null;
+ try {
+ final int fixColumns = KEYBOARD_WIDTH / WIDTH;
+ params = createParams(10, fixColumns + 1, HEIGHT);
+ fail("Should throw IllegalArgumentException");
+ } catch (IllegalArgumentException e) {
+ // Too small keyboard to hold more keys keyboard.
+ }
+ assertNull("Too small keyboard to hold more keys keyboard", params);
+ }
+
+ // More keys keyboard layout test.
+ // "[n]" represents n-th key position in more keys keyboard.
+ // "<m>" is the default key.
+
+ // <1>
+ public void testLayout1KeyFix5M0() {
+ MoreKeysKeyboardParams params = createParams(1, 5, XPOS_M0);
+ assertEquals("1 key fix 5 M0 columns", 1, params.mNumColumns);
+ assertEquals("1 key fix 5 M0 rows", 1, params.mNumRows);
+ assertEquals("1 key fix 5 M0 left", 0, params.mLeftKeys);
+ assertEquals("1 key fix 5 M0 right", 1, params.mRightKeys);
+ assertEquals("1 key fix 5 M0 <1>", 0, params.getColumnPos(0));
+ assertEquals("1 key fix 5 M0 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("1 key fix 5 M0 default", WIDTH * 0, params.getDefaultKeyCoordX());
+ }
+
+ // |<1>
+ public void testLayout1KeyFix5L0() {
+ MoreKeysKeyboardParams params = createParams(1, 5, XPOS_L0);
+ assertEquals("1 key fix 5 L0 columns", 1, params.mNumColumns);
+ assertEquals("1 key fix 5 L0 rows", 1, params.mNumRows);
+ assertEquals("1 key fix 5 L0 left", 0, params.mLeftKeys);
+ assertEquals("1 key fix 5 L0 right", 1, params.mRightKeys);
+ assertEquals("1 key fix 5 L0 <1>", 0, params.getColumnPos(0));
+ assertEquals("1 key fix 5 L0 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("1 key fix 5 L0 default", WIDTH * 0, params.getDefaultKeyCoordX());
+ }
+
+ // |___ <1>
+ public void testLayout1KeyFix5L1() {
+ MoreKeysKeyboardParams params = createParams(1, 5, XPOS_L1);
+ assertEquals("1 key fix 5 L1 columns", 1, params.mNumColumns);
+ assertEquals("1 key fix 5 L1 rows", 1, params.mNumRows);
+ assertEquals("1 key fix 5 L1 left", 0, params.mLeftKeys);
+ assertEquals("1 key fix 5 L1 right", 1, params.mRightKeys);
+ assertEquals("1 key fix 5 L1 <1>", 0, params.getColumnPos(0));
+ assertEquals("1 key fix 5 L1 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("1 key fix 5 L1 default", WIDTH * 0, params.getDefaultKeyCoordX());
+ }
+
+ // |___ ___ <1>
+ public void testLayout1KeyFix5L2() {
+ MoreKeysKeyboardParams params = createParams(1, 5, XPOS_L2);
+ assertEquals("1 key fix 5 L2 columns", 1, params.mNumColumns);
+ assertEquals("1 key fix 5 L2 rows", 1, params.mNumRows);
+ assertEquals("1 key fix 5 L2 left", 0, params.mLeftKeys);
+ assertEquals("1 key fix 5 L2 right", 1, params.mRightKeys);
+ assertEquals("1 key fix 5 L2 <1>", 0, params.getColumnPos(0));
+ assertEquals("1 key fix 5 L2 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("1 key fix 5 L2 default", WIDTH * 0, params.getDefaultKeyCoordX());
+ }
+
+ // <1>|
+ public void testLayout1KeyFix5R0() {
+ MoreKeysKeyboardParams params = createParams(1, 5, XPOS_R0);
+ assertEquals("1 key fix 5 R0 columns", 1, params.mNumColumns);
+ assertEquals("1 key fix 5 R0 rows", 1, params.mNumRows);
+ assertEquals("1 key fix 5 R0 left", 0, params.mLeftKeys);
+ assertEquals("1 key fix 5 R0 right", 1, params.mRightKeys);
+ assertEquals("1 key fix 5 R0 <1>", 0, params.getColumnPos(0));
+ assertEquals("1 key fix 5 R0 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("1 key fix 5 R0 default", WIDTH * 0, params.getDefaultKeyCoordX());
+ }
+
+ // <1> ___|
+ public void testLayout1KeyFix5R1() {
+ MoreKeysKeyboardParams params = createParams(1, 5, XPOS_R1);
+ assertEquals("1 key fix 5 R1 columns", 1, params.mNumColumns);
+ assertEquals("1 key fix 5 R1 rows", 1, params.mNumRows);
+ assertEquals("1 key fix 5 R1 left", 0, params.mLeftKeys);
+ assertEquals("1 key fix 5 R1 right", 1, params.mRightKeys);
+ assertEquals("1 key fix 5 R1 <1>", 0, params.getColumnPos(0));
+ assertEquals("1 key fix 5 R1 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("1 key fix 5 R1 default", WIDTH * 0, params.getDefaultKeyCoordX());
+ }
+
+ // <1> ___ ___|
+ public void testLayout1KeyFix5R2() {
+ MoreKeysKeyboardParams params = createParams(1, 5, XPOS_R2);
+ assertEquals("1 key fix 5 R2 columns", 1, params.mNumColumns);
+ assertEquals("1 key fix 5 R2 rows", 1, params.mNumRows);
+ assertEquals("1 key fix 5 R2 left", 0, params.mLeftKeys);
+ assertEquals("1 key fix 5 R2 right", 1, params.mRightKeys);
+ assertEquals("1 key fix 5 R2 <1>", 0, params.getColumnPos(0));
+ assertEquals("1 key fix 5 R2 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("1 key fix 5 R2 default", WIDTH * 0, params.getDefaultKeyCoordX());
+ }
+
+ // <1> [2]
+ public void testLayout2KeyFix5M0() {
+ MoreKeysKeyboardParams params = createParams(2, 5, XPOS_M0);
+ assertEquals("2 key fix 5 M0 columns", 2, params.mNumColumns);
+ assertEquals("2 key fix 5 M0 rows", 1, params.mNumRows);
+ assertEquals("2 key fix 5 M0 left", 0, params.mLeftKeys);
+ assertEquals("2 key fix 5 M0 right", 2, params.mRightKeys);
+ assertEquals("2 key fix 5 M0 <1>", 0, params.getColumnPos(0));
+ assertEquals("2 key fix 5 M0 [2]", 1, params.getColumnPos(1));
+ assertEquals("2 key fix 5 M0 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("2 key fix 5 M0 default", WIDTH * 0, params.getDefaultKeyCoordX());
+ }
+
+ // |<1> [2]
+ public void testLayout2KeyFix5L0() {
+ MoreKeysKeyboardParams params = createParams(2, 5, XPOS_L0);
+ assertEquals("2 key fix 5 L0 columns", 2, params.mNumColumns);
+ assertEquals("2 key fix 5 L0 rows", 1, params.mNumRows);
+ assertEquals("2 key fix 5 L0 left", 0, params.mLeftKeys);
+ assertEquals("2 key fix 5 L0 right", 2, params.mRightKeys);
+ assertEquals("2 key fix 5 L0 <1>", 0, params.getColumnPos(0));
+ assertEquals("2 key fix 5 L0 [2]", 1, params.getColumnPos(1));
+ assertEquals("2 key fix 5 L0 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("2 key fix 5 L0 default", WIDTH * 0, params.getDefaultKeyCoordX());
+ }
+
+ // |___ <1> [2]
+ public void testLayout2KeyFix5L1() {
+ MoreKeysKeyboardParams params = createParams(2, 5, XPOS_L1);
+ assertEquals("2 key fix 5 L1 columns", 2, params.mNumColumns);
+ assertEquals("2 key fix 5 L1 rows", 1, params.mNumRows);
+ assertEquals("2 key fix 5 L1 left", 0, params.mLeftKeys);
+ assertEquals("2 key fix 5 L1 right", 2, params.mRightKeys);
+ assertEquals("2 key fix 5 L1 <1>", 0, params.getColumnPos(0));
+ assertEquals("2 key fix 5 L1 [2]", 1, params.getColumnPos(1));
+ assertEquals("2 key fix 5 L1 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("2 key fix 5 L1 default", WIDTH * 0, params.getDefaultKeyCoordX());
+ }
+
+ // |___ ___ <1> [2]
+ public void testLayout2KeyFix5L2() {
+ MoreKeysKeyboardParams params = createParams(2, 5, XPOS_L2);
+ assertEquals("2 key fix 5 L2 columns", 2, params.mNumColumns);
+ assertEquals("2 key fix 5 L2 rows", 1, params.mNumRows);
+ assertEquals("2 key fix 5 L2 left", 0, params.mLeftKeys);
+ assertEquals("2 key fix 5 L2 right", 2, params.mRightKeys);
+ assertEquals("2 key fix 5 L2 <1>", 0, params.getColumnPos(0));
+ assertEquals("2 key fix 5 L2 [2]", 1, params.getColumnPos(1));
+ assertEquals("2 key fix 5 L2 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("2 key fix 5 L2 default", WIDTH * 0, params.getDefaultKeyCoordX());
+ }
+
+ // [1] <2>|
+ public void testLayout2KeyFix5R0() {
+ MoreKeysKeyboardParams params = createParams(2, 5, XPOS_R0);
+ assertEquals("2 key fix 5 R0 columns", 2, params.mNumColumns);
+ assertEquals("2 key fix 5 R0 rows", 1, params.mNumRows);
+ assertEquals("2 key fix 5 R0 left", 1, params.mLeftKeys);
+ assertEquals("2 key fix 5 R0 right", 1, params.mRightKeys);
+ assertEquals("2 key fix 5 R0 [1]", -1, params.getColumnPos(0));
+ assertEquals("2 key fix 5 R0 <2>", 0, params.getColumnPos(1));
+ assertEquals("2 key fix 5 R0 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("2 key fix 5 R0 default", WIDTH * 1, params.getDefaultKeyCoordX());
+ }
+
+ // [1] <2> ___|
+ public void testLayout2KeyFix5R1() {
+ MoreKeysKeyboardParams params = createParams(2, 5, XPOS_R1);
+ assertEquals("2 key fix 5 R1 columns", 2, params.mNumColumns);
+ assertEquals("2 key fix 5 R1 rows", 1, params.mNumRows);
+ assertEquals("2 key fix 5 R1 left", 1, params.mLeftKeys);
+ assertEquals("2 key fix 5 R1 right", 1, params.mRightKeys);
+ assertEquals("2 key fix 5 R1 [1]", -1, params.getColumnPos(0));
+ assertEquals("2 key fix 5 R1 <2>", 0, params.getColumnPos(1));
+ assertEquals("2 key fix 5 R1 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("2 key fix 5 R1 default", WIDTH * 1, params.getDefaultKeyCoordX());
+ }
+
+ // <1> [2] ___|
+ public void testLayout2KeyFix5R2() {
+ MoreKeysKeyboardParams params = createParams(2, 5, XPOS_R2);
+ assertEquals("2 key fix 5 R2 columns", 2, params.mNumColumns);
+ assertEquals("2 key fix 5 R2 rows", 1, params.mNumRows);
+ assertEquals("2 key fix 5 R2 left", 0, params.mLeftKeys);
+ assertEquals("2 key fix 5 R2 right", 2, params.mRightKeys);
+ assertEquals("2 key fix 5 R2 <1>", 0, params.getColumnPos(0));
+ assertEquals("2 key fix 5 R2 [2]", 1, params.getColumnPos(1));
+ assertEquals("2 key fix 5 R2 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("2 key fix 5 R2 default", WIDTH * 0, params.getDefaultKeyCoordX());
+ }
+
+ // [3]
+ // <1> [2]
+ public void testLayout3KeyFix2M0() {
+ MoreKeysKeyboardParams params = createParams(3, 2, XPOS_M0);
+ assertEquals("3 key fix 2 M0 columns", 2, params.mNumColumns);
+ assertEquals("3 key fix 2 M0 rows", 2, params.mNumRows);
+ assertEquals("3 key fix 2 M0 left", 0, params.mLeftKeys);
+ assertEquals("3 key fix 2 M0 right", 2, params.mRightKeys);
+ assertEquals("3 key fix 2 M0 <1>", 0, params.getColumnPos(0));
+ assertEquals("3 key fix 2 M0 [2]", 1, params.getColumnPos(1));
+ assertEquals("3 key fix 2 M0 [3]", 0, params.getColumnPos(2));
+ assertEquals("3 key fix 2 M0 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("3 key fix 2 M0 default", WIDTH * 0, params.getDefaultKeyCoordX());
+ }
+
+ // |[3]
+ // |<1> [2]
+ public void testLayout3KeyFix2L0() {
+ MoreKeysKeyboardParams params = createParams(3, 2, XPOS_L0);
+ assertEquals("3 key fix 2 L0 columns", 2, params.mNumColumns);
+ assertEquals("3 key fix 2 L0 rows", 2, params.mNumRows);
+ assertEquals("3 key fix 2 L0 left", 0, params.mLeftKeys);
+ assertEquals("3 key fix 2 L0 right", 2, params.mRightKeys);
+ assertEquals("3 key fix 2 L0 <1>", 0, params.getColumnPos(0));
+ assertEquals("3 key fix 2 L0 [2]", 1, params.getColumnPos(1));
+ assertEquals("3 key fix 2 L0 [3]", 0, params.getColumnPos(2));
+ assertEquals("3 key fix 2 L0 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("3 key fix 2 L0 default", WIDTH * 0, params.getDefaultKeyCoordX());
+ }
+
+ // |___ [3]
+ // |___ <1> [2]
+ public void testLayout3KeyFix2L1() {
+ MoreKeysKeyboardParams params = createParams(3, 2, XPOS_L1);
+ assertEquals("3 key fix 2 L1 columns", 2, params.mNumColumns);
+ assertEquals("3 key fix 2 L1 rows", 2, params.mNumRows);
+ assertEquals("3 key fix 2 L1 left", 0, params.mLeftKeys);
+ assertEquals("3 key fix 2 L1 right", 2, params.mRightKeys);
+ assertEquals("3 key fix 2 L1 <1>", 0, params.getColumnPos(0));
+ assertEquals("3 key fix 2 L1 [2]", 1, params.getColumnPos(1));
+ assertEquals("3 key fix 2 L1 [3]", 0, params.getColumnPos(2));
+ assertEquals("3 key fix 2 L1 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("3 key fix 2 L1 default", WIDTH * 0, params.getDefaultKeyCoordX());
+ }
+
+ // | [3]
+ // |___ ___ <1> [2]
+ public void testLayout3KeyFix2L2() {
+ MoreKeysKeyboardParams params = createParams(3, 2, XPOS_L2);
+ assertEquals("3 key fix 2 L2 columns", 2, params.mNumColumns);
+ assertEquals("3 key fix 2 L2 rows", 2, params.mNumRows);
+ assertEquals("3 key fix 2 L2 left", 0, params.mLeftKeys);
+ assertEquals("3 key fix 2 L2 right", 2, params.mRightKeys);
+ assertEquals("3 key fix 2 L2 <1>", 0, params.getColumnPos(0));
+ assertEquals("3 key fix 2 L2 [2]", 1, params.getColumnPos(1));
+ assertEquals("3 key fix 2 L2 [3]", 0, params.getColumnPos(2));
+ assertEquals("3 key fix 2 L2 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("3 key fix 2 L2 default", WIDTH * 0, params.getDefaultKeyCoordX());
+ }
+
+ // [3]|
+ // [1] <2>|
+ public void testLayout3KeyFix2R0() {
+ MoreKeysKeyboardParams params = createParams(3, 2, XPOS_R0);
+ assertEquals("3 key fix 2 R0 columns", 2, params.mNumColumns);
+ assertEquals("3 key fix 2 R0 rows", 2, params.mNumRows);
+ assertEquals("3 key fix 2 R0 left", 1, params.mLeftKeys);
+ assertEquals("3 key fix 2 R0 right", 1, params.mRightKeys);
+ assertEquals("3 key fix 2 R0 [1]", -1, params.getColumnPos(0));
+ assertEquals("3 key fix 2 R0 <2>", 0, params.getColumnPos(1));
+ assertEquals("3 key fix 2 R0 [3]", 0, params.getColumnPos(2));
+ assertEquals("3 key fix 2 R0 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("3 key fix 2 R0 default", WIDTH * 1, params.getDefaultKeyCoordX());
+ }
+
+ // [3] ___|
+ // [1] <2> ___|
+ public void testLayout3KeyFix2R1() {
+ MoreKeysKeyboardParams params = createParams(3, 2, XPOS_R1);
+ assertEquals("3 key fix 2 R1 columns", 2, params.mNumColumns);
+ assertEquals("3 key fix 2 R1 rows", 2, params.mNumRows);
+ assertEquals("3 key fix 2 R1 left", 1, params.mLeftKeys);
+ assertEquals("3 key fix 2 R1 right", 1, params.mRightKeys);
+ assertEquals("3 key fix 2 R1 [1]", -1, params.getColumnPos(0));
+ assertEquals("3 key fix 2 R1 <2>", 0, params.getColumnPos(1));
+ assertEquals("3 key fix 2 R1 [3]", 0, params.getColumnPos(2));
+ assertEquals("3 key fix 2 R1 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("3 key fix 2 R1 default", WIDTH * 1, params.getDefaultKeyCoordX());
+ }
+
+ // [3] ___|
+ // <1> [2] ___|
+ public void testLayout3KeyFix2R2() {
+ MoreKeysKeyboardParams params = createParams(3, 2, XPOS_R2);
+ assertEquals("3 key fix 2 R2 columns", 2, params.mNumColumns);
+ assertEquals("3 key fix 2 R2 rows", 2, params.mNumRows);
+ assertEquals("3 key fix 2 R2 left", 0, params.mLeftKeys);
+ assertEquals("3 key fix 2 R2 right", 2, params.mRightKeys);
+ assertEquals("3 key fix 2 R2 <1>", 0, params.getColumnPos(0));
+ assertEquals("3 key fix 2 R2 [2]", 1, params.getColumnPos(1));
+ assertEquals("3 key fix 2 R2 [3]", 0, params.getColumnPos(2));
+ assertEquals("3 key fix 2 R2 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("3 key fix 2 R2 default", WIDTH * 0, params.getDefaultKeyCoordX());
+ }
+
+ // [3] [4]
+ // <1> [2]
+ public void testLayout4KeyFix2M0() {
+ MoreKeysKeyboardParams params = createParams(4, 2, XPOS_M0);
+ assertEquals("3 key fix 2 M0 columns", 2, params.mNumColumns);
+ assertEquals("3 key fix 2 M0 rows", 2, params.mNumRows);
+ assertEquals("3 key fix 2 M0 left", 0, params.mLeftKeys);
+ assertEquals("3 key fix 2 M0 right", 2, params.mRightKeys);
+ assertEquals("3 key fix 2 M0 <1>", 0, params.getColumnPos(0));
+ assertEquals("3 key fix 2 M0 [2]", 1, params.getColumnPos(1));
+ assertEquals("3 key fix 2 M0 [3]", 0, params.getColumnPos(2));
+ assertEquals("3 key fix 2 M0 [4]", 1, params.getColumnPos(3));
+ assertEquals("3 key fix 2 M0 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("3 key fix 2 M0 default", WIDTH * 0, params.getDefaultKeyCoordX());
+ }
+
+ // |[3] [4]
+ // |<1> [2]
+ public void testLayout4KeyFix2L0() {
+ MoreKeysKeyboardParams params = createParams(4, 2, XPOS_L0);
+ assertEquals("3 key fix 2 L0 columns", 2, params.mNumColumns);
+ assertEquals("3 key fix 2 L0 rows", 2, params.mNumRows);
+ assertEquals("3 key fix 2 L0 left", 0, params.mLeftKeys);
+ assertEquals("3 key fix 2 L0 right", 2, params.mRightKeys);
+ assertEquals("3 key fix 2 L0 <1>", 0, params.getColumnPos(0));
+ assertEquals("3 key fix 2 L0 [2]", 1, params.getColumnPos(1));
+ assertEquals("3 key fix 2 L0 [3]", 0, params.getColumnPos(2));
+ assertEquals("3 key fix 2 L0 [4]", 1, params.getColumnPos(3));
+ assertEquals("3 key fix 2 L0 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("3 key fix 2 L0 default", WIDTH * 0, params.getDefaultKeyCoordX());
+ }
+
+ // |___ [3] [4]
+ // |___ <1> [2]
+ public void testLayout4KeyFix2L1() {
+ MoreKeysKeyboardParams params = createParams(4, 2, XPOS_L1);
+ assertEquals("3 key fix 2 L1 columns", 2, params.mNumColumns);
+ assertEquals("3 key fix 2 L1 rows", 2, params.mNumRows);
+ assertEquals("3 key fix 2 L1 left", 0, params.mLeftKeys);
+ assertEquals("3 key fix 2 L1 right", 2, params.mRightKeys);
+ assertEquals("3 key fix 2 L1 <1>", 0, params.getColumnPos(0));
+ assertEquals("3 key fix 2 L1 [2]", 1, params.getColumnPos(1));
+ assertEquals("3 key fix 2 L1 [3]", 0, params.getColumnPos(2));
+ assertEquals("3 key fix 2 L1 [4]", 1, params.getColumnPos(3));
+ assertEquals("3 key fix 2 L1 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("3 key fix 2 L1 default", WIDTH * 0, params.getDefaultKeyCoordX());
+ }
+
+ // | [3] [4]
+ // |___ ___ <1> [2]
+ public void testLayout4KeyFix2L2() {
+ MoreKeysKeyboardParams params = createParams(4, 2, XPOS_L2);
+ assertEquals("3 key fix 2 L2 columns", 2, params.mNumColumns);
+ assertEquals("3 key fix 2 L2 rows", 2, params.mNumRows);
+ assertEquals("3 key fix 2 L2 left", 0, params.mLeftKeys);
+ assertEquals("3 key fix 2 L2 right", 2, params.mRightKeys);
+ assertEquals("3 key fix 2 L2 <1>", 0, params.getColumnPos(0));
+ assertEquals("3 key fix 2 L2 [2]", 1, params.getColumnPos(1));
+ assertEquals("3 key fix 2 L2 [3]", 0, params.getColumnPos(2));
+ assertEquals("3 key fix 2 L2 [4]", 1, params.getColumnPos(3));
+ assertEquals("3 key fix 2 L2 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("3 key fix 2 L2 default", WIDTH * 0, params.getDefaultKeyCoordX());
+ }
+
+ // [3] [4]|
+ // [1] <2>|
+ public void testLayout4KeyFix2R0() {
+ MoreKeysKeyboardParams params = createParams(4, 2, XPOS_R0);
+ assertEquals("3 key fix 2 R0 columns", 2, params.mNumColumns);
+ assertEquals("3 key fix 2 R0 rows", 2, params.mNumRows);
+ assertEquals("3 key fix 2 R0 left", 1, params.mLeftKeys);
+ assertEquals("3 key fix 2 R0 right", 1, params.mRightKeys);
+ assertEquals("3 key fix 2 R0 [1]", -1, params.getColumnPos(0));
+ assertEquals("3 key fix 2 R0 <2>", 0, params.getColumnPos(1));
+ assertEquals("3 key fix 2 R0 [3]", -1, params.getColumnPos(2));
+ assertEquals("3 key fix 2 R0 [4]", 0, params.getColumnPos(3));
+ assertEquals("3 key fix 2 R0 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("3 key fix 2 R0 default", WIDTH * 1, params.getDefaultKeyCoordX());
+ }
+
+ // [3] [4] ___|
+ // [1] <2> ___|
+ public void testLayout4KeyFix2R1() {
+ MoreKeysKeyboardParams params = createParams(4, 2, XPOS_R1);
+ assertEquals("3 key fix 2 R1 columns", 2, params.mNumColumns);
+ assertEquals("3 key fix 2 R1 rows", 2, params.mNumRows);
+ assertEquals("3 key fix 2 R1 left", 1, params.mLeftKeys);
+ assertEquals("3 key fix 2 R1 right", 1, params.mRightKeys);
+ assertEquals("3 key fix 2 R1 [1]", -1, params.getColumnPos(0));
+ assertEquals("3 key fix 2 R1 <2>", 0, params.getColumnPos(1));
+ assertEquals("3 key fix 2 R1 [3]", -1, params.getColumnPos(2));
+ assertEquals("3 key fix 2 R1 [4]", 0, params.getColumnPos(3));
+ assertEquals("3 key fix 2 R1 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("3 key fix 2 R1 default", WIDTH * 1, params.getDefaultKeyCoordX());
+ }
+
+ // [3] [4] ___|
+ // <1> [2] ___|
+ public void testLayout4KeyFix2R2() {
+ MoreKeysKeyboardParams params = createParams(4, 2, XPOS_R2);
+ assertEquals("3 key fix 2 R2 columns", 2, params.mNumColumns);
+ assertEquals("3 key fix 2 R2 rows", 2, params.mNumRows);
+ assertEquals("3 key fix 2 R2 left", 0, params.mLeftKeys);
+ assertEquals("3 key fix 2 R2 right", 2, params.mRightKeys);
+ assertEquals("3 key fix 2 R2 <1>", 0, params.getColumnPos(0));
+ assertEquals("3 key fix 2 R2 [2]", 1, params.getColumnPos(1));
+ assertEquals("3 key fix 2 R2 [3]", 0, params.getColumnPos(2));
+ assertEquals("3 key fix 2 R2 [4]", 1, params.getColumnPos(3));
+ assertEquals("3 key fix 2 R2 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("3 key fix 2 R2 default", WIDTH * 0, params.getDefaultKeyCoordX());
+ }
+
+ // [1] <2> [3]
+ public void testLayout3KeyFix5M0() {
+ MoreKeysKeyboardParams params = createParams(3, 5, XPOS_M0);
+ assertEquals("3 key fix 5 columns", 3, params.mNumColumns);
+ assertEquals("3 key fix 5 rows", 1, params.mNumRows);
+ assertEquals("3 key fix 5 left", 1, params.mLeftKeys);
+ assertEquals("3 key fix 5 right", 2, params.mRightKeys);
+ assertEquals("3 key fix 5 [1]", -1, params.getColumnPos(0));
+ assertEquals("3 key fix 5 <2>", 0, params.getColumnPos(1));
+ assertEquals("3 key fix 5 [3]", 1, params.getColumnPos(2));
+ assertEquals("3 key fix 5 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("3 key fix 5 default", WIDTH * 1, params.getDefaultKeyCoordX());
+ }
+
+ // |<1> [2] [3]
+ public void testLayout3KeyFix5L0() {
+ MoreKeysKeyboardParams params = createParams(3, 5, XPOS_L0);
+ assertEquals("3 key fix 5 L0 columns", 3, params.mNumColumns);
+ assertEquals("3 key fix 5 L0 rows", 1, params.mNumRows);
+ assertEquals("3 key fix 5 L0 left", 0, params.mLeftKeys);
+ assertEquals("3 key fix 5 L0 right", 3, params.mRightKeys);
+ assertEquals("3 key fix 5 L0 <1>", 0, params.getColumnPos(0));
+ assertEquals("3 key fix 5 L0 [2]", 1, params.getColumnPos(1));
+ assertEquals("3 key fix 5 L0 [3]", 2, params.getColumnPos(2));
+ assertEquals("3 key fix 5 L0 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("3 key fix 5 L0 default", WIDTH * 0, params.getDefaultKeyCoordX());
+ }
+
+ // |___ <1> [2] [3]
+ public void testLayout3KeyFix5L1() {
+ MoreKeysKeyboardParams params = createParams(3, 5, XPOS_L1);
+ assertEquals("3 key fix 5 L1 columns", 3, params.mNumColumns);
+ assertEquals("3 key fix 5 L1 rows", 1, params.mNumRows);
+ assertEquals("3 key fix 5 L1 left", 0, params.mLeftKeys);
+ assertEquals("3 key fix 5 L1 right", 3, params.mRightKeys);
+ assertEquals("3 key fix 5 L1 <1>", 0, params.getColumnPos(0));
+ assertEquals("3 key fix 5 L1 [2]", 1, params.getColumnPos(1));
+ assertEquals("3 key fix 5 L1 [3]", 2, params.getColumnPos(2));
+ assertEquals("3 key fix 5 L1 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("3 key fix 5 L1 default", WIDTH * 0, params.getDefaultKeyCoordX());
+ }
+
+ // |___ [1] <2> [3]
+ public void testLayout3KeyFix5L2() {
+ MoreKeysKeyboardParams params = createParams(3, 5, XPOS_L2);
+ assertEquals("3 key fix 5 L2 columns", 3, params.mNumColumns);
+ assertEquals("3 key fix 5 L2 rows", 1, params.mNumRows);
+ assertEquals("3 key fix 5 L2 left", 1, params.mLeftKeys);
+ assertEquals("3 key fix 5 L2 right", 2, params.mRightKeys);
+ assertEquals("3 key fix 5 L2 [1]", -1, params.getColumnPos(0));
+ assertEquals("3 key fix 5 L2 <2>", 0, params.getColumnPos(1));
+ assertEquals("3 key fix 5 L2 [3]", 1, params.getColumnPos(2));
+ assertEquals("3 key fix 5 L2 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("3 key fix 5 L2 default", WIDTH * 1, params.getDefaultKeyCoordX());
+ }
+
+ // [1] [2] <3>|
+ public void testLayout3KeyFix5R0() {
+ MoreKeysKeyboardParams params = createParams(3, 5, XPOS_R0);
+ assertEquals("3 key fix 5 R0 columns", 3, params.mNumColumns);
+ assertEquals("3 key fix 5 R0 rows", 1, params.mNumRows);
+ assertEquals("3 key fix 5 R0 left", 2, params.mLeftKeys);
+ assertEquals("3 key fix 5 R0 right", 1, params.mRightKeys);
+ assertEquals("3 key fix 5 R0 [1]", -2, params.getColumnPos(0));
+ assertEquals("3 key fix 5 R0 [2]", -1, params.getColumnPos(1));
+ assertEquals("3 key fix 5 R0 <3>", 0, params.getColumnPos(2));
+ assertEquals("3 key fix 5 R0 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("3 key fix 5 R0 default", WIDTH * 2, params.getDefaultKeyCoordX());
+ }
+
+ // [1] [2] <3> ___|
+ public void testLayout3KeyFix5R1() {
+ MoreKeysKeyboardParams params = createParams(3, 5, XPOS_R1);
+ assertEquals("3 key fix 5 R1 columns", 3, params.mNumColumns);
+ assertEquals("3 key fix 5 R1 rows", 1, params.mNumRows);
+ assertEquals("3 key fix 5 R1 left", 2, params.mLeftKeys);
+ assertEquals("3 key fix 5 R1 right", 1, params.mRightKeys);
+ assertEquals("3 key fix 5 R1 [1]", -2, params.getColumnPos(0));
+ assertEquals("3 key fix 5 R1 [2]", -1, params.getColumnPos(1));
+ assertEquals("3 key fix 5 R1 <3>", 0, params.getColumnPos(2));
+ assertEquals("3 key fix 5 R1 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("3 key fix 5 R1 default", WIDTH * 2, params.getDefaultKeyCoordX());
+ }
+
+ // [1] <2> [3] ___|
+ public void testLayout3KeyFix5R2() {
+ MoreKeysKeyboardParams params = createParams(3, 5, XPOS_R2);
+ assertEquals("3 key fix 5 R2 columns", 3, params.mNumColumns);
+ assertEquals("3 key fix 5 R2 rows", 1, params.mNumRows);
+ assertEquals("3 key fix 5 R2 left", 1, params.mLeftKeys);
+ assertEquals("3 key fix 5 R2 right", 2, params.mRightKeys);
+ assertEquals("3 key fix 5 R2 [1]", -1, params.getColumnPos(0));
+ assertEquals("3 key fix 5 R2 <2>", 0, params.getColumnPos(1));
+ assertEquals("3 key fix 5 R2 [3]", 1, params.getColumnPos(2));
+ assertEquals("3 key fix 5 R2 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("3 key fix 5 R2 default", WIDTH * 1, params.getDefaultKeyCoordX());
+ }
+
+ // [4]
+ // [1] <2> [3]
+ public void testLayout4KeyFix3M0() {
+ MoreKeysKeyboardParams params = createParams(4, 3, XPOS_M0);
+ assertEquals("4 key fix 3 M0 columns", 3, params.mNumColumns);
+ assertEquals("4 key fix 3 M0 rows", 2, params.mNumRows);
+ assertEquals("4 key fix 3 M0 left", 1, params.mLeftKeys);
+ assertEquals("4 key fix 3 M0 right", 2, params.mRightKeys);
+ assertEquals("4 key fix 3 M0 [1]", -1, params.getColumnPos(0));
+ assertEquals("4 key fix 3 M0 <2>", 0, params.getColumnPos(1));
+ assertEquals("4 key fix 3 M0 [3]", 1, params.getColumnPos(2));
+ assertEquals("4 key fix 3 M0 [4]", 0, params.getColumnPos(3));
+ assertEquals("4 key fix 3 M0 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("4 key fix 3 M0 default", WIDTH * 1, params.getDefaultKeyCoordX());
+ }
+
+ // |[4]
+ // |<1> [2] [3]
+ public void testLayout4KeyFix3L0() {
+ MoreKeysKeyboardParams params = createParams(4, 3, XPOS_L0);
+ assertEquals("4 key fix 3 L0 columns", 3, params.mNumColumns);
+ assertEquals("4 key fix 3 L0 rows", 2, params.mNumRows);
+ assertEquals("4 key fix 3 L0 left", 0, params.mLeftKeys);
+ assertEquals("4 key fix 3 L0 right", 3, params.mRightKeys);
+ assertEquals("4 key fix 3 L0 <1>", 0, params.getColumnPos(0));
+ assertEquals("4 key fix 3 L0 [2]", 1, params.getColumnPos(1));
+ assertEquals("4 key fix 3 L0 [3]", 2, params.getColumnPos(2));
+ assertEquals("4 key fix 3 L0 [4]", 0, params.getColumnPos(3));
+ assertEquals("4 key fix 3 L0 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("4 key fix 3 L0 default", WIDTH * 0, params.getDefaultKeyCoordX());
+ }
+
+ // |___ [4]
+ // |___ <1> [2] [3]
+ public void testLayout4KeyFix3L1() {
+ MoreKeysKeyboardParams params = createParams(4, 3, XPOS_L1);
+ assertEquals("4 key fix 3 L1 columns", 3, params.mNumColumns);
+ assertEquals("4 key fix 3 L1 rows", 2, params.mNumRows);
+ assertEquals("4 key fix 3 L1 left", 0, params.mLeftKeys);
+ assertEquals("4 key fix 3 L1 right", 3, params.mRightKeys);
+ assertEquals("4 key fix 3 L1 <1>", 0, params.getColumnPos(0));
+ assertEquals("4 key fix 3 L1 [2]", 1, params.getColumnPos(1));
+ assertEquals("4 key fix 3 L1 [3]", 2, params.getColumnPos(2));
+ assertEquals("4 key fix 3 L1 [4]", 0, params.getColumnPos(3));
+ assertEquals("4 key fix 3 L1 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("4 key fix 3 L1 default", WIDTH * 0, params.getDefaultKeyCoordX());
+ }
+
+ // |___ ___ [4]
+ // |___ ___ [1] <2> [3]
+ public void testLayout4KeyFix3L2() {
+ MoreKeysKeyboardParams params = createParams(4, 3, XPOS_L2);
+ assertEquals("4 key fix 3 L2 columns", 3, params.mNumColumns);
+ assertEquals("4 key fix 3 L2 rows", 2, params.mNumRows);
+ assertEquals("4 key fix 3 L2 left", 1, params.mLeftKeys);
+ assertEquals("4 key fix 3 L2 right", 2, params.mRightKeys);
+ assertEquals("4 key fix 3 L2 [1]", -1, params.getColumnPos(0));
+ assertEquals("4 key fix 3 L2 <2>", 0, params.getColumnPos(1));
+ assertEquals("4 key fix 3 L2 [3]", 1, params.getColumnPos(2));
+ assertEquals("4 key fix 3 L2 [4]", 0, params.getColumnPos(3));
+ assertEquals("4 key fix 3 L2 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("4 key fix 3 L2 default", WIDTH * 1, params.getDefaultKeyCoordX());
+ }
+
+ // [4]|
+ // [1] [2] <3>|
+ public void testLayout4KeyFix3R0() {
+ MoreKeysKeyboardParams params = createParams(4, 3, XPOS_R0);
+ assertEquals("4 key fix 3 R0 columns", 3, params.mNumColumns);
+ assertEquals("4 key fix 3 R0 rows", 2, params.mNumRows);
+ assertEquals("4 key fix 3 R0 left", 2, params.mLeftKeys);
+ assertEquals("4 key fix 3 R0 right", 1, params.mRightKeys);
+ assertEquals("4 key fix 3 R0 [1]", -2, params.getColumnPos(0));
+ assertEquals("4 key fix 3 R0 [2]", -1, params.getColumnPos(1));
+ assertEquals("4 key fix 3 R0 <3>", 0, params.getColumnPos(2));
+ assertEquals("4 key fix 3 R0 [4]", 0, params.getColumnPos(3));
+ assertEquals("4 key fix 3 R0 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("4 key fix 3 R0 default", WIDTH * 2, params.getDefaultKeyCoordX());
+ }
+
+ // [4] ___|
+ // [1] [2] <3> ___|
+ public void testLayout4KeyFix3R1() {
+ MoreKeysKeyboardParams params = createParams(4, 3, XPOS_R1);
+ assertEquals("4 key fix 3 R1 columns", 3, params.mNumColumns);
+ assertEquals("4 key fix 3 R1 rows", 2, params.mNumRows);
+ assertEquals("4 key fix 3 R1 left", 2, params.mLeftKeys);
+ assertEquals("4 key fix 3 R1 right", 1, params.mRightKeys);
+ assertEquals("4 key fix 3 R1 [1]", -2, params.getColumnPos(0));
+ assertEquals("4 key fix 3 R1 [2]", -1, params.getColumnPos(1));
+ assertEquals("4 key fix 3 R1 <3>", 0, params.getColumnPos(2));
+ assertEquals("4 key fix 3 R1 [4]", 0, params.getColumnPos(3));
+ assertEquals("4 key fix 3 R1 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("4 key fix 3 R1 default", WIDTH * 2, params.getDefaultKeyCoordX());
+ }
+
+ // [4] ___|
+ // [1] <2> [3] ___|
+ public void testLayout4KeyFix3R2() {
+ MoreKeysKeyboardParams params = createParams(4, 3, XPOS_R2);
+ assertEquals("4 key fix 3 R2 columns", 3, params.mNumColumns);
+ assertEquals("4 key fix 3 R2 rows", 2, params.mNumRows);
+ assertEquals("4 key fix 3 R2 left", 1, params.mLeftKeys);
+ assertEquals("4 key fix 3 R2 right", 2, params.mRightKeys);
+ assertEquals("4 key fix 3 R2 [1]", -1, params.getColumnPos(0));
+ assertEquals("4 key fix 3 R2 <2>", 0, params.getColumnPos(1));
+ assertEquals("4 key fix 3 R2 [3]", 1, params.getColumnPos(2));
+ assertEquals("4 key fix 3 R2 [4]", 0, params.getColumnPos(3));
+ assertEquals("4 key fix 3 R2 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("4 key fix 3 R2 default", WIDTH * 1, params.getDefaultKeyCoordX());
+ }
+
+ // [4] [5]
+ // [1] <2> [3]
+ public void testLayout5KeyFix3M0() {
+ MoreKeysKeyboardParams params = createParams(5, 3, XPOS_M0);
+ assertEquals("5 key fix 3 M0 columns", 3, params.mNumColumns);
+ assertEquals("5 key fix 3 M0 rows", 2, params.mNumRows);
+ assertEquals("5 key fix 3 M0 left", 1, params.mLeftKeys);
+ assertEquals("5 key fix 3 M0 right", 2, params.mRightKeys);
+ assertEquals("5 key fix 3 M0 [1]", -1, params.getColumnPos(0));
+ assertEquals("5 key fix 3 M0 <2>", 0, params.getColumnPos(1));
+ assertEquals("5 key fix 3 M0 [3]", 1, params.getColumnPos(2));
+ assertEquals("5 key fix 3 M0 [4]", 0, params.getColumnPos(3));
+ assertEquals("5 key fix 3 M0 [5]", 1, params.getColumnPos(4));
+ assertEquals("5 key fix 3 M0 adjust", -1, params.mTopRowAdjustment);
+ assertEquals("5 key fix 3 M0 default", WIDTH * 1, params.getDefaultKeyCoordX());
+ }
+
+ // |[4] [5]
+ // |<1> [2] [3]
+ public void testLayout5KeyFix3L0() {
+ MoreKeysKeyboardParams params = createParams(5, 3, XPOS_L0);
+ assertEquals("5 key fix 3 L0 columns", 3, params.mNumColumns);
+ assertEquals("5 key fix 3 L0 rows", 2, params.mNumRows);
+ assertEquals("5 key fix 3 L0 left", 0, params.mLeftKeys);
+ assertEquals("5 key fix 3 L0 right", 3, params.mRightKeys);
+ assertEquals("5 key fix 3 L0 <1>", 0, params.getColumnPos(0));
+ assertEquals("5 key fix 3 L0 [2]", 1, params.getColumnPos(1));
+ assertEquals("5 key fix 3 L0 [3]", 2, params.getColumnPos(2));
+ assertEquals("5 key fix 3 L0 [4]", 0, params.getColumnPos(3));
+ assertEquals("5 key fix 3 L0 [5]", 1, params.getColumnPos(4));
+ assertEquals("5 key fix 3 L0 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("5 key fix 3 L0 default", WIDTH * 0, params.getDefaultKeyCoordX());
+ }
+
+ // |___ [4] [5]
+ // |___ <1> [2] [3]
+ public void testLayout5KeyFix3L1() {
+ MoreKeysKeyboardParams params = createParams(5, 3, XPOS_L1);
+ assertEquals("5 key fix 3 L1 columns", 3, params.mNumColumns);
+ assertEquals("5 key fix 3 L1 rows", 2, params.mNumRows);
+ assertEquals("5 key fix 3 L1 left", 0, params.mLeftKeys);
+ assertEquals("5 key fix 3 L1 right", 3, params.mRightKeys);
+ assertEquals("5 key fix 3 L1 <1>", 0, params.getColumnPos(0));
+ assertEquals("5 key fix 3 L1 [2]", 1, params.getColumnPos(1));
+ assertEquals("5 key fix 3 L1 [3]", 2, params.getColumnPos(2));
+ assertEquals("5 key fix 3 L1 [4]", 0, params.getColumnPos(3));
+ assertEquals("5 key fix 3 L1 [5]", 1, params.getColumnPos(4));
+ assertEquals("5 key fix 3 L1 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("5 key fix 3 L1 default", WIDTH * 0, params.getDefaultKeyCoordX());
+ }
+
+ // |___ [4] [5]
+ // |___ [1] <2> [3]
+ public void testLayout5KeyFix3L2() {
+ MoreKeysKeyboardParams params = createParams(5, 3, XPOS_L2);
+ assertEquals("5 key fix 3 L2 columns", 3, params.mNumColumns);
+ assertEquals("5 key fix 3 L2 rows", 2, params.mNumRows);
+ assertEquals("5 key fix 3 L2 left", 1, params.mLeftKeys);
+ assertEquals("5 key fix 3 L2 right", 2, params.mRightKeys);
+ assertEquals("5 key fix 3 L2 [1]", -1, params.getColumnPos(0));
+ assertEquals("5 key fix 3 L2 <2>", 0, params.getColumnPos(1));
+ assertEquals("5 key fix 3 L2 [3]", 1, params.getColumnPos(2));
+ assertEquals("5 key fix 3 L2 [4]", 0, params.getColumnPos(3));
+ assertEquals("5 key fix 3 L2 [5]", 1, params.getColumnPos(4));
+ assertEquals("5 key fix 3 L2 adjust", -1, params.mTopRowAdjustment);
+ assertEquals("5 key fix 3 L2 default", WIDTH * 1, params.getDefaultKeyCoordX());
+ }
+
+ // [4] [5]|
+ // [1] [2] <3>|
+ public void testLayout5KeyFix3R0() {
+ MoreKeysKeyboardParams params = createParams(5, 3, XPOS_R0);
+ assertEquals("5 key fix 3 R0 columns", 3, params.mNumColumns);
+ assertEquals("5 key fix 3 R0 rows", 2, params.mNumRows);
+ assertEquals("5 key fix 3 R0 left", 2, params.mLeftKeys);
+ assertEquals("5 key fix 3 R0 right", 1, params.mRightKeys);
+ assertEquals("5 key fix 3 R0 [1]", -2, params.getColumnPos(0));
+ assertEquals("5 key fix 3 R0 [2]", -1, params.getColumnPos(1));
+ assertEquals("5 key fix 3 R0 <3>", 0, params.getColumnPos(2));
+ assertEquals("5 key fix 3 R0 [4]", -1, params.getColumnPos(3));
+ assertEquals("5 key fix 3 R0 [5]", 0, params.getColumnPos(4));
+ assertEquals("5 key fix 3 R0 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("5 key fix 3 R0 default", WIDTH * 2, params.getDefaultKeyCoordX());
+ }
+
+ // [4] [5] ___|
+ // [1] [2] <3> ___|
+ public void testLayout5KeyFix3R1() {
+ MoreKeysKeyboardParams params = createParams(5, 3, XPOS_R1);
+ assertEquals("5 key fix 3 R1 columns", 3, params.mNumColumns);
+ assertEquals("5 key fix 3 R1 rows", 2, params.mNumRows);
+ assertEquals("5 key fix 3 R1 left", 2, params.mLeftKeys);
+ assertEquals("5 key fix 3 R1 right", 1, params.mRightKeys);
+ assertEquals("5 key fix 3 R1 [1]", -2, params.getColumnPos(0));
+ assertEquals("5 key fix 3 R1 [2]", -1, params.getColumnPos(1));
+ assertEquals("5 key fix 3 R1 <3>", 0, params.getColumnPos(2));
+ assertEquals("5 key fix 3 R1 [4]", -1, params.getColumnPos(3));
+ assertEquals("5 key fix 3 R1 [5]", 0, params.getColumnPos(4));
+ assertEquals("5 key fix 3 R1 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("5 key fix 3 R1 default", WIDTH * 2, params.getDefaultKeyCoordX());
+ }
+
+ // [4] [5] ___|
+ // [1] <2> [3] ___|
+ public void testLayout5KeyFix3R2() {
+ MoreKeysKeyboardParams params = createParams(5, 3, XPOS_R2);
+ assertEquals("5 key fix 3 R2 columns", 3, params.mNumColumns);
+ assertEquals("5 key fix 3 R2 rows", 2, params.mNumRows);
+ assertEquals("5 key fix 3 R2 left", 1, params.mLeftKeys);
+ assertEquals("5 key fix 3 R2 right", 2, params.mRightKeys);
+ assertEquals("5 key fix 3 R2 [1]", -1, params.getColumnPos(0));
+ assertEquals("5 key fix 3 R2 <2>", 0, params.getColumnPos(1));
+ assertEquals("5 key fix 3 R2 [3]", 1, params.getColumnPos(2));
+ assertEquals("5 key fix 3 R2 [4]", 0, params.getColumnPos(3));
+ assertEquals("5 key fix 3 R2 [5]", 1, params.getColumnPos(4));
+ assertEquals("5 key fix 3 R2 adjust", -1, params.mTopRowAdjustment);
+ assertEquals("5 key fix 3 R2 default", WIDTH * 1, params.getDefaultKeyCoordX());
+ }
+
+ // [4] [5] [6]
+ // [1] <2> [3]
+ public void testLayout6KeyFix3M0() {
+ MoreKeysKeyboardParams params = createParams(6, 3, XPOS_M0);
+ assertEquals("6 key fix 3 M0 columns", 3, params.mNumColumns);
+ assertEquals("6 key fix 3 M0 rows", 2, params.mNumRows);
+ assertEquals("6 key fix 3 M0 left", 1, params.mLeftKeys);
+ assertEquals("6 key fix 3 M0 right", 2, params.mRightKeys);
+ assertEquals("6 key fix 3 M0 [1]", -1, params.getColumnPos(0));
+ assertEquals("6 key fix 3 M0 <2>", 0, params.getColumnPos(1));
+ assertEquals("6 key fix 3 M0 [3]", 1, params.getColumnPos(2));
+ assertEquals("6 key fix 3 M0 [4]", -1, params.getColumnPos(3));
+ assertEquals("6 key fix 3 M0 [5]", 0, params.getColumnPos(4));
+ assertEquals("6 key fix 3 M0 [6]", 1, params.getColumnPos(5));
+ assertEquals("6 key fix 3 M0 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("6 key fix 3 M0 default", WIDTH * 1, params.getDefaultKeyCoordX());
+ }
+
+ // |[4] [5] [6]
+ // |<1> [2] [3]
+ public void testLayout6KeyFix3L0() {
+ MoreKeysKeyboardParams params = createParams(6, 3, XPOS_L0);
+ assertEquals("6 key fix 3 L0 columns", 3, params.mNumColumns);
+ assertEquals("6 key fix 3 L0 rows", 2, params.mNumRows);
+ assertEquals("6 key fix 3 L0 left", 0, params.mLeftKeys);
+ assertEquals("6 key fix 3 L0 right", 3, params.mRightKeys);
+ assertEquals("6 key fix 3 L0 <1>", 0, params.getColumnPos(0));
+ assertEquals("6 key fix 3 L0 [2]", 1, params.getColumnPos(1));
+ assertEquals("6 key fix 3 L0 [3]", 2, params.getColumnPos(2));
+ assertEquals("6 key fix 3 L0 [4]", 0, params.getColumnPos(3));
+ assertEquals("6 key fix 3 L0 [5]", 1, params.getColumnPos(4));
+ assertEquals("6 key fix 3 L0 [6]", 2, params.getColumnPos(5));
+ assertEquals("6 key fix 3 L0 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("6 key fix 3 L0 default", WIDTH * 0, params.getDefaultKeyCoordX());
+ }
+
+ // |___ [4] [5] [6]
+ // |___ <1> [2] [3]
+ public void testLayout6KeyFix3L1() {
+ MoreKeysKeyboardParams params = createParams(6, 3, XPOS_L1);
+ assertEquals("6 key fix 3 L1 columns", 3, params.mNumColumns);
+ assertEquals("6 key fix 3 L1 rows", 2, params.mNumRows);
+ assertEquals("6 key fix 3 L1 left", 0, params.mLeftKeys);
+ assertEquals("6 key fix 3 L1 right", 3, params.mRightKeys);
+ assertEquals("6 key fix 3 L1 <1>", 0, params.getColumnPos(0));
+ assertEquals("6 key fix 3 L1 [2]", 1, params.getColumnPos(1));
+ assertEquals("6 key fix 3 L1 [3]", 2, params.getColumnPos(2));
+ assertEquals("6 key fix 3 L1 [4]", 0, params.getColumnPos(3));
+ assertEquals("6 key fix 3 L1 [5]", 1, params.getColumnPos(4));
+ assertEquals("6 key fix 3 L1 [6]", 2, params.getColumnPos(5));
+ assertEquals("6 key fix 3 L1 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("6 key fix 3 L1 default", WIDTH * 0, params.getDefaultKeyCoordX());
+ }
+
+ // |___ [4] [5] [6]
+ // |___ [1] <2> [3]
+ public void testLayout6KeyFix3L2() {
+ MoreKeysKeyboardParams params = createParams(6, 3, XPOS_L2);
+ assertEquals("6 key fix 3 L2 columns", 3, params.mNumColumns);
+ assertEquals("6 key fix 3 L2 rows", 2, params.mNumRows);
+ assertEquals("6 key fix 3 L2 left", 1, params.mLeftKeys);
+ assertEquals("6 key fix 3 L2 right", 2, params.mRightKeys);
+ assertEquals("6 key fix 3 L2 [1]", -1, params.getColumnPos(0));
+ assertEquals("6 key fix 3 L2 <2>", 0, params.getColumnPos(1));
+ assertEquals("6 key fix 3 L2 [3]", 1, params.getColumnPos(2));
+ assertEquals("6 key fix 3 L2 [4]", -1, params.getColumnPos(3));
+ assertEquals("6 key fix 3 L2 [5]", 0, params.getColumnPos(4));
+ assertEquals("6 key fix 3 L2 [6]", 1, params.getColumnPos(5));
+ assertEquals("6 key fix 3 L2 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("6 key fix 3 L2 default", WIDTH * 1, params.getDefaultKeyCoordX());
+ }
+
+ // [4] [5] [6]|
+ // [1] [2] <3>|
+ public void testLayout6KeyFix3R0() {
+ MoreKeysKeyboardParams params = createParams(6, 3, XPOS_R0);
+ assertEquals("6 key fix 3 R0 columns", 3, params.mNumColumns);
+ assertEquals("6 key fix 3 R0 rows", 2, params.mNumRows);
+ assertEquals("6 key fix 3 R0 left", 2, params.mLeftKeys);
+ assertEquals("6 key fix 3 R0 right", 1, params.mRightKeys);
+ assertEquals("6 key fix 3 R0 [1]", -2, params.getColumnPos(0));
+ assertEquals("6 key fix 3 R0 [2]", -1, params.getColumnPos(1));
+ assertEquals("6 key fix 3 R0 <3>", 0, params.getColumnPos(2));
+ assertEquals("6 key fix 3 R0 [4]", -2, params.getColumnPos(3));
+ assertEquals("6 key fix 3 R0 [5]", -1, params.getColumnPos(4));
+ assertEquals("6 key fix 3 R0 [6]", 0, params.getColumnPos(5));
+ assertEquals("6 key fix 3 R0 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("6 key fix 3 R0 default", WIDTH * 2, params.getDefaultKeyCoordX());
+ }
+
+ // [4] [5] [6] ___|
+ // [1] [2] <3> ___|
+ public void testLayout6KeyFix3R1() {
+ MoreKeysKeyboardParams params = createParams(6, 3, XPOS_R1);
+ assertEquals("6 key fix 3 R1 columns", 3, params.mNumColumns);
+ assertEquals("6 key fix 3 R1 rows", 2, params.mNumRows);
+ assertEquals("6 key fix 3 R1 left", 2, params.mLeftKeys);
+ assertEquals("6 key fix 3 R1 right", 1, params.mRightKeys);
+ assertEquals("6 key fix 3 R1 [1]", -2, params.getColumnPos(0));
+ assertEquals("6 key fix 3 R1 [2]", -1, params.getColumnPos(1));
+ assertEquals("6 key fix 3 R1 <3>", 0, params.getColumnPos(2));
+ assertEquals("6 key fix 3 R1 [4]", -2, params.getColumnPos(3));
+ assertEquals("6 key fix 3 R1 [5]", -1, params.getColumnPos(4));
+ assertEquals("6 key fix 3 R1 [6]", 0, params.getColumnPos(5));
+ assertEquals("6 key fix 3 R1 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("6 key fix 3 R1 default", WIDTH * 2, params.getDefaultKeyCoordX());
+ }
+
+ // [4] [5] [6] ___|
+ // [1] <2> [3] ___|
+ public void testLayout6KeyFix3R2() {
+ MoreKeysKeyboardParams params = createParams(6, 3, XPOS_R2);
+ assertEquals("6 key fix 3 R2 columns", 3, params.mNumColumns);
+ assertEquals("6 key fix 3 R2 rows", 2, params.mNumRows);
+ assertEquals("6 key fix 3 R2 left", 1, params.mLeftKeys);
+ assertEquals("6 key fix 3 R2 right", 2, params.mRightKeys);
+ assertEquals("6 key fix 3 R2 [1]", -1, params.getColumnPos(0));
+ assertEquals("6 key fix 3 R2 <2>", 0, params.getColumnPos(1));
+ assertEquals("6 key fix 3 R2 [1]", 1, params.getColumnPos(2));
+ assertEquals("6 key fix 3 R2 [4]", -1, params.getColumnPos(3));
+ assertEquals("6 key fix 3 R2 [5]", 0, params.getColumnPos(4));
+ assertEquals("6 key fix 3 R2 [6]", 1, params.getColumnPos(5));
+ assertEquals("6 key fix 3 R2 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("6 key fix 3 R2 default", WIDTH * 1, params.getDefaultKeyCoordX());
+ }
+
+ // <1> [2] [3] [4]
+ public void testLayout4KeyFix5M0() {
+ MoreKeysKeyboardParams params = createParams(4, 5, XPOS_M0);
+ assertEquals("4 key fix 5 columns", 4, params.mNumColumns);
+ assertEquals("4 key fix 5 rows", 1, params.mNumRows);
+ assertEquals("4 key fix 5 left", 1, params.mLeftKeys);
+ assertEquals("4 key fix 5 right", 3, params.mRightKeys);
+ assertEquals("4 key fix 5 <1>", -1, params.getColumnPos(0));
+ assertEquals("4 key fix 5 [2]", 0, params.getColumnPos(1));
+ assertEquals("4 key fix 5 [3]", 1, params.getColumnPos(2));
+ assertEquals("4 key fix 5 [4]", 2, params.getColumnPos(3));
+ assertEquals("4 key fix 5 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("4 key fix 5 default", WIDTH * 1, params.getDefaultKeyCoordX());
+ }
+
+ // |<1> [2] [3] [4]
+ public void testLayout4KeyFix5L0() {
+ MoreKeysKeyboardParams params = createParams(4, 5, XPOS_L0);
+ assertEquals("4 key fix 5 L0 columns", 4, params.mNumColumns);
+ assertEquals("4 key fix 5 L0 rows", 1, params.mNumRows);
+ assertEquals("4 key fix 5 L0 left", 0, params.mLeftKeys);
+ assertEquals("4 key fix 5 L0 right", 4, params.mRightKeys);
+ assertEquals("4 key fix 5 L0 <1>", 0, params.getColumnPos(0));
+ assertEquals("4 key fix 5 L0 [2]", 1, params.getColumnPos(1));
+ assertEquals("4 key fix 5 L0 [3]", 2, params.getColumnPos(2));
+ assertEquals("4 key fix 5 L0 [4]", 3, params.getColumnPos(3));
+ assertEquals("4 key fix 5 L0 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("4 key fix 5 L0 default", WIDTH * 0, params.getDefaultKeyCoordX());
+ }
+
+ // |___ <1> [2] [3] [4]
+ public void testLayout4KeyFix5L1() {
+ MoreKeysKeyboardParams params = createParams(4, 5, XPOS_L1);
+ assertEquals("4 key fix 5 L1 columns", 4, params.mNumColumns);
+ assertEquals("4 key fix 5 L1 rows", 1, params.mNumRows);
+ assertEquals("4 key fix 5 L1 left", 0, params.mLeftKeys);
+ assertEquals("4 key fix 5 L1 right", 4, params.mRightKeys);
+ assertEquals("4 key fix 5 L1 <1>", 0, params.getColumnPos(0));
+ assertEquals("4 key fix 5 L1 [2]", 1, params.getColumnPos(1));
+ assertEquals("4 key fix 5 L1 [3]", 2, params.getColumnPos(2));
+ assertEquals("4 key fix 5 L1 [4]", 3, params.getColumnPos(3));
+ assertEquals("4 key fix 5 L1 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("4 key fix 5 L1 default", WIDTH * 0, params.getDefaultKeyCoordX());
+ }
+
+ // |___ [1] <2> [3] [4]
+ public void testLayout4KeyFix5L2() {
+ MoreKeysKeyboardParams params = createParams(4, 5, XPOS_L2);
+ assertEquals("4 key fix 5 L2 columns", 4, params.mNumColumns);
+ assertEquals("4 key fix 5 L2 rows", 1, params.mNumRows);
+ assertEquals("4 key fix 5 L2 left", 1, params.mLeftKeys);
+ assertEquals("4 key fix 5 L2 right", 3, params.mRightKeys);
+ assertEquals("4 key fix 5 L2 [1]", -1, params.getColumnPos(0));
+ assertEquals("4 key fix 5 L2 <2>", 0, params.getColumnPos(1));
+ assertEquals("4 key fix 5 L2 [3]", 1, params.getColumnPos(2));
+ assertEquals("4 key fix 5 L2 [4]", 2, params.getColumnPos(3));
+ assertEquals("4 key fix 5 L2 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("4 key fix 5 L2 default", WIDTH * 1, params.getDefaultKeyCoordX());
+ }
+
+ // [1] [2] [3] <4>|
+ public void testLayout4KeyFix5R0() {
+ MoreKeysKeyboardParams params = createParams(4, 5, XPOS_R0);
+ assertEquals("4 key fix 5 R0 columns", 4, params.mNumColumns);
+ assertEquals("4 key fix 5 R0 rows", 1, params.mNumRows);
+ assertEquals("4 key fix 5 R0 left", 3, params.mLeftKeys);
+ assertEquals("4 key fix 5 R0 right", 1, params.mRightKeys);
+ assertEquals("4 key fix 5 R0 [1]", -3, params.getColumnPos(0));
+ assertEquals("4 key fix 5 R0 [2]", -2, params.getColumnPos(1));
+ assertEquals("4 key fix 5 R0 [3]", -1, params.getColumnPos(2));
+ assertEquals("4 key fix 5 R0 <4>", 0, params.getColumnPos(3));
+ assertEquals("4 key fix 5 R0 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("4 key fix 5 R0 default", WIDTH * 3, params.getDefaultKeyCoordX());
+ }
+
+ // [1] [2] [3] <4> ___|
+ public void testLayout4KeyFix5R1() {
+ MoreKeysKeyboardParams params = createParams(4, 5, XPOS_R1);
+ assertEquals("4 key fix 5 R1 columns", 4, params.mNumColumns);
+ assertEquals("4 key fix 5 R1 rows", 1, params.mNumRows);
+ assertEquals("4 key fix 5 R1 left", 3, params.mLeftKeys);
+ assertEquals("4 key fix 5 R1 right", 1, params.mRightKeys);
+ assertEquals("4 key fix 5 R1 [1]", -3, params.getColumnPos(0));
+ assertEquals("4 key fix 5 R1 [2]", -2, params.getColumnPos(1));
+ assertEquals("4 key fix 5 R1 [3]", -1, params.getColumnPos(2));
+ assertEquals("4 key fix 5 R1 <4>", 0, params.getColumnPos(3));
+ assertEquals("4 key fix 5 R1 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("4 key fix 5 R1 default", WIDTH * 3, params.getDefaultKeyCoordX());
+ }
+
+ // [1] [2] <3> [4] ___|
+ public void testLayout4KeyFix5R2() {
+ MoreKeysKeyboardParams params = createParams(4, 5, XPOS_R2);
+ assertEquals("4 key fix 5 R2 columns", 4, params.mNumColumns);
+ assertEquals("4 key fix 5 R2 rows", 1, params.mNumRows);
+ assertEquals("4 key fix 5 R2 left", 2, params.mLeftKeys);
+ assertEquals("4 key fix 5 R2 right", 2, params.mRightKeys);
+ assertEquals("4 key fix 5 R2 [1]", -2, params.getColumnPos(0));
+ assertEquals("4 key fix 5 R2 [2]", -1, params.getColumnPos(1));
+ assertEquals("4 key fix 5 R2 <3>", 0, params.getColumnPos(2));
+ assertEquals("4 key fix 5 R2 [4]", 1, params.getColumnPos(3));
+ assertEquals("4 key fix 5 R2 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("4 key fix 5 R2 default", WIDTH * 2, params.getDefaultKeyCoordX());
+ }
+
+ // [5]
+ // [1] <2> [3] [4]
+ public void testLayout5KeyFix4M0() {
+ MoreKeysKeyboardParams params = createParams(5, 4, XPOS_M0);
+ assertEquals("5 key fix 4 M0 columns", 4, params.mNumColumns);
+ assertEquals("5 key fix 4 M0 rows", 2, params.mNumRows);
+ assertEquals("5 key fix 4 M0 left", 1, params.mLeftKeys);
+ assertEquals("5 key fix 4 M0 right", 3, params.mRightKeys);
+ assertEquals("5 key fix 4 M0 [1]", -1, params.getColumnPos(0));
+ assertEquals("5 key fix 4 M0 <2>", 0, params.getColumnPos(1));
+ assertEquals("5 key fix 4 M0 [3]", 1, params.getColumnPos(2));
+ assertEquals("5 key fix 4 M0 [4]", 2, params.getColumnPos(3));
+ assertEquals("5 key fix 4 M0 [5]", 0, params.getColumnPos(4));
+ assertEquals("5 key fix 4 M0 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("5 key fix 4 M0 default", WIDTH * 1, params.getDefaultKeyCoordX());
+ }
+
+ // |[5]
+ // |<1> [2] [3] [4]
+ public void testLayout5KeyFix4L0() {
+ MoreKeysKeyboardParams params = createParams(5, 4, XPOS_L0);
+ assertEquals("5 key fix 4 L0 columns", 4, params.mNumColumns);
+ assertEquals("5 key fix 4 L0 rows", 2, params.mNumRows);
+ assertEquals("5 key fix 4 L0 left", 0, params.mLeftKeys);
+ assertEquals("5 key fix 4 L0 right", 4, params.mRightKeys);
+ assertEquals("5 key fix 4 L0 <1>", 0, params.getColumnPos(0));
+ assertEquals("5 key fix 4 L0 [2]", 1, params.getColumnPos(1));
+ assertEquals("5 key fix 4 L0 [3]", 2, params.getColumnPos(2));
+ assertEquals("5 key fix 4 L0 [4]", 3, params.getColumnPos(3));
+ assertEquals("5 key fix 4 L0 [5]", 0, params.getColumnPos(4));
+ assertEquals("5 key fix 4 L0 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("5 key fix 4 L0 default", WIDTH * 0, params.getDefaultKeyCoordX());
+ }
+
+ // |___ [5]
+ // |___ <1> [2] [3] [4]
+ public void testLayout5KeyFix4L1() {
+ MoreKeysKeyboardParams params = createParams(5, 4, XPOS_L1);
+ assertEquals("5 key fix 4 L1 columns", 4, params.mNumColumns);
+ assertEquals("5 key fix 4 L1 rows", 2, params.mNumRows);
+ assertEquals("5 key fix 4 L1 left", 0, params.mLeftKeys);
+ assertEquals("5 key fix 4 L1 right", 4, params.mRightKeys);
+ assertEquals("5 key fix 4 L1 <1>", 0, params.getColumnPos(0));
+ assertEquals("5 key fix 4 L1 [2]", 1, params.getColumnPos(1));
+ assertEquals("5 key fix 4 L1 [3]", 2, params.getColumnPos(2));
+ assertEquals("5 key fix 4 L1 [4]", 3, params.getColumnPos(3));
+ assertEquals("5 key fix 4 L1 [5]", 0, params.getColumnPos(4));
+ assertEquals("5 key fix 4 L1 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("5 key fix 4 L1 default", WIDTH * 0, params.getDefaultKeyCoordX());
+ }
+
+ // |___ [5]
+ // |___ [1] <2> [3] [4]
+ public void testLayout5KeyFix4L2() {
+ MoreKeysKeyboardParams params = createParams(5, 4, XPOS_L2);
+ assertEquals("5 key fix 4 L2 columns", 4, params.mNumColumns);
+ assertEquals("5 key fix 4 L2 rows", 2, params.mNumRows);
+ assertEquals("5 key fix 4 L2 left", 1, params.mLeftKeys);
+ assertEquals("5 key fix 4 L2 right", 3, params.mRightKeys);
+ assertEquals("5 key fix 4 L2 [1]", -1, params.getColumnPos(0));
+ assertEquals("5 key fix 4 L2 <2>", 0, params.getColumnPos(1));
+ assertEquals("5 key fix 4 L2 [3]", 1, params.getColumnPos(2));
+ assertEquals("5 key fix 4 L2 [4]", 2, params.getColumnPos(3));
+ assertEquals("5 key fix 4 L2 [5]", 0, params.getColumnPos(4));
+ assertEquals("5 key fix 4 L2 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("5 key fix 4 L2 default", WIDTH * 1, params.getDefaultKeyCoordX());
+ }
+
+ // [5]|
+ // [1] [2] [3] <4>|
+ public void testLayout5KeyFix4R0() {
+ MoreKeysKeyboardParams params = createParams(5, 4, XPOS_R0);
+ assertEquals("5 key fix 4 R0 columns", 4, params.mNumColumns);
+ assertEquals("5 key fix 4 R0 rows", 2, params.mNumRows);
+ assertEquals("5 key fix 4 R0 left", 3, params.mLeftKeys);
+ assertEquals("5 key fix 4 R0 right", 1, params.mRightKeys);
+ assertEquals("5 key fix 4 R0 [1]", -3, params.getColumnPos(0));
+ assertEquals("5 key fix 4 R0 [2]", -2, params.getColumnPos(1));
+ assertEquals("5 key fix 4 R0 [3]", -1, params.getColumnPos(2));
+ assertEquals("5 key fix 4 R0 <4>", 0, params.getColumnPos(3));
+ assertEquals("5 key fix 4 R0 [5]", 0, params.getColumnPos(4));
+ assertEquals("5 key fix 4 R0 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("5 key fix 4 R0 default", WIDTH * 3, params.getDefaultKeyCoordX());
+ }
+
+ // [5] ___|
+ // [1] [2] [3] <4> ___|
+ public void testLayout5KeyFix4R1() {
+ MoreKeysKeyboardParams params = createParams(5, 4, XPOS_R1);
+ assertEquals("5 key fix 4 R1 columns", 4, params.mNumColumns);
+ assertEquals("5 key fix 4 R1 rows", 2, params.mNumRows);
+ assertEquals("5 key fix 4 R1 left", 3, params.mLeftKeys);
+ assertEquals("5 key fix 4 R1 right", 1, params.mRightKeys);
+ assertEquals("5 key fix 4 R1 [1]", -3, params.getColumnPos(0));
+ assertEquals("5 key fix 4 R1 [2]", -2, params.getColumnPos(1));
+ assertEquals("5 key fix 4 R1 [3]", -1, params.getColumnPos(2));
+ assertEquals("5 key fix 4 R1 [4]", 0, params.getColumnPos(3));
+ assertEquals("5 key fix 4 R1 [5]", 0, params.getColumnPos(4));
+ assertEquals("5 key fix 4 R1 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("5 key fix 4 R1 default", WIDTH * 3, params.getDefaultKeyCoordX());
+ }
+
+ // [5] ___|
+ // [1] [2] <3> [4] ___|
+ public void testLayout5KeyFix4R2() {
+ MoreKeysKeyboardParams params = createParams(5, 4, XPOS_R2);
+ assertEquals("5 key fix 4 R2 columns", 4, params.mNumColumns);
+ assertEquals("5 key fix 4 R2 rows", 2, params.mNumRows);
+ assertEquals("5 key fix 4 R2 left", 2, params.mLeftKeys);
+ assertEquals("5 key fix 4 R2 right", 2, params.mRightKeys);
+ assertEquals("5 key fix 4 R2 [1]", -2, params.getColumnPos(0));
+ assertEquals("5 key fix 4 R2 [2]", -1, params.getColumnPos(1));
+ assertEquals("5 key fix 4 R2 <3>", 0, params.getColumnPos(2));
+ assertEquals("5 key fix 4 R2 [4]", 1, params.getColumnPos(3));
+ assertEquals("5 key fix 4 R2 [5]", 0, params.getColumnPos(4));
+ assertEquals("5 key fix 4 R2 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("5 key fix 4 R2 default", WIDTH * 2, params.getDefaultKeyCoordX());
+ }
+
+ // [5] [6]
+ // [1] <2> [3] [4]
+ public void testLayout6KeyFix4M0() {
+ MoreKeysKeyboardParams params = createParams(6, 4, XPOS_M0);
+ assertEquals("6 key fix 4 M0 columns", 4, params.mNumColumns);
+ assertEquals("6 key fix 4 M0 rows", 2, params.mNumRows);
+ assertEquals("6 key fix 4 M0 left", 1, params.mLeftKeys);
+ assertEquals("6 key fix 4 M0 right", 3, params.mRightKeys);
+ assertEquals("6 key fix 4 M0 [1]", -1, params.getColumnPos(0));
+ assertEquals("6 key fix 4 M0 <2>", 0, params.getColumnPos(1));
+ assertEquals("6 key fix 4 M0 [3]", 1, params.getColumnPos(2));
+ assertEquals("6 key fix 4 M0 [4]", 2, params.getColumnPos(3));
+ assertEquals("6 key fix 4 M0 [5]", 0, params.getColumnPos(4));
+ assertEquals("6 key fix 4 M0 [6]", 1, params.getColumnPos(5));
+ assertEquals("6 key fix 4 M0 adjust", -1, params.mTopRowAdjustment);
+ assertEquals("6 key fix 4 M0 default", WIDTH * 1, params.getDefaultKeyCoordX());
+ }
+
+ // |[5] [6]
+ // |<1> [2] [3] [4]
+ public void testLayout6KeyFix4L0() {
+ MoreKeysKeyboardParams params = createParams(6, 4, XPOS_L0);
+ assertEquals("6 key fix 4 L0 columns", 4, params.mNumColumns);
+ assertEquals("6 key fix 4 L0 rows", 2, params.mNumRows);
+ assertEquals("6 key fix 4 L0 left", 0, params.mLeftKeys);
+ assertEquals("6 key fix 4 L0 right", 4, params.mRightKeys);
+ assertEquals("6 key fix 4 L0 <1>", 0, params.getColumnPos(0));
+ assertEquals("6 key fix 4 L0 [2]", 1, params.getColumnPos(1));
+ assertEquals("6 key fix 4 L0 [3]", 2, params.getColumnPos(2));
+ assertEquals("6 key fix 4 L0 [4]", 3, params.getColumnPos(3));
+ assertEquals("6 key fix 4 L0 [5]", 0, params.getColumnPos(4));
+ assertEquals("6 key fix 4 L0 [6]", 1, params.getColumnPos(5));
+ assertEquals("6 key fix 4 L0 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("6 key fix 4 L0 default", WIDTH * 0, params.getDefaultKeyCoordX());
+ }
+
+ // |___ [5] [6]
+ // |___ <1> [2] [3] [4]
+ public void testLayout6KeyFix4L1() {
+ MoreKeysKeyboardParams params = createParams(6, 4, XPOS_L1);
+ assertEquals("6 key fix 4 L1 columns", 4, params.mNumColumns);
+ assertEquals("6 key fix 4 L1 rows", 2, params.mNumRows);
+ assertEquals("6 key fix 4 L1 left", 0, params.mLeftKeys);
+ assertEquals("6 key fix 4 L1 right", 4, params.mRightKeys);
+ assertEquals("6 key fix 4 L1 <1>", 0, params.getColumnPos(0));
+ assertEquals("6 key fix 4 L1 [2]", 1, params.getColumnPos(1));
+ assertEquals("6 key fix 4 L1 [3]", 2, params.getColumnPos(2));
+ assertEquals("6 key fix 4 L1 [4]", 3, params.getColumnPos(3));
+ assertEquals("6 key fix 4 L1 [5]", 0, params.getColumnPos(4));
+ assertEquals("6 key fix 4 L1 [6]", 1, params.getColumnPos(5));
+ assertEquals("6 key fix 4 L1 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("6 key fix 4 L1 default", WIDTH * 0, params.getDefaultKeyCoordX());
+ }
+
+ // |___ [5] [6]
+ // |___ [1] <2> [3] [4]
+ public void testLayout6KeyFix4L2() {
+ MoreKeysKeyboardParams params = createParams(6, 4, XPOS_L2);
+ assertEquals("6 key fix 4 L2 columns", 4, params.mNumColumns);
+ assertEquals("6 key fix 4 L2 rows", 2, params.mNumRows);
+ assertEquals("6 key fix 4 L2 left", 1, params.mLeftKeys);
+ assertEquals("6 key fix 4 L2 right", 3, params.mRightKeys);
+ assertEquals("6 key fix 4 L2 [1]", -1, params.getColumnPos(0));
+ assertEquals("6 key fix 4 L2 <2>", 0, params.getColumnPos(1));
+ assertEquals("6 key fix 4 L2 [3]", 1, params.getColumnPos(2));
+ assertEquals("6 key fix 4 L2 [4]", 2, params.getColumnPos(3));
+ assertEquals("6 key fix 4 L2 [5]", 0, params.getColumnPos(4));
+ assertEquals("6 key fix 4 L2 [6]", 1, params.getColumnPos(5));
+ assertEquals("6 key fix 4 L2 adjust", -1, params.mTopRowAdjustment);
+ assertEquals("6 key fix 4 L2 default", WIDTH * 1, params.getDefaultKeyCoordX());
+ }
+
+ // [5] [6]|
+ // [1] [2] [3] <4>|
+ public void testLayout6KeyFix4R0() {
+ MoreKeysKeyboardParams params = createParams(6, 4, XPOS_R0);
+ assertEquals("6 key fix 4 R0 columns", 4, params.mNumColumns);
+ assertEquals("6 key fix 4 R0 rows", 2, params.mNumRows);
+ assertEquals("6 key fix 4 R0 left", 3, params.mLeftKeys);
+ assertEquals("6 key fix 4 R0 right", 1, params.mRightKeys);
+ assertEquals("6 key fix 4 R0 [1]", -3, params.getColumnPos(0));
+ assertEquals("6 key fix 4 R0 [2]", -2, params.getColumnPos(1));
+ assertEquals("6 key fix 4 R0 [3]", -1, params.getColumnPos(2));
+ assertEquals("6 key fix 4 R0 <4>", 0, params.getColumnPos(3));
+ assertEquals("6 key fix 4 R0 [5]", -1, params.getColumnPos(4));
+ assertEquals("6 key fix 4 R0 [6]", 0, params.getColumnPos(5));
+ assertEquals("6 key fix 4 R0 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("6 key fix 4 R0 default", WIDTH * 3, params.getDefaultKeyCoordX());
+ }
+
+ // [5] [6] ___|
+ // [1] [2] [3] <4> ___|
+ public void testLayout6KeyFix4R1() {
+ MoreKeysKeyboardParams params = createParams(6, 4, XPOS_R1);
+ assertEquals("6 key fix 4 R1 columns", 4, params.mNumColumns);
+ assertEquals("6 key fix 4 R1 rows", 2, params.mNumRows);
+ assertEquals("6 key fix 4 R1 left", 3, params.mLeftKeys);
+ assertEquals("6 key fix 4 R1 right", 1, params.mRightKeys);
+ assertEquals("6 key fix 4 R1 [1]", -3, params.getColumnPos(0));
+ assertEquals("6 key fix 4 R1 [2]", -2, params.getColumnPos(1));
+ assertEquals("6 key fix 4 R1 [3]", -1, params.getColumnPos(2));
+ assertEquals("6 key fix 4 R1 [4]", 0, params.getColumnPos(3));
+ assertEquals("6 key fix 4 R1 [5]", -1, params.getColumnPos(4));
+ assertEquals("6 key fix 4 R1 [6]", 0, params.getColumnPos(5));
+ assertEquals("6 key fix 4 R1 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("6 key fix 4 R1 default", WIDTH * 3, params.getDefaultKeyCoordX());
+ }
+
+ // [5] [6] ___|
+ // [1] [2] <3> [4] ___|
+ public void testLayout6KeyFix4R2() {
+ MoreKeysKeyboardParams params = createParams(6, 4, XPOS_R2);
+ assertEquals("6 key fix 4 R2 columns", 4, params.mNumColumns);
+ assertEquals("6 key fix 4 R2 rows", 2, params.mNumRows);
+ assertEquals("6 key fix 4 R2 left", 2, params.mLeftKeys);
+ assertEquals("6 key fix 4 R2 right", 2, params.mRightKeys);
+ assertEquals("6 key fix 4 R2 [1]", -2, params.getColumnPos(0));
+ assertEquals("6 key fix 4 R2 [2]", -1, params.getColumnPos(1));
+ assertEquals("6 key fix 4 R2 <3>", 0, params.getColumnPos(2));
+ assertEquals("6 key fix 4 R2 [4]", 1, params.getColumnPos(3));
+ assertEquals("6 key fix 4 R2 [5]", 0, params.getColumnPos(4));
+ assertEquals("6 key fix 4 R2 [6]", 1, params.getColumnPos(5));
+ assertEquals("6 key fix 4 R2 adjust", -1, params.mTopRowAdjustment);
+ assertEquals("6 key fix 4 R2 default", WIDTH * 2, params.getDefaultKeyCoordX());
+ }
+
+ // [5] [6] [7]
+ // [1] <2> [3] [4]
+ public void testLayout7KeyFix4M0() {
+ MoreKeysKeyboardParams params = createParams(7, 4, XPOS_M0);
+ assertEquals("7 key fix 4 M0 columns", 4, params.mNumColumns);
+ assertEquals("7 key fix 4 M0 rows", 2, params.mNumRows);
+ assertEquals("7 key fix 4 M0 left", 1, params.mLeftKeys);
+ assertEquals("7 key fix 4 M0 right", 3, params.mRightKeys);
+ assertEquals("7 key fix 4 M0 [1]", -1, params.getColumnPos(0));
+ assertEquals("7 key fix 4 M0 <2>", 0, params.getColumnPos(1));
+ assertEquals("7 key fix 4 M0 [3]", 1, params.getColumnPos(2));
+ assertEquals("7 key fix 4 M0 [4]", 2, params.getColumnPos(3));
+ assertEquals("7 key fix 4 M0 [5]", -1, params.getColumnPos(4));
+ assertEquals("7 key fix 4 M0 [6]", 0, params.getColumnPos(5));
+ assertEquals("7 key fix 4 M0 [7]", 1, params.getColumnPos(6));
+ assertEquals("7 key fix 4 M0 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("7 key fix 4 M0 default", WIDTH * 1, params.getDefaultKeyCoordX());
+ }
+
+ // |[5] [6] [7]
+ // |<1> [2] [3] [4]
+ public void testLayout7KeyFix4L0() {
+ MoreKeysKeyboardParams params = createParams(7, 4, XPOS_L0);
+ assertEquals("7 key fix 4 L0 columns", 4, params.mNumColumns);
+ assertEquals("7 key fix 4 L0 rows", 2, params.mNumRows);
+ assertEquals("7 key fix 4 L0 left", 0, params.mLeftKeys);
+ assertEquals("7 key fix 4 L0 right", 4, params.mRightKeys);
+ assertEquals("7 key fix 4 L0 <1>", 0, params.getColumnPos(0));
+ assertEquals("7 key fix 4 L0 [2]", 1, params.getColumnPos(1));
+ assertEquals("7 key fix 4 L0 [3]", 2, params.getColumnPos(2));
+ assertEquals("7 key fix 4 L0 [4]", 3, params.getColumnPos(3));
+ assertEquals("7 key fix 4 L0 [5]", 0, params.getColumnPos(4));
+ assertEquals("7 key fix 4 L0 [6]", 1, params.getColumnPos(5));
+ assertEquals("7 key fix 4 L0 [7]", 2, params.getColumnPos(6));
+ assertEquals("7 key fix 4 L0 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("7 key fix 4 L0 default", WIDTH * 0, params.getDefaultKeyCoordX());
+ }
+
+ // |___ [5] [6] [7]
+ // |___ <1> [2] [3] [4]
+ public void testLayout7KeyFix4L1() {
+ MoreKeysKeyboardParams params = createParams(7, 4, XPOS_L1);
+ assertEquals("7 key fix 4 L1 columns", 4, params.mNumColumns);
+ assertEquals("7 key fix 4 L1 rows", 2, params.mNumRows);
+ assertEquals("7 key fix 4 L1 left", 0, params.mLeftKeys);
+ assertEquals("7 key fix 4 L1 right", 4, params.mRightKeys);
+ assertEquals("7 key fix 4 L1 <1>", 0, params.getColumnPos(0));
+ assertEquals("7 key fix 4 L1 [2]", 1, params.getColumnPos(1));
+ assertEquals("7 key fix 4 L1 [3]", 2, params.getColumnPos(2));
+ assertEquals("7 key fix 4 L1 [4]", 3, params.getColumnPos(3));
+ assertEquals("7 key fix 4 L1 [5]", 0, params.getColumnPos(4));
+ assertEquals("7 key fix 4 L1 [6]", 1, params.getColumnPos(5));
+ assertEquals("7 key fix 4 l1 [7]", 2, params.getColumnPos(6));
+ assertEquals("7 key fix 4 L1 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("7 key fix 4 L1 default", WIDTH * 0, params.getDefaultKeyCoordX());
+ }
+
+ // |___ [5] [6] [7]
+ // |___ [1] <2> [3] [4]
+ public void testLayout7KeyFix4L2() {
+ MoreKeysKeyboardParams params = createParams(7, 4, XPOS_L2);
+ assertEquals("7 key fix 4 L2 columns", 4, params.mNumColumns);
+ assertEquals("7 key fix 4 L2 rows", 2, params.mNumRows);
+ assertEquals("7 key fix 4 L2 left", 1, params.mLeftKeys);
+ assertEquals("7 key fix 4 L2 right", 3, params.mRightKeys);
+ assertEquals("7 key fix 4 L2 [1]", -1, params.getColumnPos(0));
+ assertEquals("7 key fix 4 L2 <2>", 0, params.getColumnPos(1));
+ assertEquals("7 key fix 4 L2 [3]", 1, params.getColumnPos(2));
+ assertEquals("7 key fix 4 L2 [4]", 2, params.getColumnPos(3));
+ assertEquals("7 key fix 4 L2 [5]", -1, params.getColumnPos(4));
+ assertEquals("7 key fix 4 L2 [6]", 0, params.getColumnPos(5));
+ assertEquals("7 key fix 4 L2 [7]", 1, params.getColumnPos(6));
+ assertEquals("7 key fix 4 L2 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("7 key fix 4 L2 default", WIDTH * 1, params.getDefaultKeyCoordX());
+ }
+
+ // [5] [6] [7]|
+ // [1] [2] [3] <4>|
+ public void testLayout7KeyFix4R0() {
+ MoreKeysKeyboardParams params = createParams(7, 4, XPOS_R0);
+ assertEquals("7 key fix 4 R0 columns", 4, params.mNumColumns);
+ assertEquals("7 key fix 4 R0 rows", 2, params.mNumRows);
+ assertEquals("7 key fix 4 R0 left", 3, params.mLeftKeys);
+ assertEquals("7 key fix 4 R0 right", 1, params.mRightKeys);
+ assertEquals("7 key fix 4 R0 [1]", -3, params.getColumnPos(0));
+ assertEquals("7 key fix 4 R0 [2]", -2, params.getColumnPos(1));
+ assertEquals("7 key fix 4 R0 [3]", -1, params.getColumnPos(2));
+ assertEquals("7 key fix 4 R0 <4>", 0, params.getColumnPos(3));
+ assertEquals("7 key fix 4 R0 [5]", -2, params.getColumnPos(4));
+ assertEquals("7 key fix 4 R0 [6]", -1, params.getColumnPos(5));
+ assertEquals("7 key fix 4 R0 [7]", 0, params.getColumnPos(6));
+ assertEquals("7 key fix 4 R0 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("7 key fix 4 R0 default", WIDTH * 3, params.getDefaultKeyCoordX());
+ }
+
+ // [5] [6] [7] ___|
+ // [1] [2] [3] <4> ___|
+ public void testLayout7KeyFix4R1() {
+ MoreKeysKeyboardParams params = createParams(7, 4, XPOS_R1);
+ assertEquals("7 key fix 4 R1 columns", 4, params.mNumColumns);
+ assertEquals("7 key fix 4 R1 rows", 2, params.mNumRows);
+ assertEquals("7 key fix 4 R1 left", 3, params.mLeftKeys);
+ assertEquals("7 key fix 4 R1 right", 1, params.mRightKeys);
+ assertEquals("7 key fix 4 R1 [1]", -3, params.getColumnPos(0));
+ assertEquals("7 key fix 4 R1 [2]", -2, params.getColumnPos(1));
+ assertEquals("7 key fix 4 R1 [3]", -1, params.getColumnPos(2));
+ assertEquals("7 key fix 4 R1 <4>", 0, params.getColumnPos(3));
+ assertEquals("7 key fix 4 R1 [5]", -2, params.getColumnPos(4));
+ assertEquals("7 key fix 4 R1 [6]", -1, params.getColumnPos(5));
+ assertEquals("7 key fix 4 R1 [7]", 0, params.getColumnPos(6));
+ assertEquals("7 key fix 4 R1 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("7 key fix 4 R1 default", WIDTH * 3, params.getDefaultKeyCoordX());
+ }
+
+ // [5] [6] [7] ___|
+ // [1] [2] <3> [4] ___|
+ public void testLayout7KeyFix4R2() {
+ MoreKeysKeyboardParams params = createParams(7, 4, XPOS_R2);
+ assertEquals("7 key fix 4 R2 columns", 4, params.mNumColumns);
+ assertEquals("7 key fix 4 R2 rows", 2, params.mNumRows);
+ assertEquals("7 key fix 4 R2 left", 2, params.mLeftKeys);
+ assertEquals("7 key fix 4 R2 right", 2, params.mRightKeys);
+ assertEquals("7 key fix 4 R2 [1]", -2, params.getColumnPos(0));
+ assertEquals("7 key fix 4 R2 [2]", -1, params.getColumnPos(1));
+ assertEquals("7 key fix 4 R2 <3>", 0, params.getColumnPos(2));
+ assertEquals("7 key fix 4 R2 [4]", 1, params.getColumnPos(3));
+ assertEquals("7 key fix 4 R2 [5]", -1, params.getColumnPos(4));
+ assertEquals("7 key fix 4 R2 [6]", 0, params.getColumnPos(5));
+ assertEquals("7 key fix 4 R2 [7]", 1, params.getColumnPos(6));
+ assertEquals("7 key fix 4 R2 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("7 key fix 4 R2 default", WIDTH * 2, params.getDefaultKeyCoordX());
+ }
+
+ // [5] [6] [7] [8]
+ // [1] <2> [3] [4]
+ public void testLayout8KeyFix4M0() {
+ MoreKeysKeyboardParams params = createParams(8, 4, XPOS_M0);
+ assertEquals("8 key fix 4 M0 columns", 4, params.mNumColumns);
+ assertEquals("8 key fix 4 M0 rows", 2, params.mNumRows);
+ assertEquals("8 key fix 4 M0 left", 1, params.mLeftKeys);
+ assertEquals("8 key fix 4 M0 right", 3, params.mRightKeys);
+ assertEquals("8 key fix 4 M0 [1]", -1, params.getColumnPos(0));
+ assertEquals("8 key fix 4 M0 <2>", 0, params.getColumnPos(1));
+ assertEquals("8 key fix 4 M0 [3]", 1, params.getColumnPos(2));
+ assertEquals("8 key fix 4 M0 [4]", 2, params.getColumnPos(3));
+ assertEquals("8 key fix 4 M0 [5]", -1, params.getColumnPos(4));
+ assertEquals("8 key fix 4 M0 [6]", 0, params.getColumnPos(5));
+ assertEquals("8 key fix 4 M0 [7]", 1, params.getColumnPos(6));
+ assertEquals("8 key fix 4 M0 [8]", 2, params.getColumnPos(7));
+ assertEquals("8 key fix 4 M0 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("8 key fix 4 M0 default", WIDTH * 1, params.getDefaultKeyCoordX());
+ }
+
+ // |[5] [6] [7] [8]
+ // |<1> [2] [3] [4]
+ public void testLayout8KeyFix4L0() {
+ MoreKeysKeyboardParams params = createParams(8, 4, XPOS_L0);
+ assertEquals("8 key fix 4 L0 columns", 4, params.mNumColumns);
+ assertEquals("8 key fix 4 L0 rows", 2, params.mNumRows);
+ assertEquals("8 key fix 4 L0 left", 0, params.mLeftKeys);
+ assertEquals("8 key fix 4 L0 right", 4, params.mRightKeys);
+ assertEquals("8 key fix 4 L0 <1>", 0, params.getColumnPos(0));
+ assertEquals("8 key fix 4 L0 [2]", 1, params.getColumnPos(1));
+ assertEquals("8 key fix 4 L0 [3]", 2, params.getColumnPos(2));
+ assertEquals("8 key fix 4 L0 [4]", 3, params.getColumnPos(3));
+ assertEquals("8 key fix 4 L0 [5]", 0, params.getColumnPos(4));
+ assertEquals("8 key fix 4 L0 [6]", 1, params.getColumnPos(5));
+ assertEquals("8 key fix 4 L0 [7]", 2, params.getColumnPos(6));
+ assertEquals("8 key fix 4 L0 [8]", 3, params.getColumnPos(7));
+ assertEquals("8 key fix 4 L0 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("8 key fix 4 L0 default", WIDTH * 0, params.getDefaultKeyCoordX());
+ }
+
+ // |___ [5] [6] [7] [8]
+ // |___ <1> [2] [3] [4]
+ public void testLayout8KeyFix4L1() {
+ MoreKeysKeyboardParams params = createParams(8, 4, XPOS_L1);
+ assertEquals("8 key fix 4 L1 columns", 4, params.mNumColumns);
+ assertEquals("8 key fix 4 L1 rows", 2, params.mNumRows);
+ assertEquals("8 key fix 4 L1 left", 0, params.mLeftKeys);
+ assertEquals("8 key fix 4 L1 right", 4, params.mRightKeys);
+ assertEquals("8 key fix 4 L1 <1>", 0, params.getColumnPos(0));
+ assertEquals("8 key fix 4 L1 [2]", 1, params.getColumnPos(1));
+ assertEquals("8 key fix 4 L1 [3]", 2, params.getColumnPos(2));
+ assertEquals("8 key fix 4 L1 [4]", 3, params.getColumnPos(3));
+ assertEquals("8 key fix 4 L1 [5]", 0, params.getColumnPos(4));
+ assertEquals("8 key fix 4 L1 [6]", 1, params.getColumnPos(5));
+ assertEquals("8 key fix 4 L1 [7]", 2, params.getColumnPos(6));
+ assertEquals("8 key fix 4 L1 [8]", 3, params.getColumnPos(7));
+ assertEquals("8 key fix 4 L1 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("8 key fix 4 L1 default", WIDTH * 0, params.getDefaultKeyCoordX());
+ }
+
+ // |___ [5] [6] [7] [8]
+ // |___ [1] <2> [3] [4]
+ public void testLayout8KeyFix4L2() {
+ MoreKeysKeyboardParams params = createParams(8, 4, XPOS_L2);
+ assertEquals("8 key fix 4 L2 columns", 4, params.mNumColumns);
+ assertEquals("8 key fix 4 L2 rows", 2, params.mNumRows);
+ assertEquals("8 key fix 4 L2 left", 1, params.mLeftKeys);
+ assertEquals("8 key fix 4 L2 right", 3, params.mRightKeys);
+ assertEquals("8 key fix 4 L2 [1]", -1, params.getColumnPos(0));
+ assertEquals("8 key fix 4 L2 <2>", 0, params.getColumnPos(1));
+ assertEquals("8 key fix 4 L2 [3]", 1, params.getColumnPos(2));
+ assertEquals("8 key fix 4 L2 [4]", 2, params.getColumnPos(3));
+ assertEquals("8 key fix 4 L2 [5]", -1, params.getColumnPos(4));
+ assertEquals("8 key fix 4 L2 [6]", 0, params.getColumnPos(5));
+ assertEquals("8 key fix 4 L2 [7]", 1, params.getColumnPos(6));
+ assertEquals("8 key fix 4 L2 [8]", 2, params.getColumnPos(7));
+ assertEquals("8 key fix 4 L2 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("8 key fix 4 L2 default", WIDTH * 1, params.getDefaultKeyCoordX());
+ }
+
+ // [5] [6] [7] [8]|
+ // [1] [2] [3] <4>|
+ public void testLayout8KeyFix4R0() {
+ MoreKeysKeyboardParams params = createParams(8, 4, XPOS_R0);
+ assertEquals("8 key fix 4 R0 columns", 4, params.mNumColumns);
+ assertEquals("8 key fix 4 R0 rows", 2, params.mNumRows);
+ assertEquals("8 key fix 4 R0 left", 3, params.mLeftKeys);
+ assertEquals("8 key fix 4 R0 right", 1, params.mRightKeys);
+ assertEquals("8 key fix 4 R0 [1]", -3, params.getColumnPos(0));
+ assertEquals("8 key fix 4 R0 [2]", -2, params.getColumnPos(1));
+ assertEquals("8 key fix 4 R0 [3]", -1, params.getColumnPos(2));
+ assertEquals("8 key fix 4 R0 <4>", 0, params.getColumnPos(3));
+ assertEquals("8 key fix 4 R0 [5]", -3, params.getColumnPos(4));
+ assertEquals("8 key fix 4 R0 [6]", -2, params.getColumnPos(5));
+ assertEquals("8 key fix 4 R0 [7]", -1, params.getColumnPos(6));
+ assertEquals("8 key fix 4 R0 [8]", 0, params.getColumnPos(7));
+ assertEquals("8 key fix 4 R0 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("8 key fix 4 R0 default", WIDTH * 3, params.getDefaultKeyCoordX());
+ }
+
+ // [5] [6] [7] [8] ___|
+ // [1] [2] [3] <4> ___|
+ public void testLayout8KeyFix4R1() {
+ MoreKeysKeyboardParams params = createParams(8, 4, XPOS_R1);
+ assertEquals("8 key fix 4 R1 columns", 4, params.mNumColumns);
+ assertEquals("8 key fix 4 R1 rows", 2, params.mNumRows);
+ assertEquals("8 key fix 4 R1 left", 3, params.mLeftKeys);
+ assertEquals("8 key fix 4 R1 right", 1, params.mRightKeys);
+ assertEquals("8 key fix 4 R1 [1]", -3, params.getColumnPos(0));
+ assertEquals("8 key fix 4 R1 [2]", -2, params.getColumnPos(1));
+ assertEquals("8 key fix 4 R1 [3]", -1, params.getColumnPos(2));
+ assertEquals("8 key fix 4 R1 <4>", 0, params.getColumnPos(3));
+ assertEquals("8 key fix 4 R1 [5]", -3, params.getColumnPos(4));
+ assertEquals("8 key fix 4 R1 [6]", -2, params.getColumnPos(5));
+ assertEquals("8 key fix 4 R1 [7]", -1, params.getColumnPos(6));
+ assertEquals("8 key fix 4 R1 [8]", 0, params.getColumnPos(7));
+ assertEquals("8 key fix 4 R1 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("8 key fix 4 R1 default", WIDTH * 3, params.getDefaultKeyCoordX());
+ }
+
+ // [5] [6] [7] [8] ___|
+ // [1] [2] <3> [4] ___|
+ public void testLayout8KeyFix4R2() {
+ MoreKeysKeyboardParams params = createParams(8, 4, XPOS_R2);
+ assertEquals("8 key fix 4 R2 columns", 4, params.mNumColumns);
+ assertEquals("8 key fix 4 R2 rows", 2, params.mNumRows);
+ assertEquals("8 key fix 4 R2 left", 2, params.mLeftKeys);
+ assertEquals("8 key fix 4 R2 right", 2, params.mRightKeys);
+ assertEquals("8 key fix 4 R2 [1]", -2, params.getColumnPos(0));
+ assertEquals("8 key fix 4 R2 [2]", -1, params.getColumnPos(1));
+ assertEquals("8 key fix 4 R2 <3>", 0, params.getColumnPos(2));
+ assertEquals("8 key fix 4 R2 [4]", 1, params.getColumnPos(3));
+ assertEquals("8 key fix 4 R2 [5]", -2, params.getColumnPos(4));
+ assertEquals("8 key fix 4 R2 [6]", -1, params.getColumnPos(5));
+ assertEquals("8 key fix 4 R2 [7]", 0, params.getColumnPos(6));
+ assertEquals("8 key fix 4 R2 [8]", 1, params.getColumnPos(7));
+ assertEquals("8 key fix 4 R2 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("8 key fix 4 R2 default", WIDTH * 2, params.getDefaultKeyCoordX());
+ }
+
+ // [1] [2] <3> [4] [5]
+ public void testLayout5KeyFix5M0() {
+ MoreKeysKeyboardParams params = createParams(5, 5, XPOS_M0);
+ assertEquals("5 key fix 5 columns", 5, params.mNumColumns);
+ assertEquals("5 key fix 5 rows", 1, params.mNumRows);
+ assertEquals("5 key fix 5 left", 2, params.mLeftKeys);
+ assertEquals("5 key fix 5 right", 3, params.mRightKeys);
+ assertEquals("5 key fix 5 [1]", -2, params.getColumnPos(0));
+ assertEquals("5 key fix 5 [2]", -1, params.getColumnPos(1));
+ assertEquals("5 key fix 5 <3>", 0, params.getColumnPos(2));
+ assertEquals("5 key fix 5 [4]", 1, params.getColumnPos(3));
+ assertEquals("5 key fix 5 [5]", 2, params.getColumnPos(4));
+ assertEquals("5 key fix 5 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("5 key fix 5 default", WIDTH * 2, params.getDefaultKeyCoordX());
+ }
+
+ // |<1> [2] [3] [4] [5]
+ public void testLayout5KeyFix5L0() {
+ MoreKeysKeyboardParams params = createParams(5, 5, XPOS_L0);
+ assertEquals("5 key fix 5 L0 columns", 5, params.mNumColumns);
+ assertEquals("5 key fix 5 L0 rows", 1, params.mNumRows);
+ assertEquals("5 key fix 5 L0 left", 0, params.mLeftKeys);
+ assertEquals("5 key fix 5 L0 right", 5, params.mRightKeys);
+ assertEquals("5 key fix 5 L0 <1>", 0, params.getColumnPos(0));
+ assertEquals("5 key fix 5 L0 [2]", 1, params.getColumnPos(1));
+ assertEquals("5 key fix 5 L0 [3]", 2, params.getColumnPos(2));
+ assertEquals("5 key fix 5 L0 [4]", 3, params.getColumnPos(3));
+ assertEquals("5 key fix 5 L0 [5]", 4, params.getColumnPos(4));
+ assertEquals("5 key fix 5 L0 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("5 key fix 5 L0 default", WIDTH * 0, params.getDefaultKeyCoordX());
+ }
+
+ // |___ <1> [2] [3] [4] [5]
+ public void testLayout5KeyFix5L1() {
+ MoreKeysKeyboardParams params = createParams(5, 5, XPOS_L1);
+ assertEquals("5 key fix 5 L1 columns", 5, params.mNumColumns);
+ assertEquals("5 key fix 5 L1 rows", 1, params.mNumRows);
+ assertEquals("5 key fix 5 L1 left", 0, params.mLeftKeys);
+ assertEquals("5 key fix 5 L1 right", 5, params.mRightKeys);
+ assertEquals("5 key fix 5 L1 <1>", 0, params.getColumnPos(0));
+ assertEquals("5 key fix 5 L1 [2]", 1, params.getColumnPos(1));
+ assertEquals("5 key fix 5 L1 [3]", 2, params.getColumnPos(2));
+ assertEquals("5 key fix 5 L1 [4]", 3, params.getColumnPos(3));
+ assertEquals("5 key fix 5 L1 [5]", 4, params.getColumnPos(4));
+ assertEquals("5 key fix 5 L1 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("5 key fix 5 L1 default", WIDTH * 0, params.getDefaultKeyCoordX());
+ }
+
+ // |___ [1] <2> [3] [4] [5]
+ public void testLayout5KeyFix5L2() {
+ MoreKeysKeyboardParams params = createParams(5, 5, XPOS_L2);
+ assertEquals("5 key fix 5 L2 columns", 5, params.mNumColumns);
+ assertEquals("5 key fix 5 L2 rows", 1, params.mNumRows);
+ assertEquals("5 key fix 5 L2 left", 1, params.mLeftKeys);
+ assertEquals("5 key fix 5 L2 right", 4, params.mRightKeys);
+ assertEquals("5 key fix 5 L2 [1]", -1, params.getColumnPos(0));
+ assertEquals("5 key fix 5 L2 <2>", 0, params.getColumnPos(1));
+ assertEquals("5 key fix 5 L2 [3]", 1, params.getColumnPos(2));
+ assertEquals("5 key fix 5 L2 [4]", 2, params.getColumnPos(3));
+ assertEquals("5 key fix 5 L2 [5]", 3, params.getColumnPos(4));
+ assertEquals("5 key fix 5 L2 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("5 key fix 5 L2 default", WIDTH * 1, params.getDefaultKeyCoordX());
+ }
+
+ // [1] [2] [3] [4] <5>|
+ public void testLayout5KeyFix5R0() {
+ MoreKeysKeyboardParams params = createParams(5, 5, XPOS_R0);
+ assertEquals("5 key fix 5 R0 columns", 5, params.mNumColumns);
+ assertEquals("5 key fix 5 R0 rows", 1, params.mNumRows);
+ assertEquals("5 key fix 5 R0 left", 4, params.mLeftKeys);
+ assertEquals("5 key fix 5 R0 right", 1, params.mRightKeys);
+ assertEquals("5 key fix 5 R0 [1]", -4, params.getColumnPos(0));
+ assertEquals("5 key fix 5 R0 [2]", -3, params.getColumnPos(1));
+ assertEquals("5 key fix 5 R0 [3]", -2, params.getColumnPos(2));
+ assertEquals("5 key fix 5 R0 [4]", -1, params.getColumnPos(3));
+ assertEquals("5 key fix 5 R0 <5>", 0, params.getColumnPos(4));
+ assertEquals("5 key fix 5 R0 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("5 key fix 5 R0 default", WIDTH * 4, params.getDefaultKeyCoordX());
+ }
+
+ // [1] [2] [3] [4] <5> ___|
+ public void testLayout5KeyFix5R1() {
+ MoreKeysKeyboardParams params = createParams(5, 5, XPOS_R1);
+ assertEquals("5 key fix 5 R1 columns", 5, params.mNumColumns);
+ assertEquals("5 key fix 5 R1 rows", 1, params.mNumRows);
+ assertEquals("5 key fix 5 R1 left", 4, params.mLeftKeys);
+ assertEquals("5 key fix 5 R1 right", 1, params.mRightKeys);
+ assertEquals("5 key fix 5 R1 [1]", -4, params.getColumnPos(0));
+ assertEquals("5 key fix 5 R1 [2]", -3, params.getColumnPos(1));
+ assertEquals("5 key fix 5 R1 [3]", -2, params.getColumnPos(2));
+ assertEquals("5 key fix 5 R1 [4]", -1, params.getColumnPos(3));
+ assertEquals("5 key fix 5 R1 <5>", 0, params.getColumnPos(4));
+ assertEquals("5 key fix 5 R1 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("5 key fix 5 R1 default", WIDTH * 4, params.getDefaultKeyCoordX());
+ }
+
+ // [1] [2] [3] <4> [5] ___|
+ public void testLayout5KeyFix5R2() {
+ MoreKeysKeyboardParams params = createParams(5, 5, XPOS_R2);
+ assertEquals("5 key fix 5 R2 columns", 5, params.mNumColumns);
+ assertEquals("5 key fix 5 R2 rows", 1, params.mNumRows);
+ assertEquals("5 key fix 5 R2 left", 3, params.mLeftKeys);
+ assertEquals("5 key fix 5 R2 right", 2, params.mRightKeys);
+ assertEquals("5 key fix 5 R2 [1]", -3, params.getColumnPos(0));
+ assertEquals("5 key fix 5 R2 [2]", -2, params.getColumnPos(1));
+ assertEquals("5 key fix 5 R2 [3]", -1, params.getColumnPos(2));
+ assertEquals("5 key fix 5 R2 <4>", 0, params.getColumnPos(3));
+ assertEquals("5 key fix 5 R2 [5]", 1, params.getColumnPos(4));
+ assertEquals("5 key fix 5 R2 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("5 key fix 5 R2 default", WIDTH * 3, params.getDefaultKeyCoordX());
+ }
+
+ // [6]
+ // [1] [2] <3> [4] [5]
+ public void testLayout6KeyFix5M0() {
+ MoreKeysKeyboardParams params = createParams(6, 5, XPOS_M0);
+ assertEquals("6 key fix 5 columns", 5, params.mNumColumns);
+ assertEquals("6 key fix 5 rows", 2, params.mNumRows);
+ assertEquals("6 key fix 5 left", 2, params.mLeftKeys);
+ assertEquals("6 key fix 5 right", 3, params.mRightKeys);
+ assertEquals("6 key fix 5 [1]", -2, params.getColumnPos(0));
+ assertEquals("6 key fix 5 [2]", -1, params.getColumnPos(1));
+ assertEquals("6 key fix 5 <3>", 0, params.getColumnPos(2));
+ assertEquals("6 key fix 5 [4]", 1, params.getColumnPos(3));
+ assertEquals("6 key fix 5 [5]", 2, params.getColumnPos(4));
+ assertEquals("6 key fix 5 [6]", 0, params.getColumnPos(5));
+ assertEquals("6 key fix 5 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("6 key fix 5 default", WIDTH * 2, params.getDefaultKeyCoordX());
+ }
+
+ // |[6]
+ // |<1> [2] [3] [4] [5]
+ public void testLayout6KeyFix5L0() {
+ MoreKeysKeyboardParams params = createParams(6, 5, XPOS_L0);
+ assertEquals("6 key fix 5 L0 columns", 5, params.mNumColumns);
+ assertEquals("6 key fix 5 L0 rows", 2, params.mNumRows);
+ assertEquals("6 key fix 5 L0 left", 0, params.mLeftKeys);
+ assertEquals("6 key fix 5 L0 right", 5, params.mRightKeys);
+ assertEquals("6 key fix 5 L0 <1>", 0, params.getColumnPos(0));
+ assertEquals("6 key fix 5 L0 [2]", 1, params.getColumnPos(1));
+ assertEquals("6 key fix 5 L0 [3]", 2, params.getColumnPos(2));
+ assertEquals("6 key fix 5 L0 [4]", 3, params.getColumnPos(3));
+ assertEquals("6 key fix 5 L0 [5]", 4, params.getColumnPos(4));
+ assertEquals("6 key fix 5 L0 [6]", 0, params.getColumnPos(5));
+ assertEquals("6 key fix 5 L0 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("6 key fix 5 L0 default", WIDTH * 0, params.getDefaultKeyCoordX());
+ }
+
+ // |___ [6]
+ // |___ <1> [2] [3] [4] [5]
+ public void testLayout6KeyFix5L1() {
+ MoreKeysKeyboardParams params = createParams(6, 5, XPOS_L1);
+ assertEquals("6 key fix 5 L1 columns", 5, params.mNumColumns);
+ assertEquals("6 key fix 5 L1 rows", 2, params.mNumRows);
+ assertEquals("6 key fix 5 L1 left", 0, params.mLeftKeys);
+ assertEquals("6 key fix 5 L1 right", 5, params.mRightKeys);
+ assertEquals("6 key fix 5 L1 <1>", 0, params.getColumnPos(0));
+ assertEquals("6 key fix 5 L1 [2]", 1, params.getColumnPos(1));
+ assertEquals("6 key fix 5 L1 [3]", 2, params.getColumnPos(2));
+ assertEquals("6 key fix 5 L1 [4]", 3, params.getColumnPos(3));
+ assertEquals("6 key fix 5 L1 [5]", 4, params.getColumnPos(4));
+ assertEquals("6 key fix 5 L1 [6]", 0, params.getColumnPos(5));
+ assertEquals("6 key fix 5 L1 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("6 key fix 5 L1 default", WIDTH * 0, params.getDefaultKeyCoordX());
+ }
+
+ // |___ [6]
+ // |___ [1] <2> [3] [4] [5]
+ public void testLayout6KeyFix5L2() {
+ MoreKeysKeyboardParams params = createParams(6, 5, XPOS_L2);
+ assertEquals("6 key fix 5 L2 columns", 5, params.mNumColumns);
+ assertEquals("6 key fix 5 L2 rows", 2, params.mNumRows);
+ assertEquals("6 key fix 5 L2 left", 1, params.mLeftKeys);
+ assertEquals("6 key fix 5 L2 right", 4, params.mRightKeys);
+ assertEquals("6 key fix 5 L2 [1]", -1, params.getColumnPos(0));
+ assertEquals("6 key fix 5 L2 <2>", 0, params.getColumnPos(1));
+ assertEquals("6 key fix 5 L2 [3]", 1, params.getColumnPos(2));
+ assertEquals("6 key fix 5 L2 [4]", 2, params.getColumnPos(3));
+ assertEquals("6 key fix 5 L2 [5]", 3, params.getColumnPos(4));
+ assertEquals("6 key fix 5 L2 [6]", 0, params.getColumnPos(5));
+ assertEquals("6 key fix 5 L2 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("6 key fix 5 L2 default", WIDTH * 1, params.getDefaultKeyCoordX());
+ }
+
+ // [6]|
+ // [1] [2] [3] [4] <5>|
+ public void testLayout6KeyFix5R0() {
+ MoreKeysKeyboardParams params = createParams(6, 5, XPOS_R0);
+ assertEquals("6 key fix 5 R0 columns", 5, params.mNumColumns);
+ assertEquals("6 key fix 5 R0 rows", 2, params.mNumRows);
+ assertEquals("6 key fix 5 R0 left", 4, params.mLeftKeys);
+ assertEquals("6 key fix 5 R0 right", 1, params.mRightKeys);
+ assertEquals("6 key fix 5 R0 [1]", -4, params.getColumnPos(0));
+ assertEquals("6 key fix 5 R0 [2]", -3, params.getColumnPos(1));
+ assertEquals("6 key fix 5 R0 [3]", -2, params.getColumnPos(2));
+ assertEquals("6 key fix 5 R0 [4]", -1, params.getColumnPos(3));
+ assertEquals("6 key fix 5 R0 <5>", 0, params.getColumnPos(4));
+ assertEquals("6 key fix 5 R0 [6]", 0, params.getColumnPos(5));
+ assertEquals("6 key fix 5 R0 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("6 key fix 5 R0 default", WIDTH * 4, params.getDefaultKeyCoordX());
+ }
+
+ // [6] ___|
+ // [1] [2] [3] [4] <5> ___|
+ public void testLayout6KeyFix5R1() {
+ MoreKeysKeyboardParams params = createParams(6, 5, XPOS_R1);
+ assertEquals("6 key fix 5 R1 columns", 5, params.mNumColumns);
+ assertEquals("6 key fix 5 R1 rows", 2, params.mNumRows);
+ assertEquals("6 key fix 5 R1 left", 4, params.mLeftKeys);
+ assertEquals("6 key fix 5 R1 right", 1, params.mRightKeys);
+ assertEquals("6 key fix 5 R1 [1]", -4, params.getColumnPos(0));
+ assertEquals("6 key fix 5 R1 [2]", -3, params.getColumnPos(1));
+ assertEquals("6 key fix 5 R1 [3]", -2, params.getColumnPos(2));
+ assertEquals("6 key fix 5 R1 [4]", -1, params.getColumnPos(3));
+ assertEquals("6 key fix 5 R1 <5>", 0, params.getColumnPos(4));
+ assertEquals("6 key fix 5 R1 [6]", 0, params.getColumnPos(5));
+ assertEquals("6 key fix 5 R1 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("6 key fix 5 R1 default", WIDTH * 4, params.getDefaultKeyCoordX());
+ }
+
+ // [6] ___|
+ // [1] [2] [3] <4> [5] ___|
+ public void testLayout6KeyFix5R2() {
+ MoreKeysKeyboardParams params = createParams(6, 5, XPOS_R2);
+ assertEquals("6 key fix 5 R2 columns", 5, params.mNumColumns);
+ assertEquals("6 key fix 5 R2 rows", 2, params.mNumRows);
+ assertEquals("6 key fix 5 R2 left", 3, params.mLeftKeys);
+ assertEquals("6 key fix 5 R2 right", 2, params.mRightKeys);
+ assertEquals("6 key fix 5 R2 [1]", -3, params.getColumnPos(0));
+ assertEquals("6 key fix 5 R2 [2]", -2, params.getColumnPos(1));
+ assertEquals("6 key fix 5 R2 [3]", -1, params.getColumnPos(2));
+ assertEquals("6 key fix 5 R2 <4>", 0, params.getColumnPos(3));
+ assertEquals("6 key fix 5 R2 [5]", 1, params.getColumnPos(4));
+ assertEquals("6 key fix 5 R2 [6]", 0, params.getColumnPos(5));
+ assertEquals("6 key fix 5 R2 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("6 key fix 5 R2 default", WIDTH * 3, params.getDefaultKeyCoordX());
+ }
+
+ // [6] [7]
+ // [1] [2] <3> [4] [5]
+ public void testLayout7KeyFix5M0() {
+ MoreKeysKeyboardParams params = createParams(7, 5, XPOS_M0);
+ assertEquals("7 key fix 5 columns", 5, params.mNumColumns);
+ assertEquals("7 key fix 5 rows", 2, params.mNumRows);
+ assertEquals("7 key fix 5 left", 2, params.mLeftKeys);
+ assertEquals("7 key fix 5 right", 3, params.mRightKeys);
+ assertEquals("7 key fix 5 [1]", -2, params.getColumnPos(0));
+ assertEquals("7 key fix 5 [2]", -1, params.getColumnPos(1));
+ assertEquals("7 key fix 5 <3>", 0, params.getColumnPos(2));
+ assertEquals("7 key fix 5 [4]", 1, params.getColumnPos(3));
+ assertEquals("7 key fix 5 [5]", 2, params.getColumnPos(4));
+ assertEquals("7 key fix 5 [6]", 0, params.getColumnPos(5));
+ assertEquals("7 key fix 5 [7]", 1, params.getColumnPos(6));
+ assertEquals("7 key fix 5 adjust", -1, params.mTopRowAdjustment);
+ assertEquals("7 key fix 5 default", WIDTH * 2, params.getDefaultKeyCoordX());
+ }
+
+ // |[6] [7]
+ // |<1> [2] [3] [4] [5]
+ public void testLayout7KeyFix5L0() {
+ MoreKeysKeyboardParams params = createParams(7, 5, XPOS_L0);
+ assertEquals("7 key fix 5 L0 columns", 5, params.mNumColumns);
+ assertEquals("7 key fix 5 L0 rows", 2, params.mNumRows);
+ assertEquals("7 key fix 5 L0 left", 0, params.mLeftKeys);
+ assertEquals("7 key fix 5 L0 right", 5, params.mRightKeys);
+ assertEquals("7 key fix 5 L0 <1>", 0, params.getColumnPos(0));
+ assertEquals("7 key fix 5 L0 [2]", 1, params.getColumnPos(1));
+ assertEquals("7 key fix 5 L0 [3]", 2, params.getColumnPos(2));
+ assertEquals("7 key fix 5 L0 [4]", 3, params.getColumnPos(3));
+ assertEquals("7 key fix 5 L0 [5]", 4, params.getColumnPos(4));
+ assertEquals("7 key fix 5 L0 [6]", 0, params.getColumnPos(5));
+ assertEquals("7 key fix 5 L0 [7]", 1, params.getColumnPos(6));
+ assertEquals("7 key fix 5 L0 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("7 key fix 5 L0 default", WIDTH * 0, params.getDefaultKeyCoordX());
+ }
+
+ // |___ [6] [7]
+ // |___ <1> [2] [3] [4] [5]
+ public void testLayout7KeyFix5L1() {
+ MoreKeysKeyboardParams params = createParams(7, 5, XPOS_L1);
+ assertEquals("7 key fix 5 L1 columns", 5, params.mNumColumns);
+ assertEquals("7 key fix 5 L1 rows", 2, params.mNumRows);
+ assertEquals("7 key fix 5 L1 left", 0, params.mLeftKeys);
+ assertEquals("7 key fix 5 L1 right", 5, params.mRightKeys);
+ assertEquals("7 key fix 5 L1 <1>", 0, params.getColumnPos(0));
+ assertEquals("7 key fix 5 L1 [2]", 1, params.getColumnPos(1));
+ assertEquals("7 key fix 5 L1 [3]", 2, params.getColumnPos(2));
+ assertEquals("7 key fix 5 L1 [4]", 3, params.getColumnPos(3));
+ assertEquals("7 key fix 5 L1 [5]", 4, params.getColumnPos(4));
+ assertEquals("7 key fix 5 L1 [6]", 0, params.getColumnPos(5));
+ assertEquals("7 key fix 5 L1 [7]", 1, params.getColumnPos(6));
+ assertEquals("7 key fix 5 L1 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("7 key fix 5 L1 default", WIDTH * 0, params.getDefaultKeyCoordX());
+ }
+
+ // |___ [6] [7]
+ // |___ [1] <2> [3] [4] [5]
+ public void testLayout7KeyFix5L2() {
+ MoreKeysKeyboardParams params = createParams(7, 5, XPOS_L2);
+ assertEquals("7 key fix 5 L2 columns", 5, params.mNumColumns);
+ assertEquals("7 key fix 5 L2 rows", 2, params.mNumRows);
+ assertEquals("7 key fix 5 L2 left", 1, params.mLeftKeys);
+ assertEquals("7 key fix 5 L2 right", 4, params.mRightKeys);
+ assertEquals("7 key fix 5 L2 [1]", -1, params.getColumnPos(0));
+ assertEquals("7 key fix 5 L2 <2>", 0, params.getColumnPos(1));
+ assertEquals("7 key fix 5 L2 [3]", 1, params.getColumnPos(2));
+ assertEquals("7 key fix 5 L2 [4]", 2, params.getColumnPos(3));
+ assertEquals("7 key fix 5 L2 [5]", 3, params.getColumnPos(4));
+ assertEquals("7 key fix 5 L2 [6]", 0, params.getColumnPos(5));
+ assertEquals("7 key fix 5 L2 [7]", 1, params.getColumnPos(6));
+ assertEquals("7 key fix 5 L2 adjust", -1, params.mTopRowAdjustment);
+ assertEquals("7 key fix 5 L2 default", WIDTH * 1, params.getDefaultKeyCoordX());
+ }
+
+ // [6] [7]|
+ // [1] [2] [3] [4] <5>|
+ public void testLayout7KeyFix5R0() {
+ MoreKeysKeyboardParams params = createParams(7, 5, XPOS_R0);
+ assertEquals("7 key fix 5 R0 columns", 5, params.mNumColumns);
+ assertEquals("7 key fix 5 R0 rows", 2, params.mNumRows);
+ assertEquals("7 key fix 5 R0 left", 4, params.mLeftKeys);
+ assertEquals("7 key fix 5 R0 right", 1, params.mRightKeys);
+ assertEquals("7 key fix 5 R0 [1]", -4, params.getColumnPos(0));
+ assertEquals("7 key fix 5 R0 [2]", -3, params.getColumnPos(1));
+ assertEquals("7 key fix 5 R0 [3]", -2, params.getColumnPos(2));
+ assertEquals("7 key fix 5 R0 [4]", -1, params.getColumnPos(3));
+ assertEquals("7 key fix 5 R0 <5>", 0, params.getColumnPos(4));
+ assertEquals("7 key fix 5 R0 [6]", -1, params.getColumnPos(5));
+ assertEquals("7 key fix 5 R0 [7]", 0, params.getColumnPos(6));
+ assertEquals("7 key fix 5 R0 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("7 key fix 5 R0 default", WIDTH * 4, params.getDefaultKeyCoordX());
+ }
+
+ // [6] [7] ___|
+ // [1] [2] [3] [4] <5> ___|
+ public void testLayout7KeyFix5R1() {
+ MoreKeysKeyboardParams params = createParams(7, 5, XPOS_R1);
+ assertEquals("7 key fix 5 R1 columns", 5, params.mNumColumns);
+ assertEquals("7 key fix 5 R1 rows", 2, params.mNumRows);
+ assertEquals("7 key fix 5 R1 left", 4, params.mLeftKeys);
+ assertEquals("7 key fix 5 R1 right", 1, params.mRightKeys);
+ assertEquals("7 key fix 5 R1 [1]", -4, params.getColumnPos(0));
+ assertEquals("7 key fix 5 R1 [2]", -3, params.getColumnPos(1));
+ assertEquals("7 key fix 5 R1 [3]", -2, params.getColumnPos(2));
+ assertEquals("7 key fix 5 R1 [4]", -1, params.getColumnPos(3));
+ assertEquals("7 key fix 5 R1 <5>", 0, params.getColumnPos(4));
+ assertEquals("7 key fix 5 R1 [6]", -1, params.getColumnPos(5));
+ assertEquals("7 key fix 5 R1 [7]", 0, params.getColumnPos(6));
+ assertEquals("7 key fix 5 R1 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("7 key fix 5 R1 default", WIDTH * 4, params.getDefaultKeyCoordX());
+ }
+
+ // [6] [7] ___|
+ // [1] [2] [3] <4> [5] ___|
+ public void testLayout7KeyFix5R2() {
+ MoreKeysKeyboardParams params = createParams(7, 5, XPOS_R2);
+ assertEquals("7 key fix 5 R2 columns",5, params.mNumColumns);
+ assertEquals("7 key fix 5 R2 rows", 2, params.mNumRows);
+ assertEquals("7 key fix 5 R2 left", 3, params.mLeftKeys);
+ assertEquals("7 key fix 5 R2 right", 2, params.mRightKeys);
+ assertEquals("7 key fix 5 R2 [1]", -3, params.getColumnPos(0));
+ assertEquals("7 key fix 5 R2 [2]", -2, params.getColumnPos(1));
+ assertEquals("7 key fix 5 R2 [3]", -1, params.getColumnPos(2));
+ assertEquals("7 key fix 5 R2 <4>", 0, params.getColumnPos(3));
+ assertEquals("7 key fix 5 R2 [5]", 1, params.getColumnPos(4));
+ assertEquals("7 key fix 5 R2 [6]", 0, params.getColumnPos(5));
+ assertEquals("7 key fix 5 R2 [7]", 1, params.getColumnPos(6));
+ assertEquals("7 key fix 5 R2 adjust", -1, params.mTopRowAdjustment);
+ assertEquals("7 key fix 5 R2 default", WIDTH * 3, params.getDefaultKeyCoordX());
+ }
+
+ // [6] [7] [8]
+ // [1] [2] <3> [4] [5]
+ public void testLayout8KeyFix5M0() {
+ MoreKeysKeyboardParams params = createParams(8, 5, XPOS_M0);
+ assertEquals("8 key fix 5 M0 columns", 5, params.mNumColumns);
+ assertEquals("8 key fix 5 M0 rows", 2, params.mNumRows);
+ assertEquals("8 key fix 5 M0 left", 2, params.mLeftKeys);
+ assertEquals("8 key fix 5 M0 right", 3, params.mRightKeys);
+ assertEquals("8 key fix 5 M0 [1]", -2, params.getColumnPos(0));
+ assertEquals("8 key fix 5 M0 [2]", -1, params.getColumnPos(1));
+ assertEquals("8 key fix 5 M0 <3>", 0, params.getColumnPos(2));
+ assertEquals("8 key fix 5 M0 [4]", 1, params.getColumnPos(3));
+ assertEquals("8 key fix 5 M0 [5]", 2, params.getColumnPos(4));
+ assertEquals("8 key fix 5 M0 [6]", -1, params.getColumnPos(5));
+ assertEquals("8 key fix 5 M0 [7]", 0, params.getColumnPos(6));
+ assertEquals("8 key fix 5 M0 [8]", 1, params.getColumnPos(7));
+ assertEquals("8 key fix 5 M0 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("8 key fix 5 M0 default", WIDTH * 2, params.getDefaultKeyCoordX());
+ }
+
+ // |[6] [7] [8]
+ // |<1> [2] [3] [4] [5]
+ public void testLayout8KeyFix5L0() {
+ MoreKeysKeyboardParams params = createParams(8, 5, XPOS_L0);
+ assertEquals("8 key fix 5 L0 columns", 5, params.mNumColumns);
+ assertEquals("8 key fix 5 L0 rows", 2, params.mNumRows);
+ assertEquals("8 key fix 5 L0 left", 0, params.mLeftKeys);
+ assertEquals("8 key fix 5 L0 right", 5, params.mRightKeys);
+ assertEquals("8 key fix 5 L0 <1>", 0, params.getColumnPos(0));
+ assertEquals("8 key fix 5 L0 [2]", 1, params.getColumnPos(1));
+ assertEquals("8 key fix 5 L0 [3]", 2, params.getColumnPos(2));
+ assertEquals("8 key fix 5 L0 [4]", 3, params.getColumnPos(3));
+ assertEquals("8 key fix 5 L0 [5]", 4, params.getColumnPos(4));
+ assertEquals("8 key fix 5 L0 [6]", 0, params.getColumnPos(5));
+ assertEquals("8 key fix 5 L0 [7]", 1, params.getColumnPos(6));
+ assertEquals("8 key fix 5 L0 [8]", 2, params.getColumnPos(7));
+ assertEquals("8 key fix 5 L0 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("8 key fix 5 L0 default", WIDTH * 0, params.getDefaultKeyCoordX());
+ }
+
+ // |___ [6] [7] [8]
+ // |___ <1> [2] [3] [4] [5]
+ public void testLayout8KeyFix5L1() {
+ MoreKeysKeyboardParams params = createParams(8, 5, XPOS_L1);
+ assertEquals("8 key fix 5 L1 columns", 5, params.mNumColumns);
+ assertEquals("8 key fix 5 L1 rows", 2, params.mNumRows);
+ assertEquals("8 key fix 5 L1 left", 0, params.mLeftKeys);
+ assertEquals("8 key fix 5 L1 right", 5, params.mRightKeys);
+ assertEquals("8 key fix 5 L1 <1>", 0, params.getColumnPos(0));
+ assertEquals("8 key fix 5 L1 [2]", 1, params.getColumnPos(1));
+ assertEquals("8 key fix 5 L1 [3]", 2, params.getColumnPos(2));
+ assertEquals("8 key fix 5 L1 [4]", 3, params.getColumnPos(3));
+ assertEquals("8 key fix 5 L1 [5]", 4, params.getColumnPos(4));
+ assertEquals("8 key fix 5 L1 [6]", 0, params.getColumnPos(5));
+ assertEquals("8 key fix 5 L1 [7]", 1, params.getColumnPos(6));
+ assertEquals("8 key fix 5 L1 [8]", 2, params.getColumnPos(7));
+ assertEquals("8 key fix 5 L1 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("8 key fix 5 L1 default", WIDTH * 0, params.getDefaultKeyCoordX());
+ }
+
+ // |___ [6] [7] [8]
+ // |___ [1] <2> [3] [4] [5]
+ public void testLayout8KeyFix5L2() {
+ MoreKeysKeyboardParams params = createParams(8, 5, XPOS_L2);
+ assertEquals("8 key fix 5 L2 columns", 5, params.mNumColumns);
+ assertEquals("8 key fix 5 L2 rows", 2, params.mNumRows);
+ assertEquals("8 key fix 5 L2 left", 1, params.mLeftKeys);
+ assertEquals("8 key fix 5 L2 right", 4, params.mRightKeys);
+ assertEquals("8 key fix 5 L2 [1]", -1, params.getColumnPos(0));
+ assertEquals("8 key fix 5 L2 <2>", 0, params.getColumnPos(1));
+ assertEquals("8 key fix 5 L2 [3]", 1, params.getColumnPos(2));
+ assertEquals("8 key fix 5 L2 [4]", 2, params.getColumnPos(3));
+ assertEquals("8 key fix 5 L2 [5]", 3, params.getColumnPos(4));
+ assertEquals("8 key fix 5 L2 [6]", -1, params.getColumnPos(5));
+ assertEquals("8 key fix 5 L2 [7]", 0, params.getColumnPos(6));
+ assertEquals("8 key fix 5 L2 [8]", 1, params.getColumnPos(7));
+ assertEquals("8 key fix 5 L2 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("8 key fix 5 L2 default", WIDTH * 1, params.getDefaultKeyCoordX());
+ }
+
+ // [6] [7] [8]|
+ // [1] [2] [3] [4] <5>|
+ public void testLayout8KeyFix5R0() {
+ MoreKeysKeyboardParams params = createParams(8, 5, XPOS_R0);
+ assertEquals("8 key fix 5 R0 columns", 5, params.mNumColumns);
+ assertEquals("8 key fix 5 R0 rows", 2, params.mNumRows);
+ assertEquals("8 key fix 5 R0 left", 4, params.mLeftKeys);
+ assertEquals("8 key fix 5 R0 right", 1, params.mRightKeys);
+ assertEquals("8 key fix 5 R0 [1]", -4, params.getColumnPos(0));
+ assertEquals("8 key fix 5 R0 [2]", -3, params.getColumnPos(1));
+ assertEquals("8 key fix 5 R0 [3]", -2, params.getColumnPos(2));
+ assertEquals("8 key fix 5 R0 [4]", -1, params.getColumnPos(3));
+ assertEquals("8 key fix 5 R0 <5>", 0, params.getColumnPos(4));
+ assertEquals("8 key fix 5 R0 [6]", -2, params.getColumnPos(5));
+ assertEquals("8 key fix 5 R0 [7]", -1, params.getColumnPos(6));
+ assertEquals("8 key fix 5 R0 [8]", 0, params.getColumnPos(7));
+ assertEquals("8 key fix 5 R0 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("8 key fix 5 R0 default", WIDTH * 4, params.getDefaultKeyCoordX());
+ }
+
+ // [6] [7] [8] ___|
+ // [1] [2] [3] [4] <5> ___|
+ public void testLayout8KeyFix5R1() {
+ MoreKeysKeyboardParams params = createParams(8, 5, XPOS_R1);
+ assertEquals("8 key fix 5 R1 columns", 5, params.mNumColumns);
+ assertEquals("8 key fix 5 R1 rows", 2, params.mNumRows);
+ assertEquals("8 key fix 5 R1 left", 4, params.mLeftKeys);
+ assertEquals("8 key fix 5 R1 right", 1, params.mRightKeys);
+ assertEquals("8 key fix 5 R1 [1]", -4, params.getColumnPos(0));
+ assertEquals("8 key fix 5 R1 [2]", -3, params.getColumnPos(1));
+ assertEquals("8 key fix 5 R1 [3]", -2, params.getColumnPos(2));
+ assertEquals("8 key fix 5 R1 [4]", -1, params.getColumnPos(3));
+ assertEquals("8 key fix 5 R1 <5>", 0, params.getColumnPos(4));
+ assertEquals("8 key fix 5 R1 [6]", -2, params.getColumnPos(5));
+ assertEquals("8 key fix 5 R1 [7]", -1, params.getColumnPos(6));
+ assertEquals("8 key fix 5 R1 [8]", 0, params.getColumnPos(7));
+ assertEquals("8 key fix 5 R1 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("8 key fix 5 R1 default", WIDTH * 4, params.getDefaultKeyCoordX());
+ }
+
+ // [6] [7] [8] ___|
+ // [1] [2] [3] <4> [5] ___|
+ public void testLayout8KeyFix5R2() {
+ MoreKeysKeyboardParams params = createParams(8, 5, XPOS_R2);
+ assertEquals("8 key fix 5 R2 columns", 5, params.mNumColumns);
+ assertEquals("8 key fix 5 R2 rows", 2, params.mNumRows);
+ assertEquals("8 key fix 5 R2 left", 3, params.mLeftKeys);
+ assertEquals("8 key fix 5 R2 right", 2, params.mRightKeys);
+ assertEquals("8 key fix 5 R2 [1]", -3, params.getColumnPos(0));
+ assertEquals("8 key fix 5 R2 [2]", -2, params.getColumnPos(1));
+ assertEquals("8 key fix 5 R2 [3]", -1, params.getColumnPos(2));
+ assertEquals("8 key fix 5 R2 <4>", 0, params.getColumnPos(3));
+ assertEquals("8 key fix 5 R2 [5]", 1, params.getColumnPos(4));
+ assertEquals("8 key fix 5 R2 [6]", -1, params.getColumnPos(5));
+ assertEquals("8 key fix 5 R2 [7]", 0, params.getColumnPos(6));
+ assertEquals("8 key fix 5 R2 [8]", 1, params.getColumnPos(7));
+ assertEquals("8 key fix 5 R2 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("8 key fix 5 R2 default", WIDTH * 3, params.getDefaultKeyCoordX());
+ }
+
+ // [6] [7] [8] [9]
+ // [1] [2] <3> [4] [5]
+ public void testLayout9KeyFix5M0() {
+ MoreKeysKeyboardParams params = createParams(9, 5, XPOS_M0);
+ assertEquals("9 key fix 5 M0 columns", 5, params.mNumColumns);
+ assertEquals("9 key fix 5 M0 rows", 2, params.mNumRows);
+ assertEquals("9 key fix 5 M0 left", 2, params.mLeftKeys);
+ assertEquals("9 key fix 5 M0 right", 3, params.mRightKeys);
+ assertEquals("9 key fix 5 M0 [1]", -2, params.getColumnPos(0));
+ assertEquals("9 key fix 5 M0 [2]", -1, params.getColumnPos(1));
+ assertEquals("9 key fix 5 M0 <3>", 0, params.getColumnPos(2));
+ assertEquals("9 key fix 5 M0 [4]", 1, params.getColumnPos(3));
+ assertEquals("9 key fix 5 M0 [5]", 2, params.getColumnPos(4));
+ assertEquals("9 key fix 5 M0 [6]", -1, params.getColumnPos(5));
+ assertEquals("9 key fix 5 M0 [7]", 0, params.getColumnPos(6));
+ assertEquals("9 key fix 5 M0 [8]", 1, params.getColumnPos(7));
+ assertEquals("9 key fix 5 M0 [9]", 2, params.getColumnPos(8));
+ assertEquals("9 key fix 5 M0 adjust", -1, params.mTopRowAdjustment);
+ assertEquals("9 key fix 5 M0 default", WIDTH * 2, params.getDefaultKeyCoordX());
+ }
+
+ // |[6] [7] [8] [9]
+ // |<1> [2] [3] [4] [5]
+ public void testLayout9KeyFix5L0() {
+ MoreKeysKeyboardParams params = createParams(9, 5, XPOS_L0);
+ assertEquals("9 key fix 5 L0 columns", 5, params.mNumColumns);
+ assertEquals("9 key fix 5 L0 rows", 2, params.mNumRows);
+ assertEquals("9 key fix 5 L0 left", 0, params.mLeftKeys);
+ assertEquals("9 key fix 5 L0 right", 5, params.mRightKeys);
+ assertEquals("9 key fix 5 L0 <1>", 0, params.getColumnPos(0));
+ assertEquals("9 key fix 5 L0 [2]", 1, params.getColumnPos(1));
+ assertEquals("9 key fix 5 L0 [3]", 2, params.getColumnPos(2));
+ assertEquals("9 key fix 5 L0 [4]", 3, params.getColumnPos(3));
+ assertEquals("9 key fix 5 L0 [5]", 4, params.getColumnPos(4));
+ assertEquals("9 key fix 5 L0 [6]", 0, params.getColumnPos(5));
+ assertEquals("9 key fix 5 L0 [7]", 1, params.getColumnPos(6));
+ assertEquals("9 key fix 5 L0 [8]", 2, params.getColumnPos(7));
+ assertEquals("9 key fix 5 L0 [9]", 3, params.getColumnPos(8));
+ assertEquals("9 key fix 5 L0 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("9 key fix 5 L0 default", WIDTH * 0, params.getDefaultKeyCoordX());
+ }
+
+ // |___ [6] [7] [8] [9]
+ // |___ <1> [2] [3] [4] [5]
+ public void testLayout9KeyFix5L1() {
+ MoreKeysKeyboardParams params = createParams(9, 5, XPOS_L1);
+ assertEquals("9 key fix 5 L1 columns", 5, params.mNumColumns);
+ assertEquals("9 key fix 5 L1 rows", 2, params.mNumRows);
+ assertEquals("9 key fix 5 L1 left", 0, params.mLeftKeys);
+ assertEquals("9 key fix 5 L1 right", 5, params.mRightKeys);
+ assertEquals("9 key fix 5 L1 <1>", 0, params.getColumnPos(0));
+ assertEquals("9 key fix 5 L1 [2]", 1, params.getColumnPos(1));
+ assertEquals("9 key fix 5 L1 [3]", 2, params.getColumnPos(2));
+ assertEquals("9 key fix 5 L1 [4]", 3, params.getColumnPos(3));
+ assertEquals("9 key fix 5 L1 [5]", 4, params.getColumnPos(4));
+ assertEquals("9 key fix 5 L1 [6]", 0, params.getColumnPos(5));
+ assertEquals("9 key fix 5 L1 [7]", 1, params.getColumnPos(6));
+ assertEquals("9 key fix 5 L1 [8]", 2, params.getColumnPos(7));
+ assertEquals("9 key fix 5 L1 [9]", 3, params.getColumnPos(8));
+ assertEquals("9 key fix 5 L1 adjust",0, params.mTopRowAdjustment);
+ assertEquals("9 key fix 5 L1 default", WIDTH * 0, params.getDefaultKeyCoordX());
+ }
+
+ // |___ [6] [7] [8] [9]
+ // |___ [1] <2> [3] [4] [5]
+ public void testLayout9KeyFix5L2() {
+ MoreKeysKeyboardParams params = createParams(9, 5, XPOS_L2);
+ assertEquals("9 key fix 5 L2 columns", 5, params.mNumColumns);
+ assertEquals("9 key fix 5 L2 rows", 2, params.mNumRows);
+ assertEquals("9 key fix 5 L2 left", 1, params.mLeftKeys);
+ assertEquals("9 key fix 5 L2 right", 4, params.mRightKeys);
+ assertEquals("9 key fix 5 L2 [1]", -1, params.getColumnPos(0));
+ assertEquals("9 key fix 5 L2 <2>", 0, params.getColumnPos(1));
+ assertEquals("9 key fix 5 L2 [3]", 1, params.getColumnPos(2));
+ assertEquals("9 key fix 5 L2 [4]", 2, params.getColumnPos(3));
+ assertEquals("9 key fix 5 L2 [5]", 3, params.getColumnPos(4));
+ assertEquals("9 key fix 5 L2 [6]", 0, params.getColumnPos(5));
+ assertEquals("9 key fix 5 L2 [7]", 1, params.getColumnPos(6));
+ assertEquals("9 key fix 5 L2 [8]", 2, params.getColumnPos(7));
+ assertEquals("9 key fix 5 L2 [9]", 3, params.getColumnPos(8));
+ assertEquals("9 key fix 5 L2 adjust", -1, params.mTopRowAdjustment);
+ assertEquals("9 key fix 5 L2 default", WIDTH * 1, params.getDefaultKeyCoordX());
+ }
+
+ // [6] [7] [8] [9]|
+ // [1] [2] [3] [4] <5>|
+ public void testLayout9KeyFix5R0() {
+ MoreKeysKeyboardParams params = createParams(9, 5, XPOS_R0);
+ assertEquals("9 key fix 5 R0 columns", 5, params.mNumColumns);
+ assertEquals("9 key fix 5 R0 rows", 2, params.mNumRows);
+ assertEquals("9 key fix 5 R0 left", 4, params.mLeftKeys);
+ assertEquals("9 key fix 5 R0 right", 1, params.mRightKeys);
+ assertEquals("9 key fix 5 R0 [1]", -4, params.getColumnPos(0));
+ assertEquals("9 key fix 5 R0 [2]", -3, params.getColumnPos(1));
+ assertEquals("9 key fix 5 R0 [3]", -2, params.getColumnPos(2));
+ assertEquals("9 key fix 5 R0 [4]", -1, params.getColumnPos(3));
+ assertEquals("9 key fix 5 R0 <5>", 0, params.getColumnPos(4));
+ assertEquals("9 key fix 5 R0 [6]", -3, params.getColumnPos(5));
+ assertEquals("9 key fix 5 R0 [7]", -2, params.getColumnPos(6));
+ assertEquals("9 key fix 5 R0 [8]", -1, params.getColumnPos(7));
+ assertEquals("9 key fix 5 R0 [9]", 0, params.getColumnPos(8));
+ assertEquals("9 key fix 5 R0 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("9 key fix 5 R0 default", WIDTH * 4, params.getDefaultKeyCoordX());
+ }
+
+ // [6] [7] [8] [9] ___|
+ // [1] [2] [3] [4] <5> ___|
+ public void testLayout9KeyFix5R1() {
+ MoreKeysKeyboardParams params = createParams(9, 5, XPOS_R1);
+ assertEquals("9 key fix 5 R1 columns", 5, params.mNumColumns);
+ assertEquals("9 key fix 5 R1 rows", 2, params.mNumRows);
+ assertEquals("9 key fix 5 R1 left", 4, params.mLeftKeys);
+ assertEquals("9 key fix 5 R1 right", 1, params.mRightKeys);
+ assertEquals("9 key fix 5 R1 [1]", -4, params.getColumnPos(0));
+ assertEquals("9 key fix 5 R1 [2]", -3, params.getColumnPos(1));
+ assertEquals("9 key fix 5 R1 [3]", -2, params.getColumnPos(2));
+ assertEquals("9 key fix 5 R1 [4]", -1, params.getColumnPos(3));
+ assertEquals("9 key fix 5 R1 <5>", 0, params.getColumnPos(4));
+ assertEquals("9 key fix 5 R1 [6]", -3, params.getColumnPos(5));
+ assertEquals("9 key fix 5 R1 [7]", -2, params.getColumnPos(6));
+ assertEquals("9 key fix 5 R1 [8]", -1, params.getColumnPos(7));
+ assertEquals("9 key fix 5 R1 [9]", 0, params.getColumnPos(8));
+ assertEquals("9 key fix 5 R1 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("9 key fix 5 R1 default", WIDTH * 4, params.getDefaultKeyCoordX());
+ }
+
+ // [6] [7] [8] [9] ___|
+ // [1] [2] [3] <4> [5] ___|
+ public void testLayout9KeyFix5R2() {
+ MoreKeysKeyboardParams params = createParams(9, 5, XPOS_R2);
+ assertEquals("9 key fix 5 R2 columns", 5, params.mNumColumns);
+ assertEquals("9 key fix 5 R2 rows", 2, params.mNumRows);
+ assertEquals("9 key fix 5 R2 left", 3, params.mLeftKeys);
+ assertEquals("9 key fix 5 R2 right", 2, params.mRightKeys);
+ assertEquals("9 key fix 5 R2 [1]", -3, params.getColumnPos(0));
+ assertEquals("9 key fix 5 R2 [2]", -2, params.getColumnPos(1));
+ assertEquals("9 key fix 5 R2 [3]", -1, params.getColumnPos(2));
+ assertEquals("9 key fix 5 R2 <4>", 0, params.getColumnPos(3));
+ assertEquals("9 key fix 5 R2 [5]", 1, params.getColumnPos(4));
+ assertEquals("9 key fix 5 R2 [6]", -2, params.getColumnPos(5));
+ assertEquals("9 key fix 5 R2 [7]", -1, params.getColumnPos(6));
+ assertEquals("9 key fix 5 R2 [8]", 0, params.getColumnPos(7));
+ assertEquals("9 key fix 5 R2 [9]", 1, params.getColumnPos(8));
+ assertEquals("9 key fix 5 R2 adjust", -1, params.mTopRowAdjustment);
+ assertEquals("9 key fix 5 R2 default", WIDTH * 3, params.getDefaultKeyCoordX());
+ }
+
+ // [6] [7] [8] [9] [A]
+ // [1] [2] <3> [4] [5]
+ public void testLayout10KeyFix5M0() {
+ MoreKeysKeyboardParams params = createParams(10, 5, XPOS_M0);
+ assertEquals("10 key fix 5 M0 columns", 5, params.mNumColumns);
+ assertEquals("10 key fix 5 M0 rows", 2, params.mNumRows);
+ assertEquals("10 key fix 5 M0 left", 2, params.mLeftKeys);
+ assertEquals("10 key fix 5 M0 right", 3, params.mRightKeys);
+ assertEquals("10 key fix 5 M0 [1]", -2, params.getColumnPos(0));
+ assertEquals("10 key fix 5 M0 [2]", -1, params.getColumnPos(1));
+ assertEquals("10 key fix 5 M0 <3>", 0, params.getColumnPos(2));
+ assertEquals("10 key fix 5 M0 [4]", 1, params.getColumnPos(3));
+ assertEquals("10 key fix 5 M0 [5]", 2, params.getColumnPos(4));
+ assertEquals("10 key fix 5 M0 [6]", -2, params.getColumnPos(5));
+ assertEquals("10 key fix 5 M0 [7]", -1, params.getColumnPos(6));
+ assertEquals("10 key fix 5 M0 [8]", 0, params.getColumnPos(7));
+ assertEquals("10 key fix 5 M0 [9]", 1, params.getColumnPos(8));
+ assertEquals("10 key fix 5 M0 [A]", 2, params.getColumnPos(9));
+ assertEquals("10 key fix 5 M0 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("10 key fix 5 M0 default", WIDTH * 2, params.getDefaultKeyCoordX());
+ }
+
+ // |[6] [7] [8] [9] [A]
+ // |<1> [2] [3] [4] [5]
+ public void testLayout10KeyFix5L0() {
+ MoreKeysKeyboardParams params = createParams(10, 5, XPOS_L0);
+ assertEquals("10 key fix 5 L0 columns", 5, params.mNumColumns);
+ assertEquals("10 key fix 5 L0 rows", 2, params.mNumRows);
+ assertEquals("10 key fix 5 L0 left", 0, params.mLeftKeys);
+ assertEquals("10 key fix 5 L0 right", 5, params.mRightKeys);
+ assertEquals("10 key fix 5 L0 <1>", 0, params.getColumnPos(0));
+ assertEquals("10 key fix 5 L0 [2]", 1, params.getColumnPos(1));
+ assertEquals("10 key fix 5 L0 [3]", 2, params.getColumnPos(2));
+ assertEquals("10 key fix 5 L0 [4]", 3, params.getColumnPos(3));
+ assertEquals("10 key fix 5 L0 [5]", 4, params.getColumnPos(4));
+ assertEquals("10 key fix 5 L0 [6]", 0, params.getColumnPos(5));
+ assertEquals("10 key fix 5 L0 [7]", 1, params.getColumnPos(6));
+ assertEquals("10 key fix 5 L0 [8]", 2, params.getColumnPos(7));
+ assertEquals("10 key fix 5 L0 [9]", 3, params.getColumnPos(8));
+ assertEquals("10 key fix 5 L0 [A]", 4, params.getColumnPos(9));
+ assertEquals("10 key fix 5 L0 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("10 key fix 5 L0 default", WIDTH * 0, params.getDefaultKeyCoordX());
+ }
+
+ // |___ [6] [7] [8] [9] [A]
+ // |___ <1> [2] [3] [4] [5]
+ public void testLayout10KeyFix5L1() {
+ MoreKeysKeyboardParams params = createParams(10, 5, XPOS_L1);
+ assertEquals("10 key fix 5 L1 columns", 5, params.mNumColumns);
+ assertEquals("10 key fix 5 L1 rows", 2, params.mNumRows);
+ assertEquals("10 key fix 5 L1 left", 0, params.mLeftKeys);
+ assertEquals("10 key fix 5 L1 right", 5, params.mRightKeys);
+ assertEquals("10 key fix 5 L1 <1>", 0, params.getColumnPos(0));
+ assertEquals("10 key fix 5 L1 [2]", 1, params.getColumnPos(1));
+ assertEquals("10 key fix 5 L1 [3]", 2, params.getColumnPos(2));
+ assertEquals("10 key fix 5 L1 [4]", 3, params.getColumnPos(3));
+ assertEquals("10 key fix 5 L1 [5]", 4, params.getColumnPos(4));
+ assertEquals("10 key fix 5 L1 [6]", 0, params.getColumnPos(5));
+ assertEquals("10 key fix 5 L1 [7]", 1, params.getColumnPos(6));
+ assertEquals("10 key fix 5 L1 [8]", 2, params.getColumnPos(7));
+ assertEquals("10 key fix 5 L1 [9]", 3, params.getColumnPos(8));
+ assertEquals("10 key fix 5 L1 [A]", 4, params.getColumnPos(9));
+ assertEquals("10 key fix 5 L1 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("10 key fix 5 L1 default", WIDTH * 0, params.getDefaultKeyCoordX());
+ }
+
+ // |___ [6] [7] [8] [9] [A]
+ // |___ [1] <2> [3] [4] [5]
+ public void testLayout10KeyFix5L2() {
+ MoreKeysKeyboardParams params = createParams(10, 5, XPOS_L2);
+ assertEquals("10 key fix 5 L2 columns", 5, params.mNumColumns);
+ assertEquals("10 key fix 5 L2 rows", 2, params.mNumRows);
+ assertEquals("10 key fix 5 L2 left", 1, params.mLeftKeys);
+ assertEquals("10 key fix 5 L2 right", 4, params.mRightKeys);
+ assertEquals("10 key fix 5 L2 [1]", -1, params.getColumnPos(0));
+ assertEquals("10 key fix 5 L2 <2>", 0, params.getColumnPos(1));
+ assertEquals("10 key fix 5 L2 [3]", 1, params.getColumnPos(2));
+ assertEquals("10 key fix 5 L2 [4]", 2, params.getColumnPos(3));
+ assertEquals("10 key fix 5 L2 [5]", 3, params.getColumnPos(4));
+ assertEquals("10 key fix 5 L2 [6]", -1, params.getColumnPos(5));
+ assertEquals("10 key fix 5 L2 [7]", 0, params.getColumnPos(6));
+ assertEquals("10 key fix 5 L2 [8]", 1, params.getColumnPos(7));
+ assertEquals("10 key fix 5 L2 [9]", 2, params.getColumnPos(8));
+ assertEquals("10 key fix 5 L2 [A]", 3, params.getColumnPos(9));
+ assertEquals("10 key fix 5 L2 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("10 key fix 5 L2 default", WIDTH * 1, params.getDefaultKeyCoordX());
+ }
+
+ // [6] [7] [8] [9] [A]|
+ // [1] [2] [3] [4] <5>|
+ public void testLayout10KeyFix5R0() {
+ MoreKeysKeyboardParams params = createParams(10, 5, XPOS_R0);
+ assertEquals("10 key fix 5 R0 columns", 5, params.mNumColumns);
+ assertEquals("10 key fix 5 R0 rows", 2, params.mNumRows);
+ assertEquals("10 key fix 5 R0 left", 4, params.mLeftKeys);
+ assertEquals("10 key fix 5 R0 right", 1, params.mRightKeys);
+ assertEquals("10 key fix 5 R0 [1]", -4, params.getColumnPos(0));
+ assertEquals("10 key fix 5 R0 [2]", -3, params.getColumnPos(1));
+ assertEquals("10 key fix 5 R0 [3]", -2, params.getColumnPos(2));
+ assertEquals("10 key fix 5 R0 [4]", -1, params.getColumnPos(3));
+ assertEquals("10 key fix 5 R0 <5>", 0, params.getColumnPos(4));
+ assertEquals("10 key fix 5 R0 [6]", -4, params.getColumnPos(5));
+ assertEquals("10 key fix 5 R0 [7]", -3, params.getColumnPos(6));
+ assertEquals("10 key fix 5 R0 [8]", -2, params.getColumnPos(7));
+ assertEquals("10 key fix 5 R0 [9]", -1, params.getColumnPos(8));
+ assertEquals("10 key fix 5 R0 [A]", 0, params.getColumnPos(9));
+ assertEquals("10 key fix 5 R0 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("10 key fix 5 R0 default", WIDTH * 4, params.getDefaultKeyCoordX());
+ }
+
+ // [6] [7] [8] [9] [A] ___|
+ // [1] [2] [3] [4] <5> ___|
+ public void testLayout10KeyFix5R1() {
+ MoreKeysKeyboardParams params = createParams(10, 5, XPOS_R1);
+ assertEquals("10 key fix 5 R1 columns", 5, params.mNumColumns);
+ assertEquals("10 key fix 5 R1 rows", 2, params.mNumRows);
+ assertEquals("10 key fix 5 R1 left", 4, params.mLeftKeys);
+ assertEquals("10 key fix 5 R1 right", 1, params.mRightKeys);
+ assertEquals("10 key fix 5 R1 [1]", -4, params.getColumnPos(0));
+ assertEquals("10 key fix 5 R1 [2]", -3, params.getColumnPos(1));
+ assertEquals("10 key fix 5 R1 [3]", -2, params.getColumnPos(2));
+ assertEquals("10 key fix 5 R1 [4]", -1, params.getColumnPos(3));
+ assertEquals("10 key fix 5 R1 <5>", 0, params.getColumnPos(4));
+ assertEquals("10 key fix 5 R1 [6]", -4, params.getColumnPos(5));
+ assertEquals("10 key fix 5 R1 [7]", -3, params.getColumnPos(6));
+ assertEquals("10 key fix 5 R1 [8]", -2, params.getColumnPos(7));
+ assertEquals("10 key fix 5 R1 [9]", -1, params.getColumnPos(8));
+ assertEquals("10 key fix 5 R1 [A]", 0, params.getColumnPos(9));
+ assertEquals("10 key fix 5 R1 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("10 key fix 5 R1 default", WIDTH * 4, params.getDefaultKeyCoordX());
+ }
+
+ // [6] [7] [8] [9] [A] ___|
+ // [1] [2] [3] <4> [5] ___|
+ public void testLayout10KeyFix5R2() {
+ MoreKeysKeyboardParams params = createParams(10, 5, XPOS_R2);
+ assertEquals("10 key fix 5 R2 columns", 5, params.mNumColumns);
+ assertEquals("10 key fix 5 R2 rows", 2, params.mNumRows);
+ assertEquals("10 key fix 5 R2 left", 3, params.mLeftKeys);
+ assertEquals("10 key fix 5 R2 right", 2, params.mRightKeys);
+ assertEquals("10 key fix 5 R2 [1]", -3, params.getColumnPos(0));
+ assertEquals("10 key fix 5 R2 [2]", -2, params.getColumnPos(1));
+ assertEquals("10 key fix 5 R2 [3]", -1, params.getColumnPos(2));
+ assertEquals("10 key fix 5 R2 <4>", 0, params.getColumnPos(3));
+ assertEquals("10 key fix 5 R2 [5]", 1, params.getColumnPos(4));
+ assertEquals("10 key fix 5 R2 [6]", -3, params.getColumnPos(5));
+ assertEquals("10 key fix 5 R2 [7]", -2, params.getColumnPos(6));
+ assertEquals("10 key fix 5 R2 [8]", -1, params.getColumnPos(7));
+ assertEquals("10 key fix 5 R2 [9]", 0, params.getColumnPos(8));
+ assertEquals("10 key fix 5 R2 [A]", 1, params.getColumnPos(9));
+ assertEquals("10 key fix 5 R2 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("10 key fix 5 R2 default", WIDTH * 3, params.getDefaultKeyCoordX());
+ }
+
+ // [B]
+ // [6] [7] [8] [9] [A]
+ // [1] [2] <3> [4] [5]
+ public void testLayout11KeyFix5M0() {
+ MoreKeysKeyboardParams params = createParams(11, 5, XPOS_M0);
+ assertEquals("11 key fix 5 M0 columns", 5, params.mNumColumns);
+ assertEquals("11 key fix 5 M0 rows", 3, params.mNumRows);
+ assertEquals("11 key fix 5 M0 left", 2, params.mLeftKeys);
+ assertEquals("11 key fix 5 M0 right", 3, params.mRightKeys);
+ assertEquals("11 key fix 5 M0 [1]", -2, params.getColumnPos(0));
+ assertEquals("11 key fix 5 M0 [2]", -1, params.getColumnPos(1));
+ assertEquals("11 key fix 5 M0 <3>", 0, params.getColumnPos(2));
+ assertEquals("11 key fix 5 M0 [4]", 1, params.getColumnPos(3));
+ assertEquals("11 key fix 5 M0 [5]", 2, params.getColumnPos(4));
+ assertEquals("11 key fix 5 M0 [6]", -2, params.getColumnPos(5));
+ assertEquals("11 key fix 5 M0 [7]", -1, params.getColumnPos(6));
+ assertEquals("11 key fix 5 M0 [8]", 0, params.getColumnPos(7));
+ assertEquals("11 key fix 5 M0 [9]", 1, params.getColumnPos(8));
+ assertEquals("11 key fix 5 M0 [A]", 2, params.getColumnPos(9));
+ assertEquals("11 key fix 5 M0 [B]", 0, params.getColumnPos(10));
+ assertEquals("11 key fix 5 M0 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("11 key fix 5 M0 default", WIDTH * 2, params.getDefaultKeyCoordX());
+ }
+
+ // [B] [C]
+ // [6] [7] [8] [9] [A]
+ // [1] [2] <3> [4] [5]
+ public void testLayout12KeyFix5M0() {
+ MoreKeysKeyboardParams params = createParams(12, 5, XPOS_M0);
+ assertEquals("12 key fix 5 M0 columns", 5, params.mNumColumns);
+ assertEquals("12 key fix 5 M0 rows", 3, params.mNumRows);
+ assertEquals("12 key fix 5 M0 left", 2, params.mLeftKeys);
+ assertEquals("12 key fix 5 M0 right", 3, params.mRightKeys);
+ assertEquals("12 key fix 5 M0 [1]", -2, params.getColumnPos(0));
+ assertEquals("12 key fix 5 M0 [2]", -1, params.getColumnPos(1));
+ assertEquals("12 key fix 5 M0 <3>", 0, params.getColumnPos(2));
+ assertEquals("12 key fix 5 M0 [4]", 1, params.getColumnPos(3));
+ assertEquals("12 key fix 5 M0 [5]", 2, params.getColumnPos(4));
+ assertEquals("12 key fix 5 M0 [6]", -2, params.getColumnPos(5));
+ assertEquals("12 key fix 5 M0 [7]", -1, params.getColumnPos(6));
+ assertEquals("12 key fix 5 M0 [8]", 0, params.getColumnPos(7));
+ assertEquals("12 key fix 5 M0 [9]", 1, params.getColumnPos(8));
+ assertEquals("12 key fix 5 M0 [A]", 2, params.getColumnPos(9));
+ assertEquals("12 key fix 5 M0 [B]", 0, params.getColumnPos(10));
+ assertEquals("12 key fix 5 M0 [C]", 1, params.getColumnPos(11));
+ assertEquals("12 key fix 5 M0 adjust", -1, params.mTopRowAdjustment);
+ assertEquals("12 key fix 5 M0 default", WIDTH * 2, params.getDefaultKeyCoordX());
+ }
+
+ // [B] [C] [D]
+ // [6] [7] [8] [9] [A]
+ // [1] [2] <3> [4] [5]
+ public void testLayout13KeyFix5M0() {
+ MoreKeysKeyboardParams params = createParams(13, 5, XPOS_M0);
+ assertEquals("13 key fix 5 M0 columns", 5, params.mNumColumns);
+ assertEquals("13 key fix 5 M0 rows", 3, params.mNumRows);
+ assertEquals("13 key fix 5 M0 left", 2, params.mLeftKeys);
+ assertEquals("13 key fix 5 M0 right", 3, params.mRightKeys);
+ assertEquals("13 key fix 5 M0 [1]", -2, params.getColumnPos(0));
+ assertEquals("13 key fix 5 M0 [2]", -1, params.getColumnPos(1));
+ assertEquals("13 key fix 5 M0 <3>", 0, params.getColumnPos(2));
+ assertEquals("13 key fix 5 M0 [4]", 1, params.getColumnPos(3));
+ assertEquals("13 key fix 5 M0 [5]", 2, params.getColumnPos(4));
+ assertEquals("13 key fix 5 M0 [6]", -2, params.getColumnPos(5));
+ assertEquals("13 key fix 5 M0 [7]", -1, params.getColumnPos(6));
+ assertEquals("13 key fix 5 M0 [8]", 0, params.getColumnPos(7));
+ assertEquals("13 key fix 5 M0 [9]", 1, params.getColumnPos(8));
+ assertEquals("13 key fix 5 M0 [A]", 2, params.getColumnPos(9));
+ assertEquals("13 key fix 5 M0 [B]", -1, params.getColumnPos(10));
+ assertEquals("13 key fix 5 M0 [C]", 0, params.getColumnPos(11));
+ assertEquals("13 key fix 5 M0 [D]", 1, params.getColumnPos(12));
+ assertEquals("13 key fix 5 M0 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("13 key fix 5 M0 default", WIDTH * 2, params.getDefaultKeyCoordX());
+ }
+
+ // [B] [C] [D] [E]
+ // [6] [7] [8] [9] [A]
+ // [1] [2] <3> [4] [5]
+ public void testLayout14KeyFix5M0() {
+ MoreKeysKeyboardParams params = createParams(14, 5, XPOS_M0);
+ assertEquals("14 key fix 5 M0 columns", 5, params.mNumColumns);
+ assertEquals("14 key fix 5 M0 rows", 3, params.mNumRows);
+ assertEquals("14 key fix 5 M0 left", 2, params.mLeftKeys);
+ assertEquals("14 key fix 5 M0 right", 3, params.mRightKeys);
+ assertEquals("14 key fix 5 M0 [1]", -2, params.getColumnPos(0));
+ assertEquals("14 key fix 5 M0 [2]", -1, params.getColumnPos(1));
+ assertEquals("14 key fix 5 M0 <3>", 0, params.getColumnPos(2));
+ assertEquals("14 key fix 5 M0 [4]", 1, params.getColumnPos(3));
+ assertEquals("14 key fix 5 M0 [5]", 2, params.getColumnPos(4));
+ assertEquals("14 key fix 5 M0 [6]", -2, params.getColumnPos(5));
+ assertEquals("14 key fix 5 M0 [7]", -1, params.getColumnPos(6));
+ assertEquals("14 key fix 5 M0 [8]", 0, params.getColumnPos(7));
+ assertEquals("14 key fix 5 M0 [9]", 1, params.getColumnPos(8));
+ assertEquals("14 key fix 5 M0 [A]", 2, params.getColumnPos(9));
+ assertEquals("14 key fix 5 M0 [B]", -1, params.getColumnPos(10));
+ assertEquals("14 key fix 5 M0 [C]", 0, params.getColumnPos(11));
+ assertEquals("14 key fix 5 M0 [D]", 1, params.getColumnPos(12));
+ assertEquals("14 key fix 5 M0 [E]", 2, params.getColumnPos(13));
+ assertEquals("14 key fix 5 M0 adjust", -1, params.mTopRowAdjustment);
+ assertEquals("14 key fix 5 M0 default", WIDTH * 2, params.getDefaultKeyCoordX());
+ }
+
+ // |<1> [2] [3] [4] [5] [6] [7]
+ public void testLayout7KeyFix7L0() {
+ MoreKeysKeyboardParams params = createParams(7, 7, XPOS_L0);
+ assertEquals("7 key fix 7 L0 columns", 7, params.mNumColumns);
+ assertEquals("7 key fix 7 L0 rows", 1, params.mNumRows);
+ assertEquals("7 key fix 7 L0 left", 0, params.mLeftKeys);
+ assertEquals("7 key fix 7 L0 right", 7, params.mRightKeys);
+ assertEquals("7 key fix 7 L0 <1>", 0, params.getColumnPos(0));
+ assertEquals("7 key fix 7 L0 [2]", 1, params.getColumnPos(1));
+ assertEquals("7 key fix 7 L0 [3]", 2, params.getColumnPos(2));
+ assertEquals("7 key fix 7 L0 [4]", 3, params.getColumnPos(3));
+ assertEquals("7 key fix 7 L0 [5]", 4, params.getColumnPos(4));
+ assertEquals("7 key fix 7 L0 [6]", 5, params.getColumnPos(5));
+ assertEquals("7 key fix 7 L0 [7]", 6, params.getColumnPos(6));
+ assertEquals("7 key fix 7 L0 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("7 key fix 7 L0 default", WIDTH * 0, params.getDefaultKeyCoordX());
+ }
+
+ // |___ <1> [2] [3] [4] [5] [6] [7]
+ public void testLayout7KeyFix7L1() {
+ MoreKeysKeyboardParams params = createParams(7, 7, XPOS_L1);
+ assertEquals("7 key fix 7 L1 columns", 7, params.mNumColumns);
+ assertEquals("7 key fix 7 L1 rows", 1, params.mNumRows);
+ assertEquals("7 key fix 7 L1 left", 0, params.mLeftKeys);
+ assertEquals("7 key fix 7 L1 right", 7, params.mRightKeys);
+ assertEquals("7 key fix 7 L1 <1>", 0, params.getColumnPos(0));
+ assertEquals("7 key fix 7 L1 [2]", 1, params.getColumnPos(1));
+ assertEquals("7 key fix 7 L1 [3]", 2, params.getColumnPos(2));
+ assertEquals("7 key fix 7 L1 [4]", 3, params.getColumnPos(3));
+ assertEquals("7 key fix 7 L1 [5]", 4, params.getColumnPos(4));
+ assertEquals("7 key fix 7 L1 [6]", 5, params.getColumnPos(5));
+ assertEquals("7 key fix 7 L1 [7]", 6, params.getColumnPos(6));
+ assertEquals("7 key fix 7 L1 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("7 key fix 7 L1 default", WIDTH * 0, params.getDefaultKeyCoordX());
+ }
+
+ // |___ [1] <2> [3] [4] [5] [6] [7]
+ public void testLayout7KeyFix7L2() {
+ MoreKeysKeyboardParams params = createParams(7, 7, XPOS_L2);
+ assertEquals("7 key fix 7 L2 columns", 7, params.mNumColumns);
+ assertEquals("7 key fix 7 L2 rows", 1, params.mNumRows);
+ assertEquals("7 key fix 7 L2 left", 1, params.mLeftKeys);
+ assertEquals("7 key fix 7 L2 right", 6, params.mRightKeys);
+ assertEquals("7 key fix 7 L2 [1]", -1, params.getColumnPos(0));
+ assertEquals("7 key fix 7 L2 <2>", 0, params.getColumnPos(1));
+ assertEquals("7 key fix 7 L2 [3]", 1, params.getColumnPos(2));
+ assertEquals("7 key fix 7 L2 [4]", 2, params.getColumnPos(3));
+ assertEquals("7 key fix 7 L2 [5]", 3, params.getColumnPos(4));
+ assertEquals("7 key fix 7 L2 [6]", 4, params.getColumnPos(5));
+ assertEquals("7 key fix 7 L2 [7]", 5, params.getColumnPos(6));
+ assertEquals("7 key fix 7 L2 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("7 key fix 7 L2 default", WIDTH * 1, params.getDefaultKeyCoordX());
+ }
+
+ // |___ [1] [2] <3> [4] [5] [6] [7]
+ public void testLayout7KeyFix7L3() {
+ MoreKeysKeyboardParams params = createParams(7, 7, XPOS_L3);
+ assertEquals("7 key fix 7 L3 columns", 7, params.mNumColumns);
+ assertEquals("7 key fix 7 L3 rows", 1, params.mNumRows);
+ assertEquals("7 key fix 7 L3 left", 2, params.mLeftKeys);
+ assertEquals("7 key fix 7 L3 right", 5, params.mRightKeys);
+ assertEquals("7 key fix 7 L3 [1]", -2, params.getColumnPos(0));
+ assertEquals("7 key fix 7 L3 [2]", -1, params.getColumnPos(1));
+ assertEquals("7 key fix 7 L3 <3>", 0, params.getColumnPos(2));
+ assertEquals("7 key fix 7 L3 [4]", 1, params.getColumnPos(3));
+ assertEquals("7 key fix 7 L3 [5]", 2, params.getColumnPos(4));
+ assertEquals("7 key fix 7 L3 [6]", 3, params.getColumnPos(5));
+ assertEquals("7 key fix 7 L3 [7]", 4, params.getColumnPos(6));
+ assertEquals("7 key fix 7 L3 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("7 key fix 7 L3 default", WIDTH * 2, params.getDefaultKeyCoordX());
+ }
+
+ // |___ [1] [2] [3] <4> [5] [6] [7] ___ ___|
+ public void testLayout7KeyFix7M0() {
+ MoreKeysKeyboardParams params = createParams(7, 7, XPOS_M0);
+ assertEquals("7 key fix 7 M0 columns", 7, params.mNumColumns);
+ assertEquals("7 key fix 7 M0 rows", 1, params.mNumRows);
+ assertEquals("7 key fix 7 M0 left", 3, params.mLeftKeys);
+ assertEquals("7 key fix 7 M0 right", 4, params.mRightKeys);
+ assertEquals("7 key fix 7 M0 [1]", -3, params.getColumnPos(0));
+ assertEquals("7 key fix 7 M0 [2]", -2, params.getColumnPos(1));
+ assertEquals("7 key fix 7 M0 [3]", -1, params.getColumnPos(2));
+ assertEquals("7 key fix 7 M0 <4>", 0, params.getColumnPos(3));
+ assertEquals("7 key fix 7 M0 [5]", 1, params.getColumnPos(4));
+ assertEquals("7 key fix 7 M0 [6]", 2, params.getColumnPos(5));
+ assertEquals("7 key fix 7 M0 [7]", 3, params.getColumnPos(6));
+ assertEquals("7 key fix 7 M0 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("7 key fix 7 M0 default", WIDTH * 3, params.getDefaultKeyCoordX());
+ }
+
+ // |___ ___ [1] [2] [3] <4> [5] [6] [7] ___|
+ public void testLayout7KeyFix7M1() {
+ MoreKeysKeyboardParams params = createParams(7, 7, XPOS_M1);
+ assertEquals("7 key fix 7 M1 columns", 7, params.mNumColumns);
+ assertEquals("7 key fix 7 M1 rows", 1, params.mNumRows);
+ assertEquals("7 key fix 7 M1 left", 3, params.mLeftKeys);
+ assertEquals("7 key fix 7 M1 right", 4, params.mRightKeys);
+ assertEquals("7 key fix 7 M1 [1]", -3, params.getColumnPos(0));
+ assertEquals("7 key fix 7 M1 [2]", -2, params.getColumnPos(1));
+ assertEquals("7 key fix 7 M1 [3]", -1, params.getColumnPos(2));
+ assertEquals("7 key fix 7 M1 <4>", 0, params.getColumnPos(3));
+ assertEquals("7 key fix 7 M1 [5]", 1, params.getColumnPos(4));
+ assertEquals("7 key fix 7 M1 [6]", 2, params.getColumnPos(5));
+ assertEquals("7 key fix 7 M1 [7]", 3, params.getColumnPos(6));
+ assertEquals("7 key fix 7 M1 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("7 key fix 7 M1 default", WIDTH * 3, params.getDefaultKeyCoordX());
+ }
+
+ // [1] [2] [3] [4] <5> [6] [7] ___|
+ public void testLayout7KeyFix7R3() {
+ MoreKeysKeyboardParams params = createParams(7, 7, XPOS_R3);
+ assertEquals("7 key fix 7 R3 columns", 7, params.mNumColumns);
+ assertEquals("7 key fix 7 R3 rows", 1, params.mNumRows);
+ assertEquals("7 key fix 7 R3 left", 4, params.mLeftKeys);
+ assertEquals("7 key fix 7 R3 right", 3, params.mRightKeys);
+ assertEquals("7 key fix 7 R3 [1]", -4, params.getColumnPos(0));
+ assertEquals("7 key fix 7 R3 [2]", -3, params.getColumnPos(1));
+ assertEquals("7 key fix 7 R3 [3]", -2, params.getColumnPos(2));
+ assertEquals("7 key fix 7 R3 [4]", -1, params.getColumnPos(3));
+ assertEquals("7 key fix 7 R3 <5>", 0, params.getColumnPos(4));
+ assertEquals("7 key fix 7 R3 [6]", 1, params.getColumnPos(5));
+ assertEquals("7 key fix 7 R3 [7]", 2, params.getColumnPos(6));
+ assertEquals("7 key fix 7 R3 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("7 key fix 7 R3 default", WIDTH * 4, params.getDefaultKeyCoordX());
+ }
+
+ // [1] [2] [3] [4] [5] <6> [7] ___|
+ public void testLayout7KeyFix7R2() {
+ MoreKeysKeyboardParams params = createParams(7, 7, XPOS_R2);
+ assertEquals("7 key fix 7 R2 columns", 7, params.mNumColumns);
+ assertEquals("7 key fix 7 R2 rows", 1, params.mNumRows);
+ assertEquals("7 key fix 7 R2 left", 5, params.mLeftKeys);
+ assertEquals("7 key fix 7 R2 right", 2, params.mRightKeys);
+ assertEquals("7 key fix 7 R2 [1]", -5, params.getColumnPos(0));
+ assertEquals("7 key fix 7 R2 [2]", -4, params.getColumnPos(1));
+ assertEquals("7 key fix 7 R2 [3]", -3, params.getColumnPos(2));
+ assertEquals("7 key fix 7 R2 [4]", -2, params.getColumnPos(3));
+ assertEquals("7 key fix 7 R2 [5]", -1, params.getColumnPos(4));
+ assertEquals("7 key fix 7 R2 <6>", 0, params.getColumnPos(5));
+ assertEquals("7 key fix 7 R2 [7]", 1, params.getColumnPos(6));
+ assertEquals("7 key fix 7 R2 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("7 key fix 7 R2 default", WIDTH * 5, params.getDefaultKeyCoordX());
+ }
+
+ // [1] [2] [3] [4] [5] [6] <7> ___|
+ public void testLayout7KeyFix7R1() {
+ MoreKeysKeyboardParams params = createParams(7, 7, XPOS_R1);
+ assertEquals("7 key fix 7 R1 columns", 7, params.mNumColumns);
+ assertEquals("7 key fix 7 R1 rows", 1, params.mNumRows);
+ assertEquals("7 key fix 7 R1 left", 6, params.mLeftKeys);
+ assertEquals("7 key fix 7 R1 right", 1, params.mRightKeys);
+ assertEquals("7 key fix 7 R1 [1]", -6, params.getColumnPos(0));
+ assertEquals("7 key fix 7 R1 [2]", -5, params.getColumnPos(1));
+ assertEquals("7 key fix 7 R1 [3]", -4, params.getColumnPos(2));
+ assertEquals("7 key fix 7 R1 [4]", -3, params.getColumnPos(3));
+ assertEquals("7 key fix 7 R1 [5]", -2, params.getColumnPos(4));
+ assertEquals("7 key fix 7 R1 [6]", -1, params.getColumnPos(5));
+ assertEquals("7 key fix 7 R1 <7>", 0, params.getColumnPos(6));
+ assertEquals("7 key fix 7 R1 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("7 key fix 7 R1 default", WIDTH * 6, params.getDefaultKeyCoordX());
+ }
+
+ // [1] [2] [3] [4] [5] [6] <7>|
+ public void testLayout7KeyFix7R0() {
+ MoreKeysKeyboardParams params = createParams(7, 7, XPOS_R0);
+ assertEquals("7 key fix 7 R0 columns", 7, params.mNumColumns);
+ assertEquals("7 key fix 7 R0 rows", 1, params.mNumRows);
+ assertEquals("7 key fix 7 R0 left", 6, params.mLeftKeys);
+ assertEquals("7 key fix 7 R0 right", 1, params.mRightKeys);
+ assertEquals("7 key fix 7 R0 [1]", -6, params.getColumnPos(0));
+ assertEquals("7 key fix 7 R0 [2]", -5, params.getColumnPos(1));
+ assertEquals("7 key fix 7 R0 [3]", -4, params.getColumnPos(2));
+ assertEquals("7 key fix 7 R0 [4]", -3, params.getColumnPos(3));
+ assertEquals("7 key fix 7 R0 [5]", -2, params.getColumnPos(4));
+ assertEquals("7 key fix 7 R0 [6]", -1, params.getColumnPos(5));
+ assertEquals("7 key fix 7 R0 <7>", 0, params.getColumnPos(6));
+ assertEquals("7 key fix 7 R0 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("7 key fix 7 R0 default", WIDTH * 6, params.getDefaultKeyCoordX());
+ }
+}
diff --git a/tests/src/com/android/inputmethod/keyboard/MoreKeysKeyboardBuilderTests.java b/tests/src/com/android/inputmethod/keyboard/MoreKeysKeyboardBuilderTests.java
new file mode 100644
index 000000000..31f0e0fef
--- /dev/null
+++ b/tests/src/com/android/inputmethod/keyboard/MoreKeysKeyboardBuilderTests.java
@@ -0,0 +1,2365 @@
+/*
+ * Copyright (C) 2011 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
+package com.android.inputmethod.keyboard;
+
+import android.test.AndroidTestCase;
+
+import com.android.inputmethod.keyboard.MoreKeysKeyboard.Builder.MoreKeysKeyboardParams;
+
+public class MoreKeysKeyboardBuilderTests extends AndroidTestCase {
+ private static final int WIDTH = 10;
+ private static final int HEIGHT = 10;
+
+ private static final int KEYBOARD_WIDTH = WIDTH * 10;
+ private static final int XPOS_L0 = WIDTH * 0 + WIDTH / 2;
+ private static final int XPOS_L1 = WIDTH * 1 + WIDTH / 2;
+ private static final int XPOS_L2 = WIDTH * 2 + WIDTH / 2;
+ private static final int XPOS_L3 = WIDTH * 3 + WIDTH / 2;
+ private static final int XPOS_M0 = WIDTH * 4 + WIDTH / 2;
+ private static final int XPOS_M1 = WIDTH * 5 + WIDTH / 2;
+ private static final int XPOS_R3 = WIDTH * 6 + WIDTH / 2;
+ private static final int XPOS_R2 = WIDTH * 7 + WIDTH / 2;
+ private static final int XPOS_R1 = WIDTH * 8 + WIDTH / 2;
+ private static final int XPOS_R0 = WIDTH * 9 + WIDTH / 2;
+
+ @Override
+ protected void setUp() throws Exception {
+ super.setUp();
+ }
+
+ private static MoreKeysKeyboardParams createParams(int numKeys, int maxColumns,
+ int coordXInParnet) {
+ final MoreKeysKeyboardParams params = new MoreKeysKeyboardParams();
+ params.setParameters(numKeys, maxColumns, WIDTH, HEIGHT, coordXInParnet, KEYBOARD_WIDTH,
+ /* isFixedOrderColumn */false, /* dividerWidth */0);
+ return params;
+ }
+
+ public void testLayoutError() {
+ MoreKeysKeyboardParams params = null;
+ try {
+ final int maxColumns = KEYBOARD_WIDTH / WIDTH;
+ params = createParams(10, maxColumns + 1, HEIGHT);
+ fail("Should throw IllegalArgumentException");
+ } catch (IllegalArgumentException e) {
+ // Too small keyboard to hold more keys keyboard.
+ }
+ assertNull("Too small keyboard to hold more keys keyboard", params);
+ }
+
+ // More keys keyboard layout test.
+ // "[n]" represents n-th key position in more keys keyboard.
+ // "<1>" is the default key.
+
+ // <1>
+ public void testLayout1KeyMax5M0() {
+ MoreKeysKeyboardParams params = createParams(1, 5, XPOS_M0);
+ assertEquals("1 key max 5 M0 columns", 1, params.mNumColumns);
+ assertEquals("1 key max 5 M0 rows", 1, params.mNumRows);
+ assertEquals("1 key max 5 M0 left", 0, params.mLeftKeys);
+ assertEquals("1 key max 5 M0 right", 1, params.mRightKeys);
+ assertEquals("1 key max 5 M0 <1>", 0, params.getColumnPos(0));
+ assertEquals("1 key max 5 M0 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("1 key max 5 M0 default", WIDTH * 0, params.getDefaultKeyCoordX());
+ }
+
+ // |<1>
+ public void testLayout1KeyMax5L0() {
+ MoreKeysKeyboardParams params = createParams(1, 5, XPOS_L0);
+ assertEquals("1 key max 5 L0 columns", 1, params.mNumColumns);
+ assertEquals("1 key max 5 L0 rows", 1, params.mNumRows);
+ assertEquals("1 key max 5 L0 left", 0, params.mLeftKeys);
+ assertEquals("1 key max 5 L0 right", 1, params.mRightKeys);
+ assertEquals("1 key max 5 L0 <1>", 0, params.getColumnPos(0));
+ assertEquals("1 key max 5 L0 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("1 key max 5 L0 default", WIDTH * 0, params.getDefaultKeyCoordX());
+ }
+
+ // |___ <1>
+ public void testLayout1KeyMax5L1() {
+ MoreKeysKeyboardParams params = createParams(1, 5, XPOS_L1);
+ assertEquals("1 key max 5 L1 columns", 1, params.mNumColumns);
+ assertEquals("1 key max 5 L1 rows", 1, params.mNumRows);
+ assertEquals("1 key max 5 L1 left", 0, params.mLeftKeys);
+ assertEquals("1 key max 5 L1 right", 1, params.mRightKeys);
+ assertEquals("1 key max 5 L1 <1>", 0, params.getColumnPos(0));
+ assertEquals("1 key max 5 L1 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("1 key max 5 L1 default", WIDTH * 0, params.getDefaultKeyCoordX());
+ }
+
+ // |___ ___ <1>
+ public void testLayout1KeyMax5L2() {
+ MoreKeysKeyboardParams params = createParams(1, 5, XPOS_L2);
+ assertEquals("1 key max 5 L2 columns", 1, params.mNumColumns);
+ assertEquals("1 key max 5 L2 rows", 1, params.mNumRows);
+ assertEquals("1 key max 5 L2 left", 0, params.mLeftKeys);
+ assertEquals("1 key max 5 L2 right", 1, params.mRightKeys);
+ assertEquals("1 key max 5 L2 <1>", 0, params.getColumnPos(0));
+ assertEquals("1 key max 5 L2 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("1 key max 5 L2 default", WIDTH * 0, params.getDefaultKeyCoordX());
+ }
+
+ // <1>|
+ public void testLayout1KeyMax5R0() {
+ MoreKeysKeyboardParams params = createParams(1, 5, XPOS_R0);
+ assertEquals("1 key max 5 R0 columns", 1, params.mNumColumns);
+ assertEquals("1 key max 5 R0 rows", 1, params.mNumRows);
+ assertEquals("1 key max 5 R0 left", 0, params.mLeftKeys);
+ assertEquals("1 key max 5 R0 right", 1, params.mRightKeys);
+ assertEquals("1 key max 5 R0 <1>", 0, params.getColumnPos(0));
+ assertEquals("1 key max 5 R0 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("1 key max 5 R0 default", WIDTH * 0, params.getDefaultKeyCoordX());
+ }
+
+ // <1> ___|
+ public void testLayout1KeyMax5R1() {
+ MoreKeysKeyboardParams params = createParams(1, 5, XPOS_R1);
+ assertEquals("1 key max 5 R1 columns", 1, params.mNumColumns);
+ assertEquals("1 key max 5 R1 rows", 1, params.mNumRows);
+ assertEquals("1 key max 5 R1 left", 0, params.mLeftKeys);
+ assertEquals("1 key max 5 R1 right", 1, params.mRightKeys);
+ assertEquals("1 key max 5 R1 <1>", 0, params.getColumnPos(0));
+ assertEquals("1 key max 5 R1 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("1 key max 5 R1 default", WIDTH * 0, params.getDefaultKeyCoordX());
+ }
+
+ // <1> ___ ___|
+ public void testLayout1KeyMax5R2() {
+ MoreKeysKeyboardParams params = createParams(1, 5, XPOS_R2);
+ assertEquals("1 key max 5 R2 columns", 1, params.mNumColumns);
+ assertEquals("1 key max 5 R2 rows", 1, params.mNumRows);
+ assertEquals("1 key max 5 R2 left", 0, params.mLeftKeys);
+ assertEquals("1 key max 5 R2 right", 1, params.mRightKeys);
+ assertEquals("1 key max 5 R2 <1>", 0, params.getColumnPos(0));
+ assertEquals("1 key max 5 R2 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("1 key max 5 R2 default", WIDTH * 0, params.getDefaultKeyCoordX());
+ }
+
+ // <1> [2]
+ public void testLayout2KeyMax5M0() {
+ MoreKeysKeyboardParams params = createParams(2, 5, XPOS_M0);
+ assertEquals("2 key max 5 M0 columns", 2, params.mNumColumns);
+ assertEquals("2 key max 5 M0 rows", 1, params.mNumRows);
+ assertEquals("2 key max 5 M0 left", 0, params.mLeftKeys);
+ assertEquals("2 key max 5 M0 right", 2, params.mRightKeys);
+ assertEquals("2 key max 5 M0 <1>", 0, params.getColumnPos(0));
+ assertEquals("2 key max 5 M0 [2]", 1, params.getColumnPos(1));
+ assertEquals("2 key max 5 M0 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("2 key max 5 M0 default", WIDTH * 0, params.getDefaultKeyCoordX());
+ }
+
+ // |<1> [2]
+ public void testLayout2KeyMax5L0() {
+ MoreKeysKeyboardParams params = createParams(2, 5, XPOS_L0);
+ assertEquals("2 key max 5 L0 columns", 2, params.mNumColumns);
+ assertEquals("2 key max 5 L0 rows", 1, params.mNumRows);
+ assertEquals("2 key max 5 L0 left", 0, params.mLeftKeys);
+ assertEquals("2 key max 5 L0 right", 2, params.mRightKeys);
+ assertEquals("2 key max 5 L0 <1>", 0, params.getColumnPos(0));
+ assertEquals("2 key max 5 L0 [2]", 1, params.getColumnPos(1));
+ assertEquals("2 key max 5 L0 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("2 key max 5 L0 default", WIDTH * 0, params.getDefaultKeyCoordX());
+ }
+
+ // |___ <1> [2]
+ public void testLayout2KeyMax5L1() {
+ MoreKeysKeyboardParams params = createParams(2, 5, XPOS_L1);
+ assertEquals("2 key max 5 L1 columns", 2, params.mNumColumns);
+ assertEquals("2 key max 5 L1 rows", 1, params.mNumRows);
+ assertEquals("2 key max 5 L1 left", 0, params.mLeftKeys);
+ assertEquals("2 key max 5 L1 right", 2, params.mRightKeys);
+ assertEquals("2 key max 5 L1 <1>", 0, params.getColumnPos(0));
+ assertEquals("2 key max 5 L1 [2]", 1, params.getColumnPos(1));
+ assertEquals("2 key max 5 L1 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("2 key max 5 L1 default", WIDTH * 0, params.getDefaultKeyCoordX());
+ }
+
+ // |___ ___ <1> [2]
+ public void testLayout2KeyMax5L2() {
+ MoreKeysKeyboardParams params = createParams(2, 5, XPOS_L2);
+ assertEquals("2 key max 5 L2 columns", 2, params.mNumColumns);
+ assertEquals("2 key max 5 L2 rows", 1, params.mNumRows);
+ assertEquals("2 key max 5 L2 left", 0, params.mLeftKeys);
+ assertEquals("2 key max 5 L2 right", 2, params.mRightKeys);
+ assertEquals("2 key max 5 L2 <1>", 0, params.getColumnPos(0));
+ assertEquals("2 key max 5 L2 [2]", 1, params.getColumnPos(1));
+ assertEquals("2 key max 5 L2 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("2 key max 5 L2 default", WIDTH * 0, params.getDefaultKeyCoordX());
+ }
+
+ // [2] <1>|
+ public void testLayout2KeyMax5R0() {
+ MoreKeysKeyboardParams params = createParams(2, 5, XPOS_R0);
+ assertEquals("2 key max 5 R0 columns", 2, params.mNumColumns);
+ assertEquals("2 key max 5 R0 rows", 1, params.mNumRows);
+ assertEquals("2 key max 5 R0 left", 1, params.mLeftKeys);
+ assertEquals("2 key max 5 R0 right", 1, params.mRightKeys);
+ assertEquals("2 key max 5 R0 <1>", 0, params.getColumnPos(0));
+ assertEquals("2 key max 5 R0 [2]", -1, params.getColumnPos(1));
+ assertEquals("2 key max 5 R0 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("2 key max 5 R0 default", WIDTH * 1, params.getDefaultKeyCoordX());
+ }
+
+ // [2] <1> ___|
+ public void testLayout2KeyMax5R1() {
+ MoreKeysKeyboardParams params = createParams(2, 5, XPOS_R1);
+ assertEquals("2 key max 5 R1 columns", 2, params.mNumColumns);
+ assertEquals("2 key max 5 R1 rows", 1, params.mNumRows);
+ assertEquals("2 key max 5 R1 left", 1, params.mLeftKeys);
+ assertEquals("2 key max 5 R1 right", 1, params.mRightKeys);
+ assertEquals("2 key max 5 R1 <1>", 0, params.getColumnPos(0));
+ assertEquals("2 key max 5 R1 [2]", -1, params.getColumnPos(1));
+ assertEquals("2 key max 5 R1 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("2 key max 5 R1 default", WIDTH * 1, params.getDefaultKeyCoordX());
+ }
+
+ // <1> [2] ___|
+ public void testLayout2KeyMax5R2() {
+ MoreKeysKeyboardParams params = createParams(2, 5, XPOS_R2);
+ assertEquals("2 key max 5 R2 columns", 2, params.mNumColumns);
+ assertEquals("2 key max 5 R2 rows", 1, params.mNumRows);
+ assertEquals("2 key max 5 R2 left", 0, params.mLeftKeys);
+ assertEquals("2 key max 5 R2 right", 2, params.mRightKeys);
+ assertEquals("2 key max 5 R2 <1>", 0, params.getColumnPos(0));
+ assertEquals("2 key max 5 R2 [2]", 1, params.getColumnPos(1));
+ assertEquals("2 key max 5 R2 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("2 key max 5 R2 default", WIDTH * 0, params.getDefaultKeyCoordX());
+ }
+
+ // [3] <1> [2]
+ public void testLayout3KeyMax5M0() {
+ MoreKeysKeyboardParams params = createParams(3, 5, XPOS_M0);
+ assertEquals("3 key max 5 M0 columns", 3, params.mNumColumns);
+ assertEquals("3 key max 5 M0 rows", 1, params.mNumRows);
+ assertEquals("3 key max 5 M0 left", 1, params.mLeftKeys);
+ assertEquals("3 key max 5 M0 right", 2, params.mRightKeys);
+ assertEquals("3 key max 5 M0 <1>", 0, params.getColumnPos(0));
+ assertEquals("3 key max 5 M0 [2]", 1, params.getColumnPos(1));
+ assertEquals("3 key max 5 M0 [3]", -1, params.getColumnPos(2));
+ assertEquals("3 key max 5 M0 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("3 key max 5 M0 default", WIDTH * 1, params.getDefaultKeyCoordX());
+ }
+
+ // |<1> [2] [3]
+ public void testLayout3KeyMax5L0() {
+ MoreKeysKeyboardParams params = createParams(3, 5, XPOS_L0);
+ assertEquals("3 key max 5 L0 columns", 3, params.mNumColumns);
+ assertEquals("3 key max 5 L0 rows", 1, params.mNumRows);
+ assertEquals("3 key max 5 L0 left", 0, params.mLeftKeys);
+ assertEquals("3 key max 5 L0 right", 3, params.mRightKeys);
+ assertEquals("3 key max 5 L0 <1>", 0, params.getColumnPos(0));
+ assertEquals("3 key max 5 L0 [2]", 1, params.getColumnPos(1));
+ assertEquals("3 key max 5 L0 [3]", 2, params.getColumnPos(2));
+ assertEquals("3 key max 5 L0 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("3 key max 5 L0 default", WIDTH * 0, params.getDefaultKeyCoordX());
+ }
+
+ // |___ <1> [2] [3]
+ public void testLayout3KeyMax5L1() {
+ MoreKeysKeyboardParams params = createParams(3, 5, XPOS_L1);
+ assertEquals("3 key max 5 L1 columns", 3, params.mNumColumns);
+ assertEquals("3 key max 5 L1 rows", 1, params.mNumRows);
+ assertEquals("3 key max 5 L1 left", 0, params.mLeftKeys);
+ assertEquals("3 key max 5 L1 right", 3, params.mRightKeys);
+ assertEquals("3 key max 5 L1 <1>", 0, params.getColumnPos(0));
+ assertEquals("3 key max 5 L1 [2]", 1, params.getColumnPos(1));
+ assertEquals("3 key max 5 L1 [3]", 2, params.getColumnPos(2));
+ assertEquals("3 key max 5 L1 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("3 key max 5 L1 default", WIDTH * 0, params.getDefaultKeyCoordX());
+ }
+
+ // |___ [3] <1> [2]
+ public void testLayout3KeyMax5L2() {
+ MoreKeysKeyboardParams params = createParams(3, 5, XPOS_L2);
+ assertEquals("3 key max 5 L2 columns", 3, params.mNumColumns);
+ assertEquals("3 key max 5 L2 rows", 1, params.mNumRows);
+ assertEquals("3 key max 5 L2 left", 1, params.mLeftKeys);
+ assertEquals("3 key max 5 L2 right", 2, params.mRightKeys);
+ assertEquals("3 key max 5 L2 <1>", 0, params.getColumnPos(0));
+ assertEquals("3 key max 5 L2 [2]", 1, params.getColumnPos(1));
+ assertEquals("3 key max 5 L2 [3]", -1, params.getColumnPos(2));
+ assertEquals("3 key max 5 L2 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("3 key max 5 L2 default", WIDTH * 1, params.getDefaultKeyCoordX());
+ }
+
+ // [3] [2] <1>|
+ public void testLayout3KeyMax5R0() {
+ MoreKeysKeyboardParams params = createParams(3, 5, XPOS_R0);
+ assertEquals("3 key max 5 R0 columns", 3, params.mNumColumns);
+ assertEquals("3 key max 5 R0 rows", 1, params.mNumRows);
+ assertEquals("3 key max 5 R0 left", 2, params.mLeftKeys);
+ assertEquals("3 key max 5 R0 right", 1, params.mRightKeys);
+ assertEquals("3 key max 5 R0 <1>", 0, params.getColumnPos(0));
+ assertEquals("3 key max 5 R0 [2]", -1, params.getColumnPos(1));
+ assertEquals("3 key max 5 R0 [3]", -2, params.getColumnPos(2));
+ assertEquals("3 key max 5 R0 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("3 key max 5 R0 default", WIDTH * 2, params.getDefaultKeyCoordX());
+ }
+
+ // [3] [2] <1> ___|
+ public void testLayout3KeyMax5R1() {
+ MoreKeysKeyboardParams params = createParams(3, 5, XPOS_R1);
+ assertEquals("3 key max 5 R1 columns", 3, params.mNumColumns);
+ assertEquals("3 key max 5 R1 rows", 1, params.mNumRows);
+ assertEquals("3 key max 5 R1 left", 2, params.mLeftKeys);
+ assertEquals("3 key max 5 R1 right", 1, params.mRightKeys);
+ assertEquals("3 key max 5 R1 <1>", 0, params.getColumnPos(0));
+ assertEquals("3 key max 5 R1 [2]", -1, params.getColumnPos(1));
+ assertEquals("3 key max 5 R1 [3]", -2, params.getColumnPos(2));
+ assertEquals("3 key max 5 R1 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("3 key max 5 R1 default", WIDTH * 2, params.getDefaultKeyCoordX());
+ }
+
+ // [3] <1> [2] ___|
+ public void testLayout3KeyMax5R2() {
+ MoreKeysKeyboardParams params = createParams(3, 5, XPOS_R2);
+ assertEquals("3 key max 5 R2 columns", 3, params.mNumColumns);
+ assertEquals("3 key max 5 R2 rows", 1, params.mNumRows);
+ assertEquals("3 key max 5 R2 left", 1, params.mLeftKeys);
+ assertEquals("3 key max 5 R2 right", 2, params.mRightKeys);
+ assertEquals("3 key max 5 R2 <1>", 0, params.getColumnPos(0));
+ assertEquals("3 key max 5 R2 [2]", 1, params.getColumnPos(1));
+ assertEquals("3 key max 5 R2 [3]", -1, params.getColumnPos(2));
+ assertEquals("3 key max 5 R2 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("3 key max 5 R2 default", WIDTH * 1, params.getDefaultKeyCoordX());
+ }
+
+ // [3]
+ // <1> [2]
+ public void testLayout3KeyMax2M0() {
+ MoreKeysKeyboardParams params = createParams(3, 2, XPOS_M0);
+ assertEquals("3 key max 2 M0 columns", 2, params.mNumColumns);
+ assertEquals("3 key max 2 M0 rows", 2, params.mNumRows);
+ assertEquals("3 key max 2 M0 left", 0, params.mLeftKeys);
+ assertEquals("3 key max 2 M0 right", 2, params.mRightKeys);
+ assertEquals("3 key max 2 M0 <1>", 0, params.getColumnPos(0));
+ assertEquals("3 key max 2 M0 [2]", 1, params.getColumnPos(1));
+ assertEquals("3 key max 2 M0 [3]", 0, params.getColumnPos(2));
+ assertEquals("3 key max 2 M0 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("3 key max 2 M0 default", WIDTH * 0, params.getDefaultKeyCoordX());
+ }
+
+ // |[3]
+ // |<1> [2]
+ public void testLayout3KeyMax2L0() {
+ MoreKeysKeyboardParams params = createParams(3, 2, XPOS_L0);
+ assertEquals("3 key max 2 L0 columns", 2, params.mNumColumns);
+ assertEquals("3 key max 2 L0 rows", 2, params.mNumRows);
+ assertEquals("3 key max 2 L0 left", 0, params.mLeftKeys);
+ assertEquals("3 key max 2 L0 right", 2, params.mRightKeys);
+ assertEquals("3 key max 2 L0 <1>", 0, params.getColumnPos(0));
+ assertEquals("3 key max 2 L0 [2]", 1, params.getColumnPos(1));
+ assertEquals("3 key max 2 L0 [3]", 0, params.getColumnPos(2));
+ assertEquals("3 key max 2 L0 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("3 key max 2 L0 default", WIDTH * 0, params.getDefaultKeyCoordX());
+ }
+
+ // |___ [3]
+ // |___ <1> [2]
+ public void testLayout3KeyMax2L1() {
+ MoreKeysKeyboardParams params = createParams(3, 2, XPOS_L1);
+ assertEquals("3 key max 2 L1 columns", 2, params.mNumColumns);
+ assertEquals("3 key max 2 L1 rows", 2, params.mNumRows);
+ assertEquals("3 key max 2 L1 left", 0, params.mLeftKeys);
+ assertEquals("3 key max 2 L1 right", 2, params.mRightKeys);
+ assertEquals("3 key max 2 L1 <1>", 0, params.getColumnPos(0));
+ assertEquals("3 key max 2 L1 [2]", 1, params.getColumnPos(1));
+ assertEquals("3 key max 2 L1 [3]", 0, params.getColumnPos(2));
+ assertEquals("3 key max 2 L1 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("3 key max 2 L1 default", WIDTH * 0, params.getDefaultKeyCoordX());
+ }
+
+ // | [3]
+ // |___ ___ <1> [2]
+ public void testLayout3KeyMax2L2() {
+ MoreKeysKeyboardParams params = createParams(3, 2, XPOS_L2);
+ assertEquals("3 key max 2 L2 columns", 2, params.mNumColumns);
+ assertEquals("3 key max 2 L2 rows", 2, params.mNumRows);
+ assertEquals("3 key max 2 L2 left", 0, params.mLeftKeys);
+ assertEquals("3 key max 2 L2 right", 2, params.mRightKeys);
+ assertEquals("3 key max 2 L2 <1>", 0, params.getColumnPos(0));
+ assertEquals("3 key max 2 L2 [2]", 1, params.getColumnPos(1));
+ assertEquals("3 key max 2 L2 [3]", 0, params.getColumnPos(2));
+ assertEquals("3 key max 2 L2 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("3 key max 2 L2 default", WIDTH * 0, params.getDefaultKeyCoordX());
+ }
+
+ // [3]|
+ // [2] <1>|
+ public void testLayout3KeyMax2R0() {
+ MoreKeysKeyboardParams params = createParams(3, 2, XPOS_R0);
+ assertEquals("3 key max 2 R0 columns", 2, params.mNumColumns);
+ assertEquals("3 key max 2 R0 rows", 2, params.mNumRows);
+ assertEquals("3 key max 2 R0 left", 1, params.mLeftKeys);
+ assertEquals("3 key max 2 R0 right", 1, params.mRightKeys);
+ assertEquals("3 key max 2 R0 <1>", 0, params.getColumnPos(0));
+ assertEquals("3 key max 2 R0 [2]", -1, params.getColumnPos(1));
+ assertEquals("3 key max 2 R0 [3]", 0, params.getColumnPos(2));
+ assertEquals("3 key max 2 R0 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("3 key max 2 R0 default", WIDTH * 1, params.getDefaultKeyCoordX());
+ }
+
+ // [3] |
+ // [2] <1> ___|
+ public void testLayout3KeyMax2R1() {
+ MoreKeysKeyboardParams params = createParams(3, 2, XPOS_R1);
+ assertEquals("3 key max 2 R1 columns", 2, params.mNumColumns);
+ assertEquals("3 key max 2 R1 rows", 2, params.mNumRows);
+ assertEquals("3 key max 2 R1 left", 1, params.mLeftKeys);
+ assertEquals("3 key max 2 R1 right", 1, params.mRightKeys);
+ assertEquals("3 key max 2 R1 <1>", 0, params.getColumnPos(0));
+ assertEquals("3 key max 2 R1 [2]", -1, params.getColumnPos(1));
+ assertEquals("3 key max 2 R1 [3]", 0, params.getColumnPos(2));
+ assertEquals("3 key max 2 R1 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("3 key max 2 R1 default", WIDTH * 1, params.getDefaultKeyCoordX());
+ }
+
+ // [3] |
+ // <1> [2] ___|
+ public void testLayout3KeyMax2R2() {
+ MoreKeysKeyboardParams params = createParams(3, 2, XPOS_R2);
+ assertEquals("3 key max 2 R2 columns", 2, params.mNumColumns);
+ assertEquals("3 key max 2 R2 rows", 2, params.mNumRows);
+ assertEquals("3 key max 2 R2 left", 0, params.mLeftKeys);
+ assertEquals("3 key max 2 R2 right", 2, params.mRightKeys);
+ assertEquals("3 key max 2 R2 <1>", 0, params.getColumnPos(0));
+ assertEquals("3 key max 2 R2 [2]", 1, params.getColumnPos(1));
+ assertEquals("3 key max 2 R2 [3]", 0, params.getColumnPos(2));
+ assertEquals("3 key max 2 R2 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("3 key max 2 R2 default", WIDTH * 0, params.getDefaultKeyCoordX());
+ }
+
+ // [3] [4]
+ // <1> [2]
+ public void testLayout4KeyMax3M0() {
+ MoreKeysKeyboardParams params = createParams(4, 3, XPOS_M0);
+ assertEquals("4 key max 3 M0 columns", 2, params.mNumColumns);
+ assertEquals("4 key max 3 M0 rows", 2, params.mNumRows);
+ assertEquals("4 key max 3 M0 left", 0, params.mLeftKeys);
+ assertEquals("4 key max 3 M0 right", 2, params.mRightKeys);
+ assertEquals("4 key max 3 M0 <1>", 0, params.getColumnPos(0));
+ assertEquals("4 key max 3 M0 [2]", 1, params.getColumnPos(1));
+ assertEquals("4 key max 3 M0 [3]", 0, params.getColumnPos(2));
+ assertEquals("4 key max 3 M0 [4]", 1, params.getColumnPos(3));
+ assertEquals("4 key max 3 M0 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("4 key max 3 M0 default", WIDTH * 0, params.getDefaultKeyCoordX());
+ }
+
+ // |[3] [4]
+ // |<1> [2]
+ public void testLayout4KeyMax3L0() {
+ MoreKeysKeyboardParams params = createParams(4, 3, XPOS_L0);
+ assertEquals("4 key max 3 L0 columns", 2, params.mNumColumns);
+ assertEquals("4 key max 3 L0 rows", 2, params.mNumRows);
+ assertEquals("4 key max 3 L0 left", 0, params.mLeftKeys);
+ assertEquals("4 key max 3 L0 right", 2, params.mRightKeys);
+ assertEquals("4 key max 3 L0 <1>", 0, params.getColumnPos(0));
+ assertEquals("4 key max 3 L0 [2]", 1, params.getColumnPos(1));
+ assertEquals("4 key max 3 L0 [3]", 0, params.getColumnPos(2));
+ assertEquals("4 key max 3 L0 [4]", 1, params.getColumnPos(3));
+ assertEquals("4 key max 3 L0 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("4 key max 3 L0 default", WIDTH * 0, params.getDefaultKeyCoordX());
+ }
+
+ // |___ [3] [4]
+ // |___ <1> [2]
+ public void testLayout4KeyMax3L1() {
+ MoreKeysKeyboardParams params = createParams(4, 3, XPOS_L1);
+ assertEquals("4 key max 3 L1 columns", 2, params.mNumColumns);
+ assertEquals("4 key max 3 L1 rows", 2, params.mNumRows);
+ assertEquals("4 key max 3 L1 left", 0, params.mLeftKeys);
+ assertEquals("4 key max 3 L1 right", 2, params.mRightKeys);
+ assertEquals("4 key max 3 L1 <1>", 0, params.getColumnPos(0));
+ assertEquals("4 key max 3 L1 [2]", 1, params.getColumnPos(1));
+ assertEquals("4 key max 3 L1 [3]", 0, params.getColumnPos(2));
+ assertEquals("4 key max 3 L1 [4]", 1, params.getColumnPos(3));
+ assertEquals("4 key max 3 L1 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("4 key max 3 L1 default", WIDTH * 0, params.getDefaultKeyCoordX());
+ }
+
+ // |___ ___ [3] [4]
+ // |___ ___ <1> [2]
+ public void testLayout4KeyMax3L2() {
+ MoreKeysKeyboardParams params = createParams(4, 3, XPOS_L2);
+ assertEquals("4 key max 3 L2 columns", 2, params.mNumColumns);
+ assertEquals("4 key max 3 L2 rows", 2, params.mNumRows);
+ assertEquals("4 key max 3 L2 left", 0, params.mLeftKeys);
+ assertEquals("4 key max 3 L2 right", 2, params.mRightKeys);
+ assertEquals("4 key max 3 L2 <1>", 0, params.getColumnPos(0));
+ assertEquals("4 key max 3 L2 [2]", 1, params.getColumnPos(1));
+ assertEquals("4 key max 3 L2 [3]", 0, params.getColumnPos(2));
+ assertEquals("4 key max 3 L2 [4]", 1, params.getColumnPos(3));
+ assertEquals("4 key max 3 L2 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("4 key max 3 L2 default", WIDTH * 0, params.getDefaultKeyCoordX());
+ }
+
+ // [4] [3]|
+ // [2] <1>|
+ public void testLayout4KeyMax3R0() {
+ MoreKeysKeyboardParams params = createParams(4, 3, XPOS_R0);
+ assertEquals("4 key max 3 R0 columns", 2, params.mNumColumns);
+ assertEquals("4 key max 3 R0 rows", 2, params.mNumRows);
+ assertEquals("4 key max 3 R0 left", 1, params.mLeftKeys);
+ assertEquals("4 key max 3 R0 right", 1, params.mRightKeys);
+ assertEquals("4 key max 3 R0 <1>", 0, params.getColumnPos(0));
+ assertEquals("4 key max 3 R0 [2]", -1, params.getColumnPos(1));
+ assertEquals("4 key max 3 R0 [3]", 0, params.getColumnPos(2));
+ assertEquals("4 key max 3 R0 [4]", -1, params.getColumnPos(3));
+ assertEquals("4 key max 3 R0 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("4 key max 3 R0 default", WIDTH * 1, params.getDefaultKeyCoordX());
+ }
+
+ // [4] [3] ___|
+ // [2] <1> ___|
+ public void testLayout4KeyMax3R1() {
+ MoreKeysKeyboardParams params = createParams(4, 3, XPOS_R1);
+ assertEquals("4 key max 3 R1 columns", 2, params.mNumColumns);
+ assertEquals("4 key max 3 R1 rows", 2, params.mNumRows);
+ assertEquals("4 key max 3 R1 left", 1, params.mLeftKeys);
+ assertEquals("4 key max 3 R1 right", 1, params.mRightKeys);
+ assertEquals("4 key max 3 R1 <1>", 0, params.getColumnPos(0));
+ assertEquals("4 key max 3 R1 [2]", -1, params.getColumnPos(1));
+ assertEquals("4 key max 3 R1 [3]", 0, params.getColumnPos(2));
+ assertEquals("4 key max 3 R1 [4]", -1, params.getColumnPos(3));
+ assertEquals("4 key max 3 R1 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("4 key max 3 R1 default", WIDTH * 1, params.getDefaultKeyCoordX());
+ }
+
+ // [3] [4] ___|
+ // <1> [2] ___|
+ public void testLayout4KeyMax3R2() {
+ MoreKeysKeyboardParams params = createParams(4, 3, XPOS_R2);
+ assertEquals("4 key max 3 R2 columns", 2, params.mNumColumns);
+ assertEquals("4 key max 3 R2 rows", 2, params.mNumRows);
+ assertEquals("4 key max 3 R2 left", 0, params.mLeftKeys);
+ assertEquals("4 key max 3 R2 right", 2, params.mRightKeys);
+ assertEquals("4 key max 3 R2 <1>", 0, params.getColumnPos(0));
+ assertEquals("4 key max 3 R2 [2]", 1, params.getColumnPos(1));
+ assertEquals("4 key max 3 R2 [3]", 0, params.getColumnPos(2));
+ assertEquals("4 key max 3 R2 [4]", 1, params.getColumnPos(3));
+ assertEquals("4 key max 3 R2 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("4 key max 3 R2 default", WIDTH * 0, params.getDefaultKeyCoordX());
+ }
+
+ // [3] <1> [2] [4]
+ public void testLayout4KeyMax4M0() {
+ MoreKeysKeyboardParams params = createParams(4, 4, XPOS_M0);
+ assertEquals("4 key max 4 M0 columns", 4, params.mNumColumns);
+ assertEquals("4 key max 4 M0 rows", 1, params.mNumRows);
+ assertEquals("4 key max 4 M0 left", 1, params.mLeftKeys);
+ assertEquals("4 key max 4 M0 right", 3, params.mRightKeys);
+ assertEquals("4 key max 4 M0 <1>", 0, params.getColumnPos(0));
+ assertEquals("4 key max 4 M0 [2]", 1, params.getColumnPos(1));
+ assertEquals("4 key max 4 M0 [3]", -1, params.getColumnPos(2));
+ assertEquals("4 key max 4 M0 [4]", 2, params.getColumnPos(3));
+ assertEquals("4 key max 4 M0 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("4 key max 4 M0 default", WIDTH * 1, params.getDefaultKeyCoordX());
+ }
+
+ // |<1> [2] [3] [4]
+ public void testLayout4KeyMax4L0() {
+ MoreKeysKeyboardParams params = createParams(4, 4, XPOS_L0);
+ assertEquals("4 key max 4 L0 columns", 4, params.mNumColumns);
+ assertEquals("4 key max 4 L0 rows", 1, params.mNumRows);
+ assertEquals("4 key max 4 L0 left", 0, params.mLeftKeys);
+ assertEquals("4 key max 4 L0 right", 4, params.mRightKeys);
+ assertEquals("4 key max 4 L0 <1>", 0, params.getColumnPos(0));
+ assertEquals("4 key max 4 L0 [2]", 1, params.getColumnPos(1));
+ assertEquals("4 key max 4 L0 [3]", 2, params.getColumnPos(2));
+ assertEquals("4 key max 4 L0 [4]", 3, params.getColumnPos(3));
+ assertEquals("4 key max 4 L0 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("4 key max 4 L0 default", WIDTH * 0, params.getDefaultKeyCoordX());
+ }
+
+ // |___ <1> [2] [3] [4]
+ public void testLayout4KeyMax4L1() {
+ MoreKeysKeyboardParams params = createParams(4, 4, XPOS_L1);
+ assertEquals("4 key max 4 L1 columns", 4, params.mNumColumns);
+ assertEquals("4 key max 4 L1 rows", 1, params.mNumRows);
+ assertEquals("4 key max 4 L1 left", 0, params.mLeftKeys);
+ assertEquals("4 key max 4 L1 right", 4, params.mRightKeys);
+ assertEquals("4 key max 4 L1 <1>", 0, params.getColumnPos(0));
+ assertEquals("4 key max 4 L1 [2]", 1, params.getColumnPos(1));
+ assertEquals("4 key max 4 L1 [3]", 2, params.getColumnPos(2));
+ assertEquals("4 key max 4 L1 [4]", 3, params.getColumnPos(3));
+ assertEquals("4 key max 4 L1 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("4 key max 4 L1 default", WIDTH * 0, params.getDefaultKeyCoordX());
+ }
+
+ // |___ [3] <1> [2] [4]
+ public void testLayout4KeyMax4L2() {
+ MoreKeysKeyboardParams params = createParams(4, 4, XPOS_L2);
+ assertEquals("4 key max 4 L2 columns", 4, params.mNumColumns);
+ assertEquals("4 key max 4 L2 rows", 1, params.mNumRows);
+ assertEquals("4 key max 4 L2 left", 1, params.mLeftKeys);
+ assertEquals("4 key max 4 L2 right", 3, params.mRightKeys);
+ assertEquals("4 key max 4 L2 <1>", 0, params.getColumnPos(0));
+ assertEquals("4 key max 4 L2 [2]", 1, params.getColumnPos(1));
+ assertEquals("4 key max 4 L2 [3]", -1, params.getColumnPos(2));
+ assertEquals("4 key max 4 L2 [4]", 2, params.getColumnPos(3));
+ assertEquals("4 key max 4 L2 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("4 key max 4 L2 default", WIDTH * 1, params.getDefaultKeyCoordX());
+ }
+
+ // [4] [3] [2] <1>|
+ public void testLayout4KeyMax4R0() {
+ MoreKeysKeyboardParams params = createParams(4, 4, XPOS_R0);
+ assertEquals("4 key max 4 R0 columns", 4, params.mNumColumns);
+ assertEquals("4 key max 4 R0 rows", 1, params.mNumRows);
+ assertEquals("4 key max 4 R0 left", 3, params.mLeftKeys);
+ assertEquals("4 key max 4 R0 right", 1, params.mRightKeys);
+ assertEquals("4 key max 4 R0 <1>", 0, params.getColumnPos(0));
+ assertEquals("4 key max 4 R0 [2]", -1, params.getColumnPos(1));
+ assertEquals("4 key max 4 R0 [3]", -2, params.getColumnPos(2));
+ assertEquals("4 key max 4 R0 [4]", -3, params.getColumnPos(3));
+ assertEquals("4 key max 4 R0 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("4 key max 4 R0 default", WIDTH * 3, params.getDefaultKeyCoordX());
+ }
+
+ // [4] [3] [2] <1> ___|
+ public void testLayout4KeyMax4R1() {
+ MoreKeysKeyboardParams params = createParams(4, 4, XPOS_R1);
+ assertEquals("4 key max 4 R1 columns", 4, params.mNumColumns);
+ assertEquals("4 key max 4 R1 rows", 1, params.mNumRows);
+ assertEquals("4 key max 4 R1 left", 3, params.mLeftKeys);
+ assertEquals("4 key max 4 R1 right", 1, params.mRightKeys);
+ assertEquals("4 key max 4 R1 <1>", 0, params.getColumnPos(0));
+ assertEquals("4 key max 4 R1 [2]", -1, params.getColumnPos(1));
+ assertEquals("4 key max 4 R1 [3]", -2, params.getColumnPos(2));
+ assertEquals("4 key max 4 R1 [4]", -3, params.getColumnPos(3));
+ assertEquals("4 key max 4 R1 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("4 key max 4 R1 default", WIDTH * 3, params.getDefaultKeyCoordX());
+ }
+
+ // [4] [3] <1> [2] ___|
+ public void testLayout4KeyMax4R2() {
+ MoreKeysKeyboardParams params = createParams(4, 4, XPOS_R2);
+ assertEquals("4 key max 4 R2 columns", 4, params.mNumColumns);
+ assertEquals("4 key max 4 R2 rows", 1, params.mNumRows);
+ assertEquals("4 key max 4 R2 left", 2, params.mLeftKeys);
+ assertEquals("4 key max 4 R2 right", 2, params.mRightKeys);
+ assertEquals("4 key max 4 R2 <1>", 0, params.getColumnPos(0));
+ assertEquals("4 key max 4 R2 [2]", 1, params.getColumnPos(1));
+ assertEquals("4 key max 4 R2 [3]", -1, params.getColumnPos(2));
+ assertEquals("4 key max 4 R2 [4]", -2, params.getColumnPos(3));
+ assertEquals("4 key max 4 R2 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("4 key max 4 R2 default", WIDTH * 2, params.getDefaultKeyCoordX());
+ }
+
+ // [3] <1> [2] [4]
+ public void testLayout4KeyMax5M0() {
+ MoreKeysKeyboardParams params = createParams(4, 5, XPOS_M0);
+ assertEquals("4 key max 5 M0 columns", 4, params.mNumColumns);
+ assertEquals("4 key max 5 M0 rows", 1, params.mNumRows);
+ assertEquals("4 key max 5 M0 left", 1, params.mLeftKeys);
+ assertEquals("4 key max 5 M0 right", 3, params.mRightKeys);
+ assertEquals("4 key max 5 M0 <1>", 0, params.getColumnPos(0));
+ assertEquals("4 key max 5 M0 [2]", 1, params.getColumnPos(1));
+ assertEquals("4 key max 5 M0 [3]", -1, params.getColumnPos(2));
+ assertEquals("4 key max 5 M0 [4]", 2, params.getColumnPos(3));
+ assertEquals("4 key max 5 M0 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("4 key max 5 M0 default", WIDTH * 1, params.getDefaultKeyCoordX());
+ }
+
+ // |<1> [2] [3] [4]
+ public void testLayout4KeyMax5L0() {
+ MoreKeysKeyboardParams params = createParams(4, 5, XPOS_L0);
+ assertEquals("4 key max 5 L0 columns", 4, params.mNumColumns);
+ assertEquals("4 key max 5 L0 rows", 1, params.mNumRows);
+ assertEquals("4 key max 5 L0 left", 0, params.mLeftKeys);
+ assertEquals("4 key max 5 L0 right", 4, params.mRightKeys);
+ assertEquals("4 key max 5 L0 <1>", 0, params.getColumnPos(0));
+ assertEquals("4 key max 5 L0 [2]", 1, params.getColumnPos(1));
+ assertEquals("4 key max 5 L0 [3]", 2, params.getColumnPos(2));
+ assertEquals("4 key max 5 L0 [4]", 3, params.getColumnPos(3));
+ assertEquals("4 key max 5 L0 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("4 key max 5 L0 default", WIDTH * 0, params.getDefaultKeyCoordX());
+ }
+
+ // |___ <1> [2] [3] [4]
+ public void testLayout4KeyMax5L1() {
+ MoreKeysKeyboardParams params = createParams(4, 5, XPOS_L1);
+ assertEquals("4 key max 5 L1 columns", 4, params.mNumColumns);
+ assertEquals("4 key max 5 L1 rows", 1, params.mNumRows);
+ assertEquals("4 key max 5 L1 left", 0, params.mLeftKeys);
+ assertEquals("4 key max 5 L1 right", 4, params.mRightKeys);
+ assertEquals("4 key max 5 L1 <1>", 0, params.getColumnPos(0));
+ assertEquals("4 key max 5 L1 [2]", 1, params.getColumnPos(1));
+ assertEquals("4 key max 5 L1 [3]", 2, params.getColumnPos(2));
+ assertEquals("4 key max 5 L1 [4]", 3, params.getColumnPos(3));
+ assertEquals("4 key max 5 L1 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("4 key max 5 L1 default", WIDTH * 0, params.getDefaultKeyCoordX());
+ }
+
+ // |___ [3] <1> [2] [4]
+ public void testLayout4KeyMax5L2() {
+ MoreKeysKeyboardParams params = createParams(4, 5, XPOS_L2);
+ assertEquals("4 key max 5 L2 columns", 4, params.mNumColumns);
+ assertEquals("4 key max 5 L2 rows", 1, params.mNumRows);
+ assertEquals("4 key max 5 L2 left", 1, params.mLeftKeys);
+ assertEquals("4 key max 5 L2 right", 3, params.mRightKeys);
+ assertEquals("4 key max 5 L2 <1>", 0, params.getColumnPos(0));
+ assertEquals("4 key max 5 L2 [2]", 1, params.getColumnPos(1));
+ assertEquals("4 key max 5 L2 [3]", -1, params.getColumnPos(2));
+ assertEquals("4 key max 5 L2 [4]", 2, params.getColumnPos(3));
+ assertEquals("4 key max 5 L2 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("4 key max 5 L2 default", WIDTH * 1, params.getDefaultKeyCoordX());
+ }
+
+ // [4] [3] [2] <1>|
+ public void testLayout4KeyMax5R0() {
+ MoreKeysKeyboardParams params = createParams(4, 5, XPOS_R0);
+ assertEquals("4 key max 5 R0 columns", 4, params.mNumColumns);
+ assertEquals("4 key max 5 R0 rows", 1, params.mNumRows);
+ assertEquals("4 key max 5 R0 left", 3, params.mLeftKeys);
+ assertEquals("4 key max 5 R0 right", 1, params.mRightKeys);
+ assertEquals("4 key max 5 R0 <1>", 0, params.getColumnPos(0));
+ assertEquals("4 key max 5 R0 [2]", -1, params.getColumnPos(1));
+ assertEquals("4 key max 5 R0 [3]", -2, params.getColumnPos(2));
+ assertEquals("4 key max 5 R0 [4]", -3, params.getColumnPos(3));
+ assertEquals("4 key max 5 R0 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("4 key max 5 R0 default", WIDTH * 3, params.getDefaultKeyCoordX());
+ }
+
+ // [4] [3] [2] <1> ___|
+ public void testLayout4KeyMax5R1() {
+ MoreKeysKeyboardParams params = createParams(4, 5, XPOS_R1);
+ assertEquals("4 key max 5 R1 columns", 4, params.mNumColumns);
+ assertEquals("4 key max 5 R1 rows", 1, params.mNumRows);
+ assertEquals("4 key max 5 R1 left", 3, params.mLeftKeys);
+ assertEquals("4 key max 5 R1 right", 1, params.mRightKeys);
+ assertEquals("4 key max 5 R1 <1>", 0, params.getColumnPos(0));
+ assertEquals("4 key max 5 R1 [2]", -1, params.getColumnPos(1));
+ assertEquals("4 key max 5 R1 [3]", -2, params.getColumnPos(2));
+ assertEquals("4 key max 5 R1 [4]", -3, params.getColumnPos(3));
+ assertEquals("4 key max 5 R1 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("4 key max 5 R1 default", WIDTH * 3, params.getDefaultKeyCoordX());
+ }
+
+ // [4] [3] <1> [2] ___|
+ public void testLayout4KeyMax5R2() {
+ MoreKeysKeyboardParams params = createParams(4, 5, XPOS_R2);
+ assertEquals("4 key max 5 R2 columns", 4, params.mNumColumns);
+ assertEquals("4 key max 5 R2 rows", 1, params.mNumRows);
+ assertEquals("4 key max 5 R2 left", 2, params.mLeftKeys);
+ assertEquals("4 key max 5 R2 right", 2, params.mRightKeys);
+ assertEquals("4 key max 5 R2 <1>", 0, params.getColumnPos(0));
+ assertEquals("4 key max 5 R2 [2]", 1, params.getColumnPos(1));
+ assertEquals("4 key max 5 R2 [3]", -1, params.getColumnPos(2));
+ assertEquals("4 key max 5 R2 [4]", -2, params.getColumnPos(3));
+ assertEquals("4 key max 5 R2 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("4 key max 5 R2 default", WIDTH * 2, params.getDefaultKeyCoordX());
+ }
+
+ // [4] [5]
+ // [3] <1> [2]
+ public void testLayout5KeyMax3M0() {
+ MoreKeysKeyboardParams params = createParams(5, 3, XPOS_M0);
+ assertEquals("5 key max 3 M0 columns", 3, params.mNumColumns);
+ assertEquals("5 key max 3 M0 rows", 2, params.mNumRows);
+ assertEquals("5 key max 3 M0 left", 1, params.mLeftKeys);
+ assertEquals("5 key max 3 M0 right", 2, params.mRightKeys);
+ assertEquals("5 key max 3 M0 <1>", 0, params.getColumnPos(0));
+ assertEquals("5 key max 3 M0 [2]", 1, params.getColumnPos(1));
+ assertEquals("5 key max 3 M0 [3]", -1, params.getColumnPos(2));
+ assertEquals("5 key max 3 M0 [4]", 0, params.getColumnPos(3));
+ assertEquals("5 key max 3 M0 [5]", 1, params.getColumnPos(4));
+ assertEquals("5 key max 3 M0 adjust", -1, params.mTopRowAdjustment);
+ assertEquals("5 key max 3 M0 default", WIDTH * 1, params.getDefaultKeyCoordX());
+ }
+
+ // |[4] [5]
+ // |<1> [2] [3]
+ public void testLayout5KeyMax3L0() {
+ MoreKeysKeyboardParams params = createParams(5, 3, XPOS_L0);
+ assertEquals("5 key max 3 L0 columns", 3, params.mNumColumns);
+ assertEquals("5 key max 3 L0 rows", 2, params.mNumRows);
+ assertEquals("5 key max 3 L0 left", 0, params.mLeftKeys);
+ assertEquals("5 key max 3 L0 right", 3, params.mRightKeys);
+ assertEquals("5 key max 3 L0 <1>", 0, params.getColumnPos(0));
+ assertEquals("5 key max 3 L0 [2]", 1, params.getColumnPos(1));
+ assertEquals("5 key max 3 L0 [3]", 2, params.getColumnPos(2));
+ assertEquals("5 key max 3 L0 [4]", 0, params.getColumnPos(3));
+ assertEquals("5 key max 3 L0 [5]", 1, params.getColumnPos(4));
+ assertEquals("5 key max 3 L0 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("5 key max 3 L0 default", WIDTH * 0, params.getDefaultKeyCoordX());
+ }
+
+ // |___ [4] [5]
+ // |___ <1> [2] [3]
+ public void testLayout5KeyMax3L1() {
+ MoreKeysKeyboardParams params = createParams(5, 3, XPOS_L1);
+ assertEquals("5 key max 3 L1 columns", 3, params.mNumColumns);
+ assertEquals("5 key max 3 L1 rows", 2, params.mNumRows);
+ assertEquals("5 key max 3 L1 left", 0, params.mLeftKeys);
+ assertEquals("5 key max 3 L1 right", 3, params.mRightKeys);
+ assertEquals("5 key max 3 L1 <1>", 0, params.getColumnPos(0));
+ assertEquals("5 key max 3 L1 [2]", 1, params.getColumnPos(1));
+ assertEquals("5 key max 3 L1 [3]", 2, params.getColumnPos(2));
+ assertEquals("5 key max 3 L1 [4]", 0, params.getColumnPos(3));
+ assertEquals("5 key max 3 L1 [5]", 1, params.getColumnPos(4));
+ assertEquals("5 key max 3 L1 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("5 key max 3 L1 default", WIDTH * 0, params.getDefaultKeyCoordX());
+ }
+
+ // |___ [4] [5]
+ // |___ [3] <1> [2]
+ public void testLayout5KeyMax3L2() {
+ MoreKeysKeyboardParams params = createParams(5, 3, XPOS_L2);
+ assertEquals("5 key max 3 L2 columns", 3, params.mNumColumns);
+ assertEquals("5 key max 3 L2 rows", 2, params.mNumRows);
+ assertEquals("5 key max 3 L2 left", 1, params.mLeftKeys);
+ assertEquals("5 key max 3 L2 right", 2, params.mRightKeys);
+ assertEquals("5 key max 3 L2 <1>", 0, params.getColumnPos(0));
+ assertEquals("5 key max 3 L2 [2]", 1, params.getColumnPos(1));
+ assertEquals("5 key max 3 L2 [3]", -1, params.getColumnPos(2));
+ assertEquals("5 key max 3 L2 [4]", 0, params.getColumnPos(3));
+ assertEquals("5 key max 3 L2 [5]", 1, params.getColumnPos(4));
+ assertEquals("5 key max 3 L2 adjust", -1, params.mTopRowAdjustment);
+ assertEquals("5 key max 3 L2 default", WIDTH * 1, params.getDefaultKeyCoordX());
+ }
+
+ // [5] [4]|
+ // [3] [2] <1>|
+ public void testLayout5KeyMax3R0() {
+ MoreKeysKeyboardParams params = createParams(5, 3, XPOS_R0);
+ assertEquals("5 key max 3 R0 columns", 3, params.mNumColumns);
+ assertEquals("5 key max 3 R0 rows", 2, params.mNumRows);
+ assertEquals("5 key max 3 R0 left", 2, params.mLeftKeys);
+ assertEquals("5 key max 3 R0 right", 1, params.mRightKeys);
+ assertEquals("5 key max 3 R0 <1>", 0, params.getColumnPos(0));
+ assertEquals("5 key max 3 R0 [2]", -1, params.getColumnPos(1));
+ assertEquals("5 key max 3 R0 [3]", -2, params.getColumnPos(2));
+ assertEquals("5 key max 3 R0 [4]", 0, params.getColumnPos(3));
+ assertEquals("5 key max 3 R0 [5]", -1, params.getColumnPos(4));
+ assertEquals("5 key max 3 R0 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("5 key max 3 R0 default", WIDTH * 2, params.getDefaultKeyCoordX());
+ }
+
+ // [5] [4] ___|
+ // [3] [2] <1> ___|
+ public void testLayout5KeyMax3R1() {
+ MoreKeysKeyboardParams params = createParams(5, 3, XPOS_R1);
+ assertEquals("5 key max 3 R1 columns", 3, params.mNumColumns);
+ assertEquals("5 key max 3 R1 rows", 2, params.mNumRows);
+ assertEquals("5 key max 3 R1 left", 2, params.mLeftKeys);
+ assertEquals("5 key max 3 R1 right", 1, params.mRightKeys);
+ assertEquals("5 key max 3 R1 <1>", 0, params.getColumnPos(0));
+ assertEquals("5 key max 3 R1 [2]", -1, params.getColumnPos(1));
+ assertEquals("5 key max 3 R1 [3]", -2, params.getColumnPos(2));
+ assertEquals("5 key max 3 R1 [4]", 0, params.getColumnPos(3));
+ assertEquals("5 key max 3 R1 [5]", -1, params.getColumnPos(4));
+ assertEquals("5 key max 3 R1 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("5 key max 3 R1 default", WIDTH * 2, params.getDefaultKeyCoordX());
+ }
+
+ // [4] [5] ___|
+ // [3] <1> [2] ___|
+ public void testLayout5KeyMax3R2() {
+ MoreKeysKeyboardParams params = createParams(5, 3, XPOS_R2);
+ assertEquals("5 key max 3 R2 columns", 3, params.mNumColumns);
+ assertEquals("5 key max 3 R2 rows", 2, params.mNumRows);
+ assertEquals("5 key max 3 R2 left", 1, params.mLeftKeys);
+ assertEquals("5 key max 3 R2 right", 2, params.mRightKeys);
+ assertEquals("5 key max 3 R2 <1>", 0, params.getColumnPos(0));
+ assertEquals("5 key max 3 R2 [2]", 1, params.getColumnPos(1));
+ assertEquals("5 key max 3 R2 [3]", -1, params.getColumnPos(2));
+ assertEquals("5 key max 3 R2 [4]", 0, params.getColumnPos(3));
+ assertEquals("5 key max 3 R2 [5]", 1, params.getColumnPos(4));
+ assertEquals("5 key max 3 R2 adjust", -1, params.mTopRowAdjustment);
+ assertEquals("5 key max 3 R2 default", WIDTH * 1, params.getDefaultKeyCoordX());
+ }
+
+ // [4] [5]
+ // [3] <1> [2]
+ public void testLayout5KeyMax4M0() {
+ MoreKeysKeyboardParams params = createParams(5, 4, XPOS_M0);
+ assertEquals("5 key max 4 M0 columns", 3, params.mNumColumns);
+ assertEquals("5 key max 4 M0 rows", 2, params.mNumRows);
+ assertEquals("5 key max 4 M0 left", 1, params.mLeftKeys);
+ assertEquals("5 key max 4 M0 right", 2, params.mRightKeys);
+ assertEquals("5 key max 4 M0 <1>", 0, params.getColumnPos(0));
+ assertEquals("5 key max 4 M0 [2]", 1, params.getColumnPos(1));
+ assertEquals("5 key max 4 M0 [3]", -1, params.getColumnPos(2));
+ assertEquals("5 key max 4 M0 [4]", 0, params.getColumnPos(3));
+ assertEquals("5 key max 4 M0 [5]", 1, params.getColumnPos(4));
+ assertEquals("5 key max 4 M0 adjust", -1, params.mTopRowAdjustment);
+ assertEquals("5 key max 4 M0 default", WIDTH * 1, params.getDefaultKeyCoordX());
+ }
+
+ // |[4] [5]
+ // |<1> [2] [3]
+ public void testLayout5KeyMax4L0() {
+ MoreKeysKeyboardParams params = createParams(5, 4, XPOS_L0);
+ assertEquals("5 key max 4 L0 columns", 3, params.mNumColumns);
+ assertEquals("5 key max 4 L0 rows", 2, params.mNumRows);
+ assertEquals("5 key max 4 L0 left", 0, params.mLeftKeys);
+ assertEquals("5 key max 4 L0 right", 3, params.mRightKeys);
+ assertEquals("5 key max 4 L0 <1>", 0, params.getColumnPos(0));
+ assertEquals("5 key max 4 L0 [2]", 1, params.getColumnPos(1));
+ assertEquals("5 key max 4 L0 [3]", 2, params.getColumnPos(2));
+ assertEquals("5 key max 4 L0 [4]", 0, params.getColumnPos(3));
+ assertEquals("5 key max 4 L0 [5]", 1, params.getColumnPos(4));
+ assertEquals("5 key max 4 L0 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("5 key max 4 L0 default", WIDTH * 0, params.getDefaultKeyCoordX());
+ }
+
+ // |___ [4] [5]
+ // |___ <1> [2] [3]
+ public void testLayout5KeyMax4L1() {
+ MoreKeysKeyboardParams params = createParams(5, 4, XPOS_L1);
+ assertEquals("5 key max 4 L1 columns", 3, params.mNumColumns);
+ assertEquals("5 key max 4 L1 rows", 2, params.mNumRows);
+ assertEquals("5 key max 4 L1 left", 0, params.mLeftKeys);
+ assertEquals("5 key max 4 L1 right", 3, params.mRightKeys);
+ assertEquals("5 key max 4 L1 <1>", 0, params.getColumnPos(0));
+ assertEquals("5 key max 4 L1 [2]", 1, params.getColumnPos(1));
+ assertEquals("5 key max 4 L1 [3]", 2, params.getColumnPos(2));
+ assertEquals("5 key max 4 L1 [4]", 0, params.getColumnPos(3));
+ assertEquals("5 key max 4 L1 [5]", 1, params.getColumnPos(4));
+ assertEquals("5 key max 4 L1 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("5 key max 4 L1 default", WIDTH * 0, params.getDefaultKeyCoordX());
+ }
+
+ // |___ [4] [5]
+ // |___ [3] <1> [2]
+ public void testLayout5KeyMax4L2() {
+ MoreKeysKeyboardParams params = createParams(5, 4, XPOS_L2);
+ assertEquals("5 key max 4 L2 columns", 3, params.mNumColumns);
+ assertEquals("5 key max 4 L2 rows", 2, params.mNumRows);
+ assertEquals("5 key max 4 L2 left", 1, params.mLeftKeys);
+ assertEquals("5 key max 4 L2 right", 2, params.mRightKeys);
+ assertEquals("5 key max 4 L2 <1>", 0, params.getColumnPos(0));
+ assertEquals("5 key max 4 L2 [2]", 1, params.getColumnPos(1));
+ assertEquals("5 key max 4 L2 [3]", -1, params.getColumnPos(2));
+ assertEquals("5 key max 4 L2 [4]", 0, params.getColumnPos(3));
+ assertEquals("5 key max 4 L2 [5]", 1, params.getColumnPos(4));
+ assertEquals("5 key max 4 L2 adjust", -1, params.mTopRowAdjustment);
+ assertEquals("5 key max 4 L2 default", WIDTH * 1, params.getDefaultKeyCoordX());
+ }
+
+ // [5] [4]|
+ // [3] [2] <1>|
+ public void testLayout5KeyMax4R0() {
+ MoreKeysKeyboardParams params = createParams(5, 4, XPOS_R0);
+ assertEquals("5 key max 4 R0 columns", 3, params.mNumColumns);
+ assertEquals("5 key max 4 R0 rows", 2, params.mNumRows);
+ assertEquals("5 key max 4 R0 left", 2, params.mLeftKeys);
+ assertEquals("5 key max 4 R0 right", 1, params.mRightKeys);
+ assertEquals("5 key max 4 R0 <1>", 0, params.getColumnPos(0));
+ assertEquals("5 key max 4 R0 [2]", -1, params.getColumnPos(1));
+ assertEquals("5 key max 4 R0 [3]", -2, params.getColumnPos(2));
+ assertEquals("5 key max 4 R0 [4]", 0, params.getColumnPos(3));
+ assertEquals("5 key max 4 R0 [5]", -1, params.getColumnPos(4));
+ assertEquals("5 key max 4 R0 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("5 key max 4 R0 default", WIDTH * 2, params.getDefaultKeyCoordX());
+ }
+
+ // [5] [4] ___|
+ // [3] [2] <1> ___|
+ public void testLayout5KeyMax4R1() {
+ MoreKeysKeyboardParams params = createParams(5, 4, XPOS_R1);
+ assertEquals("5 key max 4 R1 columns", 3, params.mNumColumns);
+ assertEquals("5 key max 4 R1 rows", 2, params.mNumRows);
+ assertEquals("5 key max 4 R1 left", 2, params.mLeftKeys);
+ assertEquals("5 key max 4 R1 right", 1, params.mRightKeys);
+ assertEquals("5 key max 4 R1 <1>", 0, params.getColumnPos(0));
+ assertEquals("5 key max 4 R1 [2]", -1, params.getColumnPos(1));
+ assertEquals("5 key max 4 R1 [3]", -2, params.getColumnPos(2));
+ assertEquals("5 key max 4 R1 [4]", 0, params.getColumnPos(3));
+ assertEquals("5 key max 4 R1 [5]", -1, params.getColumnPos(4));
+ assertEquals("5 key max 4 R1 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("5 key max 4 R1 default", WIDTH * 2, params.getDefaultKeyCoordX());
+ }
+
+ // [4] [5] ___|
+ // [3] <1> [2] ___|
+ public void testLayout5KeyMax4R2() {
+ MoreKeysKeyboardParams params = createParams(5, 4, XPOS_R2);
+ assertEquals("5 key max 4 R2 columns", 3, params.mNumColumns);
+ assertEquals("5 key max 4 R2 rows", 2, params.mNumRows);
+ assertEquals("5 key max 4 R2 left", 1, params.mLeftKeys);
+ assertEquals("5 key max 4 R2 right", 2, params.mRightKeys);
+ assertEquals("5 key max 4 R2 <1>", 0, params.getColumnPos(0));
+ assertEquals("5 key max 4 R2 [2]", 1, params.getColumnPos(1));
+ assertEquals("5 key max 4 R2 [3]", -1, params.getColumnPos(2));
+ assertEquals("5 key max 4 R2 [4]", 0, params.getColumnPos(3));
+ assertEquals("5 key max 4 R2 [5]", 1, params.getColumnPos(4));
+ assertEquals("5 key max 4 R2 adjust", -1, params.mTopRowAdjustment);
+ assertEquals("5 key max 4 R2 default", WIDTH * 1, params.getDefaultKeyCoordX());
+ }
+
+ // [5] [3] <1> [2] [4]
+ public void testLayout5KeyMax5M0() {
+ MoreKeysKeyboardParams params = createParams(5, 5, XPOS_M0);
+ assertEquals("5 key max 5 M0 columns", 5, params.mNumColumns);
+ assertEquals("5 key max 5 M0 rows", 1, params.mNumRows);
+ assertEquals("5 key max 5 M0 left", 2, params.mLeftKeys);
+ assertEquals("5 key max 5 M0 right", 3, params.mRightKeys);
+ assertEquals("5 key max 5 M0 <1>", 0, params.getColumnPos(0));
+ assertEquals("5 key max 5 M0 [2]", 1, params.getColumnPos(1));
+ assertEquals("5 key max 5 M0 [3]", -1, params.getColumnPos(2));
+ assertEquals("5 key max 5 M0 [4]", 2, params.getColumnPos(3));
+ assertEquals("5 key max 5 M0 [5]", -2, params.getColumnPos(4));
+ assertEquals("5 key max 5 M0 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("5 key max 5 M0 default", WIDTH * 2, params.getDefaultKeyCoordX());
+ }
+
+ // |<1> [2] [3] [4] [5]
+ public void testLayout5KeyMax5L0() {
+ MoreKeysKeyboardParams params = createParams(5, 5, XPOS_L0);
+ assertEquals("5 key max 5 L0 columns", 5, params.mNumColumns);
+ assertEquals("5 key max 5 L0 rows", 1, params.mNumRows);
+ assertEquals("5 key max 5 L0 left", 0, params.mLeftKeys);
+ assertEquals("5 key max 5 L0 right", 5, params.mRightKeys);
+ assertEquals("5 key max 5 L0 <1>", 0, params.getColumnPos(0));
+ assertEquals("5 key max 5 L0 [2]", 1, params.getColumnPos(1));
+ assertEquals("5 key max 5 L0 [3]", 2, params.getColumnPos(2));
+ assertEquals("5 key max 5 L0 [4]", 3, params.getColumnPos(3));
+ assertEquals("5 key max 5 L0 [5]", 4, params.getColumnPos(4));
+ assertEquals("5 key max 5 L0 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("5 key max 5 L0 default", WIDTH * 0, params.getDefaultKeyCoordX());
+ }
+
+ // |___ <1> [2] [3] [4] [5]
+ public void testLayout5KeyMax5L1() {
+ MoreKeysKeyboardParams params = createParams(5, 5, XPOS_L1);
+ assertEquals("5 key max 5 L1 columns", 5, params.mNumColumns);
+ assertEquals("5 key max 5 L1 rows", 1, params.mNumRows);
+ assertEquals("5 key max 5 L1 left", 0, params.mLeftKeys);
+ assertEquals("5 key max 5 L1 right", 5, params.mRightKeys);
+ assertEquals("5 key max 5 L1 <1>", 0, params.getColumnPos(0));
+ assertEquals("5 key max 5 L1 [2]", 1, params.getColumnPos(1));
+ assertEquals("5 key max 5 L1 [3]", 2, params.getColumnPos(2));
+ assertEquals("5 key max 5 L1 [4]", 3, params.getColumnPos(3));
+ assertEquals("5 key max 5 L1 [5]", 4, params.getColumnPos(4));
+ assertEquals("5 key max 5 L1 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("5 key max 5 L1 default", WIDTH * 0, params.getDefaultKeyCoordX());
+ }
+
+ // |___ [3] <1> [2] [4] [5]
+ public void testLayout5KeyMax5L2() {
+ MoreKeysKeyboardParams params = createParams(5, 5, XPOS_L2);
+ assertEquals("5 key max 5 L2 columns", 5, params.mNumColumns);
+ assertEquals("5 key max 5 L2 rows", 1, params.mNumRows);
+ assertEquals("5 key max 5 L2 left", 1, params.mLeftKeys);
+ assertEquals("5 key max 5 L2 right", 4, params.mRightKeys);
+ assertEquals("5 key max 5 L2 <1>", 0, params.getColumnPos(0));
+ assertEquals("5 key max 5 L2 [2]", 1, params.getColumnPos(1));
+ assertEquals("5 key max 5 L2 [3]", -1, params.getColumnPos(2));
+ assertEquals("5 key max 5 L2 [4]", 2, params.getColumnPos(3));
+ assertEquals("5 key max 5 L2 [5]", 3, params.getColumnPos(4));
+ assertEquals("5 key max 5 L2 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("5 key max 5 L2 default", WIDTH * 1, params.getDefaultKeyCoordX());
+ }
+
+ // [5] [4] [3] [2] <1>|
+ public void testLayout5KeyMax5R0() {
+ MoreKeysKeyboardParams params = createParams(5, 5, XPOS_R0);
+ assertEquals("5 key max 5 R0 columns", 5, params.mNumColumns);
+ assertEquals("5 key max 5 R0 rows", 1, params.mNumRows);
+ assertEquals("5 key max 5 R0 left", 4, params.mLeftKeys);
+ assertEquals("5 key max 5 R0 right", 1, params.mRightKeys);
+ assertEquals("5 key max 5 R0 <1>", 0, params.getColumnPos(0));
+ assertEquals("5 key max 5 R0 [2]", -1, params.getColumnPos(1));
+ assertEquals("5 key max 5 R0 [3]", -2, params.getColumnPos(2));
+ assertEquals("5 key max 5 R0 [4]", -3, params.getColumnPos(3));
+ assertEquals("5 key max 5 R0 [5]", -4, params.getColumnPos(4));
+ assertEquals("5 key max 5 R0 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("5 key max 5 R0 default", WIDTH * 4, params.getDefaultKeyCoordX());
+ }
+
+ // [5] [4] [3] [2] <1> ___|
+ public void testLayout5KeyMax5R1() {
+ MoreKeysKeyboardParams params = createParams(5, 5, XPOS_R1);
+ assertEquals("5 key max 5 R1 columns", 5, params.mNumColumns);
+ assertEquals("5 key max 5 R1 rows", 1, params.mNumRows);
+ assertEquals("5 key max 5 R1 left", 4, params.mLeftKeys);
+ assertEquals("5 key max 5 R1 right", 1, params.mRightKeys);
+ assertEquals("5 key max 5 R1 <1>", 0, params.getColumnPos(0));
+ assertEquals("5 key max 5 R1 [2]", -1, params.getColumnPos(1));
+ assertEquals("5 key max 5 R1 [3]", -2, params.getColumnPos(2));
+ assertEquals("5 key max 5 R1 [4]", -3, params.getColumnPos(3));
+ assertEquals("5 key max 5 R1 [5]", -4, params.getColumnPos(4));
+ assertEquals("5 key max 5 R1 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("5 key max 5 R1 default", WIDTH * 4, params.getDefaultKeyCoordX());
+ }
+
+ // [5] [4] [3] <1> [2] ___|
+ public void testLayout5KeyMax5R2() {
+ MoreKeysKeyboardParams params = createParams(5, 5, XPOS_R2);
+ assertEquals("5 key max 5 R2 columns", 5, params.mNumColumns);
+ assertEquals("5 key max 5 R2 rows", 1, params.mNumRows);
+ assertEquals("5 key max 5 R2 left", 3, params.mLeftKeys);
+ assertEquals("5 key max 5 R2 right", 2, params.mRightKeys);
+ assertEquals("5 key max 5 R2 <1>", 0, params.getColumnPos(0));
+ assertEquals("5 key max 5 R2 [2]", 1, params.getColumnPos(1));
+ assertEquals("5 key max 5 R2 [3]", -1, params.getColumnPos(2));
+ assertEquals("5 key max 5 R2 [4]", -2, params.getColumnPos(3));
+ assertEquals("5 key max 5 R2 [5]", -3, params.getColumnPos(4));
+ assertEquals("5 key max 5 R2 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("5 key max 5 R2 default", WIDTH * 3, params.getDefaultKeyCoordX());
+ }
+
+ // [6] [4] [5]
+ // [3] <1> [2]
+ public void testLayout6KeyMax4M0() {
+ MoreKeysKeyboardParams params = createParams(6, 4, XPOS_M0);
+ assertEquals("6 key max 4 M0 columns", 3, params.mNumColumns);
+ assertEquals("6 key max 4 M0 rows", 2, params.mNumRows);
+ assertEquals("6 key max 4 M0 left", 1, params.mLeftKeys);
+ assertEquals("6 key max 4 M0 right", 2, params.mRightKeys);
+ assertEquals("6 key max 4 M0 <1>", 0, params.getColumnPos(0));
+ assertEquals("6 key max 4 M0 [2]", 1, params.getColumnPos(1));
+ assertEquals("6 key max 4 M0 [3]", -1, params.getColumnPos(2));
+ assertEquals("6 key max 4 M0 [4]", 0, params.getColumnPos(3));
+ assertEquals("6 key max 4 M0 [5]", 1, params.getColumnPos(4));
+ assertEquals("6 key max 4 M0 [6]", -1, params.getColumnPos(5));
+ assertEquals("6 key max 4 M0 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("6 key max 4 M0 default", WIDTH * 1, params.getDefaultKeyCoordX());
+ }
+
+ // |[4] [5] [6]
+ // |<1> [2] [3]
+ public void testLayout6KeyMax4L0() {
+ MoreKeysKeyboardParams params = createParams(6, 4, XPOS_L0);
+ assertEquals("6 key max 4 L0 columns", 3, params.mNumColumns);
+ assertEquals("6 key max 4 L0 rows", 2, params.mNumRows);
+ assertEquals("6 key max 4 L0 left", 0, params.mLeftKeys);
+ assertEquals("6 key max 4 L0 right", 3, params.mRightKeys);
+ assertEquals("6 key max 4 L0 <1>", 0, params.getColumnPos(0));
+ assertEquals("6 key max 4 L0 [2]", 1, params.getColumnPos(1));
+ assertEquals("6 key max 4 L0 [3]", 2, params.getColumnPos(2));
+ assertEquals("6 key max 4 L0 [4]", 0, params.getColumnPos(3));
+ assertEquals("6 key max 4 L0 [5]", 1, params.getColumnPos(4));
+ assertEquals("6 key max 4 L0 [6]", 2, params.getColumnPos(5));
+ assertEquals("6 key max 4 L0 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("6 key max 4 L0 default", WIDTH * 0, params.getDefaultKeyCoordX());
+ }
+
+ // |___ [4] [5] [6]
+ // |___ <1> [2] [3]
+ public void testLayout6KeyMax4L1() {
+ MoreKeysKeyboardParams params = createParams(6, 4, XPOS_L1);
+ assertEquals("6 key max 4 L1 columns", 3, params.mNumColumns);
+ assertEquals("6 key max 4 L1 rows", 2, params.mNumRows);
+ assertEquals("6 key max 4 L1 left", 0, params.mLeftKeys);
+ assertEquals("6 key max 4 L1 right", 3, params.mRightKeys);
+ assertEquals("6 key max 4 L1 <1>", 0, params.getColumnPos(0));
+ assertEquals("6 key max 4 L1 [2]", 1, params.getColumnPos(1));
+ assertEquals("6 key max 4 L1 [3]", 2, params.getColumnPos(2));
+ assertEquals("6 key max 4 L1 [4]", 0, params.getColumnPos(3));
+ assertEquals("6 key max 4 L1 [5]", 1, params.getColumnPos(4));
+ assertEquals("6 key max 4 L1 [6]", 2, params.getColumnPos(5));
+ assertEquals("6 key max 4 L1 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("6 key max 4 L1 default", WIDTH * 0, params.getDefaultKeyCoordX());
+ }
+
+ // |___ [6] [4] [5]
+ // |___ [3] <1> [2]
+ public void testLayout6KeyMax4L2() {
+ MoreKeysKeyboardParams params = createParams(6, 4, XPOS_L2);
+ assertEquals("6 key max 4 L2 columns", 3, params.mNumColumns);
+ assertEquals("6 key max 4 L2 rows", 2, params.mNumRows);
+ assertEquals("6 key max 4 L2 left", 1, params.mLeftKeys);
+ assertEquals("6 key max 4 L2 right", 2, params.mRightKeys);
+ assertEquals("6 key max 4 L2 <1>", 0, params.getColumnPos(0));
+ assertEquals("6 key max 4 L2 [2]", 1, params.getColumnPos(1));
+ assertEquals("6 key max 4 L2 [3]", -1, params.getColumnPos(2));
+ assertEquals("6 key max 4 L2 [4]", 0, params.getColumnPos(3));
+ assertEquals("6 key max 4 L2 [5]", 1, params.getColumnPos(4));
+ assertEquals("6 key max 4 L2 [6]", -1, params.getColumnPos(5));
+ assertEquals("6 key max 4 L2 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("6 key max 4 L2 default", WIDTH * 1, params.getDefaultKeyCoordX());
+ }
+
+ // [6] [5] [4]|
+ // [3] [2] <1>|
+ public void testLayout6KeyMax4R0() {
+ MoreKeysKeyboardParams params = createParams(6, 4, XPOS_R0);
+ assertEquals("6 key max 4 R0 columns", 3, params.mNumColumns);
+ assertEquals("6 key max 4 R0 rows", 2, params.mNumRows);
+ assertEquals("6 key max 4 R0 left", 2, params.mLeftKeys);
+ assertEquals("6 key max 4 R0 right", 1, params.mRightKeys);
+ assertEquals("6 key max 4 R0 <1>", 0, params.getColumnPos(0));
+ assertEquals("6 key max 4 R0 [2]", -1, params.getColumnPos(1));
+ assertEquals("6 key max 4 R0 [3]", -2, params.getColumnPos(2));
+ assertEquals("6 key max 4 R0 [4]", 0, params.getColumnPos(3));
+ assertEquals("6 key max 4 R0 [5]", -1, params.getColumnPos(4));
+ assertEquals("6 key max 4 R0 [6]", -2, params.getColumnPos(5));
+ assertEquals("6 key max 4 R0 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("6 key max 4 R0 default", WIDTH * 2, params.getDefaultKeyCoordX());
+ }
+
+ // [6] [5] [4] ___|
+ // [3] [2] <1> ___|
+ public void testLayout6KeyMax4R1() {
+ MoreKeysKeyboardParams params = createParams(6, 4, XPOS_R1);
+ assertEquals("6 key max 4 R1 columns", 3, params.mNumColumns);
+ assertEquals("6 key max 4 R1 rows", 2, params.mNumRows);
+ assertEquals("6 key max 4 R1 left", 2, params.mLeftKeys);
+ assertEquals("6 key max 4 R1 right", 1, params.mRightKeys);
+ assertEquals("6 key max 4 R1 <1>", 0, params.getColumnPos(0));
+ assertEquals("6 key max 4 R1 [2]", -1, params.getColumnPos(1));
+ assertEquals("6 key max 4 R1 [3]", -2, params.getColumnPos(2));
+ assertEquals("6 key max 4 R1 [4]", 0, params.getColumnPos(3));
+ assertEquals("6 key max 4 R1 [5]", -1, params.getColumnPos(4));
+ assertEquals("6 key max 4 R1 [6]", -2, params.getColumnPos(5));
+ assertEquals("6 key max 4 R1 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("6 key max 4 R1 default", WIDTH * 2, params.getDefaultKeyCoordX());
+ }
+
+ // [6] [4] [5] ___|
+ // [3] <1> [2] ___|
+ public void testLayout6KeyMax4R2() {
+ MoreKeysKeyboardParams params = createParams(6, 4, XPOS_R2);
+ assertEquals("6 key max 4 R2 columns", 3, params.mNumColumns);
+ assertEquals("6 key max 4 R2 rows", 2, params.mNumRows);
+ assertEquals("6 key max 4 R2 left", 1, params.mLeftKeys);
+ assertEquals("6 key max 4 R2 right", 2, params.mRightKeys);
+ assertEquals("6 key max 4 R2 <1>", 0, params.getColumnPos(0));
+ assertEquals("6 key max 4 R2 [2]", 1, params.getColumnPos(1));
+ assertEquals("6 key max 4 R2 [3]", -1, params.getColumnPos(2));
+ assertEquals("6 key max 4 R2 [4]", 0, params.getColumnPos(3));
+ assertEquals("6 key max 4 R2 [5]", 1, params.getColumnPos(4));
+ assertEquals("6 key max 4 R2 [6]", -1, params.getColumnPos(5));
+ assertEquals("6 key max 4 R2 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("6 key max 4 R2 default", WIDTH * 1, params.getDefaultKeyCoordX());
+ }
+
+ // [6] [4] [5]
+ // [3] <1> [2]
+ public void testLayout6KeyMax5M0() {
+ MoreKeysKeyboardParams params = createParams(6, 5, XPOS_M0);
+ assertEquals("6 key max 5 M0 columns", 3, params.mNumColumns);
+ assertEquals("6 key max 5 M0 rows", 2, params.mNumRows);
+ assertEquals("6 key max 5 M0 left", 1, params.mLeftKeys);
+ assertEquals("6 key max 5 M0 right", 2, params.mRightKeys);
+ assertEquals("6 key max 5 M0 <1>", 0, params.getColumnPos(0));
+ assertEquals("6 key max 5 M0 [2]", 1, params.getColumnPos(1));
+ assertEquals("6 key max 5 M0 [3]", -1, params.getColumnPos(2));
+ assertEquals("6 key max 5 M0 [4]", 0, params.getColumnPos(3));
+ assertEquals("6 key max 5 M0 [5]", 1, params.getColumnPos(4));
+ assertEquals("6 key max 5 M0 [6]", -1, params.getColumnPos(5));
+ assertEquals("6 key max 5 M0 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("6 key max 5 M0 default", WIDTH * 1, params.getDefaultKeyCoordX());
+ }
+
+ // |[4] [5] [6]
+ // |<1> [2] [3]
+ public void testLayout6KeyMax5L0() {
+ MoreKeysKeyboardParams params = createParams(6, 5, XPOS_L0);
+ assertEquals("6 key max 5 L0 columns", 3, params.mNumColumns);
+ assertEquals("6 key max 5 L0 rows", 2, params.mNumRows);
+ assertEquals("6 key max 5 L0 left", 0, params.mLeftKeys);
+ assertEquals("6 key max 5 L0 right", 3, params.mRightKeys);
+ assertEquals("6 key max 5 L0 <1>", 0, params.getColumnPos(0));
+ assertEquals("6 key max 5 L0 [2]", 1, params.getColumnPos(1));
+ assertEquals("6 key max 5 L0 [3]", 2, params.getColumnPos(2));
+ assertEquals("6 key max 5 L0 [4]", 0, params.getColumnPos(3));
+ assertEquals("6 key max 5 L0 [5]", 1, params.getColumnPos(4));
+ assertEquals("6 key max 5 L0 [6]", 2, params.getColumnPos(5));
+ assertEquals("6 key max 5 L0 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("6 key max 5 L0 default", WIDTH * 0, params.getDefaultKeyCoordX());
+ }
+
+ // |___ [4] [5] [6]
+ // |___ <1> [2] [3]
+ public void testLayout6KeyMax5L1() {
+ MoreKeysKeyboardParams params = createParams(6, 5, XPOS_L1);
+ assertEquals("6 key max 5 L1 columns", 3, params.mNumColumns);
+ assertEquals("6 key max 5 L1 rows", 2, params.mNumRows);
+ assertEquals("6 key max 5 L1 left", 0, params.mLeftKeys);
+ assertEquals("6 key max 5 L1 right", 3, params.mRightKeys);
+ assertEquals("6 key max 5 L1 <1>", 0, params.getColumnPos(0));
+ assertEquals("6 key max 5 L1 [2]", 1, params.getColumnPos(1));
+ assertEquals("6 key max 5 L1 [3]", 2, params.getColumnPos(2));
+ assertEquals("6 key max 5 L1 [4]", 0, params.getColumnPos(3));
+ assertEquals("6 key max 5 L1 [5]", 1, params.getColumnPos(4));
+ assertEquals("6 key max 5 L1 [6]", 2, params.getColumnPos(5));
+ assertEquals("6 key max 5 L1 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("6 key max 5 L1 default", WIDTH * 0, params.getDefaultKeyCoordX());
+ }
+
+ // |___ [6] [4] [5]
+ // |___ [3] <1> [2]
+ public void testLayout6KeyMax5L2() {
+ MoreKeysKeyboardParams params = createParams(6, 5, XPOS_L2);
+ assertEquals("6 key max 5 L2 columns", 3, params.mNumColumns);
+ assertEquals("6 key max 5 L2 rows", 2, params.mNumRows);
+ assertEquals("6 key max 5 L2 left", 1, params.mLeftKeys);
+ assertEquals("6 key max 5 L2 right", 2, params.mRightKeys);
+ assertEquals("6 key max 5 L2 <1>", 0, params.getColumnPos(0));
+ assertEquals("6 key max 5 L2 [2]", 1, params.getColumnPos(1));
+ assertEquals("6 key max 5 L2 [3]", -1, params.getColumnPos(2));
+ assertEquals("6 key max 5 L2 [4]", 0, params.getColumnPos(3));
+ assertEquals("6 key max 5 L2 [5]", 1, params.getColumnPos(4));
+ assertEquals("6 key max 5 L2 [6]", -1, params.getColumnPos(5));
+ assertEquals("6 key max 5 L2 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("6 key max 5 L2 default", WIDTH * 1, params.getDefaultKeyCoordX());
+ }
+
+ // [6] [5] [4]|
+ // [3] [2] <1>|
+ public void testLayout6KeyMax5R0() {
+ MoreKeysKeyboardParams params = createParams(6, 5, XPOS_R0);
+ assertEquals("6 key max 5 R0 columns", 3, params.mNumColumns);
+ assertEquals("6 key max 5 R0 rows", 2, params.mNumRows);
+ assertEquals("6 key max 5 R0 left", 2, params.mLeftKeys);
+ assertEquals("6 key max 5 R0 right", 1, params.mRightKeys);
+ assertEquals("6 key max 5 R0 <1>", 0, params.getColumnPos(0));
+ assertEquals("6 key max 5 R0 [2]", -1, params.getColumnPos(1));
+ assertEquals("6 key max 5 R0 [3]", -2, params.getColumnPos(2));
+ assertEquals("6 key max 5 R0 [4]", 0, params.getColumnPos(3));
+ assertEquals("6 key max 5 R0 [5]", -1, params.getColumnPos(4));
+ assertEquals("6 key max 5 R0 [6]", -2, params.getColumnPos(5));
+ assertEquals("6 key max 5 R0 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("6 key max 5 R0 default", WIDTH * 2, params.getDefaultKeyCoordX());
+ }
+
+ // [6] [5] [4] ___|
+ // [3] [2] <1> ___|
+ public void testLayout6KeyMax5R1() {
+ MoreKeysKeyboardParams params = createParams(6, 5, XPOS_R1);
+ assertEquals("6 key max 5 R1 columns", 3, params.mNumColumns);
+ assertEquals("6 key max 5 R1 rows", 2, params.mNumRows);
+ assertEquals("6 key max 5 R1 left", 2, params.mLeftKeys);
+ assertEquals("6 key max 5 R1 right", 1, params.mRightKeys);
+ assertEquals("6 key max 5 R1 <1>", 0, params.getColumnPos(0));
+ assertEquals("6 key max 5 R1 [2]", -1, params.getColumnPos(1));
+ assertEquals("6 key max 5 R1 [3]", -2, params.getColumnPos(2));
+ assertEquals("6 key max 5 R1 [4]", 0, params.getColumnPos(3));
+ assertEquals("6 key max 5 R1 [5]", -1, params.getColumnPos(4));
+ assertEquals("6 key max 5 R1 [6]", -2, params.getColumnPos(5));
+ assertEquals("6 key max 5 R1 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("6 key max 5 R1 default", WIDTH * 2, params.getDefaultKeyCoordX());
+ }
+
+ // [6] [4] [5] ___|
+ // [3] <1> [2] ___|
+ public void testLayout6KeyMax5R2() {
+ MoreKeysKeyboardParams params = createParams(6, 5, XPOS_R2);
+ assertEquals("6 key max 5 R2 columns", 3, params.mNumColumns);
+ assertEquals("6 key max 5 R2 rows", 2, params.mNumRows);
+ assertEquals("6 key max 5 R2 left", 1, params.mLeftKeys);
+ assertEquals("6 key max 5 R2 right", 2, params.mRightKeys);
+ assertEquals("6 key max 5 R2 <1>", 0, params.getColumnPos(0));
+ assertEquals("6 key max 5 R2 [2]", 1, params.getColumnPos(1));
+ assertEquals("6 key max 5 R2 [3]", -1, params.getColumnPos(2));
+ assertEquals("6 key max 5 R2 [4]", 0, params.getColumnPos(3));
+ assertEquals("6 key max 5 R2 [5]", 1, params.getColumnPos(4));
+ assertEquals("6 key max 5 R2 [6]", -1, params.getColumnPos(5));
+ assertEquals("6 key max 5 R2 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("6 key max 5 R2 default", WIDTH * 1, params.getDefaultKeyCoordX());
+ }
+
+ // |<1> [2] [3] [4] [5] [6] [7] ___ ___ ___|
+ public void testLayout7KeyMax7L0() {
+ MoreKeysKeyboardParams params = createParams(7, 7, XPOS_L0);
+ assertEquals("7 key max 7 L0 columns", 7, params.mNumColumns);
+ assertEquals("7 key max 7 L0 rows", 1, params.mNumRows);
+ assertEquals("7 key max 7 L0 left", 0, params.mLeftKeys);
+ assertEquals("7 key max 7 L0 right", 7, params.mRightKeys);
+ assertEquals("7 key max 7 L0 <1>", 0, params.getColumnPos(0));
+ assertEquals("7 key max 7 L0 [2]", 1, params.getColumnPos(1));
+ assertEquals("7 key max 7 L0 [3]", 2, params.getColumnPos(2));
+ assertEquals("7 key max 7 L0 [4]", 3, params.getColumnPos(3));
+ assertEquals("7 key max 7 L0 [5]", 4, params.getColumnPos(4));
+ assertEquals("7 key max 7 L0 [6]", 5, params.getColumnPos(5));
+ assertEquals("7 key max 7 L0 [7]", 6, params.getColumnPos(6));
+ assertEquals("7 key max 7 L0 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("7 key max 7 L0 default", WIDTH * 0, params.getDefaultKeyCoordX());
+ }
+
+ // |___ <1> [2] [3] [4] [5] [6] [7] ___ ___|
+ public void testLayout7KeyMax7L1() {
+ MoreKeysKeyboardParams params = createParams(7, 7, XPOS_L1);
+ assertEquals("7 key max 7 L1 columns", 7, params.mNumColumns);
+ assertEquals("7 key max 7 L1 rows", 1, params.mNumRows);
+ assertEquals("7 key max 7 L1 left", 0, params.mLeftKeys);
+ assertEquals("7 key max 7 L1 right", 7, params.mRightKeys);
+ assertEquals("7 key max 7 L1 <1>", 0, params.getColumnPos(0));
+ assertEquals("7 key max 7 L1 [2]", 1, params.getColumnPos(1));
+ assertEquals("7 key max 7 L1 [3]", 2, params.getColumnPos(2));
+ assertEquals("7 key max 7 L1 [4]", 3, params.getColumnPos(3));
+ assertEquals("7 key max 7 L1 [5]", 4, params.getColumnPos(4));
+ assertEquals("7 key max 7 L1 [6]", 5, params.getColumnPos(5));
+ assertEquals("7 key max 7 L1 [7]", 6, params.getColumnPos(6));
+ assertEquals("7 key max 7 L1 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("7 key max 7 L1 default", WIDTH * 0, params.getDefaultKeyCoordX());
+ }
+
+ // |___ [3] <1> [2] [4] [5] [6] [7] ___ ___|
+ public void testLayout7KeyMax7L2() {
+ MoreKeysKeyboardParams params = createParams(7, 7, XPOS_L2);
+ assertEquals("7 key max 7 L2 columns", 7, params.mNumColumns);
+ assertEquals("7 key max 7 L2 rows", 1, params.mNumRows);
+ assertEquals("7 key max 7 L2 left", 1, params.mLeftKeys);
+ assertEquals("7 key max 7 L2 right", 6, params.mRightKeys);
+ assertEquals("7 key max 7 L2 <1>", 0, params.getColumnPos(0));
+ assertEquals("7 key max 7 L2 [2]", 1, params.getColumnPos(1));
+ assertEquals("7 key max 7 L2 [3]", -1, params.getColumnPos(2));
+ assertEquals("7 key max 7 L2 [4]", 2, params.getColumnPos(3));
+ assertEquals("7 key max 7 L2 [5]", 3, params.getColumnPos(4));
+ assertEquals("7 key max 7 L2 [6]", 4, params.getColumnPos(5));
+ assertEquals("7 key max 7 L2 [7]", 5, params.getColumnPos(6));
+ assertEquals("7 key max 7 L2 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("7 key max 7 L2 default", WIDTH * 1, params.getDefaultKeyCoordX());
+ }
+
+ // |___ [5] [3] <1> [2] [4] [6] [7] ___ ___|
+ public void testLayout7KeyMax7L3() {
+ MoreKeysKeyboardParams params = createParams(7, 7, XPOS_L3);
+ assertEquals("7 key max 7 L3 columns", 7, params.mNumColumns);
+ assertEquals("7 key max 7 L3 rows", 1, params.mNumRows);
+ assertEquals("7 key max 7 L3 left", 2, params.mLeftKeys);
+ assertEquals("7 key max 7 L3 right", 5, params.mRightKeys);
+ assertEquals("7 key max 7 L3 <1>", 0, params.getColumnPos(0));
+ assertEquals("7 key max 7 L3 [2]", 1, params.getColumnPos(1));
+ assertEquals("7 key max 7 L3 [3]", -1, params.getColumnPos(2));
+ assertEquals("7 key max 7 L3 [4]", 2, params.getColumnPos(3));
+ assertEquals("7 key max 7 L3 [5]", -2, params.getColumnPos(4));
+ assertEquals("7 key max 7 L3 [6]", 3, params.getColumnPos(5));
+ assertEquals("7 key max 7 L3 [7]", 4, params.getColumnPos(6));
+ assertEquals("7 key max 7 L3 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("7 key max 7 L3 default", WIDTH * 2, params.getDefaultKeyCoordX());
+ }
+
+ // |___ [7] [5] [3] <1> [2] [4] [6] ___ ___|
+ public void testLayout7KeyMax7M0() {
+ MoreKeysKeyboardParams params = createParams(7, 7, XPOS_M0);
+ assertEquals("7 key max 7 M0 columns", 7, params.mNumColumns);
+ assertEquals("7 key max 7 M0 rows", 1, params.mNumRows);
+ assertEquals("7 key max 7 M0 left", 3, params.mLeftKeys);
+ assertEquals("7 key max 7 M0 right", 4, params.mRightKeys);
+ assertEquals("7 key max 7 M0 <1>", 0, params.getColumnPos(0));
+ assertEquals("7 key max 7 M0 [2]", 1, params.getColumnPos(1));
+ assertEquals("7 key max 7 M0 [3]", -1, params.getColumnPos(2));
+ assertEquals("7 key max 7 M0 [4]", 2, params.getColumnPos(3));
+ assertEquals("7 key max 7 M0 [5]", -2, params.getColumnPos(4));
+ assertEquals("7 key max 7 M0 [6]", 3, params.getColumnPos(5));
+ assertEquals("7 key max 7 M0 [7]", -3, params.getColumnPos(6));
+ assertEquals("7 key max 7 M0 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("7 key max 7 M0 default", WIDTH * 3, params.getDefaultKeyCoordX());
+ }
+
+ // |___ ___ [7] [5] [3] <1> [2] [4] [6] ___|
+ public void testLayout7KeyMax7M1() {
+ MoreKeysKeyboardParams params = createParams(7, 7, XPOS_M1);
+ assertEquals("7 key max 7 M1 columns", 7, params.mNumColumns);
+ assertEquals("7 key max 7 M1 rows", 1, params.mNumRows);
+ assertEquals("7 key max 7 M1 left", 3, params.mLeftKeys);
+ assertEquals("7 key max 7 M1 right", 4, params.mRightKeys);
+ assertEquals("7 key max 7 M1 <1>", 0, params.getColumnPos(0));
+ assertEquals("7 key max 7 M1 [2]", 1, params.getColumnPos(1));
+ assertEquals("7 key max 7 M1 [3]", -1, params.getColumnPos(2));
+ assertEquals("7 key max 7 M1 [4]", 2, params.getColumnPos(3));
+ assertEquals("7 key max 7 M1 [5]", -2, params.getColumnPos(4));
+ assertEquals("7 key max 7 M1 [6]", 3, params.getColumnPos(5));
+ assertEquals("7 key max 7 M1 [7]", -3, params.getColumnPos(6));
+ assertEquals("7 key max 7 M1 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("7 key max 7 M1 default", WIDTH * 3, params.getDefaultKeyCoordX());
+ }
+
+ // |___ ___ [7] [6] [5] [3] <1> [2] [4] ___|
+ public void testLayout7KeyMax7R3() {
+ MoreKeysKeyboardParams params = createParams(7, 7, XPOS_R3);
+ assertEquals("7 key max 7 R3 columns", 7, params.mNumColumns);
+ assertEquals("7 key max 7 R3 rows", 1, params.mNumRows);
+ assertEquals("7 key max 7 R3 left", 4, params.mLeftKeys);
+ assertEquals("7 key max 7 R3 right", 3, params.mRightKeys);
+ assertEquals("7 key max 7 R3 <1>", 0, params.getColumnPos(0));
+ assertEquals("7 key max 7 R3 [2]", 1, params.getColumnPos(1));
+ assertEquals("7 key max 7 R3 [3]", -1, params.getColumnPos(2));
+ assertEquals("7 key max 7 R3 [4]", 2, params.getColumnPos(3));
+ assertEquals("7 key max 7 R3 [5]", -2, params.getColumnPos(4));
+ assertEquals("7 key max 7 R3 [6]", -3, params.getColumnPos(5));
+ assertEquals("7 key max 7 R3 [7]", -4, params.getColumnPos(6));
+ assertEquals("7 key max 7 R3 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("7 key max 7 R3 default", WIDTH * 4, params.getDefaultKeyCoordX());
+ }
+
+ // |___ ___ [7] [6] [5] [4] [3] <1> [2] ___|
+ public void testLayout7KeyMax7R2() {
+ MoreKeysKeyboardParams params = createParams(7, 7, XPOS_R2);
+ assertEquals("7 key max 7 R2 columns", 7, params.mNumColumns);
+ assertEquals("7 key max 7 R2 rows", 1, params.mNumRows);
+ assertEquals("7 key max 7 R2 left", 5, params.mLeftKeys);
+ assertEquals("7 key max 7 R2 right", 2, params.mRightKeys);
+ assertEquals("7 key max 7 R2 <1>", 0, params.getColumnPos(0));
+ assertEquals("7 key max 7 R2 [2]", 1, params.getColumnPos(1));
+ assertEquals("7 key max 7 R2 [3]", -1, params.getColumnPos(2));
+ assertEquals("7 key max 7 R2 [4]", -2, params.getColumnPos(3));
+ assertEquals("7 key max 7 R2 [5]", -3, params.getColumnPos(4));
+ assertEquals("7 key max 7 R2 [6]", -4, params.getColumnPos(5));
+ assertEquals("7 key max 7 R2 [7]", -5, params.getColumnPos(6));
+ assertEquals("7 key max 7 R2 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("7 key max 7 R2 default", WIDTH * 5, params.getDefaultKeyCoordX());
+ }
+
+ // |___ ___ [7] [6] [5] [4] [3] [2] <1> ___|
+ public void testLayout7KeyMax7R1() {
+ MoreKeysKeyboardParams params = createParams(7, 7, XPOS_R1);
+ assertEquals("7 key max 7 R1 columns", 7, params.mNumColumns);
+ assertEquals("7 key max 7 R1 rows", 1, params.mNumRows);
+ assertEquals("7 key max 7 R1 left", 6, params.mLeftKeys);
+ assertEquals("7 key max 7 R1 right", 1, params.mRightKeys);
+ assertEquals("7 key max 7 R1 <1>", 0, params.getColumnPos(0));
+ assertEquals("7 key max 7 R1 [2]", -1, params.getColumnPos(1));
+ assertEquals("7 key max 7 R1 [3]", -2, params.getColumnPos(2));
+ assertEquals("7 key max 7 R1 [4]", -3, params.getColumnPos(3));
+ assertEquals("7 key max 7 R1 [5]", -4, params.getColumnPos(4));
+ assertEquals("7 key max 7 R1 [6]", -5, params.getColumnPos(5));
+ assertEquals("7 key max 7 R1 [7]", -6, params.getColumnPos(6));
+ assertEquals("7 key max 7 R1 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("7 key max 7 R1 default", WIDTH * 6, params.getDefaultKeyCoordX());
+ }
+
+ // |___ ___ [7] [6] [5] [4] [3] [2] <1>|
+ public void testLayout7KeyMax7R0() {
+ MoreKeysKeyboardParams params = createParams(7, 7, XPOS_R0);
+ assertEquals("7 key max 7 R0 columns", 7, params.mNumColumns);
+ assertEquals("7 key max 7 R0 rows", 1, params.mNumRows);
+ assertEquals("7 key max 7 R0 left", 6, params.mLeftKeys);
+ assertEquals("7 key max 7 R0 right", 1, params.mRightKeys);
+ assertEquals("7 key max 7 R0 <1>", 0, params.getColumnPos(0));
+ assertEquals("7 key max 7 R0 [2]", -1, params.getColumnPos(1));
+ assertEquals("7 key max 7 R0 [3]", -2, params.getColumnPos(2));
+ assertEquals("7 key max 7 R0 [4]", -3, params.getColumnPos(3));
+ assertEquals("7 key max 7 R0 [5]", -4, params.getColumnPos(4));
+ assertEquals("7 key max 7 R0 [6]", -5, params.getColumnPos(5));
+ assertEquals("7 key max 7 R0 [7]", -6, params.getColumnPos(6));
+ assertEquals("7 key max 7 R0 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("7 key max 7 R0 default", WIDTH * 6, params.getDefaultKeyCoordX());
+ }
+
+ // [5] [6] [7]
+ // [3] <1> [2] [4]
+ public void testLayout7KeyMax5M0() {
+ MoreKeysKeyboardParams params = createParams(7, 5, XPOS_M0);
+ assertEquals("7 key max 5 M0 columns", 4, params.mNumColumns);
+ assertEquals("7 key max 5 M0 rows", 2, params.mNumRows);
+ assertEquals("7 key max 5 M0 left", 1, params.mLeftKeys);
+ assertEquals("7 key max 5 M0 right", 3, params.mRightKeys);
+ assertEquals("7 key max 5 M0 <1>", 0, params.getColumnPos(0));
+ assertEquals("7 key max 5 M0 [2]", 1, params.getColumnPos(1));
+ assertEquals("7 key max 5 M0 [3]", -1, params.getColumnPos(2));
+ assertEquals("7 key max 5 M0 [4]", 2, params.getColumnPos(3));
+ assertEquals("7 key max 5 M0 [5]", 0, params.getColumnPos(4));
+ assertEquals("7 key max 5 M0 [6]", 1, params.getColumnPos(5));
+ assertEquals("7 key max 5 M0 [7]", 2, params.getColumnPos(6));
+ assertEquals("7 key max 5 M0 adjust", -1, params.mTopRowAdjustment);
+ assertEquals("7 key max 5 M0 default", WIDTH * 1, params.getDefaultKeyCoordX());
+ }
+
+ // |[5] [6] [7]
+ // |<1> [2] [3] [4]
+ public void testLayout7KeyMax5L0() {
+ MoreKeysKeyboardParams params = createParams(7, 5, XPOS_L0);
+ assertEquals("7 key max 5 L0 columns", 4, params.mNumColumns);
+ assertEquals("7 key max 5 L0 rows", 2, params.mNumRows);
+ assertEquals("7 key max 5 L0 left", 0, params.mLeftKeys);
+ assertEquals("7 key max 5 L0 right", 4, params.mRightKeys);
+ assertEquals("7 key max 5 L0 <1>", 0, params.getColumnPos(0));
+ assertEquals("7 key max 5 L0 [2]", 1, params.getColumnPos(1));
+ assertEquals("7 key max 5 L0 [3]", 2, params.getColumnPos(2));
+ assertEquals("7 key max 5 L0 [4]", 3, params.getColumnPos(3));
+ assertEquals("7 key max 5 L0 [5]", 0, params.getColumnPos(4));
+ assertEquals("7 key max 5 L0 [6]", 1, params.getColumnPos(5));
+ assertEquals("7 key max 5 L0 [7]", 2, params.getColumnPos(6));
+ assertEquals("7 key max 5 L0 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("7 key max 5 L0 default", WIDTH * 0, params.getDefaultKeyCoordX());
+ }
+
+ // |___ [5] [6] [7]
+ // |___ <1> [2] [3] [4]
+ public void testLayout7KeyMax5L1() {
+ MoreKeysKeyboardParams params = createParams(7, 5, XPOS_L1);
+ assertEquals("7 key max 5 L1 columns", 4, params.mNumColumns);
+ assertEquals("7 key max 5 L1 rows", 2, params.mNumRows);
+ assertEquals("7 key max 5 L1 left", 0, params.mLeftKeys);
+ assertEquals("7 key max 5 L1 right", 4, params.mRightKeys);
+ assertEquals("7 key max 5 L1 <1>", 0, params.getColumnPos(0));
+ assertEquals("7 key max 5 L1 [2]", 1, params.getColumnPos(1));
+ assertEquals("7 key max 5 L1 [3]", 2, params.getColumnPos(2));
+ assertEquals("7 key max 5 L1 [4]", 3, params.getColumnPos(3));
+ assertEquals("7 key max 5 L1 [5]", 0, params.getColumnPos(4));
+ assertEquals("7 key max 5 L1 [6]", 1, params.getColumnPos(5));
+ assertEquals("7 key max 5 L1 [7]", 2, params.getColumnPos(6));
+ assertEquals("7 key max 5 L1 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("7 key max 5 L1 default", WIDTH * 0, params.getDefaultKeyCoordX());
+ }
+
+ // |___ [5] [6] [7]
+ // |___ [3] <1> [2] [4]
+ public void testLayout7KeyMax5L2() {
+ MoreKeysKeyboardParams params = createParams(7, 5, XPOS_L2);
+ assertEquals("7 key max 5 L2 columns", 4, params.mNumColumns);
+ assertEquals("7 key max 5 L2 rows", 2, params.mNumRows);
+ assertEquals("7 key max 5 L2 left", 1, params.mLeftKeys);
+ assertEquals("7 key max 5 L2 right", 3, params.mRightKeys);
+ assertEquals("7 key max 5 L2 <1>", 0, params.getColumnPos(0));
+ assertEquals("7 key max 5 L2 [2]", 1, params.getColumnPos(1));
+ assertEquals("7 key max 5 L2 [3]", -1, params.getColumnPos(2));
+ assertEquals("7 key max 5 L2 [4]", 2, params.getColumnPos(3));
+ assertEquals("7 key max 5 L2 [5]", 0, params.getColumnPos(4));
+ assertEquals("7 key max 5 L2 [6]", 1, params.getColumnPos(5));
+ assertEquals("7 key max 5 L2 [7]", 2, params.getColumnPos(6));
+ assertEquals("7 key max 5 L2 adjust", -1, params.mTopRowAdjustment);
+ assertEquals("7 key max 5 L2 default", WIDTH * 1, params.getDefaultKeyCoordX());
+ }
+
+ // [7] [6] [5]|
+ // [4] [3] [2] <1>|
+ public void testLayout7KeyMax5R0() {
+ MoreKeysKeyboardParams params = createParams(7, 5, XPOS_R0);
+ assertEquals("7 key max 5 R0 columns", 4, params.mNumColumns);
+ assertEquals("7 key max 5 R0 rows", 2, params.mNumRows);
+ assertEquals("7 key max 5 R0 left", 3, params.mLeftKeys);
+ assertEquals("7 key max 5 R0 right", 1, params.mRightKeys);
+ assertEquals("7 key max 5 R0 <1>", 0, params.getColumnPos(0));
+ assertEquals("7 key max 5 R0 [2]", -1, params.getColumnPos(1));
+ assertEquals("7 key max 5 R0 [3]", -2, params.getColumnPos(2));
+ assertEquals("7 key max 5 R0 [4]", -3, params.getColumnPos(3));
+ assertEquals("7 key max 5 R0 [5]", 0, params.getColumnPos(4));
+ assertEquals("7 key max 5 R0 [6]", -1, params.getColumnPos(5));
+ assertEquals("7 key max 5 R0 [7]", -2, params.getColumnPos(6));
+ assertEquals("7 key max 5 R0 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("7 key max 5 R0 default", WIDTH * 3, params.getDefaultKeyCoordX());
+ }
+
+ // [7] [6] [5] ___|
+ // [4] [3] [2] <1> ___|
+ public void testLayout7KeyMax5R1() {
+ MoreKeysKeyboardParams params = createParams(7, 5, XPOS_R1);
+ assertEquals("7 key max 5 R1 columns", 4, params.mNumColumns);
+ assertEquals("7 key max 5 R1 rows", 2, params.mNumRows);
+ assertEquals("7 key max 5 R1 left", 3, params.mLeftKeys);
+ assertEquals("7 key max 5 R1 right", 1, params.mRightKeys);
+ assertEquals("7 key max 5 R1 <1>", 0, params.getColumnPos(0));
+ assertEquals("7 key max 5 R1 [2]", -1, params.getColumnPos(1));
+ assertEquals("7 key max 5 R1 [3]", -2, params.getColumnPos(2));
+ assertEquals("7 key max 5 R1 [4]", -3, params.getColumnPos(3));
+ assertEquals("7 key max 5 R1 [5]", 0, params.getColumnPos(4));
+ assertEquals("7 key max 5 R1 [6]", -1, params.getColumnPos(5));
+ assertEquals("7 key max 5 R1 [7]", -2, params.getColumnPos(6));
+ assertEquals("7 key max 5 R1 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("7 key max 5 R1 default", WIDTH * 3, params.getDefaultKeyCoordX());
+ }
+
+ // [7] [5] [6] ___|
+ // [4] [3] <1> [2] ___|
+ public void testLayout7KeyMax5R2() {
+ MoreKeysKeyboardParams params = createParams(7, 5, XPOS_R2);
+ assertEquals("7 key max 5 R2 columns", 4, params.mNumColumns);
+ assertEquals("7 key max 5 R2 rows", 2, params.mNumRows);
+ assertEquals("7 key max 5 R2 left", 2, params.mLeftKeys);
+ assertEquals("7 key max 5 R2 right", 2, params.mRightKeys);
+ assertEquals("7 key max 5 R2 <1>", 0, params.getColumnPos(0));
+ assertEquals("7 key max 5 R2 [2]", 1, params.getColumnPos(1));
+ assertEquals("7 key max 5 R2 [3]", -1, params.getColumnPos(2));
+ assertEquals("7 key max 5 R2 [4]", -2, params.getColumnPos(3));
+ assertEquals("7 key max 5 R2 [5]", 0, params.getColumnPos(4));
+ assertEquals("7 key max 5 R2 [6]", 1, params.getColumnPos(5));
+ assertEquals("7 key max 5 R2 [7]", -1, params.getColumnPos(6));
+ assertEquals("7 key max 5 R2 adjust", -1, params.mTopRowAdjustment);
+ assertEquals("7 key max 5 R2 default", WIDTH * 2, params.getDefaultKeyCoordX());
+ }
+
+ // [7]
+ // [6] [4] [5]
+ // [3] <1> [2]
+ public void testLayout7KeyMax3M0() {
+ MoreKeysKeyboardParams params = createParams(7, 3, XPOS_M0);
+ assertEquals("7 key max 3 M0 columns", 3, params.mNumColumns);
+ assertEquals("7 key max 3 M0 rows", 3, params.mNumRows);
+ assertEquals("7 key max 3 M0 left", 1, params.mLeftKeys);
+ assertEquals("7 key max 3 M0 right", 2, params.mRightKeys);
+ assertEquals("7 key max 3 M0 <1>", 0, params.getColumnPos(0));
+ assertEquals("7 key max 3 M0 [2]", 1, params.getColumnPos(1));
+ assertEquals("7 key max 3 M0 [3]", -1, params.getColumnPos(2));
+ assertEquals("7 key max 3 M0 [4]", 0, params.getColumnPos(3));
+ assertEquals("7 key max 3 M0 [5]", 1, params.getColumnPos(4));
+ assertEquals("7 key max 3 M0 [6]", -1, params.getColumnPos(5));
+ assertEquals("7 key max 3 M0 [7]", 0, params.getColumnPos(6));
+ assertEquals("7 key max 3 M0 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("7 key max 3 M0 default", WIDTH * 1, params.getDefaultKeyCoordX());
+ }
+
+ // |[7]
+ // |[4] [5] [6]
+ // |<1> [2] [3]
+ public void testLayout7KeyMax3L0() {
+ MoreKeysKeyboardParams params = createParams(7, 3, XPOS_L0);
+ assertEquals("7 key max 3 L0 columns", 3, params.mNumColumns);
+ assertEquals("7 key max 3 L0 rows", 3, params.mNumRows);
+ assertEquals("7 key max 3 L0 left", 0, params.mLeftKeys);
+ assertEquals("7 key max 3 L0 right", 3, params.mRightKeys);
+ assertEquals("7 key max 3 L0 <1>", 0, params.getColumnPos(0));
+ assertEquals("7 key max 3 L0 [2]", 1, params.getColumnPos(1));
+ assertEquals("7 key max 3 L0 [3]", 2, params.getColumnPos(2));
+ assertEquals("7 key max 3 L0 [4]", 0, params.getColumnPos(3));
+ assertEquals("7 key max 3 L0 [5]", 1, params.getColumnPos(4));
+ assertEquals("7 key max 3 L0 [6]", 2, params.getColumnPos(5));
+ assertEquals("7 key max 3 L0 [7]", 0, params.getColumnPos(6));
+ assertEquals("7 key max 3 L0 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("7 key max 3 L0 default", WIDTH * 0, params.getDefaultKeyCoordX());
+ }
+
+ // |___ [7]
+ // |___ [4] [5] [6]
+ // |___ <1> [2] [3]
+ public void testLayout7KeyMax3L1() {
+ MoreKeysKeyboardParams params = createParams(7, 3, XPOS_L1);
+ assertEquals("7 key max 3 L1 columns", 3, params.mNumColumns);
+ assertEquals("7 key max 3 L1 rows", 3, params.mNumRows);
+ assertEquals("7 key max 3 L1 left", 0, params.mLeftKeys);
+ assertEquals("7 key max 3 L1 right", 3, params.mRightKeys);
+ assertEquals("7 key max 3 L1 <1>", 0, params.getColumnPos(0));
+ assertEquals("7 key max 3 L1 [2]", 1, params.getColumnPos(1));
+ assertEquals("7 key max 3 L1 [3]", 2, params.getColumnPos(2));
+ assertEquals("7 key max 3 L1 [4]", 0, params.getColumnPos(3));
+ assertEquals("7 key max 3 L1 [5]", 1, params.getColumnPos(4));
+ assertEquals("7 key max 3 L1 [6]", 2, params.getColumnPos(5));
+ assertEquals("7 key max 3 L1 [7]", 0, params.getColumnPos(6));
+ assertEquals("7 key max 3 L1 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("7 key max 3 L1 default", WIDTH * 0, params.getDefaultKeyCoordX());
+ }
+
+ // |___ [7]
+ // |___ [6] [4] [5]
+ // |___ [3] <1> [2]
+ public void testLayout7KeyMax3L2() {
+ MoreKeysKeyboardParams params = createParams(7, 3, XPOS_L2);
+ assertEquals("7 key max 3 L2 columns", 3, params.mNumColumns);
+ assertEquals("7 key max 3 L2 rows", 3, params.mNumRows);
+ assertEquals("7 key max 3 L2 left", 1, params.mLeftKeys);
+ assertEquals("7 key max 3 L2 right", 2, params.mRightKeys);
+ assertEquals("7 key max 3 L2 <1>", 0, params.getColumnPos(0));
+ assertEquals("7 key max 3 L2 [2]", 1, params.getColumnPos(1));
+ assertEquals("7 key max 3 L2 [3]", -1, params.getColumnPos(2));
+ assertEquals("7 key max 3 L2 [4]", 0, params.getColumnPos(3));
+ assertEquals("7 key max 3 L2 [5]", 1, params.getColumnPos(4));
+ assertEquals("7 key max 3 L2 [6]", -1, params.getColumnPos(5));
+ assertEquals("7 key max 3 L2 [7]", 0, params.getColumnPos(6));
+ assertEquals("7 key max 3 L2 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("7 key max 3 L2 default", WIDTH * 1, params.getDefaultKeyCoordX());
+ }
+
+ // [7]|
+ // [6] [5] [4]|
+ // [3] [2] <1>|
+ public void testLayout7KeyMax3R0() {
+ MoreKeysKeyboardParams params = createParams(7, 3, XPOS_R0);
+ assertEquals("7 key max 3 R0 columns", 3, params.mNumColumns);
+ assertEquals("7 key max 3 R0 rows", 3, params.mNumRows);
+ assertEquals("7 key max 3 R0 left", 2, params.mLeftKeys);
+ assertEquals("7 key max 3 R0 right", 1, params.mRightKeys);
+ assertEquals("7 key max 3 R0 <1>", 0, params.getColumnPos(0));
+ assertEquals("7 key max 3 R0 [2]", -1, params.getColumnPos(1));
+ assertEquals("7 key max 3 R0 [3]", -2, params.getColumnPos(2));
+ assertEquals("7 key max 3 R0 [4]", 0, params.getColumnPos(3));
+ assertEquals("7 key max 3 R0 [5]", -1, params.getColumnPos(4));
+ assertEquals("7 key max 3 R0 [6]", -2, params.getColumnPos(5));
+ assertEquals("7 key max 3 R0 [7]", 0, params.getColumnPos(6));
+ assertEquals("7 key max 3 R0 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("7 key max 3 R0 default", WIDTH * 2, params.getDefaultKeyCoordX());
+ }
+
+ // [7] ___|
+ // [6] [5] [4] ___|
+ // [3] [2] <1> ___|
+ public void testLayout7KeyMax3R1() {
+ MoreKeysKeyboardParams params = createParams(7, 3, XPOS_R1);
+ assertEquals("7 key max 3 R1 columns", 3, params.mNumColumns);
+ assertEquals("7 key max 3 R1 rows", 3, params.mNumRows);
+ assertEquals("7 key max 3 R1 left", 2, params.mLeftKeys);
+ assertEquals("7 key max 3 R1 right", 1, params.mRightKeys);
+ assertEquals("7 key max 3 R1 <1>", 0, params.getColumnPos(0));
+ assertEquals("7 key max 3 R1 [2]", -1, params.getColumnPos(1));
+ assertEquals("7 key max 3 R1 [3]", -2, params.getColumnPos(2));
+ assertEquals("7 key max 3 R1 [4]", 0, params.getColumnPos(3));
+ assertEquals("7 key max 3 R1 [5]", -1, params.getColumnPos(4));
+ assertEquals("7 key max 3 R1 [6]", -2, params.getColumnPos(5));
+ assertEquals("7 key max 3 R1 [7]", 0, params.getColumnPos(6));
+ assertEquals("7 key max 3 R1 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("7 key max 3 R1 default", WIDTH * 2, params.getDefaultKeyCoordX());
+ }
+
+ // [7] ___|
+ // [6] [4] [5] ___|
+ // [3] <1> [2] ___|
+ public void testLayout7KeyMax3R2() {
+ MoreKeysKeyboardParams params = createParams(7, 3, XPOS_R2);
+ assertEquals("7 key max 3 R2 columns", 3, params.mNumColumns);
+ assertEquals("7 key max 3 R2 rows", 3, params.mNumRows);
+ assertEquals("7 key max 3 R2 left", 1, params.mLeftKeys);
+ assertEquals("7 key max 3 R2 right", 2, params.mRightKeys);
+ assertEquals("7 key max 3 R2 <1>", 0, params.getColumnPos(0));
+ assertEquals("7 key max 3 R2 [2]", 1, params.getColumnPos(1));
+ assertEquals("7 key max 3 R2 [3]", -1, params.getColumnPos(2));
+ assertEquals("7 key max 3 R2 [4]", 0, params.getColumnPos(3));
+ assertEquals("7 key max 3 R2 [5]", 1, params.getColumnPos(4));
+ assertEquals("7 key max 3 R2 [6]", -1, params.getColumnPos(5));
+ assertEquals("7 key max 3 R2 [7]", 0, params.getColumnPos(6));
+ assertEquals("7 key max 3 R2 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("7 key max 3 R2 default", WIDTH * 1, params.getDefaultKeyCoordX());
+ }
+
+ // [7] [5] [6] [8]
+ // [3] <1> [2] [4]
+ public void testLayout8KeyMax5M0() {
+ MoreKeysKeyboardParams params = createParams(8, 5, XPOS_M0);
+ assertEquals("8 key max 5 M0 columns", 4, params.mNumColumns);
+ assertEquals("8 key max 5 M0 rows", 2, params.mNumRows);
+ assertEquals("8 key max 5 M0 left", 1, params.mLeftKeys);
+ assertEquals("8 key max 5 M0 right", 3, params.mRightKeys);
+ assertEquals("8 key max 5 M0 <1>", 0, params.getColumnPos(0));
+ assertEquals("8 key max 5 M0 [2]", 1, params.getColumnPos(1));
+ assertEquals("8 key max 5 M0 [3]", -1, params.getColumnPos(2));
+ assertEquals("8 key max 5 M0 [4]", 2, params.getColumnPos(3));
+ assertEquals("8 key max 5 M0 [5]", 0, params.getColumnPos(4));
+ assertEquals("8 key max 5 M0 [6]", 1, params.getColumnPos(5));
+ assertEquals("8 key max 5 M0 [7]", -1, params.getColumnPos(6));
+ assertEquals("8 key max 5 M0 [8]", 2, params.getColumnPos(7));
+ assertEquals("8 key max 5 M0 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("8 key max 5 M0 default", WIDTH * 1, params.getDefaultKeyCoordX());
+ }
+
+ // |[5] [6] [7] [8]
+ // |<1> [2] [3] [4]
+ public void testLayout8KeyMax5L0() {
+ MoreKeysKeyboardParams params = createParams(8, 5, XPOS_L0);
+ assertEquals("8 key max 5 L0 columns", 4, params.mNumColumns);
+ assertEquals("8 key max 5 L0 rows", 2, params.mNumRows);
+ assertEquals("8 key max 5 L0 left", 0, params.mLeftKeys);
+ assertEquals("8 key max 5 L0 right", 4, params.mRightKeys);
+ assertEquals("8 key max 5 L0 <1>", 0, params.getColumnPos(0));
+ assertEquals("8 key max 5 L0 [2]", 1, params.getColumnPos(1));
+ assertEquals("8 key max 5 L0 [3]", 2, params.getColumnPos(2));
+ assertEquals("8 key max 5 L0 [4]", 3, params.getColumnPos(3));
+ assertEquals("8 key max 5 L0 [5]", 0, params.getColumnPos(4));
+ assertEquals("8 key max 5 L0 [6]", 1, params.getColumnPos(5));
+ assertEquals("8 key max 5 L0 [7]", 2, params.getColumnPos(6));
+ assertEquals("8 key max 5 L0 [8]", 3, params.getColumnPos(7));
+ assertEquals("8 key max 5 L0 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("8 key max 5 L0 default", WIDTH * 0, params.getDefaultKeyCoordX());
+ }
+
+ // |___ [5] [6] [7] [8]
+ // |___ <1> [2] [3] [4]
+ public void testLayout8KeyMax5L1() {
+ MoreKeysKeyboardParams params = createParams(8, 5, XPOS_L1);
+ assertEquals("8 key max 5 L1 columns", 4, params.mNumColumns);
+ assertEquals("8 key max 5 L1 rows", 2, params.mNumRows);
+ assertEquals("8 key max 5 L1 left", 0, params.mLeftKeys);
+ assertEquals("8 key max 5 L1 right", 4, params.mRightKeys);
+ assertEquals("8 key max 5 L1 <1>", 0, params.getColumnPos(0));
+ assertEquals("8 key max 5 L1 [2]", 1, params.getColumnPos(1));
+ assertEquals("8 key max 5 L1 [3]", 2, params.getColumnPos(2));
+ assertEquals("8 key max 5 L1 [4]", 3, params.getColumnPos(3));
+ assertEquals("8 key max 5 L1 [5]", 0, params.getColumnPos(4));
+ assertEquals("8 key max 5 L1 [6]", 1, params.getColumnPos(5));
+ assertEquals("8 key max 5 L1 [7]", 2, params.getColumnPos(6));
+ assertEquals("8 key max 5 L1 [8]", 3, params.getColumnPos(7));
+ assertEquals("8 key max 5 L1 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("8 key max 5 L1 default", WIDTH * 0, params.getDefaultKeyCoordX());
+ }
+
+ // |___ [7] [5] [6] [8]
+ // |___ [3] <1> [2] [4]
+ public void testLayout8KeyMax5L2() {
+ MoreKeysKeyboardParams params = createParams(8, 5, XPOS_L2);
+ assertEquals("8 key max 5 L2 columns", 4, params.mNumColumns);
+ assertEquals("8 key max 5 L2 rows", 2, params.mNumRows);
+ assertEquals("8 key max 5 L2 left", 1, params.mLeftKeys);
+ assertEquals("8 key max 5 L2 right", 3, params.mRightKeys);
+ assertEquals("8 key max 5 L2 <1>", 0, params.getColumnPos(0));
+ assertEquals("8 key max 5 L2 [2]", 1, params.getColumnPos(1));
+ assertEquals("8 key max 5 L2 [3]", -1, params.getColumnPos(2));
+ assertEquals("8 key max 5 L2 [4]", 2, params.getColumnPos(3));
+ assertEquals("8 key max 5 L2 [5]", 0, params.getColumnPos(4));
+ assertEquals("8 key max 5 L2 [6]", 1, params.getColumnPos(5));
+ assertEquals("8 key max 5 L2 [7]", -1, params.getColumnPos(6));
+ assertEquals("8 key max 5 L2 [8]", 2, params.getColumnPos(7));
+ assertEquals("8 key max 5 L2 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("8 key max 5 L2 default", WIDTH * 1, params.getDefaultKeyCoordX());
+ }
+
+ // [8] [7] [6] [5]|
+ // [4] [3] [2] <1>|
+ public void testLayout8KeyMax5R0() {
+ MoreKeysKeyboardParams params = createParams(8, 5, XPOS_R0);
+ assertEquals("8 key max 5 R0 columns", 4, params.mNumColumns);
+ assertEquals("8 key max 5 R0 rows", 2, params.mNumRows);
+ assertEquals("8 key max 5 R0 left", 3, params.mLeftKeys);
+ assertEquals("8 key max 5 R0 right", 1, params.mRightKeys);
+ assertEquals("8 key max 5 R0 <1>", 0, params.getColumnPos(0));
+ assertEquals("8 key max 5 R0 [2]", -1, params.getColumnPos(1));
+ assertEquals("8 key max 5 R0 [3]", -2, params.getColumnPos(2));
+ assertEquals("8 key max 5 R0 [4]", -3, params.getColumnPos(3));
+ assertEquals("8 key max 5 R0 [5]", 0, params.getColumnPos(4));
+ assertEquals("8 key max 5 R0 [6]", -1, params.getColumnPos(5));
+ assertEquals("8 key max 5 R0 [7]", -2, params.getColumnPos(6));
+ assertEquals("8 key max 5 R0 [8]", -3, params.getColumnPos(7));
+ assertEquals("8 key max 5 R0 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("8 key max 5 R0 default", WIDTH * 3, params.getDefaultKeyCoordX());
+ }
+
+ // [8] [7] [6] [5] ___|
+ // [4] [3] [2] <1> ___|
+ public void testLayout8KeyMax5R1() {
+ MoreKeysKeyboardParams params = createParams(8, 5, XPOS_R1);
+ assertEquals("8 key max 5 R1 columns", 4, params.mNumColumns);
+ assertEquals("8 key max 5 R1 rows", 2, params.mNumRows);
+ assertEquals("8 key max 5 R1 left", 3, params.mLeftKeys);
+ assertEquals("8 key max 5 R1 right", 1, params.mRightKeys);
+ assertEquals("8 key max 5 R1 <1>", 0, params.getColumnPos(0));
+ assertEquals("8 key max 5 R1 [2]", -1, params.getColumnPos(1));
+ assertEquals("8 key max 5 R1 [3]", -2, params.getColumnPos(2));
+ assertEquals("8 key max 5 R1 [4]", -3, params.getColumnPos(3));
+ assertEquals("8 key max 5 R1 [5]", 0, params.getColumnPos(4));
+ assertEquals("8 key max 5 R1 [6]", -1, params.getColumnPos(5));
+ assertEquals("8 key max 5 R1 [7]", -2, params.getColumnPos(6));
+ assertEquals("8 key max 5 R1 [8]", -3, params.getColumnPos(7));
+ assertEquals("8 key max 5 R1 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("8 key max 5 R1 default", WIDTH * 3, params.getDefaultKeyCoordX());
+ }
+
+ // [8] [7] [5] [6] ___|
+ // [4] [3] <1> [2] ___|
+ public void testLayout8KeyMax5R2() {
+ MoreKeysKeyboardParams params = createParams(8, 5, XPOS_R2);
+ assertEquals("8 key max 5 R2 columns", 4, params.mNumColumns);
+ assertEquals("8 key max 5 R2 rows", 2, params.mNumRows);
+ assertEquals("8 key max 5 R2 left", 2, params.mLeftKeys);
+ assertEquals("8 key max 5 R2 right", 2, params.mRightKeys);
+ assertEquals("8 key max 5 R2 <1>", 0, params.getColumnPos(0));
+ assertEquals("8 key max 5 R2 [2]", 1, params.getColumnPos(1));
+ assertEquals("8 key max 5 R2 [3]", -1, params.getColumnPos(2));
+ assertEquals("8 key max 5 R2 [4]", -2, params.getColumnPos(3));
+ assertEquals("8 key max 5 R2 [5]", 0, params.getColumnPos(4));
+ assertEquals("8 key max 5 R2 [6]", 1, params.getColumnPos(5));
+ assertEquals("8 key max 5 R2 [7]", -1, params.getColumnPos(6));
+ assertEquals("8 key max 5 R2 [8]", -2, params.getColumnPos(7));
+ assertEquals("8 key max 5 R2 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("8 key max 5 R2 default", WIDTH * 2, params.getDefaultKeyCoordX());
+ }
+
+ // [8] [6] [7] [9]
+ // [5] [3] <1> [2] [4]
+ public void testLayout9KeyMax5M0() {
+ MoreKeysKeyboardParams params = createParams(9, 5, XPOS_M0);
+ assertEquals("9 key max 5 M0 columns", 5, params.mNumColumns);
+ assertEquals("9 key max 5 M0 rows", 2, params.mNumRows);
+ assertEquals("9 key max 5 M0 left", 2, params.mLeftKeys);
+ assertEquals("9 key max 5 M0 right", 3, params.mRightKeys);
+ assertEquals("9 key max 5 M0 <1>", 0, params.getColumnPos(0));
+ assertEquals("9 key max 5 M0 [2]", 1, params.getColumnPos(1));
+ assertEquals("9 key max 5 M0 [3]", -1, params.getColumnPos(2));
+ assertEquals("9 key max 5 M0 [4]", 2, params.getColumnPos(3));
+ assertEquals("9 key max 5 M0 [5]", -2, params.getColumnPos(4));
+ assertEquals("9 key max 5 M0 [6]", 0, params.getColumnPos(5));
+ assertEquals("9 key max 5 M0 [7]", 1, params.getColumnPos(6));
+ assertEquals("9 key max 5 M0 [8]", -1, params.getColumnPos(7));
+ assertEquals("9 key max 5 M0 [9]", 2, params.getColumnPos(8));
+ assertEquals("9 key max 5 M0 adjust", -1, params.mTopRowAdjustment);
+ assertEquals("9 key max 5 M0 default", WIDTH * 2, params.getDefaultKeyCoordX());
+ }
+
+ // |[6] [7] [8] [9]
+ // |<1> [2] [3] [4] [5]
+ public void testLayout9KeyMax5L0() {
+ MoreKeysKeyboardParams params = createParams(9, 5, XPOS_L0);
+ assertEquals("9 key max 5 L0 columns", 5, params.mNumColumns);
+ assertEquals("9 key max 5 L0 rows", 2, params.mNumRows);
+ assertEquals("9 key max 5 L0 left", 0, params.mLeftKeys);
+ assertEquals("9 key max 5 L0 right", 5, params.mRightKeys);
+ assertEquals("9 key max 5 L0 <1>", 0, params.getColumnPos(0));
+ assertEquals("9 key max 5 L0 [2]", 1, params.getColumnPos(1));
+ assertEquals("9 key max 5 L0 [3]", 2, params.getColumnPos(2));
+ assertEquals("9 key max 5 L0 [4]", 3, params.getColumnPos(3));
+ assertEquals("9 key max 5 L0 [5]", 4, params.getColumnPos(4));
+ assertEquals("9 key max 5 L0 [6]", 0, params.getColumnPos(5));
+ assertEquals("9 key max 5 L0 [7]", 1, params.getColumnPos(6));
+ assertEquals("9 key max 5 L0 [8]", 2, params.getColumnPos(7));
+ assertEquals("9 key max 5 L0 [9]", 3, params.getColumnPos(8));
+ assertEquals("9 key max 5 L0 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("9 key max 5 L0 default", WIDTH * 0, params.getDefaultKeyCoordX());
+ }
+
+ // |___ [6] [7] [8] [9]
+ // |___ <1> [2] [3] [4] [5]
+ public void testLayout9KeyMax5L1() {
+ MoreKeysKeyboardParams params = createParams(9, 5, XPOS_L1);
+ assertEquals("9 key max 5 L1 columns", 5, params.mNumColumns);
+ assertEquals("9 key max 5 L1 rows", 2, params.mNumRows);
+ assertEquals("9 key max 5 L1 left", 0, params.mLeftKeys);
+ assertEquals("9 key max 5 L1 right", 5, params.mRightKeys);
+ assertEquals("9 key max 5 L1 <1>", 0, params.getColumnPos(0));
+ assertEquals("9 key max 5 L1 [2]", 1, params.getColumnPos(1));
+ assertEquals("9 key max 5 L1 [3]", 2, params.getColumnPos(2));
+ assertEquals("9 key max 5 L1 [4]", 3, params.getColumnPos(3));
+ assertEquals("9 key max 5 L1 [5]", 4, params.getColumnPos(4));
+ assertEquals("9 key max 5 L1 [6]", 0, params.getColumnPos(5));
+ assertEquals("9 key max 5 L1 [7]", 1, params.getColumnPos(6));
+ assertEquals("9 key max 5 L1 [8]", 2, params.getColumnPos(7));
+ assertEquals("9 key max 5 L1 [9]", 3, params.getColumnPos(8));
+ assertEquals("9 key max 5 L1 adjust",0, params.mTopRowAdjustment);
+ assertEquals("9 key max 5 L1 default", WIDTH * 0, params.getDefaultKeyCoordX());
+ }
+
+ // |___ [6] [7] [8] [9]
+ // |___ [3] <1> [2] [4] [5]
+ public void testLayout9KeyMax5L2() {
+ MoreKeysKeyboardParams params = createParams(9, 5, XPOS_L2);
+ assertEquals("9 key max 5 L2 columns", 5, params.mNumColumns);
+ assertEquals("9 key max 5 L2 rows", 2, params.mNumRows);
+ assertEquals("9 key max 5 L2 left", 1, params.mLeftKeys);
+ assertEquals("9 key max 5 L2 right", 4, params.mRightKeys);
+ assertEquals("9 key max 5 L2 <1>", 0, params.getColumnPos(0));
+ assertEquals("9 key max 5 L2 [2]", 1, params.getColumnPos(1));
+ assertEquals("9 key max 5 L2 [3]", -1, params.getColumnPos(2));
+ assertEquals("9 key max 5 L2 [4]", 2, params.getColumnPos(3));
+ assertEquals("9 key max 5 L2 [5]", 3, params.getColumnPos(4));
+ assertEquals("9 key max 5 L2 [6]", 0, params.getColumnPos(5));
+ assertEquals("9 key max 5 L2 [7]", 1, params.getColumnPos(6));
+ assertEquals("9 key max 5 L2 [8]", 2, params.getColumnPos(7));
+ assertEquals("9 key max 5 L2 [9]", 3, params.getColumnPos(8));
+ assertEquals("9 key max 5 L2 adjust", -1, params.mTopRowAdjustment);
+ assertEquals("9 key max 5 L2 default", WIDTH * 1, params.getDefaultKeyCoordX());
+ }
+
+ // [9] [8] [7] [6]|
+ // [5] [4] [3] [2] <1>|
+ public void testLayout9KeyMax5R0() {
+ MoreKeysKeyboardParams params = createParams(9, 5, XPOS_R0);
+ assertEquals("9 key max 5 R0 columns", 5, params.mNumColumns);
+ assertEquals("9 key max 5 R0 rows", 2, params.mNumRows);
+ assertEquals("9 key max 5 R0 left", 4, params.mLeftKeys);
+ assertEquals("9 key max 5 R0 right", 1, params.mRightKeys);
+ assertEquals("9 key max 5 R0 <1>", 0, params.getColumnPos(0));
+ assertEquals("9 key max 5 R0 [2]", -1, params.getColumnPos(1));
+ assertEquals("9 key max 5 R0 [3]", -2, params.getColumnPos(2));
+ assertEquals("9 key max 5 R0 [4]", -3, params.getColumnPos(3));
+ assertEquals("9 key max 5 R0 [5]", -4, params.getColumnPos(4));
+ assertEquals("9 key max 5 R0 [6]", 0, params.getColumnPos(5));
+ assertEquals("9 key max 5 R0 [7]", -1, params.getColumnPos(6));
+ assertEquals("9 key max 5 R0 [8]", -2, params.getColumnPos(7));
+ assertEquals("9 key max 5 R0 [9]", -3, params.getColumnPos(8));
+ assertEquals("9 key max 5 R0 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("9 key max 5 R0 default", WIDTH * 4, params.getDefaultKeyCoordX());
+ }
+
+ // [9] [8] [7] [6] ___|
+ // [5] [4] [3] [2] <1> ___|
+ public void testLayout9KeyMax5R1() {
+ MoreKeysKeyboardParams params = createParams(9, 5, XPOS_R1);
+ assertEquals("9 key max 5 R1 columns", 5, params.mNumColumns);
+ assertEquals("9 key max 5 R1 rows", 2, params.mNumRows);
+ assertEquals("9 key max 5 R1 left", 4, params.mLeftKeys);
+ assertEquals("9 key max 5 R1 right", 1, params.mRightKeys);
+ assertEquals("9 key max 5 R1 <1>", 0, params.getColumnPos(0));
+ assertEquals("9 key max 5 R1 [2]", -1, params.getColumnPos(1));
+ assertEquals("9 key max 5 R1 [3]", -2, params.getColumnPos(2));
+ assertEquals("9 key max 5 R1 [4]", -3, params.getColumnPos(3));
+ assertEquals("9 key max 5 R1 [5]", -4, params.getColumnPos(4));
+ assertEquals("9 key max 5 R1 [6]", 0, params.getColumnPos(5));
+ assertEquals("9 key max 5 R1 [7]", -1, params.getColumnPos(6));
+ assertEquals("9 key max 5 R1 [8]", -2, params.getColumnPos(7));
+ assertEquals("9 key max 5 R1 [9]", -3, params.getColumnPos(8));
+ assertEquals("9 key max 5 R1 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("9 key max 5 R1 default", WIDTH * 4, params.getDefaultKeyCoordX());
+ }
+
+ // [9] [8] [6] [7] ___|
+ // [5] [4] [3] <1> [2] ___|
+ public void testLayout9KeyMax5R2() {
+ MoreKeysKeyboardParams params = createParams(9, 5, XPOS_R2);
+ assertEquals("9 key max 5 R2 columns", 5, params.mNumColumns);
+ assertEquals("9 key max 5 R2 rows", 2, params.mNumRows);
+ assertEquals("9 key max 5 R2 left", 3, params.mLeftKeys);
+ assertEquals("9 key max 5 R2 right", 2, params.mRightKeys);
+ assertEquals("9 key max 5 R2 <1>", 0, params.getColumnPos(0));
+ assertEquals("9 key max 5 R2 [2]", 1, params.getColumnPos(1));
+ assertEquals("9 key max 5 R2 [3]", -1, params.getColumnPos(2));
+ assertEquals("9 key max 5 R2 [4]", -2, params.getColumnPos(3));
+ assertEquals("9 key max 5 R2 [5]", -3, params.getColumnPos(4));
+ assertEquals("9 key max 5 R2 [6]", 0, params.getColumnPos(5));
+ assertEquals("9 key max 5 R2 [7]", 1, params.getColumnPos(6));
+ assertEquals("9 key max 5 R2 [8]", -1, params.getColumnPos(7));
+ assertEquals("9 key max 5 R2 [9]", -2, params.getColumnPos(8));
+ assertEquals("9 key max 5 R2 adjust", -1, params.mTopRowAdjustment);
+ assertEquals("9 key max 5 R2 default", WIDTH * 3, params.getDefaultKeyCoordX());
+ }
+
+ // [A] [8] [6] [7] [9]
+ // [5] [3] <1> [2] [4]
+ public void testLayout10KeyMax5M0() {
+ MoreKeysKeyboardParams params = createParams(10, 5, XPOS_M0);
+ assertEquals("10 key max 5 M0 columns", 5, params.mNumColumns);
+ assertEquals("10 key max 5 M0 rows", 2, params.mNumRows);
+ assertEquals("10 key max 5 M0 left", 2, params.mLeftKeys);
+ assertEquals("10 key max 5 M0 right", 3, params.mRightKeys);
+ assertEquals("10 key max 5 M0 <1>", 0, params.getColumnPos(0));
+ assertEquals("10 key max 5 M0 [2]", 1, params.getColumnPos(1));
+ assertEquals("10 key max 5 M0 [3]", -1, params.getColumnPos(2));
+ assertEquals("10 key max 5 M0 [4]", 2, params.getColumnPos(3));
+ assertEquals("10 key max 5 M0 [5]", -2, params.getColumnPos(4));
+ assertEquals("10 key max 5 M0 [6]", 0, params.getColumnPos(5));
+ assertEquals("10 key max 5 M0 [7]", 1, params.getColumnPos(6));
+ assertEquals("10 key max 5 M0 [8]", -1, params.getColumnPos(7));
+ assertEquals("10 key max 5 M0 [9]", 2, params.getColumnPos(8));
+ assertEquals("10 key max 5 M0 [A]", -2, params.getColumnPos(9));
+ assertEquals("10 key max 5 M0 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("10 key max 5 M0 default", WIDTH * 2, params.getDefaultKeyCoordX());
+ }
+
+ // |[6] [7] [8] [9] [A]
+ // |<1> [2] [3] [4] [5]
+ public void testLayout10KeyMax5L0() {
+ MoreKeysKeyboardParams params = createParams(10, 5, XPOS_L0);
+ assertEquals("10 key max 5 L0 columns", 5, params.mNumColumns);
+ assertEquals("10 key max 5 L0 rows", 2, params.mNumRows);
+ assertEquals("10 key max 5 L0 left", 0, params.mLeftKeys);
+ assertEquals("10 key max 5 L0 right", 5, params.mRightKeys);
+ assertEquals("10 key max 5 L0 <1>", 0, params.getColumnPos(0));
+ assertEquals("10 key max 5 L0 [2]", 1, params.getColumnPos(1));
+ assertEquals("10 key max 5 L0 [3]", 2, params.getColumnPos(2));
+ assertEquals("10 key max 5 L0 [4]", 3, params.getColumnPos(3));
+ assertEquals("10 key max 5 L0 [5]", 4, params.getColumnPos(4));
+ assertEquals("10 key max 5 L0 [6]", 0, params.getColumnPos(5));
+ assertEquals("10 key max 5 L0 [7]", 1, params.getColumnPos(6));
+ assertEquals("10 key max 5 L0 [8]", 2, params.getColumnPos(7));
+ assertEquals("10 key max 5 L0 [9]", 3, params.getColumnPos(8));
+ assertEquals("10 key max 5 L0 [A]", 4, params.getColumnPos(9));
+ assertEquals("10 key max 5 L0 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("10 key max 5 L0 default", WIDTH * 0, params.getDefaultKeyCoordX());
+ }
+
+ // |___ [6] [7] [8] [9] [A]
+ // |___ <1> [2] [3] [4] [5]
+ public void testLayout10KeyMax5L1() {
+ MoreKeysKeyboardParams params = createParams(10, 5, XPOS_L1);
+ assertEquals("10 key max 5 L1 columns", 5, params.mNumColumns);
+ assertEquals("10 key max 5 L1 rows", 2, params.mNumRows);
+ assertEquals("10 key max 5 L1 left", 0, params.mLeftKeys);
+ assertEquals("10 key max 5 L1 right", 5, params.mRightKeys);
+ assertEquals("10 key max 5 L1 <1>", 0, params.getColumnPos(0));
+ assertEquals("10 key max 5 L1 [2]", 1, params.getColumnPos(1));
+ assertEquals("10 key max 5 L1 [3]", 2, params.getColumnPos(2));
+ assertEquals("10 key max 5 L1 [4]", 3, params.getColumnPos(3));
+ assertEquals("10 key max 5 L1 [5]", 4, params.getColumnPos(4));
+ assertEquals("10 key max 5 L1 [6]", 0, params.getColumnPos(5));
+ assertEquals("10 key max 5 L1 [7]", 1, params.getColumnPos(6));
+ assertEquals("10 key max 5 L1 [8]", 2, params.getColumnPos(7));
+ assertEquals("10 key max 5 L1 [9]", 3, params.getColumnPos(8));
+ assertEquals("10 key max 5 L1 [A]", 4, params.getColumnPos(9));
+ assertEquals("10 key max 5 L1 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("10 key max 5 L1 default", WIDTH * 0, params.getDefaultKeyCoordX());
+ }
+
+ // |___ [8] [6] [7] [9] [A]
+ // |___ [3] <1> [2] [4] [5]
+ public void testLayout10KeyMax5L2() {
+ MoreKeysKeyboardParams params = createParams(10, 5, XPOS_L2);
+ assertEquals("10 key max 5 L2 columns", 5, params.mNumColumns);
+ assertEquals("10 key max 5 L2 rows", 2, params.mNumRows);
+ assertEquals("10 key max 5 L2 left", 1, params.mLeftKeys);
+ assertEquals("10 key max 5 L2 right", 4, params.mRightKeys);
+ assertEquals("10 key max 5 L2 <1>", 0, params.getColumnPos(0));
+ assertEquals("10 key max 5 L2 [2]", 1, params.getColumnPos(1));
+ assertEquals("10 key max 5 L2 [3]", -1, params.getColumnPos(2));
+ assertEquals("10 key max 5 L2 [4]", 2, params.getColumnPos(3));
+ assertEquals("10 key max 5 L2 [5]", 3, params.getColumnPos(4));
+ assertEquals("10 key max 5 L2 [6]", 0, params.getColumnPos(5));
+ assertEquals("10 key max 5 L2 [7]", 1, params.getColumnPos(6));
+ assertEquals("10 key max 5 L2 [8]", -1, params.getColumnPos(7));
+ assertEquals("10 key max 5 L2 [9]", 2, params.getColumnPos(8));
+ assertEquals("10 key max 5 L2 [A]", 3, params.getColumnPos(9));
+ assertEquals("10 key max 5 L2 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("10 key max 5 L2 default", WIDTH * 1, params.getDefaultKeyCoordX());
+ }
+
+ // [A] [9] [8] [7] [6]|
+ // [5] [4] [3] [2] <1>|
+ public void testLayout10KeyMax5R0() {
+ MoreKeysKeyboardParams params = createParams(10, 5, XPOS_R0);
+ assertEquals("10 key max 5 R0 columns", 5, params.mNumColumns);
+ assertEquals("10 key max 5 R0 rows", 2, params.mNumRows);
+ assertEquals("10 key max 5 R0 left", 4, params.mLeftKeys);
+ assertEquals("10 key max 5 R0 right", 1, params.mRightKeys);
+ assertEquals("10 key max 5 R0 <1>", 0, params.getColumnPos(0));
+ assertEquals("10 key max 5 R0 [2]", -1, params.getColumnPos(1));
+ assertEquals("10 key max 5 R0 [3]", -2, params.getColumnPos(2));
+ assertEquals("10 key max 5 R0 [4]", -3, params.getColumnPos(3));
+ assertEquals("10 key max 5 R0 [5]", -4, params.getColumnPos(4));
+ assertEquals("10 key max 5 R0 [6]", 0, params.getColumnPos(5));
+ assertEquals("10 key max 5 R0 [7]", -1, params.getColumnPos(6));
+ assertEquals("10 key max 5 R0 [8]", -2, params.getColumnPos(7));
+ assertEquals("10 key max 5 R0 [9]", -3, params.getColumnPos(8));
+ assertEquals("10 key max 5 R0 [A]", -4, params.getColumnPos(9));
+ assertEquals("10 key max 5 R0 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("10 key max 5 R0 default", WIDTH * 4, params.getDefaultKeyCoordX());
+ }
+
+ // [A] [9] [8] [7] [6] ___|
+ // [5] [4] [3] [2] <1> ___|
+ public void testLayout10KeyMax5R1() {
+ MoreKeysKeyboardParams params = createParams(10, 5, XPOS_R1);
+ assertEquals("10 key max 5 R1 columns", 5, params.mNumColumns);
+ assertEquals("10 key max 5 R1 rows", 2, params.mNumRows);
+ assertEquals("10 key max 5 R1 left", 4, params.mLeftKeys);
+ assertEquals("10 key max 5 R1 right", 1, params.mRightKeys);
+ assertEquals("10 key max 5 R1 <1>", 0, params.getColumnPos(0));
+ assertEquals("10 key max 5 R1 [2]", -1, params.getColumnPos(1));
+ assertEquals("10 key max 5 R1 [3]", -2, params.getColumnPos(2));
+ assertEquals("10 key max 5 R1 [4]", -3, params.getColumnPos(3));
+ assertEquals("10 key max 5 R1 [5]", -4, params.getColumnPos(4));
+ assertEquals("10 key max 5 R1 [6]", 0, params.getColumnPos(5));
+ assertEquals("10 key max 5 R1 [7]", -1, params.getColumnPos(6));
+ assertEquals("10 key max 5 R1 [8]", -2, params.getColumnPos(7));
+ assertEquals("10 key max 5 R1 [9]", -3, params.getColumnPos(8));
+ assertEquals("10 key max 5 R1 [A]", -4, params.getColumnPos(9));
+ assertEquals("10 key max 5 R1 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("10 key max 5 R1 default", WIDTH * 4, params.getDefaultKeyCoordX());
+ }
+
+ // [A] [9] [8] [6] [7] ___|
+ // [5] [4] [3] <1> [2] ___|
+ public void testLayout10KeyMax5R2() {
+ MoreKeysKeyboardParams params = createParams(10, 5, XPOS_R2);
+ assertEquals("10 key max 5 R2 columns", 5, params.mNumColumns);
+ assertEquals("10 key max 5 R2 rows", 2, params.mNumRows);
+ assertEquals("10 key max 5 R2 left", 3, params.mLeftKeys);
+ assertEquals("10 key max 5 R2 right", 2, params.mRightKeys);
+ assertEquals("10 key max 5 R2 <1>", 0, params.getColumnPos(0));
+ assertEquals("10 key max 5 R2 [2]", 1, params.getColumnPos(1));
+ assertEquals("10 key max 5 R2 [3]", -1, params.getColumnPos(2));
+ assertEquals("10 key max 5 R2 [4]", -2, params.getColumnPos(3));
+ assertEquals("10 key max 5 R2 [5]", -3, params.getColumnPos(4));
+ assertEquals("10 key max 5 R2 [6]", 0, params.getColumnPos(5));
+ assertEquals("10 key max 5 R2 [7]", 1, params.getColumnPos(6));
+ assertEquals("10 key max 5 R2 [8]", -1, params.getColumnPos(7));
+ assertEquals("10 key max 5 R2 [9]", -2, params.getColumnPos(8));
+ assertEquals("10 key max 5 R2 [A]", -3, params.getColumnPos(9));
+ assertEquals("10 key max 5 R2 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("10 key max 5 R2 default", WIDTH * 3, params.getDefaultKeyCoordX());
+ }
+
+ // [9] [A] [B]
+ // [7] [5] [6] [8]
+ // [3] <1> [2] [4]
+ public void testLayout11KeyMax5M0() {
+ MoreKeysKeyboardParams params = createParams(11, 5, XPOS_M0);
+ assertEquals("11 key max 5 M0 columns", 4, params.mNumColumns);
+ assertEquals("11 key max 5 M0 rows", 3, params.mNumRows);
+ assertEquals("11 key max 5 M0 left", 1, params.mLeftKeys);
+ assertEquals("11 key max 5 M0 right", 3, params.mRightKeys);
+ assertEquals("11 key max 5 M0 <1>", 0, params.getColumnPos(0));
+ assertEquals("11 key max 5 M0 [2]", 1, params.getColumnPos(1));
+ assertEquals("11 key max 5 M0 [3]", -1, params.getColumnPos(2));
+ assertEquals("11 key max 5 M0 [4]", 2, params.getColumnPos(3));
+ assertEquals("11 key max 5 M0 [5]", 0, params.getColumnPos(4));
+ assertEquals("11 key max 5 M0 [6]", 1, params.getColumnPos(5));
+ assertEquals("11 key max 5 M0 [7]", -1, params.getColumnPos(6));
+ assertEquals("11 key max 5 M0 [8]", 2, params.getColumnPos(7));
+ assertEquals("11 key max 5 M0 [9]", 0, params.getColumnPos(8));
+ assertEquals("11 key max 5 M0 [A]", 1, params.getColumnPos(9));
+ assertEquals("11 key max 5 M0 [B]", 2, params.getColumnPos(10));
+ assertEquals("11 key max 5 M0 adjust", -1, params.mTopRowAdjustment);
+ assertEquals("11 key max 5 M0 default", WIDTH * 1, params.getDefaultKeyCoordX());
+ }
+
+ // [B] [9] [A] [C]
+ // [7] [5] [6] [8]
+ // [3] <1> [2] [4]
+ public void testLayout12KeyMax5M0() {
+ MoreKeysKeyboardParams params = createParams(12, 5, XPOS_M0);
+ assertEquals("12 key max 5 M0 columns", 4, params.mNumColumns);
+ assertEquals("12 key max 5 M0 rows", 3, params.mNumRows);
+ assertEquals("12 key max 5 M0 left", 1, params.mLeftKeys);
+ assertEquals("12 key max 5 M0 right", 3, params.mRightKeys);
+ assertEquals("12 key max 5 M0 <1>", 0, params.getColumnPos(0));
+ assertEquals("12 key max 5 M0 [2]", 1, params.getColumnPos(1));
+ assertEquals("12 key max 5 M0 [3]", -1, params.getColumnPos(2));
+ assertEquals("12 key max 5 M0 [4]", 2, params.getColumnPos(3));
+ assertEquals("12 key max 5 M0 [5]", 0, params.getColumnPos(4));
+ assertEquals("12 key max 5 M0 [6]", 1, params.getColumnPos(5));
+ assertEquals("12 key max 5 M0 [7]", -1, params.getColumnPos(6));
+ assertEquals("12 key max 5 M0 [8]", 2, params.getColumnPos(7));
+ assertEquals("12 key max 5 M0 [9]", 0, params.getColumnPos(8));
+ assertEquals("12 key max 5 M0 [A]", 1, params.getColumnPos(9));
+ assertEquals("12 key max 5 M0 [B]", -1, params.getColumnPos(10));
+ assertEquals("12 key max 5 M0 [C]", 2, params.getColumnPos(11));
+ assertEquals("12 key max 5 M0 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("12 key max 5 M0 default", WIDTH * 1, params.getDefaultKeyCoordX());
+ }
+
+ // [D] [B] [C]
+ // [A] [8] [6] [7] [9]
+ // [5] [3] <1> [2] [4]
+ public void testLayout13KeyMax5M0() {
+ MoreKeysKeyboardParams params = createParams(13, 5, XPOS_M0);
+ assertEquals("13 key max 5 M0 columns", 5, params.mNumColumns);
+ assertEquals("13 key max 5 M0 rows", 3, params.mNumRows);
+ assertEquals("13 key max 5 M0 left", 2, params.mLeftKeys);
+ assertEquals("13 key max 5 M0 right", 3, params.mRightKeys);
+ assertEquals("13 key max 5 M0 <1>", 0, params.getColumnPos(0));
+ assertEquals("13 key max 5 M0 [2]", 1, params.getColumnPos(1));
+ assertEquals("13 key max 5 M0 [3]", -1, params.getColumnPos(2));
+ assertEquals("13 key max 5 M0 [4]", 2, params.getColumnPos(3));
+ assertEquals("13 key max 5 M0 [5]", -2, params.getColumnPos(4));
+ assertEquals("13 key max 5 M0 [6]", 0, params.getColumnPos(5));
+ assertEquals("13 key max 5 M0 [7]", 1, params.getColumnPos(6));
+ assertEquals("13 key max 5 M0 [8]", -1, params.getColumnPos(7));
+ assertEquals("13 key max 5 M0 [9]", 2, params.getColumnPos(8));
+ assertEquals("13 key max 5 M0 [A]", -2, params.getColumnPos(9));
+ assertEquals("13 key max 5 M0 [B]", 0, params.getColumnPos(10));
+ assertEquals("13 key max 5 M0 [C]", 1, params.getColumnPos(11));
+ assertEquals("13 key max 5 M0 [D]", -1, params.getColumnPos(12));
+ assertEquals("13 key max 5 M0 adjust", 0, params.mTopRowAdjustment);
+ assertEquals("13 key max 5 M0 default", WIDTH * 2, params.getDefaultKeyCoordX());
+ }
+
+ // [D] [B] [C] [E]
+ // [A] [8] [6] [7] [9]
+ // [5] [3] <1> [2] [4]
+ public void testLayout14KeyMax5M0() {
+ MoreKeysKeyboardParams params = createParams(14, 5, XPOS_M0);
+ assertEquals("13 key max 5 M0 columns", 5, params.mNumColumns);
+ assertEquals("13 key max 5 M0 rows", 3, params.mNumRows);
+ assertEquals("13 key max 5 M0 left", 2, params.mLeftKeys);
+ assertEquals("13 key max 5 M0 right", 3, params.mRightKeys);
+ assertEquals("13 key max 5 M0 <1>", 0, params.getColumnPos(0));
+ assertEquals("13 key max 5 M0 [2]", 1, params.getColumnPos(1));
+ assertEquals("13 key max 5 M0 [3]", -1, params.getColumnPos(2));
+ assertEquals("13 key max 5 M0 [4]", 2, params.getColumnPos(3));
+ assertEquals("13 key max 5 M0 [5]", -2, params.getColumnPos(4));
+ assertEquals("13 key max 5 M0 [6]", 0, params.getColumnPos(5));
+ assertEquals("13 key max 5 M0 [7]", 1, params.getColumnPos(6));
+ assertEquals("13 key max 5 M0 [8]", -1, params.getColumnPos(7));
+ assertEquals("13 key max 5 M0 [9]", 2, params.getColumnPos(8));
+ assertEquals("13 key max 5 M0 [A]", -2, params.getColumnPos(9));
+ assertEquals("13 key max 5 M0 [B]", 0, params.getColumnPos(10));
+ assertEquals("13 key max 5 M0 [C]", 1, params.getColumnPos(11));
+ assertEquals("13 key max 5 M0 [D]", -1, params.getColumnPos(12));
+ assertEquals("13 key max 5 M0 [E]", 2, params.getColumnPos(13));
+ assertEquals("13 key max 5 M0 adjust", -1, params.mTopRowAdjustment);
+ assertEquals("13 key max 5 M0 default", WIDTH * 2, params.getDefaultKeyCoordX());
+ }
+}
diff --git a/tests/src/com/android/inputmethod/keyboard/internal/KeySpecParserCsvTests.java b/tests/src/com/android/inputmethod/keyboard/internal/KeySpecParserCsvTests.java
new file mode 100644
index 000000000..e090031e4
--- /dev/null
+++ b/tests/src/com/android/inputmethod/keyboard/internal/KeySpecParserCsvTests.java
@@ -0,0 +1,303 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
+package com.android.inputmethod.keyboard.internal;
+
+import android.content.res.Resources;
+import android.test.AndroidTestCase;
+import android.text.TextUtils;
+
+import com.android.inputmethod.latin.tests.R;
+
+import java.util.Arrays;
+
+public class KeySpecParserCsvTests extends AndroidTestCase {
+ private Resources mTestResources;
+
+ @Override
+ protected void setUp() throws Exception {
+ super.setUp();
+
+ mTestResources = getTestContext().getResources();
+ }
+
+ private static String format(String message, Object expected, Object actual) {
+ return message + " expected:<" + expected + "> but was:<" + actual + ">";
+ }
+
+ private void assertTextArray(String message, String value, String ... expected) {
+ final String actual[] = KeySpecParser.parseCsvString(value, mTestResources,
+ R.string.empty_string);
+ if (expected.length == 0) {
+ assertNull(message + ": expected=null actual=" + Arrays.toString(actual),
+ actual);
+ return;
+ }
+ assertEquals(message + ": expected=" + Arrays.toString(expected)
+ + " actual=" + Arrays.toString(actual)
+ + ": result length", expected.length, actual.length);
+ for (int i = 0; i < actual.length; i++) {
+ final boolean equals = TextUtils.equals(expected[i], actual[i]);
+ assertTrue(format(message + ": result at " + i + ":", expected[i], actual[i]), equals);
+ }
+ }
+
+ private void assertError(String message, String value, String ... expected) {
+ try {
+ assertTextArray(message, value, expected);
+ fail(message);
+ } catch (Exception pcpe) {
+ // success.
+ }
+ }
+
+ // \U001d11e: MUSICAL SYMBOL G CLEF
+ private static final String PAIR1 = "\ud834\udd1e";
+ // \U001d122: MUSICAL SYMBOL F CLEF
+ private static final String PAIR2 = "\ud834\udd22";
+ // \U002f8a6: CJK COMPATIBILITY IDEOGRAPH-2F8A6; variant character of \u6148.
+ private static final String PAIR3 = "\ud87e\udca6";
+ private static final String SURROGATE1 = PAIR1 + PAIR2;
+ private static final String SURROGATE2 = PAIR1 + PAIR2 + PAIR3;
+
+ public void testParseCsvTextZero() {
+ assertTextArray("Empty string", "");
+ assertTextArray("Empty entry", ",");
+ assertTextArray("Empty entry at beginning", ",a", "a");
+ assertTextArray("Empty entry at end", "a,", "a");
+ assertTextArray("Empty entry at middle", "a,,b", "a", "b");
+ assertTextArray("Empty entries with escape", ",a,b\\,c,,d,", "a", "b\\,c", "d");
+ }
+
+ public void testParseCsvTextSingle() {
+ assertTextArray("Single char", "a", "a");
+ assertTextArray("Surrogate pair", PAIR1, PAIR1);
+ assertTextArray("Single escape", "\\", "\\");
+ assertTextArray("Space", " ", " ");
+ assertTextArray("Single label", "abc", "abc");
+ assertTextArray("Single surrogate pairs label", SURROGATE2, SURROGATE2);
+ assertTextArray("Spaces", " ", " ");
+ assertTextArray("Spaces in label", "a b c", "a b c");
+ assertTextArray("Spaces at beginning of label", " abc", " abc");
+ assertTextArray("Spaces at end of label", "abc ", "abc ");
+ assertTextArray("Label surrounded by spaces", " abc ", " abc ");
+ assertTextArray("Surrogate pair surrounded by space",
+ " " + PAIR1 + " ",
+ " " + PAIR1 + " ");
+ assertTextArray("Surrogate pair within characters",
+ "ab" + PAIR2 + "cd",
+ "ab" + PAIR2 + "cd");
+ assertTextArray("Surrogate pairs within characters",
+ "ab" + SURROGATE1 + "cd",
+ "ab" + SURROGATE1 + "cd");
+
+ assertTextArray("Incomplete resource reference 1", "string", "string");
+ assertTextArray("Incomplete resource reference 2", "@string", "@string");
+ assertTextArray("Incomplete resource reference 3", "string/", "string/");
+ assertTextArray("Incomplete resource reference 4", "@" + SURROGATE2, "@" + SURROGATE2);
+ }
+
+ public void testParseCsvTextSingleEscaped() {
+ assertTextArray("Escaped char", "\\a", "\\a");
+ assertTextArray("Escaped surrogate pair", "\\" + PAIR1, "\\" + PAIR1);
+ assertTextArray("Escaped comma", "\\,", "\\,");
+ assertTextArray("Escaped comma escape", "a\\,\\", "a\\,\\");
+ assertTextArray("Escaped escape", "\\\\", "\\\\");
+ assertTextArray("Escaped label", "a\\bc", "a\\bc");
+ assertTextArray("Escaped surrogate", "a\\" + PAIR1 + "c", "a\\" + PAIR1 + "c");
+ assertTextArray("Escaped label at beginning", "\\abc", "\\abc");
+ assertTextArray("Escaped surrogate at beginning", "\\" + SURROGATE2, "\\" + SURROGATE2);
+ assertTextArray("Escaped label at end", "abc\\", "abc\\");
+ assertTextArray("Escaped surrogate at end", SURROGATE2 + "\\", SURROGATE2 + "\\");
+ assertTextArray("Escaped label with comma", "a\\,c", "a\\,c");
+ assertTextArray("Escaped surrogate with comma",
+ PAIR1 + "\\," + PAIR2, PAIR1 + "\\," + PAIR2);
+ assertTextArray("Escaped label with comma at beginning", "\\,bc", "\\,bc");
+ assertTextArray("Escaped surrogate with comma at beginning",
+ "\\," + SURROGATE1, "\\," + SURROGATE1);
+ assertTextArray("Escaped label with comma at end", "ab\\,", "ab\\,");
+ assertTextArray("Escaped surrogate with comma at end",
+ SURROGATE2 + "\\,", SURROGATE2 + "\\,");
+ assertTextArray("Escaped label with successive", "\\,\\\\bc", "\\,\\\\bc");
+ assertTextArray("Escaped surrogate with successive",
+ "\\,\\\\" + SURROGATE1, "\\,\\\\" + SURROGATE1);
+ assertTextArray("Escaped label with escape", "a\\\\c", "a\\\\c");
+ assertTextArray("Escaped surrogate with escape",
+ PAIR1 + "\\\\" + PAIR2, PAIR1 + "\\\\" + PAIR2);
+
+ assertTextArray("Escaped @string", "\\@string", "\\@string");
+ assertTextArray("Escaped @string/", "\\@string/", "\\@string/");
+ assertTextArray("Escaped @string/", "\\@string/empty_string", "\\@string/empty_string");
+ }
+
+ public void testParseCsvTextMulti() {
+ assertTextArray("Multiple chars", "a,b,c", "a", "b", "c");
+ assertTextArray("Multiple chars", "a,b,\\c", "a", "b", "\\c");
+ assertTextArray("Multiple chars and escape at beginning and end",
+ "\\a,b,\\c\\", "\\a", "b", "\\c\\");
+ assertTextArray("Multiple surrogates", PAIR1 + "," + PAIR2 + "," + PAIR3,
+ PAIR1, PAIR2, PAIR3);
+ assertTextArray("Multiple chars surrounded by spaces", " a , b , c ", " a ", " b ", " c ");
+ assertTextArray("Multiple labels", "abc,def,ghi", "abc", "def", "ghi");
+ assertTextArray("Multiple surrogated", SURROGATE1 + "," + SURROGATE2,
+ SURROGATE1, SURROGATE2);
+ assertTextArray("Multiple labels surrounded by spaces", " abc , def , ghi ",
+ " abc ", " def ", " ghi ");
+ }
+
+ public void testParseCsvTextMultiEscaped() {
+ assertTextArray("Multiple chars with comma", "a,\\,,c", "a", "\\,", "c");
+ assertTextArray("Multiple chars with comma surrounded by spaces", " a , \\, , c ",
+ " a ", " \\, ", " c ");
+ assertTextArray("Multiple labels with escape",
+ "\\abc,d\\ef,gh\\i", "\\abc", "d\\ef", "gh\\i");
+ assertTextArray("Multiple labels with escape surrounded by spaces",
+ " \\abc , d\\ef , gh\\i ", " \\abc ", " d\\ef ", " gh\\i ");
+ assertTextArray("Multiple labels with comma and escape",
+ "ab\\\\,d\\\\\\,,g\\,i", "ab\\\\", "d\\\\\\,", "g\\,i");
+ assertTextArray("Multiple labels with comma and escape surrounded by spaces",
+ " ab\\\\ , d\\\\\\, , g\\,i ", " ab\\\\ ", " d\\\\\\, ", " g\\,i ");
+
+ assertTextArray("Multiple escaped @string", "\\@,\\@string/empty_string",
+ "\\@", "\\@string/empty_string");
+ }
+
+ public void testParseCsvResourceError() {
+ assertError("Incomplete resource name", "@string/", "@string/");
+ assertError("Non existing resource", "@string/non_existing");
+ }
+
+ public void testParseCsvResourceZero() {
+ assertTextArray("Empty string",
+ "@string/empty_string");
+ }
+
+ public void testParseCsvResourceSingle() {
+ assertTextArray("Single char",
+ "@string/single_char", "a");
+ assertTextArray("Space",
+ "@string/space", " ");
+ assertTextArray("Single label",
+ "@string/single_label", "abc");
+ assertTextArray("Spaces",
+ "@string/spaces", " ");
+ assertTextArray("Spaces in label",
+ "@string/spaces_in_label", "a b c");
+ assertTextArray("Spaces at beginning of label",
+ "@string/spaces_at_beginning_of_label", " abc");
+ assertTextArray("Spaces at end of label",
+ "@string/spaces_at_end_of_label", "abc ");
+ assertTextArray("label surrounded by spaces",
+ "@string/label_surrounded_by_spaces", " abc ");
+
+ assertTextArray("Escape and single char",
+ "\\\\@string/single_char", "\\\\a");
+ }
+
+ public void testParseCsvResourceSingleEscaped() {
+ assertTextArray("Escaped char",
+ "@string/escaped_char", "\\a");
+ assertTextArray("Escaped comma",
+ "@string/escaped_comma", "\\,");
+ assertTextArray("Escaped comma escape",
+ "@string/escaped_comma_escape", "a\\,\\");
+ assertTextArray("Escaped escape",
+ "@string/escaped_escape", "\\\\");
+ assertTextArray("Escaped label",
+ "@string/escaped_label", "a\\bc");
+ assertTextArray("Escaped label at beginning",
+ "@string/escaped_label_at_beginning", "\\abc");
+ assertTextArray("Escaped label at end",
+ "@string/escaped_label_at_end", "abc\\");
+ assertTextArray("Escaped label with comma",
+ "@string/escaped_label_with_comma", "a\\,c");
+ assertTextArray("Escaped label with comma at beginning",
+ "@string/escaped_label_with_comma_at_beginning", "\\,bc");
+ assertTextArray("Escaped label with comma at end",
+ "@string/escaped_label_with_comma_at_end", "ab\\,");
+ assertTextArray("Escaped label with successive",
+ "@string/escaped_label_with_successive", "\\,\\\\bc");
+ assertTextArray("Escaped label with escape",
+ "@string/escaped_label_with_escape", "a\\\\c");
+ }
+
+ public void testParseCsvResourceMulti() {
+ assertTextArray("Multiple chars",
+ "@string/multiple_chars", "a", "b", "c");
+ assertTextArray("Multiple chars surrounded by spaces",
+ "@string/multiple_chars_surrounded_by_spaces",
+ " a ", " b ", " c ");
+ assertTextArray("Multiple labels",
+ "@string/multiple_labels", "abc", "def", "ghi");
+ assertTextArray("Multiple labels surrounded by spaces",
+ "@string/multiple_labels_surrounded_by_spaces", " abc ", " def ", " ghi ");
+ }
+
+ public void testParseCsvResourcetMultiEscaped() {
+ assertTextArray("Multiple chars with comma",
+ "@string/multiple_chars_with_comma",
+ "a", "\\,", "c");
+ assertTextArray("Multiple chars with comma surrounded by spaces",
+ "@string/multiple_chars_with_comma_surrounded_by_spaces",
+ " a ", " \\, ", " c ");
+ assertTextArray("Multiple labels with escape",
+ "@string/multiple_labels_with_escape",
+ "\\abc", "d\\ef", "gh\\i");
+ assertTextArray("Multiple labels with escape surrounded by spaces",
+ "@string/multiple_labels_with_escape_surrounded_by_spaces",
+ " \\abc ", " d\\ef ", " gh\\i ");
+ assertTextArray("Multiple labels with comma and escape",
+ "@string/multiple_labels_with_comma_and_escape",
+ "ab\\\\", "d\\\\\\,", "g\\,i");
+ assertTextArray("Multiple labels with comma and escape surrounded by spaces",
+ "@string/multiple_labels_with_comma_and_escape_surrounded_by_spaces",
+ " ab\\\\ ", " d\\\\\\, ", " g\\,i ");
+ }
+
+ public void testParseMultipleResources() {
+ assertTextArray("Literals and resources",
+ "1,@string/multiple_chars,z", "1", "a", "b", "c", "z");
+ assertTextArray("Literals and resources and escape at end",
+ "\\1,@string/multiple_chars,z\\", "\\1", "a", "b", "c", "z\\");
+ assertTextArray("Multiple single resource chars and labels",
+ "@string/single_char,@string/single_label,@string/escaped_comma",
+ "a", "abc", "\\,");
+ assertTextArray("Multiple single resource chars and labels 2",
+ "@string/single_char,@string/single_label,@string/escaped_comma_escape",
+ "a", "abc", "a\\,\\");
+ assertTextArray("Multiple multiple resource chars and labels",
+ "@string/multiple_chars,@string/multiple_labels,@string/multiple_chars_with_comma",
+ "a", "b", "c", "abc", "def", "ghi", "a", "\\,", "c");
+ assertTextArray("Concatenated resources",
+ "@string/multiple_chars@string/multiple_labels@string/multiple_chars_with_comma",
+ "a", "b", "cabc", "def", "ghia", "\\,", "c");
+ assertTextArray("Concatenated resource and literal",
+ "abc@string/multiple_labels",
+ "abcabc", "def", "ghi");
+ }
+
+ public void testParseIndirectReference() {
+ assertTextArray("Indirect",
+ "@string/indirect_string", "a", "b", "c");
+ assertTextArray("Indirect with literal",
+ "1,@string/indirect_string_with_literal,2", "1", "x", "a", "b", "c", "y", "2");
+ }
+
+ public void testParseInfiniteIndirectReference() {
+ assertError("Infinite indirection",
+ "1,@string/infinite_indirection,2", "1", "infinite", "<infinite>", "loop", "2");
+ }
+}
diff --git a/tests/src/com/android/inputmethod/keyboard/internal/KeySpecParserTests.java b/tests/src/com/android/inputmethod/keyboard/internal/KeySpecParserTests.java
new file mode 100644
index 000000000..3fc2b021a
--- /dev/null
+++ b/tests/src/com/android/inputmethod/keyboard/internal/KeySpecParserTests.java
@@ -0,0 +1,497 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
+package com.android.inputmethod.keyboard.internal;
+
+import android.content.res.Resources;
+import android.test.AndroidTestCase;
+
+import com.android.inputmethod.keyboard.Keyboard;
+import com.android.inputmethod.latin.R;
+
+import java.util.Arrays;
+
+public class KeySpecParserTests extends AndroidTestCase {
+ private Resources mRes;
+
+ private static final int ICON_UNDEFINED = KeyboardIconsSet.ICON_UNDEFINED;
+
+ private static final String CODE_SETTINGS_RES = "integer/key_settings";
+ private static final String ICON_SETTINGS_NAME = "settingsKey";
+
+ private static final String CODE_SETTINGS = "@" + CODE_SETTINGS_RES;
+ private static final String ICON_SETTINGS = "@icon/" + ICON_SETTINGS_NAME;
+ private static final String CODE_NON_EXISTING = "@integer/non_existing";
+ private static final String ICON_NON_EXISTING = "@icon/non_existing";
+
+ private int mCodeSettings;
+ private int mSettingsIconId;
+
+ @Override
+ protected void setUp() {
+ Resources res = getContext().getResources();
+ mRes = res;
+
+ final String packageName = res.getResourcePackageName(R.string.english_ime_name);
+ final int codeId = res.getIdentifier(CODE_SETTINGS_RES, null, packageName);
+ mCodeSettings = res.getInteger(codeId);
+ mSettingsIconId = KeyboardIconsSet.getIconId(ICON_SETTINGS_NAME);
+ }
+
+ private void assertParser(String message, String moreKeySpec, String expectedLabel,
+ String expectedOutputText, int expectedIcon, int expectedCode) {
+ String actualLabel = KeySpecParser.getLabel(moreKeySpec);
+ assertEquals(message + ": label:", expectedLabel, actualLabel);
+
+ String actualOutputText = KeySpecParser.getOutputText(moreKeySpec);
+ assertEquals(message + ": ouptputText:", expectedOutputText, actualOutputText);
+
+ int actualIcon = KeySpecParser.getIconId(moreKeySpec);
+ assertEquals(message + ": icon:", expectedIcon, actualIcon);
+
+ int actualCode = KeySpecParser.getCode(mRes, moreKeySpec);
+ assertEquals(message + ": codes value:", expectedCode, actualCode);
+ }
+
+ private void assertParserError(String message, String moreKeySpec, String expectedLabel,
+ String expectedOutputText, int expectedIcon, int expectedCode) {
+ try {
+ assertParser(message, moreKeySpec, expectedLabel, expectedOutputText, expectedIcon,
+ expectedCode);
+ fail(message);
+ } catch (Exception pcpe) {
+ // success.
+ }
+ }
+
+ // \U001d11e: MUSICAL SYMBOL G CLEF
+ private static final String PAIR1 = "\ud834\udd1e";
+ private static final int CODE1 = PAIR1.codePointAt(0);
+ // \U001d122: MUSICAL SYMBOL F CLEF
+ private static final String PAIR2 = "\ud834\udd22";
+ private static final int CODE2 = PAIR2.codePointAt(0);
+ // \U002f8a6: CJK COMPATIBILITY IDEOGRAPH-2F8A6; variant character of \u6148.
+ private static final String PAIR3 = "\ud87e\udca6";
+ private static final String SURROGATE1 = PAIR1 + PAIR2;
+ private static final String SURROGATE2 = PAIR1 + PAIR2 + PAIR3;
+
+ public void testSingleLetter() {
+ assertParser("Single letter", "a",
+ "a", null, ICON_UNDEFINED, 'a');
+ assertParser("Single surrogate", PAIR1,
+ PAIR1, null, ICON_UNDEFINED, CODE1);
+ assertParser("Single escaped bar", "\\|",
+ "|", null, ICON_UNDEFINED, '|');
+ assertParser("Single escaped escape", "\\\\",
+ "\\", null, ICON_UNDEFINED, '\\');
+ assertParser("Single comma", ",",
+ ",", null, ICON_UNDEFINED, ',');
+ assertParser("Single escaped comma", "\\,",
+ ",", null, ICON_UNDEFINED, ',');
+ assertParser("Single escaped letter", "\\a",
+ "a", null, ICON_UNDEFINED, 'a');
+ assertParser("Single escaped surrogate", "\\" + PAIR2,
+ PAIR2, null, ICON_UNDEFINED, CODE2);
+ assertParser("Single at", "@",
+ "@", null, ICON_UNDEFINED, '@');
+ assertParser("Single escaped at", "\\@",
+ "@", null, ICON_UNDEFINED, '@');
+ assertParser("Single output text letter", "a|a",
+ "a", null, ICON_UNDEFINED, 'a');
+ assertParser("Single surrogate pair outputText", "G Clef|" + PAIR1,
+ "G Clef", null, ICON_UNDEFINED, CODE1);
+ assertParser("Single letter with outputText", "a|abc",
+ "a", "abc", ICON_UNDEFINED, Keyboard.CODE_OUTPUT_TEXT);
+ assertParser("Single letter with surrogate outputText", "a|" + SURROGATE1,
+ "a", SURROGATE1, ICON_UNDEFINED, Keyboard.CODE_OUTPUT_TEXT);
+ assertParser("Single surrogate with outputText", PAIR3 + "|abc",
+ PAIR3, "abc", ICON_UNDEFINED, Keyboard.CODE_OUTPUT_TEXT);
+ assertParser("Single letter with escaped outputText", "a|a\\|c",
+ "a", "a|c", ICON_UNDEFINED, Keyboard.CODE_OUTPUT_TEXT);
+ assertParser("Single letter with escaped surrogate outputText",
+ "a|" + PAIR1 + "\\|" + PAIR2,
+ "a", PAIR1 + "|" + PAIR2, ICON_UNDEFINED, Keyboard.CODE_OUTPUT_TEXT);
+ assertParser("Single letter with comma outputText", "a|a,b",
+ "a", "a,b", ICON_UNDEFINED, Keyboard.CODE_OUTPUT_TEXT);
+ assertParser("Single letter with escaped comma outputText", "a|a\\,b",
+ "a", "a,b", ICON_UNDEFINED, Keyboard.CODE_OUTPUT_TEXT);
+ assertParser("Single letter with outputText starts with at", "a|@bc",
+ "a", "@bc", ICON_UNDEFINED, Keyboard.CODE_OUTPUT_TEXT);
+ assertParser("Single letter with surrogate outputText starts with at", "a|@" + SURROGATE2,
+ "a", "@" + SURROGATE2, ICON_UNDEFINED, Keyboard.CODE_OUTPUT_TEXT);
+ assertParser("Single letter with outputText contains at", "a|a@c",
+ "a", "a@c", ICON_UNDEFINED, Keyboard.CODE_OUTPUT_TEXT);
+ assertParser("Single letter with escaped at outputText", "a|\\@bc",
+ "a", "@bc", ICON_UNDEFINED, Keyboard.CODE_OUTPUT_TEXT);
+ assertParser("Single escaped escape with single outputText", "\\\\|\\\\",
+ "\\", null, ICON_UNDEFINED, '\\');
+ assertParser("Single escaped bar with single outputText", "\\||\\|",
+ "|", null, ICON_UNDEFINED, '|');
+ assertParser("Single letter with code", "a|" + CODE_SETTINGS,
+ "a", null, ICON_UNDEFINED, mCodeSettings);
+ }
+
+ public void testLabel() {
+ assertParser("Simple label", "abc",
+ "abc", "abc", ICON_UNDEFINED, Keyboard.CODE_OUTPUT_TEXT);
+ assertParser("Simple surrogate label", SURROGATE1,
+ SURROGATE1, SURROGATE1, ICON_UNDEFINED, Keyboard.CODE_OUTPUT_TEXT);
+ assertParser("Label with escaped bar", "a\\|c",
+ "a|c", "a|c", ICON_UNDEFINED, Keyboard.CODE_OUTPUT_TEXT);
+ assertParser("Surrogate label with escaped bar", PAIR1 + "\\|" + PAIR2,
+ PAIR1 + "|" + PAIR2, PAIR1 + "|" + PAIR2,
+ ICON_UNDEFINED, Keyboard.CODE_OUTPUT_TEXT);
+ assertParser("Label with escaped escape", "a\\\\c",
+ "a\\c", "a\\c", ICON_UNDEFINED, Keyboard.CODE_OUTPUT_TEXT);
+ assertParser("Label with comma", "a,c",
+ "a,c", "a,c", ICON_UNDEFINED, Keyboard.CODE_OUTPUT_TEXT);
+ assertParser("Label with escaped comma", "a\\,c",
+ "a,c", "a,c", ICON_UNDEFINED, Keyboard.CODE_OUTPUT_TEXT);
+ assertParser("Label starts with at", "@bc",
+ "@bc", "@bc", ICON_UNDEFINED, Keyboard.CODE_OUTPUT_TEXT);
+ assertParser("Surrogate label starts with at", "@" + SURROGATE1,
+ "@" + SURROGATE1, "@" + SURROGATE1, ICON_UNDEFINED, Keyboard.CODE_OUTPUT_TEXT);
+ assertParser("Label contains at", "a@c",
+ "a@c", "a@c", ICON_UNDEFINED, Keyboard.CODE_OUTPUT_TEXT);
+ assertParser("Label with escaped at", "\\@bc",
+ "@bc", "@bc", ICON_UNDEFINED, Keyboard.CODE_OUTPUT_TEXT);
+ assertParser("Label with escaped letter", "\\abc",
+ "abc", "abc", ICON_UNDEFINED, Keyboard.CODE_OUTPUT_TEXT);
+ assertParser("Label with outputText", "abc|def",
+ "abc", "def", ICON_UNDEFINED, Keyboard.CODE_OUTPUT_TEXT);
+ assertParser("Label with comma and outputText", "a,c|def",
+ "a,c", "def", ICON_UNDEFINED, Keyboard.CODE_OUTPUT_TEXT);
+ assertParser("Escaped comma label with outputText", "a\\,c|def",
+ "a,c", "def", ICON_UNDEFINED, Keyboard.CODE_OUTPUT_TEXT);
+ assertParser("Escaped label with outputText", "a\\|c|def",
+ "a|c", "def", ICON_UNDEFINED, Keyboard.CODE_OUTPUT_TEXT);
+ assertParser("Label with escaped bar outputText", "abc|d\\|f",
+ "abc", "d|f", ICON_UNDEFINED, Keyboard.CODE_OUTPUT_TEXT);
+ assertParser("Escaped escape label with outputText", "a\\\\|def",
+ "a\\", "def", ICON_UNDEFINED, Keyboard.CODE_OUTPUT_TEXT);
+ assertParser("Label starts with at and outputText", "@bc|def",
+ "@bc", "def", ICON_UNDEFINED, Keyboard.CODE_OUTPUT_TEXT);
+ assertParser("Label contains at label and outputText", "a@c|def",
+ "a@c", "def", ICON_UNDEFINED, Keyboard.CODE_OUTPUT_TEXT);
+ assertParser("Escaped at label with outputText", "\\@bc|def",
+ "@bc", "def", ICON_UNDEFINED, Keyboard.CODE_OUTPUT_TEXT);
+ assertParser("Label with comma outputText", "abc|a,b",
+ "abc", "a,b", ICON_UNDEFINED, Keyboard.CODE_OUTPUT_TEXT);
+ assertParser("Label with escaped comma outputText", "abc|a\\,b",
+ "abc", "a,b", ICON_UNDEFINED, Keyboard.CODE_OUTPUT_TEXT);
+ assertParser("Label with outputText starts with at", "abc|@bc",
+ "abc", "@bc", ICON_UNDEFINED, Keyboard.CODE_OUTPUT_TEXT);
+ assertParser("Label with outputText contains at", "abc|a@c",
+ "abc", "a@c", ICON_UNDEFINED, Keyboard.CODE_OUTPUT_TEXT);
+ assertParser("Label with escaped at outputText", "abc|\\@bc",
+ "abc", "@bc", ICON_UNDEFINED, Keyboard.CODE_OUTPUT_TEXT);
+ assertParser("Label with escaped bar outputText", "abc|d\\|f",
+ "abc", "d|f", ICON_UNDEFINED, Keyboard.CODE_OUTPUT_TEXT);
+ assertParser("Escaped bar label with escaped bar outputText", "a\\|c|d\\|f",
+ "a|c", "d|f", ICON_UNDEFINED, Keyboard.CODE_OUTPUT_TEXT);
+ assertParser("Label with code", "abc|" + CODE_SETTINGS,
+ "abc", null, ICON_UNDEFINED, mCodeSettings);
+ assertParser("Escaped label with code", "a\\|c|" + CODE_SETTINGS,
+ "a|c", null, ICON_UNDEFINED, mCodeSettings);
+ }
+
+ public void testIconAndCode() {
+ assertParser("Icon with outputText", ICON_SETTINGS + "|abc",
+ null, "abc", mSettingsIconId, Keyboard.CODE_OUTPUT_TEXT);
+ assertParser("Icon with outputText starts with at", ICON_SETTINGS + "|@bc",
+ null, "@bc", mSettingsIconId, Keyboard.CODE_OUTPUT_TEXT);
+ assertParser("Icon with outputText contains at", ICON_SETTINGS + "|a@c",
+ null, "a@c", mSettingsIconId, Keyboard.CODE_OUTPUT_TEXT);
+ assertParser("Icon with escaped at outputText", ICON_SETTINGS + "|\\@bc",
+ null, "@bc", mSettingsIconId, Keyboard.CODE_OUTPUT_TEXT);
+ assertParser("Label starts with at and code", "@bc|" + CODE_SETTINGS,
+ "@bc", null, ICON_UNDEFINED, mCodeSettings);
+ assertParser("Label contains at and code", "a@c|" + CODE_SETTINGS,
+ "a@c", null, ICON_UNDEFINED, mCodeSettings);
+ assertParser("Escaped at label with code", "\\@bc|" + CODE_SETTINGS,
+ "@bc", null, ICON_UNDEFINED, mCodeSettings);
+ assertParser("Icon with code", ICON_SETTINGS + "|" + CODE_SETTINGS,
+ null, null, mSettingsIconId, mCodeSettings);
+ }
+
+ public void testFormatError() {
+ assertParserError("Empty spec", "", null,
+ null, ICON_UNDEFINED, Keyboard.CODE_UNSPECIFIED);
+ assertParserError("Empty label with outputText", "|a",
+ null, "a", ICON_UNDEFINED, Keyboard.CODE_UNSPECIFIED);
+ assertParserError("Empty label with code", "|" + CODE_SETTINGS,
+ null, null, ICON_UNDEFINED, mCodeSettings);
+ assertParserError("Empty outputText with label", "a|",
+ "a", null, ICON_UNDEFINED, Keyboard.CODE_UNSPECIFIED);
+ assertParserError("Empty outputText with icon", ICON_SETTINGS + "|",
+ null, null, mSettingsIconId, Keyboard.CODE_UNSPECIFIED);
+ assertParserError("Empty icon and code", "|",
+ null, null, ICON_UNDEFINED, Keyboard.CODE_UNSPECIFIED);
+ assertParserError("Icon without code", ICON_SETTINGS,
+ null, null, mSettingsIconId, Keyboard.CODE_UNSPECIFIED);
+ assertParserError("Non existing icon", ICON_NON_EXISTING + "|abc",
+ null, "abc", ICON_UNDEFINED, Keyboard.CODE_OUTPUT_TEXT);
+ assertParserError("Non existing code", "abc|" + CODE_NON_EXISTING,
+ "abc", null, ICON_UNDEFINED, Keyboard.CODE_UNSPECIFIED);
+ assertParserError("Third bar at end", "a|b|",
+ "a", null, ICON_UNDEFINED, Keyboard.CODE_UNSPECIFIED);
+ assertParserError("Multiple bar", "a|b|c",
+ "a", null, ICON_UNDEFINED, Keyboard.CODE_UNSPECIFIED);
+ assertParserError("Multiple bar with label and code", "a|" + CODE_SETTINGS + "|c",
+ "a", null, ICON_UNDEFINED, mCodeSettings);
+ assertParserError("Multiple bar with icon and outputText", ICON_SETTINGS + "|b|c",
+ null, null, mSettingsIconId, Keyboard.CODE_UNSPECIFIED);
+ assertParserError("Multiple bar with icon and code",
+ ICON_SETTINGS + "|" + CODE_SETTINGS + "|c",
+ null, null, mSettingsIconId, mCodeSettings);
+ }
+
+ private static void assertMoreKeys(String message, String[] moreKeys,
+ String[] additionalMoreKeys, String[] expected) {
+ final String[] actual = KeySpecParser.insertAddtionalMoreKeys(
+ moreKeys, additionalMoreKeys);
+ if (expected == null && actual == null) {
+ return;
+ }
+ if (expected == null || actual == null) {
+ assertEquals(message, Arrays.toString(expected), Arrays.toString(actual));
+ } else {
+ if (expected.length != actual.length) {
+ assertEquals(message, Arrays.toString(expected), Arrays.toString(actual));
+ }
+ for (int i = 0; i < expected.length; i++) {
+ if (!actual[i].equals(expected[i])) {
+ assertEquals(message, Arrays.toString(expected), Arrays.toString(actual));
+ }
+ }
+ }
+ }
+
+ public void testEmptyEntry() {
+ assertMoreKeys("null more keys and null additons",
+ null,
+ null,
+ null);
+ assertMoreKeys("null more keys and empty additons",
+ null,
+ new String[0],
+ null);
+ assertMoreKeys("empty more keys and null additons",
+ new String[0],
+ null,
+ null);
+ assertMoreKeys("empty more keys and empty additons",
+ new String[0],
+ new String[0],
+ null);
+
+ assertMoreKeys("filter out empty more keys",
+ new String[] { null, "a", "", "b", null },
+ null,
+ new String[] { "a", "b" });
+ assertMoreKeys("filter out empty additons",
+ new String[] { "a", "%", "b", "%", "c", "%", "d" },
+ new String[] { null, "A", "", "B", null },
+ new String[] { "a", "A", "b", "B", "c", "d" });
+ }
+
+ public void testInsertAdditionalMoreKeys() {
+ // Escaped marker.
+ assertMoreKeys("escaped marker",
+ new String[] { "\\%", "%-)" },
+ new String[] { "1", "2" },
+ new String[] { "1", "2", "\\%", "%-)" });
+
+ // 0 more key.
+ assertMoreKeys("null & null", null, null, null);
+ assertMoreKeys("null & 1 additon",
+ null,
+ new String[] { "1" },
+ new String[] { "1" });
+ assertMoreKeys("null & 2 additons",
+ null,
+ new String[] { "1", "2" },
+ new String[] { "1", "2" });
+
+ // 0 additional more key.
+ assertMoreKeys("1 more key & null",
+ new String[] { "A" },
+ null,
+ new String[] { "A" });
+ assertMoreKeys("2 more keys & null",
+ new String[] { "A", "B" },
+ null,
+ new String[] { "A", "B" });
+
+ // No marker.
+ assertMoreKeys("1 more key & 1 addtional & no marker",
+ new String[] { "A" },
+ new String[] { "1" },
+ new String[] { "1", "A" });
+ assertMoreKeys("1 more key & 2 addtionals & no marker",
+ new String[] { "A" },
+ new String[] { "1", "2" },
+ new String[] { "1", "2", "A" });
+ assertMoreKeys("2 more keys & 1 addtional & no marker",
+ new String[] { "A", "B" },
+ new String[] { "1" },
+ new String[] { "1", "A", "B" });
+ assertMoreKeys("2 more keys & 2 addtionals & no marker",
+ new String[] { "A", "B" },
+ new String[] { "1", "2" },
+ new String[] { "1", "2", "A", "B" });
+
+ // 1 marker.
+ assertMoreKeys("1 more key & 1 additon & marker at head",
+ new String[] { "%", "A" },
+ new String[] { "1" },
+ new String[] { "1", "A" });
+ assertMoreKeys("1 more key & 1 additon & marker at tail",
+ new String[] { "A", "%" },
+ new String[] { "1" },
+ new String[] { "A", "1" });
+ assertMoreKeys("2 more keys & 1 additon & marker at middle",
+ new String[] { "A", "%", "B" },
+ new String[] { "1" },
+ new String[] { "A", "1", "B" });
+
+ // 1 marker & excess additional more keys.
+ assertMoreKeys("1 more key & 2 additons & marker at head",
+ new String[] { "%", "A", "B" },
+ new String[] { "1", "2" },
+ new String[] { "1", "A", "B", "2" });
+ assertMoreKeys("1 more key & 2 additons & marker at tail",
+ new String[] { "A", "B", "%" },
+ new String[] { "1", "2" },
+ new String[] { "A", "B", "1", "2" });
+ assertMoreKeys("2 more keys & 2 additons & marker at middle",
+ new String[] { "A", "%", "B" },
+ new String[] { "1", "2" },
+ new String[] { "A", "1", "B", "2" });
+
+ // 2 markers.
+ assertMoreKeys("0 more key & 2 addtional & 2 markers",
+ new String[] { "%", "%" },
+ new String[] { "1", "2" },
+ new String[] { "1", "2" });
+ assertMoreKeys("1 more key & 2 addtional & 2 markers at head",
+ new String[] { "%", "%", "A" },
+ new String[] { "1", "2" },
+ new String[] { "1", "2", "A" });
+ assertMoreKeys("1 more key & 2 addtional & 2 markers at tail",
+ new String[] { "A", "%", "%" },
+ new String[] { "1", "2" },
+ new String[] { "A", "1", "2" });
+ assertMoreKeys("2 more keys & 2 addtional & 2 markers at middle",
+ new String[] { "A", "%", "%", "B" },
+ new String[] { "1", "2" },
+ new String[] { "A", "1", "2", "B" });
+ assertMoreKeys("2 more keys & 2 addtional & 2 markers at head & middle",
+ new String[] { "%", "A", "%", "B" },
+ new String[] { "1", "2" },
+ new String[] { "1", "A", "2", "B" });
+ assertMoreKeys("2 more keys & 2 addtional & 2 markers at head & tail",
+ new String[] { "%", "A", "B", "%" },
+ new String[] { "1", "2" },
+ new String[] { "1", "A", "B", "2" });
+ assertMoreKeys("2 more keys & 2 addtional & 2 markers at middle & tail",
+ new String[] { "A", "%", "B", "%" },
+ new String[] { "1", "2" },
+ new String[] { "A", "1", "B", "2" });
+
+ // 2 markers & excess additional more keys.
+ assertMoreKeys("0 more key & 2 additons & 2 markers",
+ new String[] { "%", "%" },
+ new String[] { "1", "2", "3" },
+ new String[] { "1", "2", "3" });
+ assertMoreKeys("1 more key & 2 additons & 2 markers at head",
+ new String[] { "%", "%", "A" },
+ new String[] { "1", "2", "3" },
+ new String[] { "1", "2", "A", "3" });
+ assertMoreKeys("1 more key & 2 additons & 2 markers at tail",
+ new String[] { "A", "%", "%" },
+ new String[] { "1", "2", "3" },
+ new String[] { "A", "1", "2", "3" });
+ assertMoreKeys("2 more keys & 2 additons & 2 markers at middle",
+ new String[] { "A", "%", "%", "B" },
+ new String[] { "1", "2", "3" },
+ new String[] { "A", "1", "2", "B", "3" });
+ assertMoreKeys("2 more keys & 2 additons & 2 markers at head & middle",
+ new String[] { "%", "A", "%", "B" },
+ new String[] { "1", "2", "3" },
+ new String[] { "1", "A", "2", "B", "3" });
+ assertMoreKeys("2 more keys & 2 additons & 2 markers at head & tail",
+ new String[] { "%", "A", "B", "%" },
+ new String[] { "1", "2", "3" },
+ new String[] { "1", "A", "B", "2", "3" });
+ assertMoreKeys("2 more keys & 2 additons & 2 markers at middle & tail",
+ new String[] { "A", "%", "B", "%" },
+ new String[] { "1", "2", "3" },
+ new String[] { "A", "1", "B", "2", "3" });
+
+ // 0 addtional more key and excess markers.
+ assertMoreKeys("0 more key & null & excess marker",
+ new String[] { "%" },
+ null,
+ null);
+ assertMoreKeys("1 more key & null & excess marker at head",
+ new String[] { "%", "A" },
+ null,
+ new String[] { "A" });
+ assertMoreKeys("1 more key & null & excess marker at tail",
+ new String[] { "A", "%" },
+ null,
+ new String[] { "A" });
+ assertMoreKeys("2 more keys & null & excess marker at middle",
+ new String[] { "A", "%", "B" },
+ null,
+ new String[] { "A", "B" });
+ assertMoreKeys("2 more keys & null & excess markers",
+ new String[] { "%", "A", "%", "B", "%" },
+ null,
+ new String[] { "A", "B" });
+
+ // Excess markers.
+ assertMoreKeys("0 more key & 1 additon & excess marker",
+ new String[] { "%", "%" },
+ new String[] { "1" },
+ new String[] { "1" });
+ assertMoreKeys("1 more key & 1 additon & excess marker at head",
+ new String[] { "%", "%", "A" },
+ new String[] { "1" },
+ new String[] { "1", "A" });
+ assertMoreKeys("1 more key & 1 additon & excess marker at tail",
+ new String[] { "A", "%", "%" },
+ new String[] { "1" },
+ new String[] { "A", "1" });
+ assertMoreKeys("2 more keys & 1 additon & excess marker at middle",
+ new String[] { "A", "%", "%", "B" },
+ new String[] { "1" },
+ new String[] { "A", "1", "B" });
+ assertMoreKeys("2 more keys & 1 additon & excess markers",
+ new String[] { "%", "A", "%", "B", "%" },
+ new String[] { "1" },
+ new String[] { "1", "A", "B" });
+ assertMoreKeys("2 more keys & 2 additons & excess markers",
+ new String[] { "%", "A", "%", "B", "%" },
+ new String[] { "1", "2" },
+ new String[] { "1", "A", "2", "B" });
+ assertMoreKeys("2 more keys & 3 additons & excess markers",
+ new String[] { "%", "A", "%", "%", "B", "%" },
+ new String[] { "1", "2", "3" },
+ new String[] { "1", "A", "2", "3", "B" });
+ }
+}
diff --git a/tests/src/com/android/inputmethod/keyboard/internal/KeyStylesTests.java b/tests/src/com/android/inputmethod/keyboard/internal/KeyStylesTests.java
deleted file mode 100644
index 4050a7123..000000000
--- a/tests/src/com/android/inputmethod/keyboard/internal/KeyStylesTests.java
+++ /dev/null
@@ -1,90 +0,0 @@
-/*
- * Copyright (C) 2010 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License"); you may not
- * use this file except in compliance with the License. You may obtain a copy of
- * the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
- * License for the specific language governing permissions and limitations under
- * the License.
- */
-
-package com.android.inputmethod.keyboard.internal;
-
-import com.android.inputmethod.keyboard.internal.KeyStyles.EmptyKeyStyle;
-
-import android.test.AndroidTestCase;
-import android.text.TextUtils;
-
-public class KeyStylesTests extends AndroidTestCase {
- private static String format(String message, Object expected, Object actual) {
- return message + " expected:<" + expected + "> but was:<" + actual + ">";
- }
-
- private static void assertTextArray(String message, CharSequence value,
- CharSequence ... expected) {
- final CharSequence actual[] = EmptyKeyStyle.parseCsvText(value);
- if (expected.length == 0) {
- assertNull(message, actual);
- return;
- }
- assertSame(message + ": result length", expected.length, actual.length);
- for (int i = 0; i < actual.length; i++) {
- final boolean equals = TextUtils.equals(expected[i], actual[i]);
- assertTrue(format(message + ": result at " + i + ":", expected[i], actual[i]), equals);
- }
- }
-
- public void testParseCsvTextZero() {
- assertTextArray("Empty string", "");
- }
-
- public void testParseCsvTextSingle() {
- assertTextArray("Single char", "a", "a");
- assertTextArray("Space", " ", " ");
- assertTextArray("Single label", "abc", "abc");
- assertTextArray("Spaces", " ", " ");
- assertTextArray("Spaces in label", "a b c", "a b c");
- assertTextArray("Spaces at beginning of label", " abc", " abc");
- assertTextArray("Spaces at end of label", "abc ", "abc ");
- assertTextArray("label surrounded by spaces", " abc ", " abc ");
- }
-
- public void testParseCsvTextSingleEscaped() {
- assertTextArray("Escaped char", "\\a", "a");
- assertTextArray("Escaped comma", "\\,", ",");
- assertTextArray("Escaped escape", "\\\\", "\\");
- assertTextArray("Escaped label", "a\\bc", "abc");
- assertTextArray("Escaped label at begininng", "\\abc", "abc");
- assertTextArray("Escaped label with comma", "a\\,c", "a,c");
- assertTextArray("Escaped label with comma at beginning", "\\,bc", ",bc");
- assertTextArray("Escaped label with successive", "\\,\\\\bc", ",\\bc");
- assertTextArray("Escaped label with escape", "a\\\\c", "a\\c");
- }
-
- public void testParseCsvTextMulti() {
- assertTextArray("Multiple chars", "a,b,c", "a", "b", "c");
- assertTextArray("Multiple chars surrounded by spaces", " a , b , c ", " a ", " b ", " c ");
- assertTextArray("Multiple labels", "abc,def,ghi", "abc", "def", "ghi");
- assertTextArray("Multiple labels surrounded by spaces", " abc , def , ghi ",
- " abc ", " def ", " ghi ");
- }
-
- public void testParseCsvTextMultiEscaped() {
- assertTextArray("Multiple chars with comma", "a,\\,,c", "a", ",", "c");
- assertTextArray("Multiple chars with comma surrounded by spaces", " a , \\, , c ",
- " a ", " , ", " c ");
- assertTextArray("Multiple labels with escape", "\\abc,d\\ef,gh\\i", "abc", "def", "ghi");
- assertTextArray("Multiple labels with escape surrounded by spaces",
- " \\abc , d\\ef , gh\\i ", " abc ", " def ", " ghi ");
- assertTextArray("Multiple labels with comma and escape",
- "ab\\\\,d\\\\\\,,g\\,i", "ab\\", "d\\,", "g,i");
- assertTextArray("Multiple labels with comma and escape surrounded by spaces",
- " ab\\\\ , d\\\\\\, , g\\,i ", " ab\\ ", " d\\, ", " g,i ");
- }
-}
diff --git a/tests/src/com/android/inputmethod/keyboard/internal/KeyboardStateMultiTouchTests.java b/tests/src/com/android/inputmethod/keyboard/internal/KeyboardStateMultiTouchTests.java
new file mode 100644
index 000000000..0e6caaf87
--- /dev/null
+++ b/tests/src/com/android/inputmethod/keyboard/internal/KeyboardStateMultiTouchTests.java
@@ -0,0 +1,243 @@
+/*
+ * Copyright (C) 2012 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
+package com.android.inputmethod.keyboard.internal;
+
+public class KeyboardStateMultiTouchTests extends KeyboardStateTestsBase {
+ // Chording input in alphabet.
+ public void testChordingAlphabet() {
+ // Press shift key and hold, enter into choring shift state.
+ pressKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED);
+ // Press/release letter key.
+ chordingPressAndReleaseKey('Z', ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
+ // Release shift key, switch back to alphabet.
+ releaseKey(CODE_SHIFT, ALPHABET_UNSHIFTED);
+
+ // Press "?123" key and hold, enter into choring symbols state.
+ pressKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED);
+ // Press/release symbol letter key.
+ chordingPressAndReleaseKey('1', SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
+ // Release "ABC" key, switch back to alphabet.
+ releaseKey(CODE_SYMBOL, ALPHABET_UNSHIFTED);
+ }
+
+ // Chording input in shift locked.
+ public void testChordingShiftLocked() {
+ // Long press shift key, enter alphabet shift locked.
+ longPressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_SHIFT_LOCKED);
+
+ // Press shift key and hold, enter into choring shift state.
+ pressKey(CODE_SHIFT, ALPHABET_SHIFT_LOCK_SHIFTED);
+ // Press/release letter key.
+ chordingPressAndReleaseKey('Z', ALPHABET_SHIFT_LOCK_SHIFTED, ALPHABET_SHIFT_LOCK_SHIFTED);
+ // Release shift key, switch back to alphabet shift locked.
+ releaseKey(CODE_SHIFT, ALPHABET_SHIFT_LOCKED);
+
+ // Press "?123" key and hold, enter into choring symbols state.
+ pressKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED);
+ // Press/release symbol letter key.
+ chordingPressAndReleaseKey('1', SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
+ // Release "123?" key, switch back to alphabet shift locked.
+ releaseKey(CODE_SYMBOL, ALPHABET_SHIFT_LOCKED);
+ }
+
+ // Chording input in symbols.
+ public void testChordingSymbols() {
+ // Press/release "?123" key, enter symbols.
+ pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
+
+ // Press "=\<" key and hold, enter into choring symbols shifted state.
+ pressKey(CODE_SHIFT, SYMBOLS_SHIFTED);
+ // Press/release symbol letter key.
+ chordingPressAndReleaseKey('1', SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
+ // Release "=\<" key, switch back to symbols.
+ releaseKey(CODE_SHIFT, SYMBOLS_UNSHIFTED);
+
+ // Press "ABC" key and hold, enter into choring alphabet state.
+ pressKey(CODE_SYMBOL, ALPHABET_UNSHIFTED);
+ // Press/release letter key.
+ chordingPressAndReleaseKey('a', ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED);
+ // Release "ABC" key, switch back to symbols.
+ releaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED);
+
+ // Alphabet shifted -> symbols -> "ABC" key + letter -> symbols
+ // -> alphabet.
+ // Load keyboard
+ loadKeyboard(ALPHABET_UNSHIFTED);
+ // Press/release shift key, enter alphabet shifted.
+ pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
+ // Press/release "?123" key, enter into symbols.
+ pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
+ // Press "ABC" key, enter into chording alphabet state.
+ pressKey(CODE_SYMBOL, ALPHABET_UNSHIFTED);
+ // Enter/release letter key.
+ chordingPressAndReleaseKey('a', ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED);
+ // Release "ABC" key, switch back to symbols.
+ releaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED);
+ // Press/release "ABC" key, switch to alphabet (not alphabet shifted).
+ pressAndReleaseKey(CODE_SYMBOL, ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED);
+
+ // Alphabet shift locked -> symbols -> "ABC" key + letter -> symbols ->
+ // alphabet shift locked.
+ // Load keyboard
+ loadKeyboard(ALPHABET_UNSHIFTED);
+ // Long press shift key, enter alphabet shift locked.
+ longPressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_SHIFT_LOCKED);
+ // Press/release "?123" key, enter into symbols.
+ pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
+ // Press "ABC" key, enter into chording alphabet shift locked.
+ pressKey(CODE_SYMBOL, ALPHABET_SHIFT_LOCKED);
+ // Enter/release letter key.
+ chordingPressAndReleaseKey('A', ALPHABET_SHIFT_LOCKED, ALPHABET_SHIFT_LOCKED);
+ // Release "ABC" key, switch back to symbols.
+ releaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED);
+ // Press/release "ABC" key, switch to alphabet shift locked.
+ pressAndReleaseKey(CODE_SYMBOL, ALPHABET_SHIFT_LOCKED, ALPHABET_SHIFT_LOCKED);
+
+ // Alphabet shift locked -> symbols -> "=\<" key + letter -> symbols ->
+ // alphabet shift locked.
+ // Load keyboard
+ loadKeyboard(ALPHABET_UNSHIFTED);
+ // Long press shift key, enter alphabet shift locked.
+ longPressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_SHIFT_LOCKED);
+ // Press/release "?123" key, enter into symbols.
+ pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
+ // Press "=\<" key, enter into symbols shifted chording state.
+ pressKey(CODE_SHIFT, SYMBOLS_SHIFTED);
+ // Enter/release symbols shift letter key.
+ chordingPressAndReleaseKey('~', SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
+ // Release "=\<" key, switch back to symbols.
+ releaseKey(CODE_SHIFT, SYMBOLS_UNSHIFTED);
+ // Press/release "ABC" key, switch to alphabet shift locked.
+ pressAndReleaseKey(CODE_SYMBOL, ALPHABET_SHIFT_LOCKED, ALPHABET_SHIFT_LOCKED);
+ }
+
+ // Chording input in symbol shifted.
+ public void testChordingSymbolsShifted() {
+ // Press/release "?123" key, enter symbols.
+ pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
+ // Press/release "=\<" key, enter symbols shifted.
+ pressAndReleaseKey(CODE_SHIFT, SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
+
+ // Press "?123" key and hold, enter into chording symbols state.
+ pressKey(CODE_SHIFT, SYMBOLS_UNSHIFTED);
+ // Press/release symbol letter key.
+ chordingPressAndReleaseKey('1', SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
+ // Release "=\<" key, switch back to symbols shifted state.
+ releaseKey(CODE_SHIFT, SYMBOLS_SHIFTED);
+
+ // Press "ABC" key and hold, enter into choring alphabet state.
+ pressKey(CODE_SYMBOL, ALPHABET_UNSHIFTED);
+ // Press/release letter key.
+ chordingPressAndReleaseKey('a', ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED);
+ // Release "ABC" key, switch back to symbols.
+ releaseKey(CODE_SYMBOL, SYMBOLS_SHIFTED);
+
+ // Alphabet shifted -> symbols shifted -> "ABC" key + letter -> symbols shifted ->
+ // alphabet.
+ // Load keyboard
+ loadKeyboard(ALPHABET_UNSHIFTED);
+ // Press/release shift key, enter alphabet shifted.
+ pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
+ // Press/release "?123" key, enter into symbols.
+ pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
+ // Press/release "=\<" key, enter symbols shifted.
+ pressAndReleaseKey(CODE_SHIFT, SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
+ // Press "ABC" key, enter into chording alphabet state.
+ pressKey(CODE_SYMBOL, ALPHABET_UNSHIFTED);
+ // Enter/release letter key.
+ chordingPressAndReleaseKey('a', ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED);
+ // Release "ABC" key, switch back to symbols shifted.
+ releaseKey(CODE_SYMBOL, SYMBOLS_SHIFTED);
+ // Press/release "ABC" key, switch to alphabet (not alphabet shifted).
+ pressAndReleaseKey(CODE_SYMBOL, ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED);
+
+ // Alphabet shift locked -> symbols shifted -> "ABC" key + letter -> symbols shifted
+ // -> alphabet shift locked.
+ // Load keyboard
+ loadKeyboard(ALPHABET_UNSHIFTED);
+ // Long press shift key, enter alphabet shift locked.
+ longPressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_SHIFT_LOCKED);
+ // Press/release "?123" key, enter into symbols.
+ pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
+ // Press/release "=\<" key, enter symbols shifted.
+ pressAndReleaseKey(CODE_SHIFT, SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
+ // Press "ABC" key, enter into chording alphabet shift locked.
+ pressKey(CODE_SYMBOL, ALPHABET_SHIFT_LOCKED);
+ // Enter/release letter key.
+ chordingPressAndReleaseKey('A', ALPHABET_SHIFT_LOCKED, ALPHABET_SHIFT_LOCKED);
+ // Release "ABC" key, switch back to symbols shifted.
+ releaseKey(CODE_SYMBOL, SYMBOLS_SHIFTED);
+ // Press/release "ABC" key, switch to alphabet shift locked.
+ pressAndReleaseKey(CODE_SYMBOL, ALPHABET_SHIFT_LOCKED, ALPHABET_SHIFT_LOCKED);
+
+ // Alphabet shift locked -> symbols shifted -> "=\<" key + letter -> symbols shifted
+ // -> alphabet shift locked.
+ // Load keyboard
+ loadKeyboard(ALPHABET_UNSHIFTED);
+ // Long press shift key, enter alphabet shift locked.
+ longPressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_SHIFT_LOCKED);
+ // Press/release "?123" key, enter into symbols.
+ pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
+ // Press/release "=\<" key, enter symbols shifted.
+ pressAndReleaseKey(CODE_SHIFT, SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
+ // Press "=\<" key, enter into symbols chording state.
+ pressKey(CODE_SHIFT, SYMBOLS_UNSHIFTED);
+ // Enter/release symbols letter key.
+ chordingPressAndReleaseKey('1', SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
+ // Release "=\<" key, switch back to symbols shifted.
+ releaseKey(CODE_SHIFT, SYMBOLS_SHIFTED);
+ // Press/release "ABC" key, switch to alphabet shift locked.
+ pressAndReleaseKey(CODE_SYMBOL, ALPHABET_SHIFT_LOCKED, ALPHABET_SHIFT_LOCKED);
+ }
+
+ // Chording input in automatic upper case.
+ public void testChordingAutomaticUpperCase() {
+ // Set auto caps mode on.
+ setAutoCapsMode(AUTO_CAPS);
+
+ // Update shift state with auto caps enabled.
+ pressAndReleaseKey(CODE_AUTO_CAPS_TRIGGER, ALPHABET_UNSHIFTED, ALPHABET_AUTOMATIC_SHIFTED);
+ // Press shift key and hold, enter into chording shift state.
+ pressKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED);
+ // Press/release letter key.
+ chordingPressAndReleaseKey('Z', ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
+ // Release shift key, switch back to alphabet.
+ releaseKey(CODE_SHIFT, ALPHABET_UNSHIFTED);
+
+ // Update shift state with auto caps enabled.
+ pressAndReleaseKey(CODE_AUTO_CAPS_TRIGGER, ALPHABET_UNSHIFTED, ALPHABET_AUTOMATIC_SHIFTED);
+ // Press "123?" key and hold, enter into chording symbols state.
+ pressKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED);
+ // Press/release symbol letter key.
+ chordingPressAndReleaseKey('1', SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
+ // Release "123?" key, switch back to alphabet.
+ releaseKey(CODE_SYMBOL, ALPHABET_UNSHIFTED);
+ }
+
+ // Chording letter key with shift key.
+ public void testChordingLetterAndShiftKey() {
+ // Press letter key and hold.
+ pressKey('z', ALPHABET_UNSHIFTED);
+ // Press shift key, {@link PointerTracker} will fire a phantom release letter key.
+ chordingReleaseKey('z', ALPHABET_UNSHIFTED);
+ chordingPressKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED);
+ // Press another letter key and hold.
+ chordingPressAndReleaseKey('J', ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
+ // Release shift key
+ releaseKey(CODE_SHIFT, ALPHABET_UNSHIFTED);
+ }
+}
diff --git a/tests/src/com/android/inputmethod/keyboard/internal/KeyboardStateSingleTouchTests.java b/tests/src/com/android/inputmethod/keyboard/internal/KeyboardStateSingleTouchTests.java
new file mode 100644
index 000000000..de2a50fcf
--- /dev/null
+++ b/tests/src/com/android/inputmethod/keyboard/internal/KeyboardStateSingleTouchTests.java
@@ -0,0 +1,755 @@
+/*
+ * Copyright (C) 2012 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
+package com.android.inputmethod.keyboard.internal;
+
+public class KeyboardStateSingleTouchTests extends KeyboardStateTestsBase {
+ // Shift key in alphabet.
+ public void testShiftAlphabet() {
+ // Press/release shift key, enter into alphabet shifted.
+ pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
+
+ // Press/release shift key, back to alphabet.
+ pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_UNSHIFTED);
+
+ // Press/release shift key, enter into alphabet shifted.
+ pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
+ // Press/release letter key, switch back to alphabet.
+ pressAndReleaseKey('Z', ALPHABET_MANUAL_SHIFTED, ALPHABET_UNSHIFTED);
+ }
+
+ // Shift key in symbols.
+ public void testShiftSymbols() {
+ // Press/release "?123" key, enter into symbols.
+ pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
+
+ // Press/release "=\<" key, enter into symbols shifted.
+ pressAndReleaseKey(CODE_SHIFT, SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
+
+ // Press/release "?123" key, back to symbols.
+ pressAndReleaseKey(CODE_SHIFT, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
+
+ // Press/release "=\<" key, enter into symbols shifted.
+ pressAndReleaseKey(CODE_SHIFT, SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
+ // Press/release symbol letter key, remain in symbols shifted.
+ pressAndReleaseKey('1', SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
+ }
+
+ // Switching between alphabet and symbols.
+ public void testAlphabetAndSymbols() {
+ // Press/release "?123" key, enter into symbols.
+ pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
+ // Press/release "ABC" key, back to alphabet.
+ pressAndReleaseKey(CODE_SYMBOL, ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED);
+ // Press/release "?123" key, enter into symbols.
+ pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
+
+ // Press/release "=\<" key, enter into symbols shifted.
+ pressAndReleaseKey(CODE_SHIFT, SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
+ // Press/release "ABC" key, back to alphabet.
+ pressAndReleaseKey(CODE_SYMBOL, ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED);
+ // Press/release "?123" key, back to symbols (not symbols shifted).
+ pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
+ }
+
+ // Switching between alphabet shifted and symbols.
+ public void testAlphabetShiftedAndSymbols() {
+ // Press/release shift key, enter into alphabet shifted.
+ pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
+
+ // Press/release "?123" key, enter into symbols.
+ pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
+ // Press/release "ABC" key, back to alphabet (not alphabet shifted).
+ pressAndReleaseKey(CODE_SYMBOL, ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED);
+
+ // Press/release shift key, enter into alphabet shifted.
+ pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
+ // Press/release "?123" key, enter into symbols.
+ pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
+ // Press/release "=\< key, enter into symbols shifted.
+ pressAndReleaseKey(CODE_SHIFT, SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
+ // Press/release "ABC" key, back to alphabet (not alphabet shifted).
+ pressAndReleaseKey(CODE_SYMBOL, ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED);
+ }
+
+ // Switching between alphabet shift locked and symbols.
+ public void testAlphabetShiftLockedAndSymbols() {
+ // Long press shift key, enter alphabet shift locked.
+ longPressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_SHIFT_LOCKED);
+
+ // Press/release "?123" key, enter into symbols.
+ pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
+ // Press/release "ABC" key, back to alphabet shift locked.
+ pressAndReleaseKey(CODE_SYMBOL, ALPHABET_SHIFT_LOCKED, ALPHABET_SHIFT_LOCKED);
+ // Press/release "?123" key, enter into symbols.
+ pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
+
+ // Press/release "=\<" key, enter into symbols shifted.
+ pressAndReleaseKey(CODE_SHIFT, SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
+ // Press/release "ABC" key, back to alphabet shift locked.
+ pressAndReleaseKey(CODE_SYMBOL, ALPHABET_SHIFT_LOCKED, ALPHABET_SHIFT_LOCKED);
+ // Press/release "?123" key, back to symbols (not symbols shifted).
+ pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
+ }
+
+ // Automatic switch back to alphabet by space key.
+ public void testSwitchBackBySpace() {
+ // Press/release "?123" key, enter into symbols.
+ pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
+ // Enter symbol letter.
+ pressAndReleaseKey('1', SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
+ // Enter space, switch back to alphabet.
+ pressAndReleaseKey(CODE_SPACE, SYMBOLS_UNSHIFTED, ALPHABET_UNSHIFTED);
+
+ // Press/release "?123" key, enter into symbols.
+ pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
+ // Press/release "=\<" key, enter into symbols shifted.
+ pressAndReleaseKey(CODE_SHIFT, SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
+ // Enter symbol shift letter.
+ pressAndReleaseKey('~', SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
+ // Enter space, switch back to alphabet.
+ pressAndReleaseKey(CODE_SPACE, SYMBOLS_SHIFTED, ALPHABET_UNSHIFTED);
+ // Press/release "?123" key, enter into symbols (not symbols shifted).
+ pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
+ }
+
+ // Automatic switch back to alphabet shift locked test by space key.
+ public void testSwitchBackBySpaceShiftLocked() {
+ // Long press shift key, enter alphabet shift locked.
+ longPressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_SHIFT_LOCKED);
+
+ // Press/release "?123" key, enter into symbols.
+ pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
+ // Enter symbol letter.
+ pressAndReleaseKey('1', SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
+ // Enter space, switch back to alphabet shift locked.
+ pressAndReleaseKey(CODE_SPACE, SYMBOLS_UNSHIFTED, ALPHABET_SHIFT_LOCKED);
+
+ // Press/release "?123" key, enter into symbols.
+ pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
+ // Press/release "=\<" key, enter into symbols shifted.
+ pressAndReleaseKey(CODE_SHIFT, SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
+ // Enter symbol shift letter.
+ pressAndReleaseKey('~', SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
+ // Enter space, switch back to alphabet shift locked.
+ pressAndReleaseKey(CODE_SPACE, SYMBOLS_SHIFTED, ALPHABET_SHIFT_LOCKED);
+ }
+
+ // Automatic switch back to alphabet by registered letters.
+ public void testSwitchBackChar() {
+ // Set switch back chars.
+ final String switchBackSymbols = "'";
+ final int switchBackCode = switchBackSymbols.codePointAt(0);
+ setLayoutSwitchBackSymbols(switchBackSymbols);
+ loadKeyboard(ALPHABET_UNSHIFTED);
+
+ // Press/release "?123" key, enter into symbols.
+ pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
+ // Enter symbol letter.
+ pressAndReleaseKey('1', SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
+ // Enter switch back letter, switch back to alphabet.
+ pressAndReleaseKey(switchBackCode, SYMBOLS_UNSHIFTED, ALPHABET_UNSHIFTED);
+
+ // Press/release "?123" key, enter into symbols.
+ pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
+ // Press/release "=\<" key, enter into symbols shifted.
+ pressAndReleaseKey(CODE_SHIFT, SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
+ // Enter symbol shift letter.
+ pressAndReleaseKey('~', SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
+ // Enter switch abck letter, switch back to alphabet.
+ pressAndReleaseKey(switchBackCode, SYMBOLS_SHIFTED, ALPHABET_UNSHIFTED);
+ }
+
+ // Automatic switch back to alphabet shift locked by registered letters.
+ public void testSwitchBackCharShiftLocked() {
+ // Set switch back chars.
+ final String switchBackSymbols = "'";
+ final int switchBackCode = switchBackSymbols.codePointAt(0);
+ setLayoutSwitchBackSymbols(switchBackSymbols);
+ loadKeyboard(ALPHABET_UNSHIFTED);
+ // Long press shift key, enter alphabet shift locked.
+ longPressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_SHIFT_LOCKED);
+
+ // Press/release "?123" key, enter into symbols.
+ pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
+ // Enter symbol letter.
+ pressAndReleaseKey('1', SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
+ // Enter switch back letter, switch back to alphabet shift locked.
+ pressAndReleaseKey(switchBackCode, SYMBOLS_UNSHIFTED, ALPHABET_SHIFT_LOCKED);
+
+ // Press/release "?123" key, enter into symbols.
+ pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
+ // Press/release "=\<" key, enter into symbols shifted.
+ pressAndReleaseKey(CODE_SHIFT, SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
+ // Enter symbol shift letter.
+ pressAndReleaseKey(CODE_SPACE, SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
+ // Enter switch back letter, switch back to alphabet shift locked.
+ pressAndReleaseKey(switchBackCode, SYMBOLS_SHIFTED, ALPHABET_SHIFT_LOCKED);
+ }
+
+ // Automatic upper case test
+ public void testAutomaticUpperCase() {
+ // Set auto caps mode on.
+ setAutoCapsMode(AUTO_CAPS);
+ // Load keyboard, should be in automatic shifted.
+ loadKeyboard(ALPHABET_AUTOMATIC_SHIFTED);
+
+ // Press/release letter key, switch to alphabet.
+ pressAndReleaseKey('A', ALPHABET_AUTOMATIC_SHIFTED, ALPHABET_UNSHIFTED);
+ // Press/release auto caps trigger letter, should be in automatic shifted.
+ pressAndReleaseKey(CODE_AUTO_CAPS_TRIGGER, ALPHABET_UNSHIFTED, ALPHABET_AUTOMATIC_SHIFTED);
+
+ // Press/release shift key, back to alphabet.
+ pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_UNSHIFTED);
+ // Press/release letter key, remain in alphabet.
+ pressAndReleaseKey('a', ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED);
+ // Press/release auto caps trigger letter, should be in automatic shifted.
+ pressAndReleaseKey(CODE_AUTO_CAPS_TRIGGER, ALPHABET_UNSHIFTED, ALPHABET_AUTOMATIC_SHIFTED);
+
+ // Press/release "?123" key, enter into symbols.
+ pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
+ // Press/release symbol letter key, remain in symbols.
+ pressAndReleaseKey('1', SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
+ // Press/release space, switch back to automatic shifted.
+ pressAndReleaseKey(CODE_SPACE, SYMBOLS_UNSHIFTED, ALPHABET_AUTOMATIC_SHIFTED);
+
+ // Press/release "?123" key, enter into symbols.
+ pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
+ // Press/release "=\<" key, enter into symbols shifted.
+ pressAndReleaseKey(CODE_SHIFT, SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
+ // Press/release symbol shift letter key, remain in symbols shifted.
+ pressAndReleaseKey('~', SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
+ // Press/release space, switch back to automatic shifted.
+ pressAndReleaseKey(CODE_SPACE, SYMBOLS_SHIFTED, ALPHABET_AUTOMATIC_SHIFTED);
+ }
+
+ // Long press shift key.
+ public void testLongPressShift() {
+ // Set auto caps mode off.
+ setAutoCapsMode(NO_AUTO_CAPS);
+ // Load keyboard, should be in alphabet.
+ loadKeyboard(ALPHABET_UNSHIFTED);
+ // Long press shift key, enter alphabet shift locked.
+ longPressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_SHIFT_LOCKED);
+ // Press/release shift key, back to alphabet.
+ pressAndReleaseKey(CODE_SHIFT, ALPHABET_SHIFT_LOCK_SHIFTED, ALPHABET_UNSHIFTED);
+
+ // Long press shift key, enter alphabet shift locked.
+ longPressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_SHIFT_LOCKED);
+ // Press/release letter key, remain in shift locked.
+ pressAndReleaseKey('A', ALPHABET_SHIFT_LOCKED, ALPHABET_SHIFT_LOCKED);
+ // Press/release word separator, remain in shift locked.
+ pressAndReleaseKey(CODE_SPACE, ALPHABET_SHIFT_LOCKED, ALPHABET_SHIFT_LOCKED);
+ // Press/release shift key, back to alphabet.
+ pressAndReleaseKey(CODE_SHIFT, ALPHABET_SHIFT_LOCK_SHIFTED, ALPHABET_UNSHIFTED);
+
+ // Long press shift key, enter alphabet shift locked.
+ longPressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_SHIFT_LOCKED);
+ // Long press shift key, back to alphabet.
+ longPressAndReleaseKey(CODE_SHIFT, ALPHABET_SHIFT_LOCK_SHIFTED, ALPHABET_UNSHIFTED);
+
+ // Press/release shift key, enter alphabet shifted.
+ pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
+ // Long press shift key, enter alphabet shift locked.
+ longPressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_SHIFT_LOCKED);
+ // Press/release shift key, back to alphabet.
+ pressAndReleaseKey(CODE_SHIFT, ALPHABET_SHIFT_LOCK_SHIFTED, ALPHABET_UNSHIFTED);
+
+ // Set auto caps mode on.
+ setAutoCapsMode(AUTO_CAPS);
+ // Load keyboard, should be in automatic shifted.
+ loadKeyboard(ALPHABET_AUTOMATIC_SHIFTED);
+ // Long press shift key, enter alphabet shift locked.
+ longPressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_SHIFT_LOCKED);
+ // Press/release shift key, back to alphabet.
+ pressAndReleaseKey(CODE_SHIFT, ALPHABET_SHIFT_LOCK_SHIFTED, ALPHABET_UNSHIFTED);
+ }
+
+ // Double tap shift key.
+ public void testDoubleTapShift() {
+ // First shift key tap.
+ pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
+ // Second shift key tap.
+ secondPressAndReleaseKey(CODE_SHIFT, ALPHABET_SHIFT_LOCKED, ALPHABET_SHIFT_LOCKED);
+
+ // First shift key tap.
+ pressAndReleaseKey(CODE_SHIFT, ALPHABET_SHIFT_LOCK_SHIFTED, ALPHABET_UNSHIFTED);
+ // Second shift key tap.
+ secondPressAndReleaseKey(CODE_SHIFT, ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED);
+
+ // Press/release shift key, enter alphabet manual shifted.
+ pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
+
+ // First shift key tap.
+ pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_UNSHIFTED);
+ // Second shift key tap.
+ secondPressAndReleaseKey(CODE_SHIFT, ALPHABET_SHIFT_LOCKED, ALPHABET_SHIFT_LOCKED);
+
+ // First shift key tap.
+ pressAndReleaseKey(CODE_SHIFT, ALPHABET_SHIFT_LOCK_SHIFTED, ALPHABET_UNSHIFTED);
+ // Second shift key tap.
+ secondPressAndReleaseKey(CODE_SHIFT, ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED);
+
+ // Set auto caps mode on.
+ setAutoCapsMode(AUTO_CAPS);
+ // Load keyboard, should be in automatic shifted.
+ loadKeyboard(ALPHABET_AUTOMATIC_SHIFTED);
+
+ // First shift key tap.
+ pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_UNSHIFTED);
+ // Second shift key tap.
+ secondPressAndReleaseKey(CODE_SHIFT, ALPHABET_SHIFT_LOCKED, ALPHABET_SHIFT_LOCKED);
+
+ // First shift key tap.
+ pressAndReleaseKey(CODE_SHIFT, ALPHABET_SHIFT_LOCK_SHIFTED, ALPHABET_UNSHIFTED);
+ // Second shift key tap.
+ secondPressAndReleaseKey(CODE_SHIFT, ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED);
+ }
+
+ // Update shift state.
+ public void testUpdateShiftState() {
+ // Set auto caps mode off.
+ setAutoCapsMode(NO_AUTO_CAPS);
+ // Load keyboard, should be in alphabet.
+ loadKeyboard(ALPHABET_UNSHIFTED);
+ // Update shift state, remained in alphabet.
+ updateShiftState(ALPHABET_UNSHIFTED);
+
+ // Press/release shift key, enter alphabet shifted.
+ pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
+ // Update shift state, back to alphabet.
+ updateShiftState(ALPHABET_UNSHIFTED);
+
+ // Long press shift key, enter alphabet shift locked.
+ longPressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_SHIFT_LOCKED);
+ // Update shift state, remained in alphabet shift locked.
+ updateShiftState(ALPHABET_SHIFT_LOCKED);
+ // Long press shift key, back to alphabet.
+ longPressAndReleaseKey(CODE_SHIFT, ALPHABET_SHIFT_LOCK_SHIFTED, ALPHABET_UNSHIFTED);
+
+ // Press/release "?123" key, enter into symbols.
+ pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
+ // Update shift state, remained in symbols.
+ updateShiftState(SYMBOLS_UNSHIFTED);
+
+ // Press/release "=\<" key, enter symbols shifted.
+ pressAndReleaseKey(CODE_SHIFT, SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
+ // Update shift state, remained in symbols shifted.
+ updateShiftState(SYMBOLS_SHIFTED);
+
+ // Set auto caps mode on.
+ setAutoCapsMode(AUTO_CAPS);
+ // Load keyboard, should be in automatic shifted.
+ loadKeyboard(ALPHABET_AUTOMATIC_SHIFTED);
+ // Update shift state, remained in automatic shifted.
+ updateShiftState(ALPHABET_AUTOMATIC_SHIFTED);
+
+ // Press/release shift key, enter alphabet.
+ pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_UNSHIFTED);
+ // Press/release shift key, enter alphabet shifted.
+ pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
+ // Update shift state, enter to automatic shifted (not alphabet shifted).
+ updateShiftState(ALPHABET_AUTOMATIC_SHIFTED);
+
+ // Long press shift key, enter alphabet shift locked.
+ longPressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_SHIFT_LOCKED);
+ // Update shift state, remained in alphabet shift locked (not automatic shifted).
+ updateShiftState(ALPHABET_SHIFT_LOCKED);
+ // Long press shift key, back to alphabet.
+ longPressAndReleaseKey(CODE_SHIFT, ALPHABET_SHIFT_LOCK_SHIFTED, ALPHABET_UNSHIFTED);
+
+ // Load keyboard, should be in automatic shifted.
+ loadKeyboard(ALPHABET_AUTOMATIC_SHIFTED);
+ // Press/release "?123" key, enter into symbols.
+ pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
+ // Update shift state, remained in symbols.
+ updateShiftState(SYMBOLS_UNSHIFTED);
+
+ // Press/release "=\<" key, enter symbols shifted.
+ pressAndReleaseKey(CODE_SHIFT, SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
+ // Update shift state, remained in symbols shifted.
+ updateShiftState(SYMBOLS_SHIFTED);
+ }
+
+ // Sliding input in alphabet.
+ public void testSlidingAlphabet() {
+ // Alphabet -> shift key + letter -> alphabet.
+ // Press and slide from shift key, enter alphabet shifted.
+ pressAndSlideFromKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
+ // Enter/release letter key, switch back to alphabet.
+ pressAndReleaseKey('Z', ALPHABET_MANUAL_SHIFTED, ALPHABET_UNSHIFTED);
+
+ // Alphabet -> "?123" key + letter -> alphabet.
+ // Press and slide from "123?" key, enter symbols.
+ pressAndSlideFromKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
+ // Enter/release into symbol letter key, switch back to alphabet.
+ pressAndReleaseKey('!', SYMBOLS_UNSHIFTED, ALPHABET_UNSHIFTED);
+
+ // Alphabet shifted -> shift key + letter -> alphabet.
+ // Press/release shift key, enter alphabet shifted.
+ pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
+ // Press and slide from shift key, remain alphabet shifted.
+ pressAndSlideFromKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
+ // Enter/release letter key, switch back to alphabet (not alphabet shifted).
+ pressAndReleaseKey('Z', ALPHABET_MANUAL_SHIFTED, ALPHABET_UNSHIFTED);
+
+ // Alphabet shifted -> "?123" key + letter -> alphabet.
+ // Press/release shift key, enter alphabet shifted.
+ pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
+ // Press and slide from "123?" key, enter symbols.
+ pressAndSlideFromKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
+ // Enter/release into symbol letter key, switch back to alphabet (not alphabet shifted).
+ pressAndReleaseKey('!', SYMBOLS_UNSHIFTED, ALPHABET_UNSHIFTED);
+
+ // Alphabet shift locked -> shift key + letter -> alphabet shift locked.
+ // Long press shift key, enter alphabet shift locked.
+ longPressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_SHIFT_LOCKED);
+ // Press and slide from "123?" key, enter symbols.
+ pressAndSlideFromKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
+ // Enter/release into symbol letter key, switch back to alphabet shift locked.
+ pressAndReleaseKey('!', SYMBOLS_UNSHIFTED, ALPHABET_SHIFT_LOCKED);
+
+ // Alphabet shift locked -> "?123" key + letter -> alphabet shift locked.
+ // Press and slide from shift key, enter alphabet shifted.
+ pressAndSlideFromKey(CODE_SHIFT, ALPHABET_SHIFT_LOCK_SHIFTED, ALPHABET_SHIFT_LOCKED);
+ // Enter/release letter key, switch back to shift locked.
+ pressAndReleaseKey('Z', ALPHABET_SHIFT_LOCKED, ALPHABET_SHIFT_LOCKED);
+ }
+
+ // Sliding input in symbols.
+ public void testSlidingSymbols() {
+ // Symbols -> "=\<" key + letter -> symbols.
+ // Press/release "?123" key, enter into symbols.
+ pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
+ // Press and slide from shift key, enter symols shifted.
+ pressAndSlideFromKey(CODE_SHIFT, SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
+ // Enter/release symbol shifted letter key, switch back to symbols.
+ pressAndReleaseKey('~', SYMBOLS_SHIFTED, SYMBOLS_UNSHIFTED);
+
+ // Symbols -> "ABC" key + letter -> Symbols.
+ // Press and slide from "ABC" key, enter alphabet.
+ pressAndSlideFromKey(CODE_SYMBOL, ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED);
+ // Enter/release letter key, switch back to symbols.
+ pressAndReleaseKey('a', ALPHABET_UNSHIFTED, SYMBOLS_UNSHIFTED);
+ // Press/release "ABC" key, switch to alphabet.
+ pressAndReleaseKey(CODE_SYMBOL, ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED);
+
+ // Alphabet shifted -> symbols -> "ABC" key + letter -> symbols ->
+ // alphabet.
+ // Load keyboard
+ loadKeyboard(ALPHABET_UNSHIFTED);
+ // Press/release shift key, enter alphabet shifted.
+ pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
+ // Press/release "?123" key, enter into symbols.
+ pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
+ // Press and slide from "ABC" key.
+ pressAndSlideFromKey(CODE_SYMBOL, ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED);
+ // Enter/release letter key, switch back to symbols.
+ pressAndReleaseKey('a', ALPHABET_UNSHIFTED, SYMBOLS_UNSHIFTED);
+ // Press/release "ABC" key, switch to alphabet (not alphabet shifted).
+ pressAndReleaseKey(CODE_SYMBOL, ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED);
+
+ // Alphabet shift locked -> symbols -> "ABC" key + letter -> symbols ->
+ // alphabet shift locked.
+ // Load keyboard
+ loadKeyboard(ALPHABET_UNSHIFTED);
+ // Long press shift key, enter alphabet shift locked.
+ longPressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_SHIFT_LOCKED);
+ // Press/release "?123" key, enter into symbols.
+ pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
+ // Press and slide from "ABC" key, enter alphabet shift locked.
+ pressAndSlideFromKey(CODE_SYMBOL, ALPHABET_SHIFT_LOCKED, ALPHABET_SHIFT_LOCKED);
+ // Enter/release letter key, switch back to symbols.
+ pressAndReleaseKey('A', ALPHABET_SHIFT_LOCKED, SYMBOLS_UNSHIFTED);
+ // Press/release "ABC" key, switch to alphabet shift locked.
+ pressAndReleaseKey(CODE_SYMBOL, ALPHABET_SHIFT_LOCKED, ALPHABET_SHIFT_LOCKED);
+
+ // Alphabet shift locked -> symbols -> "=\<" key + letter -> symbols ->
+ // alphabet shift locked.
+ // Load keyboard
+ loadKeyboard(ALPHABET_UNSHIFTED);
+ // Long press shift key, enter alphabet shift locked.
+ longPressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_SHIFT_LOCKED);
+ // Press/release "?123" key, enter into symbols.
+ pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
+ // Press and slide from "=\<" key, enter symbols shifted.
+ pressAndSlideFromKey(CODE_SHIFT, SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
+ // Enter/release symbols shift letter key, switch back to symbols.
+ pressAndReleaseKey('~', SYMBOLS_SHIFTED, SYMBOLS_UNSHIFTED);
+ // Press/release "ABC" key, switch to alphabet shift locked.
+ pressAndReleaseKey(CODE_SYMBOL, ALPHABET_SHIFT_LOCKED, ALPHABET_SHIFT_LOCKED);
+ }
+
+ // Sliding input in symbols shifted.
+ public void testSlidingSymbolsShifted() {
+ // Symbols shifted -> "?123" + letter -> symbols shifted.
+ // Press/release "?123" key, enter into symbols.
+ pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
+ // Press/release "=\<" key, enter into symbols shifted.
+ pressAndReleaseKey(CODE_SHIFT, SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
+ // Press and slide from shift key, enter symbols.
+ pressAndSlideFromKey(CODE_SHIFT, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
+ // Enter/release symbol letter key, switch back to symbols shifted.
+ pressAndReleaseKey('1', SYMBOLS_UNSHIFTED, SYMBOLS_SHIFTED);
+
+ // Symbols shifted -> "ABC" key + letter -> symbols shifted.
+ // Press and slide from "ABC" key, enter alphabet.
+ pressAndSlideFromKey(CODE_SYMBOL, ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED);
+ // Enter/release letter key, switch back to symbols shifted.
+ pressAndReleaseKey('a', ALPHABET_UNSHIFTED, SYMBOLS_SHIFTED);
+ // Press/release "ABC" key, switch to alphabet.
+ pressAndReleaseKey(CODE_SYMBOL, ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED);
+
+ // Alphabet shifted -> symbols shifted -> "ABC" + letter -> symbols shifted ->
+ // alphabet.
+ // Load keyboard
+ loadKeyboard(ALPHABET_UNSHIFTED);
+ // Press/release shift key, enter alphabet shifted.
+ pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
+ // Press/release "?123" key, enter into symbols.
+ pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
+ // Press/release "=\<" key, enter into symbols shifted.
+ pressAndReleaseKey(CODE_SHIFT, SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
+ // Press and slide from "ABC" key.
+ pressAndSlideFromKey(CODE_SYMBOL, ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED);
+ // Enter/release letter key, switch back to symbols shifted.
+ pressAndReleaseKey('a', ALPHABET_UNSHIFTED, SYMBOLS_SHIFTED);
+ // Press/release "ABC" key, switch to alphabet (not alphabet shifted).
+ pressAndReleaseKey(CODE_SYMBOL, ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED);
+
+ // Alphabet shift locked -> symbols shifted -> "ABC" + letter -> symbols shifted ->
+ // alphabet shift locked.
+ // Load keyboard
+ loadKeyboard(ALPHABET_UNSHIFTED);
+ // Long press shift key, enter alphabet shift locked.
+ longPressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_SHIFT_LOCKED);
+ // Press/release "?123" key, enter into symbols.
+ pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
+ // Press/release "=\<" key, enter into symbols shifted.
+ pressAndReleaseKey(CODE_SHIFT, SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
+ // Press and slide from "ABC" key.
+ pressAndSlideFromKey(CODE_SYMBOL, ALPHABET_SHIFT_LOCKED, ALPHABET_SHIFT_LOCKED);
+ // Enter/release letter key, switch back to symbols shifted.
+ pressAndReleaseKey('A', ALPHABET_SHIFT_LOCKED, SYMBOLS_SHIFTED);
+ // Press/release "ABC" key, switch to alphabet shift locked.
+ pressAndReleaseKey(CODE_SYMBOL, ALPHABET_SHIFT_LOCKED, ALPHABET_SHIFT_LOCKED);
+
+ // Alphabet shift locked -> symbols shifted -> "?123" + letter -> symbols shifted ->
+ // alphabet shift locked.
+ // Load keyboard
+ loadKeyboard(ALPHABET_UNSHIFTED);
+ // Long press shift key, enter alphabet shift locked.
+ longPressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_SHIFT_LOCKED);
+ // Press/release "?123" key, enter into symbols.
+ pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
+ // Press/release "=\<" key, enter into symbols shifted.
+ pressAndReleaseKey(CODE_SHIFT, SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
+ // Press and slide from "?123" key.
+ pressAndSlideFromKey(CODE_SHIFT, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
+ // Enter/release symbol letter key, switch back to symbols shifted.
+ pressAndReleaseKey('1', SYMBOLS_UNSHIFTED, SYMBOLS_SHIFTED);
+ // Press/release "ABC" key, switch to alphabet shift locked.
+ pressAndReleaseKey(CODE_SYMBOL, ALPHABET_SHIFT_LOCKED, ALPHABET_SHIFT_LOCKED);
+ }
+
+ // Change focus to new text field.
+ public void testChangeFocus() {
+ // Press/release shift key.
+ pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
+ // Change focus to new text field.
+ loadKeyboard(ALPHABET_UNSHIFTED);
+
+ // Long press shift key, enter alphabet shift locked.
+ longPressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_SHIFT_LOCKED);
+ // Change focus to new text field.
+ loadKeyboard(ALPHABET_UNSHIFTED);
+
+ // Press/release "?123" key.
+ pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
+ // Change focus to new text field.
+ loadKeyboard(ALPHABET_UNSHIFTED);
+
+ // Press/release "?123" key.
+ pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
+ // Press/release "=\<" key.
+ pressAndReleaseKey(CODE_SHIFT, SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
+ // Change focus to new text field.
+ loadKeyboard(ALPHABET_UNSHIFTED);
+ }
+
+ // Change focus to auto caps text field.
+ public void testChangeFocusAutoCaps() {
+ // Set auto caps mode on.
+ setAutoCapsMode(AUTO_CAPS);
+
+ // Update shift state.
+ updateShiftState(ALPHABET_AUTOMATIC_SHIFTED);
+ // Change focus to new text field.
+ loadKeyboard(ALPHABET_AUTOMATIC_SHIFTED);
+
+ // Press/release shift key, enter alphabet.
+ pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_UNSHIFTED);
+ // Change focus to new text field.
+ loadKeyboard(ALPHABET_AUTOMATIC_SHIFTED);
+
+ // Long press shift key, enter alphabet shift locked.
+ longPressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_SHIFT_LOCKED);
+ // Change focus to new text field.
+ loadKeyboard(ALPHABET_AUTOMATIC_SHIFTED);
+
+ // Press/release "?123" key.
+ pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
+ // Change focus to new text field.
+ loadKeyboard(ALPHABET_AUTOMATIC_SHIFTED);
+
+ // Press/release "?123" key.
+ pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
+ // Press/release "=\<" key.
+ pressAndReleaseKey(CODE_SHIFT, SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
+ // Change focus to new text field.
+ loadKeyboard(ALPHABET_AUTOMATIC_SHIFTED);
+ }
+
+ // Change orientation.
+ public void testChangeOrientation() {
+ // Alphabet -> rotate -> alphabet.
+ updateShiftState(ALPHABET_UNSHIFTED);
+ // Rotate device, remain in alphabet.
+ rotateDevice(ALPHABET_UNSHIFTED);
+
+ // Alphabet shifted -> rotate -> alphabet shifted.
+ // Press/release shift key, enter alphabet shifted.
+ pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
+ // Rotate device, remain in alphabet shifted.
+ rotateDevice(ALPHABET_MANUAL_SHIFTED);
+
+ // Alphabet shift locked -> rotate -> alphabet shift locked.
+ // Long press shift key, enter alphabet shift locked.
+ longPressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_SHIFT_LOCKED);
+ // Rotate device, remain in alphabet shift locked.
+ rotateDevice(ALPHABET_SHIFT_LOCKED);
+
+ // Alphabet shift locked -> symbols -> rotate -> symbols ->
+ // Alphabet shift locked.
+ // Press/release "?123" key, enter symbols.
+ pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
+ // Rotate device, remain in symbols,
+ rotateDevice(SYMBOLS_UNSHIFTED);
+ // Press/release "ABC" key, alphabet shift locked state should be maintained.
+ pressAndReleaseKey(CODE_SYMBOL, ALPHABET_SHIFT_LOCKED, ALPHABET_SHIFT_LOCKED);
+
+ // Alphabet shift locked -> symbols shifted -> rotate -> symbols shifted ->
+ // Alphabet shift locked.
+ // Press/release "?123" key, enter symbols.
+ pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
+ // Press/release "=\<" key, enter symbols shifted.
+ pressAndReleaseKey(CODE_SHIFT, SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
+ // Rotate device, remain in symbols shifted.
+ rotateDevice(SYMBOLS_SHIFTED);
+ // Press/release "ABC" key, alphabet shift locked state should be maintained.
+ pressAndReleaseKey(CODE_SYMBOL, ALPHABET_SHIFT_LOCKED, ALPHABET_SHIFT_LOCKED);
+
+ // Alphabet shift locked -> symbols shifted -> alphabet shift locked -> rotate ->
+ // Alphabet shift locked -> symbols.
+ // Press/release "?123" key, enter symbols.
+ pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
+ // Press/release "=\<" key, enter symbols shifted.
+ pressAndReleaseKey(CODE_SHIFT, SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
+ // Press/release "ABC" key, enter alphabet shift locked.
+ pressAndReleaseKey(CODE_SYMBOL, ALPHABET_SHIFT_LOCKED, ALPHABET_SHIFT_LOCKED);
+ // Rotate device, remain in alphabet shift locked.
+ rotateDevice(ALPHABET_SHIFT_LOCKED);
+ // Press/release "?123" key, enter symbols (not symbols shifted).
+ pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
+
+ // Alphabet -> symbols shifted -> alphabet -> rotate ->
+ // Alphabet -> symbols.
+ loadKeyboard(ALPHABET_UNSHIFTED);
+ // Press/release "?123" key, enter symbols.
+ pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
+ // Press/release "=\<" key, enter symbols shifted.
+ pressAndReleaseKey(CODE_SHIFT, SYMBOLS_SHIFTED, SYMBOLS_SHIFTED);
+ // Press/release "ABC" key, enter alphabet.
+ pressAndReleaseKey(CODE_SYMBOL, ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED);
+ // Rotate device, remain in alphabet shift locked.
+ rotateDevice(ALPHABET_UNSHIFTED);
+ // Press/release "?123" key, enter symbols (not symbols shifted).
+ pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED);
+ }
+
+ // Rapidly type shift key.
+ public void testRapidShiftTyping() {
+ // Press/release shift key
+ pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
+ // Rapidly press/release letter key.
+ secondPressAndReleaseKey('J', ALPHABET_MANUAL_SHIFTED, ALPHABET_UNSHIFTED);
+ // Rapidly press/release shift key.
+ secondPressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
+ // Rapidly press/release letter key.
+ secondPressAndReleaseKey('J', ALPHABET_MANUAL_SHIFTED, ALPHABET_UNSHIFTED);
+ // Rapidly press/release shift key.
+ secondPressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
+ // Rapidly press/release letter key.
+ secondPressAndReleaseKey('J', ALPHABET_MANUAL_SHIFTED, ALPHABET_UNSHIFTED);
+
+ // Press/release shift key to enter alphabet manual shifted.
+ pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
+ // Press/release shift key
+ pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_UNSHIFTED);
+ // Rapidly press/release letter key.
+ secondPressAndReleaseKey('j', ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED);
+ // Rapidly press/release shift key.
+ secondPressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
+ // Rapidly press/release letter key.
+ secondPressAndReleaseKey('J', ALPHABET_MANUAL_SHIFTED, ALPHABET_UNSHIFTED);
+ // Rapidly press/release shift key.
+ secondPressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
+ // Rapidly press/release letter key.
+ secondPressAndReleaseKey('J', ALPHABET_MANUAL_SHIFTED, ALPHABET_UNSHIFTED);
+
+ // Long press shift key to enter alphabet shift locked.
+ longPressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_SHIFT_LOCKED);
+ // Press/release shift key
+ pressAndReleaseKey(CODE_SHIFT, ALPHABET_SHIFT_LOCK_SHIFTED, ALPHABET_UNSHIFTED);
+ // Rapidly press/release letter key.
+ secondPressAndReleaseKey('j', ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED);
+ // Rapidly press/release shift key.
+ secondPressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
+ // Rapidly press/release letter key.
+ secondPressAndReleaseKey('J', ALPHABET_MANUAL_SHIFTED, ALPHABET_UNSHIFTED);
+ // Rapidly press/release shift key.
+ secondPressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
+ // Rapidly press/release letter key.
+ secondPressAndReleaseKey('J', ALPHABET_MANUAL_SHIFTED, ALPHABET_UNSHIFTED);
+
+ // Set auto caps mode on.
+ setAutoCapsMode(AUTO_CAPS);
+ // Press/release auto caps trigger letter to enter alphabet automatic shifted.
+ pressAndReleaseKey(CODE_AUTO_CAPS_TRIGGER, ALPHABET_UNSHIFTED, ALPHABET_AUTOMATIC_SHIFTED);
+ // Press/release shift key
+ pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_UNSHIFTED);
+ // Rapidly press/release letter key.
+ secondPressAndReleaseKey('j', ALPHABET_UNSHIFTED, ALPHABET_UNSHIFTED);
+ // Rapidly press/release shift key.
+ secondPressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
+ // Rapidly press/release letter key.
+ secondPressAndReleaseKey('J', ALPHABET_MANUAL_SHIFTED, ALPHABET_UNSHIFTED);
+ // Rapidly press/release shift key.
+ secondPressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED);
+ // Rapidly press/release letter key.
+ secondPressAndReleaseKey('J', ALPHABET_MANUAL_SHIFTED, ALPHABET_UNSHIFTED);
+ }
+}
diff --git a/tests/src/com/android/inputmethod/keyboard/internal/KeyboardStateTestsBase.java b/tests/src/com/android/inputmethod/keyboard/internal/KeyboardStateTestsBase.java
new file mode 100644
index 000000000..96a54668c
--- /dev/null
+++ b/tests/src/com/android/inputmethod/keyboard/internal/KeyboardStateTestsBase.java
@@ -0,0 +1,120 @@
+/*
+ * Copyright (C) 2012 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
+package com.android.inputmethod.keyboard.internal;
+
+import android.test.AndroidTestCase;
+
+public class KeyboardStateTestsBase extends AndroidTestCase
+ implements MockKeyboardSwitcher.Constants {
+ protected MockKeyboardSwitcher mSwitcher;
+
+ private String mLayoutSwitchBackSymbols = "";
+
+ @Override
+ protected void setUp() throws Exception {
+ super.setUp();
+
+ mSwitcher = new MockKeyboardSwitcher();
+ mSwitcher.setAutoCapsMode(NO_AUTO_CAPS);
+
+ loadKeyboard(ALPHABET_UNSHIFTED);
+ }
+
+ public void setAutoCapsMode(boolean autoCaps) {
+ mSwitcher.setAutoCapsMode(autoCaps);
+ }
+
+ public void setLayoutSwitchBackSymbols(String switchBackSymbols) {
+ mLayoutSwitchBackSymbols = switchBackSymbols;
+ }
+
+ private static void assertLayout(int expected, int actual) {
+ assertTrue("expected=" + MockKeyboardSwitcher.getLayoutName(expected)
+ + " actual=" + MockKeyboardSwitcher.getLayoutName(actual),
+ expected == actual);
+ }
+
+ public void updateShiftState(int afterUpdate) {
+ mSwitcher.updateShiftState();
+ assertLayout(afterUpdate, mSwitcher.getLayoutId());
+ }
+
+ public void loadKeyboard(int afterLoad) {
+ mSwitcher.loadKeyboard(mLayoutSwitchBackSymbols);
+ updateShiftState(afterLoad);
+ }
+
+ public void rotateDevice(int afterRotate) {
+ mSwitcher.saveKeyboardState();
+ mSwitcher.loadKeyboard(mLayoutSwitchBackSymbols);
+ assertLayout(afterRotate, mSwitcher.getLayoutId());
+ }
+
+ private void pressKeyWithoutTimerExpire(int code, int afterPress) {
+ mSwitcher.onPressKey(code);
+ assertLayout(afterPress, mSwitcher.getLayoutId());
+ }
+
+ public void pressKey(int code, int afterPress) {
+ mSwitcher.expireDoubleTapTimeout();
+ pressKeyWithoutTimerExpire(code, afterPress);
+ }
+
+ public void releaseKey(int code, int afterRelease) {
+ mSwitcher.onCodeInput(code, SINGLE);
+ mSwitcher.onReleaseKey(code, NOT_SLIDING);
+ assertLayout(afterRelease, mSwitcher.getLayoutId());
+ }
+
+ public void pressAndReleaseKey(int code, int afterPress, int afterRelease) {
+ pressKey(code, afterPress);
+ releaseKey(code, afterRelease);
+ }
+
+ public void chordingPressKey(int code, int afterPress) {
+ pressKey(code, afterPress);
+ }
+
+ public void chordingReleaseKey(int code, int afterRelease) {
+ mSwitcher.onCodeInput(code, MULTI);
+ mSwitcher.onReleaseKey(code, NOT_SLIDING);
+ assertLayout(afterRelease, mSwitcher.getLayoutId());
+ }
+
+ public void chordingPressAndReleaseKey(int code, int afterPress, int afterRelease) {
+ chordingPressKey(code, afterPress);
+ chordingReleaseKey(code, afterRelease);
+ }
+
+ public void pressAndSlideFromKey(int code, int afterPress, int afterSlide) {
+ pressKey(code, afterPress);
+ mSwitcher.onReleaseKey(code, SLIDING);
+ assertLayout(afterSlide, mSwitcher.getLayoutId());
+ }
+
+ public void longPressAndReleaseKey(int code, int afterPress, int afterLongPress) {
+ pressKey(code, afterPress);
+ mSwitcher.onLongPressTimeout(code);
+ assertLayout(afterLongPress, mSwitcher.getLayoutId());
+ releaseKey(code, afterLongPress);
+ }
+
+ public void secondPressAndReleaseKey(int code, int afterPress, int afterRelease) {
+ pressKeyWithoutTimerExpire(code, afterPress);
+ releaseKey(code, afterRelease);
+ }
+}
diff --git a/tests/src/com/android/inputmethod/keyboard/internal/MockKeyboardSwitcher.java b/tests/src/com/android/inputmethod/keyboard/internal/MockKeyboardSwitcher.java
new file mode 100644
index 000000000..999e08a8d
--- /dev/null
+++ b/tests/src/com/android/inputmethod/keyboard/internal/MockKeyboardSwitcher.java
@@ -0,0 +1,193 @@
+/*
+ * Copyright (C) 2012 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
+package com.android.inputmethod.keyboard.internal;
+
+import com.android.inputmethod.keyboard.Keyboard;
+
+public class MockKeyboardSwitcher implements KeyboardState.SwitchActions {
+ public interface Constants {
+ // Argument for {@link KeyboardState#onPressKey} and {@link KeyboardState#onReleaseKey}.
+ public static final boolean NOT_SLIDING = false;
+ public static final boolean SLIDING = true;
+ // Argument for {@link KeyboardState#onCodeInput}.
+ public static final boolean SINGLE = true;
+ public static final boolean MULTI = false;
+ public static final boolean NO_AUTO_CAPS = false;
+ public static final boolean AUTO_CAPS = true;
+
+ public static final int CODE_SHIFT = Keyboard.CODE_SHIFT;
+ public static final int CODE_SYMBOL = Keyboard.CODE_SWITCH_ALPHA_SYMBOL;
+ public static final int CODE_SPACE = Keyboard.CODE_SPACE;
+ public static final int CODE_AUTO_CAPS_TRIGGER = Keyboard.CODE_SPACE;
+
+ public static final int ALPHABET_UNSHIFTED = 0;
+ public static final int ALPHABET_MANUAL_SHIFTED = 1;
+ public static final int ALPHABET_AUTOMATIC_SHIFTED = 2;
+ public static final int ALPHABET_SHIFT_LOCKED = 3;
+ public static final int ALPHABET_SHIFT_LOCK_SHIFTED = 4;
+ public static final int SYMBOLS_UNSHIFTED = 5;
+ public static final int SYMBOLS_SHIFTED = 6;
+ }
+
+ private int mLayout = Constants.ALPHABET_UNSHIFTED;
+
+ private boolean mAutoCapsMode = Constants.NO_AUTO_CAPS;
+ // Following InputConnection's behavior. Simulating InputType.TYPE_TEXT_FLAG_CAP_WORDS.
+ private boolean mAutoCapsState = true;
+
+ private boolean mIsInDoubleTapTimeout;
+ private int mLongPressTimeoutCode;
+
+ private final KeyboardState mState = new KeyboardState(this);
+
+ public int getLayoutId() {
+ return mLayout;
+ }
+
+ public static String getLayoutName(int layoutId) {
+ switch (layoutId) {
+ case Constants.ALPHABET_UNSHIFTED: return "ALPHABET_UNSHIFTED";
+ case Constants.ALPHABET_MANUAL_SHIFTED: return "ALPHABET_MANUAL_SHIFTED";
+ case Constants.ALPHABET_AUTOMATIC_SHIFTED: return "ALPHABET_AUTOMATIC_SHIFTED";
+ case Constants.ALPHABET_SHIFT_LOCKED: return "ALPHABET_SHIFT_LOCKED";
+ case Constants.ALPHABET_SHIFT_LOCK_SHIFTED: return "ALPHABET_SHIFT_LOCK_SHIFTED";
+ case Constants.SYMBOLS_UNSHIFTED: return "SYMBOLS_UNSHIFTED";
+ case Constants.SYMBOLS_SHIFTED: return "SYMBOLS_SHIFTED";
+ default: return "UNKNOWN<" + layoutId + ">";
+ }
+ }
+
+ public void setAutoCapsMode(boolean autoCaps) {
+ mAutoCapsMode = autoCaps;
+ }
+
+ public void expireDoubleTapTimeout() {
+ mIsInDoubleTapTimeout = false;
+ }
+
+ @Override
+ public void setAlphabetKeyboard() {
+ mLayout = Constants.ALPHABET_UNSHIFTED;
+ }
+
+ @Override
+ public void setAlphabetManualShiftedKeyboard() {
+ mLayout = Constants.ALPHABET_MANUAL_SHIFTED;
+ }
+
+ @Override
+ public void setAlphabetAutomaticShiftedKeyboard() {
+ mLayout = Constants.ALPHABET_AUTOMATIC_SHIFTED;
+ }
+
+ @Override
+ public void setAlphabetShiftLockedKeyboard() {
+ mLayout = Constants.ALPHABET_SHIFT_LOCKED;
+ }
+
+ @Override
+ public void setAlphabetShiftLockShiftedKeyboard() {
+ mLayout = Constants.ALPHABET_SHIFT_LOCK_SHIFTED;
+ }
+
+ @Override
+ public void setSymbolsKeyboard() {
+ mLayout = Constants.SYMBOLS_UNSHIFTED;
+ }
+
+ @Override
+ public void setSymbolsShiftedKeyboard() {
+ mLayout = Constants.SYMBOLS_SHIFTED;
+ }
+
+ @Override
+ public void requestUpdatingShiftState() {
+ mState.onUpdateShiftState(mAutoCapsMode && mAutoCapsState);
+ }
+
+ @Override
+ public void startDoubleTapTimer() {
+ mIsInDoubleTapTimeout = true;
+ }
+
+ @Override
+ public void cancelDoubleTapTimer() {
+ mIsInDoubleTapTimeout = false;
+ }
+
+ @Override
+ public boolean isInDoubleTapTimeout() {
+ return mIsInDoubleTapTimeout;
+ }
+
+ @Override
+ public void startLongPressTimer(int code) {
+ mLongPressTimeoutCode = code;
+ }
+
+ @Override
+ public void cancelLongPressTimer() {
+ mLongPressTimeoutCode = 0;
+ }
+
+ @Override
+ public void hapticAndAudioFeedback(int code) {
+ // Nothing to do.
+ }
+
+ public void onLongPressTimeout(int code) {
+ // TODO: Handle simultaneous long presses.
+ if (mLongPressTimeoutCode == code) {
+ mLongPressTimeoutCode = 0;
+ mState.onLongPressTimeout(code);
+ }
+ }
+
+ public void updateShiftState() {
+ mState.onUpdateShiftState(mAutoCapsMode && mAutoCapsState);
+ }
+
+ public void loadKeyboard(String layoutSwitchBackSymbols) {
+ mState.onLoadKeyboard(layoutSwitchBackSymbols);
+ }
+
+ public void saveKeyboardState() {
+ mState.onSaveKeyboardState();
+ }
+
+ public void onPressKey(int code) {
+ mState.onPressKey(code);
+ }
+
+ public void onReleaseKey(int code, boolean withSliding) {
+ mState.onReleaseKey(code, withSliding);
+ if (mLongPressTimeoutCode == code) {
+ mLongPressTimeoutCode = 0;
+ }
+ }
+
+ public void onCodeInput(int code, boolean isSinglePointer) {
+ if (Keyboard.isLetterCode(code)) {
+ mAutoCapsState = (code == Constants.CODE_AUTO_CAPS_TRIGGER);
+ }
+ mState.onCodeInput(code, isSinglePointer, mAutoCapsMode && mAutoCapsState);
+ }
+
+ public void onCancelInput(boolean isSinglePointer) {
+ mState.onCancelInput(isSinglePointer);
+ }
+} \ No newline at end of file
diff --git a/tests/src/com/android/inputmethod/keyboard/internal/MoreKeySpecParserTests.java b/tests/src/com/android/inputmethod/keyboard/internal/MoreKeySpecParserTests.java
deleted file mode 100644
index 798fca0f5..000000000
--- a/tests/src/com/android/inputmethod/keyboard/internal/MoreKeySpecParserTests.java
+++ /dev/null
@@ -1,220 +0,0 @@
-/*
- * Copyright (C) 2010 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License"); you may not
- * use this file except in compliance with the License. You may obtain a copy of
- * the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
- * License for the specific language governing permissions and limitations under
- * the License.
- */
-
-package com.android.inputmethod.keyboard.internal;
-
-import android.content.res.Resources;
-import android.test.AndroidTestCase;
-
-import com.android.inputmethod.keyboard.Keyboard;
-import com.android.inputmethod.latin.R;
-
-public class MoreKeySpecParserTests extends AndroidTestCase {
- private Resources mRes;
-
- private static final int ICON_SETTINGS_KEY = 5;
- private static final int ICON_UNDEFINED = KeyboardIconsSet.ICON_UNDEFINED;
-
- private static final String CODE_SETTINGS = "@integer/key_settings";
- private static final String ICON_SETTINGS = "@icon/" + ICON_SETTINGS_KEY;
- private static final String CODE_NON_EXISTING = "@integer/non_existing";
- private static final String ICON_NON_EXISTING = "@icon/non_existing";
-
- private int mCodeSettings;
-
- @Override
- protected void setUp() {
- Resources res = getContext().getResources();
- mRes = res;
-
- final String packageName = res.getResourcePackageName(R.string.english_ime_name);
- final int codeId = res.getIdentifier(CODE_SETTINGS.substring(1), null, packageName);
- mCodeSettings = res.getInteger(codeId);
- }
-
- private void assertParser(String message, String moreKeySpec, String expectedLabel,
- String expectedOutputText, int expectedIcon, int expectedCode) {
- String actualLabel = MoreKeySpecParser.getLabel(moreKeySpec);
- assertEquals(message + ": label:", expectedLabel, actualLabel);
-
- String actualOutputText = MoreKeySpecParser.getOutputText(moreKeySpec);
- assertEquals(message + ": ouptputText:", expectedOutputText, actualOutputText);
-
- int actualIcon = MoreKeySpecParser.getIconId(moreKeySpec);
- assertEquals(message + ": icon:", expectedIcon, actualIcon);
-
- int actualCode = MoreKeySpecParser.getCode(mRes, moreKeySpec);
- assertEquals(message + ": codes value:", expectedCode, actualCode);
- }
-
- private void assertParserError(String message, String moreKeySpec, String expectedLabel,
- String expectedOutputText, int expectedIcon, int expectedCode) {
- try {
- assertParser(message, moreKeySpec, expectedLabel, expectedOutputText, expectedIcon,
- expectedCode);
- fail(message);
- } catch (MoreKeySpecParser.MoreKeySpecParserError pcpe) {
- // success.
- }
- }
-
- public void testSingleLetter() {
- assertParser("Single letter", "a",
- "a", null, ICON_UNDEFINED, 'a');
- assertParser("Single escaped bar", "\\|",
- "|", null, ICON_UNDEFINED, '|');
- assertParser("Single escaped escape", "\\\\",
- "\\", null, ICON_UNDEFINED, '\\');
- assertParser("Single comma", ",",
- ",", null, ICON_UNDEFINED, ',');
- assertParser("Single escaped comma", "\\,",
- ",", null, ICON_UNDEFINED, ',');
- assertParser("Single escaped letter", "\\a",
- "a", null, ICON_UNDEFINED, 'a');
- assertParser("Single at", "@",
- "@", null, ICON_UNDEFINED, '@');
- assertParser("Single escaped at", "\\@",
- "@", null, ICON_UNDEFINED, '@');
- assertParser("Single letter with outputText", "a|abc",
- "a", "abc", ICON_UNDEFINED, Keyboard.CODE_DUMMY);
- assertParser("Single letter with escaped outputText", "a|a\\|c",
- "a", "a|c", ICON_UNDEFINED, Keyboard.CODE_DUMMY);
- assertParser("Single letter with comma outputText", "a|a,b",
- "a", "a,b", ICON_UNDEFINED, Keyboard.CODE_DUMMY);
- assertParser("Single letter with escaped comma outputText", "a|a\\,b",
- "a", "a,b", ICON_UNDEFINED, Keyboard.CODE_DUMMY);
- assertParser("Single letter with outputText starts with at", "a|@bc",
- "a", "@bc", ICON_UNDEFINED, Keyboard.CODE_DUMMY);
- assertParser("Single letter with outputText contains at", "a|a@c",
- "a", "a@c", ICON_UNDEFINED, Keyboard.CODE_DUMMY);
- assertParser("Single letter with escaped at outputText", "a|\\@bc",
- "a", "@bc", ICON_UNDEFINED, Keyboard.CODE_DUMMY);
- assertParser("Single escaped escape with outputText", "\\\\|\\\\",
- "\\", "\\", ICON_UNDEFINED, Keyboard.CODE_DUMMY);
- assertParser("Single escaped bar with outputText", "\\||\\|",
- "|", "|", ICON_UNDEFINED, Keyboard.CODE_DUMMY);
- assertParser("Single letter with code", "a|" + CODE_SETTINGS,
- "a", null, ICON_UNDEFINED, mCodeSettings);
- }
-
- public void testLabel() {
- assertParser("Simple label", "abc",
- "abc", "abc", ICON_UNDEFINED, Keyboard.CODE_DUMMY);
- assertParser("Label with escaped bar", "a\\|c",
- "a|c", "a|c", ICON_UNDEFINED, Keyboard.CODE_DUMMY);
- assertParser("Label with escaped escape", "a\\\\c",
- "a\\c", "a\\c", ICON_UNDEFINED, Keyboard.CODE_DUMMY);
- assertParser("Label with comma", "a,c",
- "a,c", "a,c", ICON_UNDEFINED, Keyboard.CODE_DUMMY);
- assertParser("Label with escaped comma", "a\\,c",
- "a,c", "a,c", ICON_UNDEFINED, Keyboard.CODE_DUMMY);
- assertParser("Label starts with at", "@bc",
- "@bc", "@bc", ICON_UNDEFINED, Keyboard.CODE_DUMMY);
- assertParser("Label contains at", "a@c",
- "a@c", "a@c", ICON_UNDEFINED, Keyboard.CODE_DUMMY);
- assertParser("Label with escaped at", "\\@bc",
- "@bc", "@bc", ICON_UNDEFINED, Keyboard.CODE_DUMMY);
- assertParser("Label with escaped letter", "\\abc",
- "abc", "abc", ICON_UNDEFINED, Keyboard.CODE_DUMMY);
- assertParser("Label with outputText", "abc|def",
- "abc", "def", ICON_UNDEFINED, Keyboard.CODE_DUMMY);
- assertParser("Label with comma and outputText", "a,c|def",
- "a,c", "def", ICON_UNDEFINED, Keyboard.CODE_DUMMY);
- assertParser("Escaped comma label with outputText", "a\\,c|def",
- "a,c", "def", ICON_UNDEFINED, Keyboard.CODE_DUMMY);
- assertParser("Escaped label with outputText", "a\\|c|def",
- "a|c", "def", ICON_UNDEFINED, Keyboard.CODE_DUMMY);
- assertParser("Label with escaped bar outputText", "abc|d\\|f",
- "abc", "d|f", ICON_UNDEFINED, Keyboard.CODE_DUMMY);
- assertParser("Escaped escape label with outputText", "a\\\\|def",
- "a\\", "def", ICON_UNDEFINED, Keyboard.CODE_DUMMY);
- assertParser("Label starts with at and outputText", "@bc|def",
- "@bc", "def", ICON_UNDEFINED, Keyboard.CODE_DUMMY);
- assertParser("Label contains at label and outputText", "a@c|def",
- "a@c", "def", ICON_UNDEFINED, Keyboard.CODE_DUMMY);
- assertParser("Escaped at label with outputText", "\\@bc|def",
- "@bc", "def", ICON_UNDEFINED, Keyboard.CODE_DUMMY);
- assertParser("Label with comma outputText", "abc|a,b",
- "abc", "a,b", ICON_UNDEFINED, Keyboard.CODE_DUMMY);
- assertParser("Label with escaped comma outputText", "abc|a\\,b",
- "abc", "a,b", ICON_UNDEFINED, Keyboard.CODE_DUMMY);
- assertParser("Label with outputText starts with at", "abc|@bc",
- "abc", "@bc", ICON_UNDEFINED, Keyboard.CODE_DUMMY);
- assertParser("Label with outputText contains at", "abc|a@c",
- "abc", "a@c", ICON_UNDEFINED, Keyboard.CODE_DUMMY);
- assertParser("Label with escaped at outputText", "abc|\\@bc",
- "abc", "@bc", ICON_UNDEFINED, Keyboard.CODE_DUMMY);
- assertParser("Label with escaped bar outputText", "abc|d\\|f",
- "abc", "d|f", ICON_UNDEFINED, Keyboard.CODE_DUMMY);
- assertParser("Escaped bar label with escaped bar outputText", "a\\|c|d\\|f",
- "a|c", "d|f", ICON_UNDEFINED, Keyboard.CODE_DUMMY);
- assertParser("Label with code", "abc|" + CODE_SETTINGS,
- "abc", null, ICON_UNDEFINED, mCodeSettings);
- assertParser("Escaped label with code", "a\\|c|" + CODE_SETTINGS,
- "a|c", null, ICON_UNDEFINED, mCodeSettings);
- }
-
- public void testIconAndCode() {
- assertParser("Icon with outputText", ICON_SETTINGS + "|abc",
- null, "abc", ICON_SETTINGS_KEY, Keyboard.CODE_DUMMY);
- assertParser("Icon with outputText starts with at", ICON_SETTINGS + "|@bc",
- null, "@bc", ICON_SETTINGS_KEY, Keyboard.CODE_DUMMY);
- assertParser("Icon with outputText contains at", ICON_SETTINGS + "|a@c",
- null, "a@c", ICON_SETTINGS_KEY, Keyboard.CODE_DUMMY);
- assertParser("Icon with escaped at outputText", ICON_SETTINGS + "|\\@bc",
- null, "@bc", ICON_SETTINGS_KEY, Keyboard.CODE_DUMMY);
- assertParser("Label starts with at and code", "@bc|" + CODE_SETTINGS,
- "@bc", null, ICON_UNDEFINED, mCodeSettings);
- assertParser("Label contains at and code", "a@c|" + CODE_SETTINGS,
- "a@c", null, ICON_UNDEFINED, mCodeSettings);
- assertParser("Escaped at label with code", "\\@bc|" + CODE_SETTINGS,
- "@bc", null, ICON_UNDEFINED, mCodeSettings);
- assertParser("Icon with code", ICON_SETTINGS + "|" + CODE_SETTINGS,
- null, null, ICON_SETTINGS_KEY, mCodeSettings);
- }
-
- public void testFormatError() {
- assertParserError("Empty spec", "", null,
- null, ICON_UNDEFINED, Keyboard.CODE_UNSPECIFIED);
- assertParserError("Empty label with outputText", "|a",
- null, "a", ICON_UNDEFINED, Keyboard.CODE_DUMMY);
- assertParserError("Empty label with code", "|" + CODE_SETTINGS,
- null, null, ICON_UNDEFINED, mCodeSettings);
- assertParserError("Empty outputText with label", "a|",
- "a", null, ICON_UNDEFINED, Keyboard.CODE_UNSPECIFIED);
- assertParserError("Empty outputText with icon", ICON_SETTINGS + "|",
- null, null, ICON_SETTINGS_KEY, Keyboard.CODE_UNSPECIFIED);
- assertParserError("Empty icon and code", "|",
- null, null, ICON_UNDEFINED, Keyboard.CODE_UNSPECIFIED);
- assertParserError("Icon without code", ICON_SETTINGS,
- null, null, ICON_SETTINGS_KEY, Keyboard.CODE_DUMMY);
- assertParser("Non existing icon", ICON_NON_EXISTING + "|abc",
- null, "abc", ICON_UNDEFINED, Keyboard.CODE_DUMMY);
- assertParserError("Non existing code", "abc|" + CODE_NON_EXISTING,
- "abc", null, ICON_UNDEFINED, Keyboard.CODE_UNSPECIFIED);
- assertParserError("Third bar at end", "a|b|",
- "a", null, ICON_UNDEFINED, Keyboard.CODE_UNSPECIFIED);
- assertParserError("Multiple bar", "a|b|c",
- "a", null, ICON_UNDEFINED, Keyboard.CODE_UNSPECIFIED);
- assertParserError("Multiple bar with label and code", "a|" + CODE_SETTINGS + "|c",
- "a", null, ICON_UNDEFINED, mCodeSettings);
- assertParserError("Multiple bar with icon and outputText", ICON_SETTINGS + "|b|c",
- null, null, ICON_SETTINGS_KEY, Keyboard.CODE_UNSPECIFIED);
- assertParserError("Multiple bar with icon and code",
- ICON_SETTINGS + "|" + CODE_SETTINGS + "|c",
- null, null, ICON_SETTINGS_KEY, mCodeSettings);
- }
-}
diff --git a/tests/src/com/android/inputmethod/latin/BlueUnderlineTests.java b/tests/src/com/android/inputmethod/latin/BlueUnderlineTests.java
new file mode 100644
index 000000000..81f744da9
--- /dev/null
+++ b/tests/src/com/android/inputmethod/latin/BlueUnderlineTests.java
@@ -0,0 +1,102 @@
+/*
+ * Copyright (C) 2012 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
+package com.android.inputmethod.latin;
+
+import com.android.inputmethod.keyboard.Keyboard;
+
+public class BlueUnderlineTests extends InputTestsBase {
+
+ public void testBlueUnderline() {
+ final String STRING_TO_TYPE = "tgis";
+ final int EXPECTED_SPAN_START = 0;
+ final int EXPECTED_SPAN_END = 4;
+ type(STRING_TO_TYPE);
+ sleep(DELAY_TO_WAIT_FOR_UNDERLINE);
+ runMessages();
+ final Span span = new Span(mTextView.getText());
+ assertEquals("show blue underline, span start", EXPECTED_SPAN_START, span.mStart);
+ assertEquals("show blue underline, span end", EXPECTED_SPAN_END, span.mEnd);
+ assertEquals("show blue underline, span color", true, span.isAutoCorrectionIndicator());
+ }
+
+ public void testBlueUnderlineDisappears() {
+ final String STRING_1_TO_TYPE = "tgis";
+ final String STRING_2_TO_TYPE = "q";
+ final int EXPECTED_SPAN_START = 0;
+ final int EXPECTED_SPAN_END = 5;
+ type(STRING_1_TO_TYPE);
+ sleep(DELAY_TO_WAIT_FOR_UNDERLINE);
+ runMessages();
+ type(STRING_2_TO_TYPE);
+ // We haven't have time to look into the dictionary yet, so the line should still be
+ // blue to avoid any flicker.
+ final Span spanBefore = new Span(mTextView.getText());
+ assertEquals("extend blue underline, span start", EXPECTED_SPAN_START, spanBefore.mStart);
+ assertEquals("extend blue underline, span end", EXPECTED_SPAN_END, spanBefore.mEnd);
+ assertEquals("extend blue underline, span color", true,
+ spanBefore.isAutoCorrectionIndicator());
+ sleep(DELAY_TO_WAIT_FOR_UNDERLINE);
+ runMessages();
+ // Now we have been able to re-evaluate the word, there shouldn't be an auto-correction span
+ final Span spanAfter = new Span(mTextView.getText());
+ assertNull("hide blue underline", spanAfter.mSpan);
+ }
+
+ public void testBlueUnderlineOnBackspace() {
+ final String STRING_TO_TYPE = "tgis";
+ final int EXPECTED_SPAN_START = 0;
+ final int EXPECTED_SPAN_END = 4;
+ type(STRING_TO_TYPE);
+ sleep(DELAY_TO_WAIT_FOR_UNDERLINE);
+ runMessages();
+ type(Keyboard.CODE_SPACE);
+ sleep(DELAY_TO_WAIT_FOR_UNDERLINE);
+ runMessages();
+ type(Keyboard.CODE_DELETE);
+ sleep(DELAY_TO_WAIT_FOR_UNDERLINE);
+ runMessages();
+ type(Keyboard.CODE_DELETE);
+ sleep(DELAY_TO_WAIT_FOR_UNDERLINE);
+ runMessages();
+ final Span span = new Span(mTextView.getText());
+ assertEquals("show blue underline after backspace, span start",
+ EXPECTED_SPAN_START, span.mStart);
+ assertEquals("show blue underline after backspace, span end",
+ EXPECTED_SPAN_END, span.mEnd);
+ assertEquals("show blue underline after backspace, span color", true,
+ span.isAutoCorrectionIndicator());
+ }
+
+ public void testBlueUnderlineDisappearsWhenCursorMoved() {
+ final String STRING_TO_TYPE = "tgis";
+ final int NEW_CURSOR_POSITION = 0;
+ type(STRING_TO_TYPE);
+ sleep(DELAY_TO_WAIT_FOR_UNDERLINE);
+ // Simulate the onUpdateSelection() event
+ mLatinIME.onUpdateSelection(0, 0, STRING_TO_TYPE.length(), STRING_TO_TYPE.length(), -1, -1);
+ runMessages();
+ // Here the blue underline has been set. testBlueUnderline() is testing for this already,
+ // so let's not test it here again.
+ // Now simulate the user moving the cursor.
+ mInputConnection.setSelection(NEW_CURSOR_POSITION, NEW_CURSOR_POSITION);
+ mLatinIME.onUpdateSelection(0, 0, NEW_CURSOR_POSITION, NEW_CURSOR_POSITION, -1, -1);
+ sleep(DELAY_TO_WAIT_FOR_UNDERLINE);
+ runMessages();
+ final Span span = new Span(mTextView.getText());
+ assertNull("blue underline removed when cursor is moved", span.mSpan);
+ }
+}
diff --git a/tests/src/com/android/inputmethod/latin/EditDistanceTests.java b/tests/src/com/android/inputmethod/latin/EditDistanceTests.java
index 75bd04938..c053a49e5 100644
--- a/tests/src/com/android/inputmethod/latin/EditDistanceTests.java
+++ b/tests/src/com/android/inputmethod/latin/EditDistanceTests.java
@@ -37,7 +37,7 @@ public class EditDistanceTests extends AndroidTestCase {
* sitting
*/
public void testExample1() {
- final int dist = Utils.editDistance("kitten", "sitting");
+ final int dist = BinaryDictionary.editDistance("kitten", "sitting");
assertEquals("edit distance between 'kitten' and 'sitting' is 3",
3, dist);
}
@@ -50,26 +50,26 @@ public class EditDistanceTests extends AndroidTestCase {
* S--unday
*/
public void testExample2() {
- final int dist = Utils.editDistance("Saturday", "Sunday");
+ final int dist = BinaryDictionary.editDistance("Saturday", "Sunday");
assertEquals("edit distance between 'Saturday' and 'Sunday' is 3",
3, dist);
}
public void testBothEmpty() {
- final int dist = Utils.editDistance("", "");
+ final int dist = BinaryDictionary.editDistance("", "");
assertEquals("when both string are empty, no edits are needed",
0, dist);
}
public void testFirstArgIsEmpty() {
- final int dist = Utils.editDistance("", "aaaa");
+ final int dist = BinaryDictionary.editDistance("", "aaaa");
assertEquals("when only one string of the arguments is empty,"
+ " the edit distance is the length of the other.",
4, dist);
}
public void testSecoondArgIsEmpty() {
- final int dist = Utils.editDistance("aaaa", "");
+ final int dist = BinaryDictionary.editDistance("aaaa", "");
assertEquals("when only one string of the arguments is empty,"
+ " the edit distance is the length of the other.",
4, dist);
@@ -78,27 +78,27 @@ public class EditDistanceTests extends AndroidTestCase {
public void testSameStrings() {
final String arg1 = "The quick brown fox jumps over the lazy dog.";
final String arg2 = "The quick brown fox jumps over the lazy dog.";
- final int dist = Utils.editDistance(arg1, arg2);
+ final int dist = BinaryDictionary.editDistance(arg1, arg2);
assertEquals("when same strings are passed, distance equals 0.",
0, dist);
}
public void testSameReference() {
final String arg = "The quick brown fox jumps over the lazy dog.";
- final int dist = Utils.editDistance(arg, arg);
+ final int dist = BinaryDictionary.editDistance(arg, arg);
assertEquals("when same string references are passed, the distance equals 0.",
0, dist);
}
public void testNullArg() {
try {
- Utils.editDistance(null, "aaa");
+ BinaryDictionary.editDistance(null, "aaa");
fail("IllegalArgumentException should be thrown.");
} catch (Exception e) {
assertTrue(e instanceof IllegalArgumentException);
}
try {
- Utils.editDistance("aaa", null);
+ BinaryDictionary.editDistance("aaa", null);
fail("IllegalArgumentException should be thrown.");
} catch (Exception e) {
assertTrue(e instanceof IllegalArgumentException);
diff --git a/tests/src/com/android/inputmethod/latin/InputLogicFrenchTests.java b/tests/src/com/android/inputmethod/latin/InputLogicFrenchTests.java
new file mode 100644
index 000000000..5db120d82
--- /dev/null
+++ b/tests/src/com/android/inputmethod/latin/InputLogicFrenchTests.java
@@ -0,0 +1,59 @@
+/*
+ * Copyright (C) 2012 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
+package com.android.inputmethod.latin;
+
+import com.android.inputmethod.keyboard.Keyboard;
+
+public class InputLogicFrenchTests extends InputTestsBase {
+
+ public void testAutoCorrectForFrench() {
+ final String STRING_TO_TYPE = "irq ";
+ final String EXPECTED_RESULT = "ira ";
+ changeLanguage("fr");
+ type(STRING_TO_TYPE);
+ assertEquals("simple auto-correct for French", EXPECTED_RESULT,
+ mTextView.getText().toString());
+ }
+
+ public void testManualPickThenSeparatorForFrench() {
+ final String WORD1_TO_TYPE = "test";
+ final String WORD2_TO_TYPE = "!";
+ final String EXPECTED_RESULT = "test !";
+ changeLanguage("fr");
+ type(WORD1_TO_TYPE);
+ mLatinIME.pickSuggestionManually(0, WORD1_TO_TYPE);
+ type(WORD2_TO_TYPE);
+ assertEquals("manual pick then separator for French", EXPECTED_RESULT,
+ mTextView.getText().toString());
+ }
+
+ public void testWordThenSpaceThenPunctuationFromStripTwiceForFrench() {
+ final String WORD_TO_TYPE = "test ";
+ final String PUNCTUATION_FROM_STRIP = "!";
+ final String EXPECTED_RESULT = "test !!";
+ changeLanguage("fr");
+ type(WORD_TO_TYPE);
+ sleep(DELAY_TO_WAIT_FOR_UNDERLINE);
+ runMessages();
+ assertTrue("type word then type space should display punctuation strip",
+ mLatinIME.isShowingPunctuationList());
+ mLatinIME.pickSuggestionManually(0, PUNCTUATION_FROM_STRIP);
+ mLatinIME.pickSuggestionManually(0, PUNCTUATION_FROM_STRIP);
+ assertEquals("type word then type space then punctuation from strip twice for French",
+ EXPECTED_RESULT, mTextView.getText().toString());
+ }
+}
diff --git a/tests/src/com/android/inputmethod/latin/InputLogicTests.java b/tests/src/com/android/inputmethod/latin/InputLogicTests.java
new file mode 100644
index 000000000..11eb6ab19
--- /dev/null
+++ b/tests/src/com/android/inputmethod/latin/InputLogicTests.java
@@ -0,0 +1,233 @@
+/*
+ * Copyright (C) 2012 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
+package com.android.inputmethod.latin;
+
+import com.android.inputmethod.keyboard.Keyboard;
+
+public class InputLogicTests extends InputTestsBase {
+
+ public void testTypeWord() {
+ final String WORD_TO_TYPE = "abcd";
+ type(WORD_TO_TYPE);
+ assertEquals("type word", WORD_TO_TYPE, mTextView.getText().toString());
+ }
+
+ public void testPickSuggestionThenBackspace() {
+ final String WORD_TO_TYPE = "this";
+ final String EXPECTED_RESULT = "this";
+ type(WORD_TO_TYPE);
+ mLatinIME.pickSuggestionManually(0, WORD_TO_TYPE);
+ mLatinIME.onUpdateSelection(0, 0, WORD_TO_TYPE.length(), WORD_TO_TYPE.length(), -1, -1);
+ type(Keyboard.CODE_DELETE);
+ assertEquals("press suggestion then backspace", EXPECTED_RESULT,
+ mTextView.getText().toString());
+ }
+
+ public void testPickAutoCorrectionThenBackspace() {
+ final String WORD_TO_TYPE = "tgis";
+ final String WORD_TO_PICK = "this";
+ final String EXPECTED_RESULT = "tgis";
+ type(WORD_TO_TYPE);
+ // Choose the auto-correction, which is always in position 0. For "tgis", the
+ // auto-correction should be "this".
+ mLatinIME.pickSuggestionManually(0, WORD_TO_PICK);
+ mLatinIME.onUpdateSelection(0, 0, WORD_TO_TYPE.length(), WORD_TO_TYPE.length(), -1, -1);
+ assertEquals("pick typed word over auto-correction then backspace", WORD_TO_PICK,
+ mTextView.getText().toString());
+ type(Keyboard.CODE_DELETE);
+ assertEquals("pick typed word over auto-correction then backspace", EXPECTED_RESULT,
+ mTextView.getText().toString());
+ }
+
+ public void testPickTypedWordOverAutoCorrectionThenBackspace() {
+ final String WORD_TO_TYPE = "tgis";
+ final String EXPECTED_RESULT = "tgis";
+ type(WORD_TO_TYPE);
+ // Choose the typed word, which should be in position 1 (because position 0 should
+ // be occupied by the "this" auto-correction, as checked by testAutoCorrect())
+ mLatinIME.pickSuggestionManually(1, WORD_TO_TYPE);
+ mLatinIME.onUpdateSelection(0, 0, WORD_TO_TYPE.length(), WORD_TO_TYPE.length(), -1, -1);
+ assertEquals("pick typed word over auto-correction then backspace", WORD_TO_TYPE,
+ mTextView.getText().toString());
+ type(Keyboard.CODE_DELETE);
+ assertEquals("pick typed word over auto-correction then backspace", EXPECTED_RESULT,
+ mTextView.getText().toString());
+ }
+
+ public void testPickDifferentSuggestionThenBackspace() {
+ final String WORD_TO_TYPE = "tgis";
+ final String WORD_TO_PICK = "thus";
+ final String EXPECTED_RESULT = "tgis";
+ type(WORD_TO_TYPE);
+ // Choose the second suggestion, which should be in position 2 and should be "thus"
+ // when "tgis is typed.
+ mLatinIME.pickSuggestionManually(2, WORD_TO_PICK);
+ mLatinIME.onUpdateSelection(0, 0, WORD_TO_TYPE.length(), WORD_TO_TYPE.length(), -1, -1);
+ assertEquals("pick different suggestion then backspace", WORD_TO_PICK,
+ mTextView.getText().toString());
+ type(Keyboard.CODE_DELETE);
+ assertEquals("pick different suggestion then backspace", EXPECTED_RESULT,
+ mTextView.getText().toString());
+ }
+
+ public void testDeleteSelection() {
+ final String STRING_TO_TYPE = "some text delete me some text";
+ final int SELECTION_START = 10;
+ final int SELECTION_END = 19;
+ final String EXPECTED_RESULT = "some text some text";
+ type(STRING_TO_TYPE);
+ // There is no IMF to call onUpdateSelection for us so we must do it by hand.
+ // Send once to simulate the cursor actually responding to the move caused by typing.
+ // This is necessary because LatinIME is bookkeeping to avoid confusing a real cursor
+ // move with a move triggered by LatinIME inputting stuff.
+ mLatinIME.onUpdateSelection(0, 0, STRING_TO_TYPE.length(), STRING_TO_TYPE.length(), -1, -1);
+ mInputConnection.setSelection(SELECTION_START, SELECTION_END);
+ // And now we simulate the user actually selecting some text.
+ mLatinIME.onUpdateSelection(0, 0, SELECTION_START, SELECTION_END, -1, -1);
+ type(Keyboard.CODE_DELETE);
+ assertEquals("delete selection", EXPECTED_RESULT, mTextView.getText().toString());
+ }
+
+ public void testAutoCorrect() {
+ final String STRING_TO_TYPE = "tgis ";
+ final String EXPECTED_RESULT = "this ";
+ type(STRING_TO_TYPE);
+ assertEquals("simple auto-correct", EXPECTED_RESULT, mTextView.getText().toString());
+ }
+
+ public void testAutoCorrectWithPeriod() {
+ final String STRING_TO_TYPE = "tgis.";
+ final String EXPECTED_RESULT = "this.";
+ type(STRING_TO_TYPE);
+ assertEquals("auto-correct with period", EXPECTED_RESULT, mTextView.getText().toString());
+ }
+
+ public void testAutoCorrectWithPeriodThenRevert() {
+ final String STRING_TO_TYPE = "tgis.";
+ final String EXPECTED_RESULT = "tgis.";
+ type(STRING_TO_TYPE);
+ mLatinIME.onUpdateSelection(0, 0, STRING_TO_TYPE.length(), STRING_TO_TYPE.length(), -1, -1);
+ type(Keyboard.CODE_DELETE);
+ assertEquals("auto-correct with period then revert", EXPECTED_RESULT,
+ mTextView.getText().toString());
+ }
+
+ public void testDoubleSpace() {
+ final String STRING_TO_TYPE = "this ";
+ final String EXPECTED_RESULT = "this. ";
+ type(STRING_TO_TYPE);
+ assertEquals("double space make a period", EXPECTED_RESULT, mTextView.getText().toString());
+ }
+
+ public void testCancelDoubleSpace() {
+ final String STRING_TO_TYPE = "this ";
+ final String EXPECTED_RESULT = "this ";
+ type(STRING_TO_TYPE);
+ type(Keyboard.CODE_DELETE);
+ assertEquals("double space make a period", EXPECTED_RESULT, mTextView.getText().toString());
+ }
+
+ public void testBackspaceAtStartAfterAutocorrect() {
+ final String STRING_TO_TYPE = "tgis ";
+ final String EXPECTED_RESULT = "this ";
+ final int NEW_CURSOR_POSITION = 0;
+ type(STRING_TO_TYPE);
+ mLatinIME.onUpdateSelection(0, 0, STRING_TO_TYPE.length(), STRING_TO_TYPE.length(), -1, -1);
+ mInputConnection.setSelection(NEW_CURSOR_POSITION, NEW_CURSOR_POSITION);
+ mLatinIME.onUpdateSelection(0, 0, NEW_CURSOR_POSITION, NEW_CURSOR_POSITION, -1, -1);
+ type(Keyboard.CODE_DELETE);
+ assertEquals("auto correct then move cursor to start of line then backspace",
+ EXPECTED_RESULT, mTextView.getText().toString());
+ }
+
+ public void testAutoCorrectThenMoveCursorThenBackspace() {
+ final String STRING_TO_TYPE = "and tgis ";
+ final String EXPECTED_RESULT = "andthis ";
+ final int NEW_CURSOR_POSITION = STRING_TO_TYPE.indexOf('t');
+ type(STRING_TO_TYPE);
+ mLatinIME.onUpdateSelection(0, 0, STRING_TO_TYPE.length(), STRING_TO_TYPE.length(), -1, -1);
+ mInputConnection.setSelection(NEW_CURSOR_POSITION, NEW_CURSOR_POSITION);
+ mLatinIME.onUpdateSelection(0, 0, NEW_CURSOR_POSITION, NEW_CURSOR_POSITION, -1, -1);
+ type(Keyboard.CODE_DELETE);
+ assertEquals("auto correct then move cursor then backspace",
+ EXPECTED_RESULT, mTextView.getText().toString());
+ }
+
+ public void testNoSpaceAfterManualPick() {
+ final String WORD_TO_TYPE = "this";
+ final String EXPECTED_RESULT = WORD_TO_TYPE;
+ type(WORD_TO_TYPE);
+ mLatinIME.pickSuggestionManually(0, WORD_TO_TYPE);
+ assertEquals("no space after manual pick", EXPECTED_RESULT,
+ mTextView.getText().toString());
+ }
+
+ public void testManualPickThenType() {
+ final String WORD1_TO_TYPE = "this";
+ final String WORD2_TO_TYPE = "is";
+ final String EXPECTED_RESULT = "this is";
+ type(WORD1_TO_TYPE);
+ mLatinIME.pickSuggestionManually(0, WORD1_TO_TYPE);
+ type(WORD2_TO_TYPE);
+ assertEquals("manual pick then type", EXPECTED_RESULT, mTextView.getText().toString());
+ }
+
+ public void testManualPickThenSeparator() {
+ final String WORD1_TO_TYPE = "this";
+ final String WORD2_TO_TYPE = "!";
+ final String EXPECTED_RESULT = "this!";
+ type(WORD1_TO_TYPE);
+ mLatinIME.pickSuggestionManually(0, WORD1_TO_TYPE);
+ type(WORD2_TO_TYPE);
+ assertEquals("manual pick then separator", EXPECTED_RESULT, mTextView.getText().toString());
+ }
+
+ public void testManualPickThenSpaceThenType() {
+ final String WORD1_TO_TYPE = "this";
+ final String WORD2_TO_TYPE = " is";
+ final String EXPECTED_RESULT = "this is";
+ type(WORD1_TO_TYPE);
+ mLatinIME.pickSuggestionManually(0, WORD1_TO_TYPE);
+ type(WORD2_TO_TYPE);
+ assertEquals("manual pick then space then type", EXPECTED_RESULT,
+ mTextView.getText().toString());
+ }
+
+ public void testManualPickThenManualPick() {
+ final String WORD1_TO_TYPE = "this";
+ final String WORD2_TO_PICK = "is";
+ final String EXPECTED_RESULT = "this is";
+ type(WORD1_TO_TYPE);
+ mLatinIME.pickSuggestionManually(0, WORD1_TO_TYPE);
+ // Here we fake picking a word through bigram prediction. This test is taking
+ // advantage of the fact that Latin IME blindly trusts the caller of #pickSuggestionManually
+ // to actually pass the right string.
+ mLatinIME.pickSuggestionManually(1, WORD2_TO_PICK);
+ assertEquals("manual pick then manual pick", EXPECTED_RESULT,
+ mTextView.getText().toString());
+ }
+
+ public void testDeleteWholeComposingWord() {
+ final String WORD_TO_TYPE = "this";
+ type(WORD_TO_TYPE);
+ for (int i = 0; i < WORD_TO_TYPE.length(); ++i) {
+ type(Keyboard.CODE_DELETE);
+ }
+ assertEquals("delete whole composing word", "", mTextView.getText().toString());
+ }
+ // TODO: Add some tests for non-BMP characters
+}
diff --git a/tests/src/com/android/inputmethod/latin/InputTestsBase.java b/tests/src/com/android/inputmethod/latin/InputTestsBase.java
new file mode 100644
index 000000000..5f6b229dd
--- /dev/null
+++ b/tests/src/com/android/inputmethod/latin/InputTestsBase.java
@@ -0,0 +1,260 @@
+/*
+ * Copyright (C) 2012 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
+package com.android.inputmethod.latin;
+
+import android.content.Context;
+import android.content.SharedPreferences;
+import android.os.Looper;
+import android.os.MessageQueue;
+import android.preference.PreferenceManager;
+import android.test.ServiceTestCase;
+import android.text.InputType;
+import android.text.SpannableStringBuilder;
+import android.text.style.SuggestionSpan;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.view.inputmethod.EditorInfo;
+import android.view.inputmethod.InputConnection;
+import android.view.inputmethod.InputMethodInfo;
+import android.view.inputmethod.InputMethodManager;
+import android.view.inputmethod.InputMethodSubtype;
+import android.widget.FrameLayout;
+import android.widget.TextView;
+
+import com.android.inputmethod.keyboard.Key;
+import com.android.inputmethod.keyboard.Keyboard;
+import com.android.inputmethod.keyboard.KeyboardActionListener;
+
+import java.util.HashMap;
+
+public class InputTestsBase extends ServiceTestCase<LatinIME> {
+
+ private static final String PREF_DEBUG_MODE = "debug_mode";
+
+ // The message that sets the underline is posted with a 100 ms delay
+ protected static final int DELAY_TO_WAIT_FOR_UNDERLINE = 200;
+
+ protected LatinIME mLatinIME;
+ protected Keyboard mKeyboard;
+ protected TextView mTextView;
+ protected InputConnection mInputConnection;
+ private final HashMap<String, InputMethodSubtype> mSubtypeMap =
+ new HashMap<String, InputMethodSubtype>();
+
+ // A helper class to ease span tests
+ public static class Span {
+ final SpannableStringBuilder mInputText;
+ final SuggestionSpan mSpan;
+ final int mStart;
+ final int mEnd;
+ // The supplied CharSequence should be an instance of SpannableStringBuilder,
+ // and it should contain exactly zero or one SuggestionSpan. Otherwise, an exception
+ // is thrown.
+ public Span(final CharSequence inputText) {
+ mInputText = (SpannableStringBuilder)inputText;
+ final SuggestionSpan[] spans =
+ mInputText.getSpans(0, mInputText.length(), SuggestionSpan.class);
+ if (0 == spans.length) {
+ mSpan = null;
+ mStart = -1;
+ mEnd = -1;
+ } else if (1 == spans.length) {
+ mSpan = spans[0];
+ mStart = mInputText.getSpanStart(mSpan);
+ mEnd = mInputText.getSpanEnd(mSpan);
+ } else {
+ throw new RuntimeException("Expected one SuggestionSpan, found " + spans.length);
+ }
+ }
+ public boolean isAutoCorrectionIndicator() {
+ return 0 != (SuggestionSpan.FLAG_AUTO_CORRECTION & mSpan.getFlags());
+ }
+ }
+
+ public InputTestsBase() {
+ super(LatinIME.class);
+ }
+
+ // returns the previous setting value
+ protected boolean setDebugMode(final boolean mode) {
+ final SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(mLatinIME);
+ final boolean previousDebugSetting = prefs.getBoolean(PREF_DEBUG_MODE, false);
+ final SharedPreferences.Editor editor = prefs.edit();
+ editor.putBoolean(PREF_DEBUG_MODE, true);
+ editor.commit();
+ return previousDebugSetting;
+ }
+
+ @Override
+ protected void setUp() {
+ try {
+ super.setUp();
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ mTextView = new TextView(getContext());
+ mTextView.setInputType(InputType.TYPE_CLASS_TEXT);
+ mTextView.setEnabled(true);
+ setupService();
+ mLatinIME = getService();
+ final boolean previousDebugSetting = setDebugMode(true);
+ mLatinIME.onCreate();
+ setDebugMode(previousDebugSetting);
+ initSubtypeMap();
+ final EditorInfo ei = new EditorInfo();
+ ei.inputType = InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_FLAG_AUTO_CORRECT;
+ final InputConnection ic = mTextView.onCreateInputConnection(ei);
+ ei.inputType = InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_FLAG_AUTO_CORRECT;
+ final LayoutInflater inflater =
+ (LayoutInflater)getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
+ final ViewGroup vg = new FrameLayout(getContext());
+ final View inputView = inflater.inflate(R.layout.input_view, vg);
+ mLatinIME.setInputView(inputView);
+ mLatinIME.onBindInput();
+ mLatinIME.onCreateInputView();
+ mLatinIME.onStartInputView(ei, false);
+ mLatinIME.onCreateInputMethodInterface().startInput(ic, ei);
+ mInputConnection = ic;
+ mKeyboard = mLatinIME.mKeyboardSwitcher.getKeyboard();
+ changeLanguage("en_US");
+ }
+
+ private void initSubtypeMap() {
+ final InputMethodManager imm = (InputMethodManager)mLatinIME.getSystemService(
+ Context.INPUT_METHOD_SERVICE);
+ final String packageName = mLatinIME.getPackageName();
+ for (final InputMethodInfo imi : imm.getEnabledInputMethodList()) {
+ if (imi.getPackageName().equals(packageName)) {
+ for (final InputMethodSubtype ims :
+ imm.getEnabledInputMethodSubtypeList(imi, true)) {
+ final String locale = ims.getLocale();
+ mSubtypeMap.put(locale, ims);
+ }
+ return;
+ }
+ }
+ fail("LatinIME is disabled");
+ }
+
+ // We need to run the messages added to the handler from LatinIME. The only way to do
+ // that is to call Looper#loop() on the right looper, so we're going to get the looper
+ // object and call #loop() here. The messages in the handler actually run on the UI
+ // thread of the keyboard by design of the handler, so we want to call it synchronously
+ // on the same thread that the tests are running on to mimic the actual environment as
+ // closely as possible.
+ // Now, Looper#loop() never exits in normal operation unless the Looper#quit() method
+ // is called, so we need to do that at the right time so that #loop() returns at some
+ // point and we don't end up in an infinite loop.
+ // After we quit, the looper is still technically ready to process more messages but
+ // the handler will refuse to enqueue any because #quit() has been called and it
+ // explicitly tests for it on message enqueuing, so we'll have to reset it so that
+ // it lets us continue normal operation.
+ protected void runMessages() {
+ // Here begins deep magic.
+ final Looper looper = mLatinIME.mHandler.getLooper();
+ mLatinIME.mHandler.post(new Runnable() {
+ @Override
+ public void run() {
+ looper.quit();
+ }
+ });
+ // The only way to get out of Looper#loop() is to call #quit() on it (or on its queue).
+ // Once #quit() is called remaining messages are not processed, which is why we post
+ // a message that calls it instead of calling it directly.
+ looper.loop();
+
+ // Once #quit() has been called, the message queue has an "mQuiting" field that prevents
+ // any subsequent post in this queue. However the queue itself is still fully functional!
+ // If we have a way of resetting "queue.mQuiting" then we can continue using it as normal,
+ // coming back to this method to run the messages.
+ MessageQueue queue = looper.getQueue();
+ try {
+ // However there is no way of doing it externally, and mQuiting is private.
+ // So... get out the big guns.
+ java.lang.reflect.Field f = MessageQueue.class.getDeclaredField("mQuiting");
+ f.setAccessible(true); // What do you mean "private"?
+ f.setBoolean(queue, false);
+ } catch (NoSuchFieldException e) {
+ throw new RuntimeException(e);
+ } catch (IllegalAccessException e) {
+ throw new RuntimeException(e);
+ }
+ }
+
+ // type(int) and type(String): helper methods to send a code point resp. a string to LatinIME.
+ protected void type(final int codePoint) {
+ // onPressKey and onReleaseKey are explicitly deactivated here, but they do happen in the
+ // code (although multitouch/slide input and other factors make the sequencing complicated).
+ // They are supposed to be entirely deconnected from the input logic from LatinIME point of
+ // view and only delegates to the parts of the code that care. So we don't include them here
+ // to keep these tests as pinpoint as possible and avoid bringing it too many dependencies,
+ // but keep them in mind if something breaks. Commenting them out as is should work.
+ //mLatinIME.onPressKey(codePoint);
+ for (final Key key : mKeyboard.mKeys) {
+ if (key.mCode == codePoint) {
+ final int x = key.mX + key.mWidth / 2;
+ final int y = key.mY + key.mHeight / 2;
+ mLatinIME.onCodeInput(codePoint, x, y);
+ return;
+ }
+ }
+ mLatinIME.onCodeInput(codePoint,
+ KeyboardActionListener.NOT_A_TOUCH_COORDINATE,
+ KeyboardActionListener.NOT_A_TOUCH_COORDINATE);
+ //mLatinIME.onReleaseKey(codePoint, false);
+ }
+
+ protected void type(final String stringToType) {
+ for (int i = 0; i < stringToType.length(); i = stringToType.offsetByCodePoints(i, 1)) {
+ type(stringToType.codePointAt(i));
+ }
+ }
+
+ protected void waitForDictionaryToBeLoaded() {
+ int remainingAttempts = 10;
+ while (remainingAttempts > 0 && !mLatinIME.mSuggest.hasMainDictionary()) {
+ try {
+ Thread.sleep(200);
+ } catch (InterruptedException e) {
+ // Don't do much
+ } finally {
+ --remainingAttempts;
+ }
+ }
+ if (!mLatinIME.mSuggest.hasMainDictionary()) {
+ throw new RuntimeException("Can't initialize the main dictionary");
+ }
+ }
+
+ protected void changeLanguage(final String locale) {
+ final InputMethodSubtype subtype = mSubtypeMap.get(locale);
+ if (subtype == null) {
+ fail("InputMethodSubtype for locale " + locale + " is not enabled");
+ }
+ SubtypeSwitcher.getInstance().updateSubtype(subtype);
+ waitForDictionaryToBeLoaded();
+ }
+
+
+ // Helper to avoid writing the try{}catch block each time
+ protected static void sleep(final int milliseconds) {
+ try {
+ Thread.sleep(milliseconds);
+ } catch (InterruptedException e) {}
+ }
+}
diff --git a/tests/src/com/android/inputmethod/latin/PunctuationTests.java b/tests/src/com/android/inputmethod/latin/PunctuationTests.java
new file mode 100644
index 000000000..1b5b72ff8
--- /dev/null
+++ b/tests/src/com/android/inputmethod/latin/PunctuationTests.java
@@ -0,0 +1,149 @@
+/*
+ * Copyright (C) 2012 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
+package com.android.inputmethod.latin;
+
+public class PunctuationTests extends InputTestsBase {
+
+ public void testWordThenSpaceThenPunctuationFromStripTwice() {
+ final String WORD_TO_TYPE = "this ";
+ final String PUNCTUATION_FROM_STRIP = "!";
+ final String EXPECTED_RESULT = "this!! ";
+ type(WORD_TO_TYPE);
+ sleep(DELAY_TO_WAIT_FOR_UNDERLINE);
+ runMessages();
+ assertTrue("type word then type space should display punctuation strip",
+ mLatinIME.isShowingPunctuationList());
+ mLatinIME.pickSuggestionManually(0, PUNCTUATION_FROM_STRIP);
+ mLatinIME.pickSuggestionManually(0, PUNCTUATION_FROM_STRIP);
+ assertEquals("type word then type space then punctuation from strip twice", EXPECTED_RESULT,
+ mTextView.getText().toString());
+ }
+
+ public void testWordThenSpaceThenPunctuationFromKeyboardTwice() {
+ final String WORD_TO_TYPE = "this !!";
+ final String EXPECTED_RESULT = "this !!";
+ type(WORD_TO_TYPE);
+ assertEquals("manual pick then space then punctuation from keyboard twice", EXPECTED_RESULT,
+ mTextView.getText().toString());
+ }
+
+ public void testManualPickThenPunctuationFromStripTwiceThenType() {
+ final String WORD1_TO_TYPE = "this";
+ final String WORD2_TO_TYPE = "is";
+ final String PUNCTUATION_FROM_STRIP = "!";
+ final String EXPECTED_RESULT = "this!! is";
+ type(WORD1_TO_TYPE);
+ mLatinIME.pickSuggestionManually(0, WORD1_TO_TYPE);
+ mLatinIME.pickSuggestionManually(0, PUNCTUATION_FROM_STRIP);
+ mLatinIME.pickSuggestionManually(0, PUNCTUATION_FROM_STRIP);
+ type(WORD2_TO_TYPE);
+ assertEquals("pick word then pick punctuation twice then type", EXPECTED_RESULT,
+ mTextView.getText().toString());
+ }
+
+ public void testManualPickThenManualPickWithPunctAtStart() {
+ final String WORD1_TO_TYPE = "this";
+ final String WORD2_TO_PICK = "!is";
+ final String EXPECTED_RESULT = "this!is";
+ type(WORD1_TO_TYPE);
+ mLatinIME.pickSuggestionManually(0, WORD1_TO_TYPE);
+ mLatinIME.pickSuggestionManually(1, WORD2_TO_PICK);
+ assertEquals("manual pick then manual pick a word with punct at start", EXPECTED_RESULT,
+ mTextView.getText().toString());
+ }
+
+ public void testManuallyPickedWordThenColon() {
+ final String WORD_TO_TYPE = "this";
+ final String PUNCTUATION = ":";
+ final String EXPECTED_RESULT = "this:";
+ type(WORD_TO_TYPE);
+ mLatinIME.pickSuggestionManually(0, WORD_TO_TYPE);
+ type(PUNCTUATION);
+ assertEquals("manually pick word then colon",
+ EXPECTED_RESULT, mTextView.getText().toString());
+ }
+
+ public void testManuallyPickedWordThenOpenParen() {
+ final String WORD_TO_TYPE = "this";
+ final String PUNCTUATION = "(";
+ final String EXPECTED_RESULT = "this (";
+ type(WORD_TO_TYPE);
+ mLatinIME.pickSuggestionManually(0, WORD_TO_TYPE);
+ type(PUNCTUATION);
+ assertEquals("manually pick word then open paren",
+ EXPECTED_RESULT, mTextView.getText().toString());
+ }
+
+ public void testManuallyPickedWordThenCloseParen() {
+ final String WORD_TO_TYPE = "this";
+ final String PUNCTUATION = ")";
+ final String EXPECTED_RESULT = "this)";
+ type(WORD_TO_TYPE);
+ mLatinIME.pickSuggestionManually(0, WORD_TO_TYPE);
+ type(PUNCTUATION);
+ assertEquals("manually pick word then close paren",
+ EXPECTED_RESULT, mTextView.getText().toString());
+ }
+
+ public void testManuallyPickedWordThenSmiley() {
+ final String WORD_TO_TYPE = "this";
+ final String SPECIAL_KEY = ":-)";
+ final String EXPECTED_RESULT = "this :-)";
+ type(WORD_TO_TYPE);
+ mLatinIME.pickSuggestionManually(0, WORD_TO_TYPE);
+ mLatinIME.onTextInput(SPECIAL_KEY);
+ assertEquals("manually pick word then press the smiley key",
+ EXPECTED_RESULT, mTextView.getText().toString());
+ }
+
+ public void testManuallyPickedWordThenDotCom() {
+ final String WORD_TO_TYPE = "this";
+ final String SPECIAL_KEY = ".com";
+ final String EXPECTED_RESULT = "this.com";
+ type(WORD_TO_TYPE);
+ mLatinIME.pickSuggestionManually(0, WORD_TO_TYPE);
+ mLatinIME.onTextInput(SPECIAL_KEY);
+ assertEquals("manually pick word then press the .com key",
+ EXPECTED_RESULT, mTextView.getText().toString());
+ }
+
+ public void testTypeWordTypeDotThenPressDotCom() {
+ final String WORD_TO_TYPE = "this.";
+ final String SPECIAL_KEY = ".com";
+ final String EXPECTED_RESULT = "this.com";
+ type(WORD_TO_TYPE);
+ mLatinIME.onTextInput(SPECIAL_KEY);
+ assertEquals("type word type dot then press the .com key",
+ EXPECTED_RESULT, mTextView.getText().toString());
+ }
+
+ public void testAutoCorrectionWithSingleQuoteInside() {
+ final String WORD_TO_TYPE = "you'f ";
+ final String EXPECTED_RESULT = "you'd ";
+ type(WORD_TO_TYPE);
+ assertEquals("auto-correction with single quote inside",
+ EXPECTED_RESULT, mTextView.getText().toString());
+ }
+
+ public void testAutoCorrectionWithSingleQuotesAround() {
+ final String WORD_TO_TYPE = "'tgis' ";
+ final String EXPECTED_RESULT = "'this' ";
+ type(WORD_TO_TYPE);
+ assertEquals("auto-correction with single quotes around",
+ EXPECTED_RESULT, mTextView.getText().toString());
+ }
+}
diff --git a/tests/src/com/android/inputmethod/latin/SubtypeLocaleTests.java b/tests/src/com/android/inputmethod/latin/SubtypeLocaleTests.java
index fec3e8ee1..089fdc52c 100644
--- a/tests/src/com/android/inputmethod/latin/SubtypeLocaleTests.java
+++ b/tests/src/com/android/inputmethod/latin/SubtypeLocaleTests.java
@@ -16,10 +16,7 @@
package com.android.inputmethod.latin;
-import com.android.inputmethod.latin.LocaleUtils;
-
import android.content.Context;
-import android.content.res.Resources;
import android.test.AndroidTestCase;
import android.view.inputmethod.InputMethodInfo;
import android.view.inputmethod.InputMethodManager;
@@ -30,24 +27,22 @@ import java.util.List;
import java.util.Locale;
public class SubtypeLocaleTests extends AndroidTestCase {
- private static final String PACKAGE = LatinIME.class.getPackage().getName();
-
- private Resources mRes;
- private List<InputMethodSubtype> mKeyboardSubtypes = new ArrayList<InputMethodSubtype>();
+ private List<InputMethodSubtype> mKeyboardSubtypes;
@Override
protected void setUp() throws Exception {
super.setUp();
final Context context = getContext();
- mRes = context.getResources();
+ final String packageName = context.getApplicationInfo().packageName;
SubtypeLocale.init(context);
final InputMethodManager imm = (InputMethodManager) context.getSystemService(
Context.INPUT_METHOD_SERVICE);
for (final InputMethodInfo imi : imm.getInputMethodList()) {
- if (imi.getPackageName().equals(PACKAGE)) {
+ if (imi.getPackageName().equals(packageName)) {
+ mKeyboardSubtypes = new ArrayList<InputMethodSubtype>();
final int subtypeCount = imi.getSubtypeCount();
for (int i = 0; i < subtypeCount; ++i) {
InputMethodSubtype subtype = imi.getSubtypeAt(i);
@@ -58,37 +53,33 @@ public class SubtypeLocaleTests extends AndroidTestCase {
break;
}
}
- assertNotNull("Can not find input method " + PACKAGE, mKeyboardSubtypes);
+ assertNotNull("Can not find input method " + packageName, mKeyboardSubtypes);
assertTrue("Can not find keyboard subtype", mKeyboardSubtypes.size() > 0);
}
- private String getStringWithLocale(int resId, Locale locale) {
- final Locale savedLocale = Locale.getDefault();
- try {
- Locale.setDefault(locale);
- return mRes.getString(resId);
- } finally {
- Locale.setDefault(savedLocale);
- }
- }
-
public void testSubtypeLocale() {
final StringBuilder messages = new StringBuilder();
int failedCount = 0;
for (final InputMethodSubtype subtype : mKeyboardSubtypes) {
- final String localeCode = subtype.getLocale();
- final Locale locale = LocaleUtils.constructLocaleFromString(localeCode);
- // The locale name which will be displayed on spacebar. For example 'English (US)' or
- // 'Francais (Canada)'. (c=\u008d)
- final String displayName = SubtypeLocale.getFullDisplayName(locale);
- // The subtype name in its locale. For example 'English (US) Keyboard' or
- // 'Clavier Francais (Canada)'. (c=\u008d)
- final String subtypeName = getStringWithLocale(subtype.getNameResId(), locale);
- if (subtypeName.contains(displayName)) {
+ final Locale locale = LocaleUtils.constructLocaleFromString(subtype.getLocale());
+ if (locale.getLanguage().equals("zz")) {
+ // This is special language name for language agnostic usage.
+ continue;
+ }
+ final String subtypeLocaleString =
+ subtype.containsExtraValueKey(LatinIME.SUBTYPE_EXTRA_VALUE_KEYBOARD_LOCALE)
+ ? subtype.getExtraValueOf(LatinIME.SUBTYPE_EXTRA_VALUE_KEYBOARD_LOCALE)
+ : subtype.getLocale();
+ final Locale subtypeLocale = LocaleUtils.constructLocaleFromString(subtypeLocaleString);
+ // The subtype name in its locale. For example 'English (US)' or 'Deutsch (QWERTY)'.
+ final String subtypeName = SubtypeLocale.getFullDisplayName(subtypeLocale);
+ // The locale language name in its locale.
+ final String languageName = locale.getDisplayLanguage(locale);
+ if (!subtypeName.contains(languageName)) {
failedCount++;
messages.append(String.format(
- "subtype name is '%s' and should contain locale '%s' name '%s'\n",
- subtypeName, localeCode, displayName));
+ "subtype name is '%s' and should contain locale '%s' language name '%s'\n",
+ subtypeName, subtypeLocale, languageName));
}
}
assertEquals(messages.toString(), 0, failedCount);
diff --git a/tests/src/com/android/inputmethod/latin/SuggestHelper.java b/tests/src/com/android/inputmethod/latin/SuggestHelper.java
deleted file mode 100644
index 464930f4c..000000000
--- a/tests/src/com/android/inputmethod/latin/SuggestHelper.java
+++ /dev/null
@@ -1,167 +0,0 @@
-/*
- * Copyright (C) 2010 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License"); you may not
- * use this file except in compliance with the License. You may obtain a copy of
- * the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
- * License for the specific language governing permissions and limitations under
- * the License.
- */
-
-package com.android.inputmethod.latin;
-
-import android.content.Context;
-import android.text.TextUtils;
-
-import com.android.inputmethod.keyboard.Key;
-import com.android.inputmethod.keyboard.KeyDetector;
-import com.android.inputmethod.keyboard.KeyboardId;
-import com.android.inputmethod.keyboard.LatinKeyboard;
-
-import java.io.File;
-import java.util.Locale;
-
-public class SuggestHelper {
- protected final Suggest mSuggest;
- protected final LatinKeyboard mKeyboard;
- private final KeyDetector mKeyDetector;
-
- public SuggestHelper(Context context, int dictionaryId, KeyboardId keyboardId) {
- // Use null as the locale for Suggest so as to force it to use the internal dictionary
- // (and not try to find a dictionary provider for a specified locale)
- mSuggest = new Suggest(context, dictionaryId, null);
- mKeyboard = new LatinKeyboard.Builder(context).load(keyboardId).build();
- mKeyDetector = new KeyDetector(0);
- init();
- }
-
- protected SuggestHelper(final Context context, final File dictionaryPath,
- final long startOffset, final long length, final KeyboardId keyboardId,
- final Locale locale) {
- mSuggest = new Suggest(context, dictionaryPath, startOffset, length, null, locale);
- mKeyboard = new LatinKeyboard.Builder(context).load(keyboardId).build();
- mKeyDetector = new KeyDetector(0);
- init();
- }
-
- private void init() {
- mSuggest.setCorrectionMode(Suggest.CORRECTION_FULL);
- mKeyDetector.setKeyboard(mKeyboard, 0, 0);
- mKeyDetector.setProximityCorrectionEnabled(true);
- mKeyDetector.setProximityThreshold(mKeyboard.mMostCommonKeyWidth);
- }
-
- public void setCorrectionMode(int correctionMode) {
- mSuggest.setCorrectionMode(correctionMode);
- }
-
- public boolean hasMainDictionary() {
- return mSuggest.hasMainDictionary();
- }
-
- private void addKeyInfo(WordComposer word, char c) {
- for (final Key key : mKeyboard.mKeys) {
- if (key.mCode == c) {
- final int x = key.mX + key.mWidth / 2;
- final int y = key.mY + key.mHeight / 2;
- final int[] codes = mKeyDetector.newCodeArray();
- mKeyDetector.getKeyIndexAndNearbyCodes(x, y, codes);
- word.add(c, codes, x, y);
- return;
- }
- }
- word.add(c, new int[] { c }, WordComposer.NOT_A_COORDINATE, WordComposer.NOT_A_COORDINATE);
- }
-
- protected WordComposer createWordComposer(CharSequence s) {
- WordComposer word = new WordComposer();
- for (int i = 0; i < s.length(); i++) {
- final char c = s.charAt(i);
- addKeyInfo(word, c);
- }
- return word;
- }
-
- public boolean isValidWord(CharSequence typed) {
- return AutoCorrection.isValidWord(mSuggest.getUnigramDictionaries(),
- typed, false);
- }
-
- // TODO: This may be slow, but is OK for test so far.
- public SuggestedWords getSuggestions(CharSequence typed) {
- return mSuggest.getSuggestions(createWordComposer(typed), null,
- mKeyboard.getProximityInfo());
- }
-
- public CharSequence getFirstSuggestion(CharSequence typed) {
- WordComposer word = createWordComposer(typed);
- SuggestedWords suggestions = mSuggest.getSuggestions(word, null,
- mKeyboard.getProximityInfo());
- // Note that suggestions.getWord(0) is the word user typed.
- return suggestions.size() > 1 ? suggestions.getWord(1) : null;
- }
-
- public CharSequence getAutoCorrection(CharSequence typed) {
- WordComposer word = createWordComposer(typed);
- SuggestedWords suggestions = mSuggest.getSuggestions(word, null,
- mKeyboard.getProximityInfo());
- // Note that suggestions.getWord(0) is the word user typed.
- return (suggestions.size() > 1 && mSuggest.hasAutoCorrection())
- ? suggestions.getWord(1) : null;
- }
-
- public int getSuggestIndex(CharSequence typed, CharSequence expected) {
- WordComposer word = createWordComposer(typed);
- SuggestedWords suggestions = mSuggest.getSuggestions(word, null,
- mKeyboard.getProximityInfo());
- // Note that suggestions.getWord(0) is the word user typed.
- for (int i = 1; i < suggestions.size(); i++) {
- if (TextUtils.equals(suggestions.getWord(i), expected))
- return i;
- }
- return -1;
- }
-
- private void getBigramSuggestions(CharSequence previous, CharSequence typed) {
- if (!TextUtils.isEmpty(previous) && (typed.length() > 1)) {
- WordComposer firstChar = createWordComposer(Character.toString(typed.charAt(0)));
- mSuggest.getSuggestions(firstChar, previous, mKeyboard.getProximityInfo());
- }
- }
-
- public CharSequence getBigramFirstSuggestion(CharSequence previous, CharSequence typed) {
- WordComposer word = createWordComposer(typed);
- getBigramSuggestions(previous, typed);
- SuggestedWords suggestions = mSuggest.getSuggestions(word, previous,
- mKeyboard.getProximityInfo());
- return suggestions.size() > 1 ? suggestions.getWord(1) : null;
- }
-
- public CharSequence getBigramAutoCorrection(CharSequence previous, CharSequence typed) {
- WordComposer word = createWordComposer(typed);
- getBigramSuggestions(previous, typed);
- SuggestedWords suggestions = mSuggest.getSuggestions(word, previous,
- mKeyboard.getProximityInfo());
- return (suggestions.size() > 1 && mSuggest.hasAutoCorrection())
- ? suggestions.getWord(1) : null;
- }
-
- public int searchBigramSuggestion(CharSequence previous, CharSequence typed,
- CharSequence expected) {
- WordComposer word = createWordComposer(typed);
- getBigramSuggestions(previous, typed);
- SuggestedWords suggestions = mSuggest.getSuggestions(word, previous,
- mKeyboard.getProximityInfo());
- for (int i = 1; i < suggestions.size(); i++) {
- if (TextUtils.equals(suggestions.getWord(i), expected))
- return i;
- }
- return -1;
- }
-}
diff --git a/tests/src/com/android/inputmethod/latin/SuggestTests.java b/tests/src/com/android/inputmethod/latin/SuggestTests.java
deleted file mode 100644
index 4080f34be..000000000
--- a/tests/src/com/android/inputmethod/latin/SuggestTests.java
+++ /dev/null
@@ -1,189 +0,0 @@
-/*
- * Copyright (C) 2010,2011 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License"); you may not
- * use this file except in compliance with the License. You may obtain a copy of
- * the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
- * License for the specific language governing permissions and limitations under
- * the License.
- */
-
-package com.android.inputmethod.latin;
-
-import com.android.inputmethod.latin.tests.R;
-
-import android.content.res.AssetFileDescriptor;
-import android.content.res.Configuration;
-
-import java.util.Locale;
-
-public class SuggestTests extends SuggestTestsBase {
- private SuggestHelper mHelper;
-
- @Override
- protected void setUp() throws Exception {
- super.setUp();
- final AssetFileDescriptor dict = openTestRawResourceFd(R.raw.test);
- final Locale locale = Locale.US;
- mHelper = new SuggestHelper(
- getContext(), mTestPackageFile, dict.getStartOffset(), dict.getLength(),
- createKeyboardId(locale, Configuration.ORIENTATION_PORTRAIT), locale);
- mHelper.setCorrectionMode(Suggest.CORRECTION_FULL_BIGRAM);
- }
-
- /************************** Tests ************************/
-
- /**
- * Tests for simple completions of one character.
- */
- public void testCompletion1char() {
- suggested("people", mHelper.getFirstSuggestion("peopl"));
- suggested("about", mHelper.getFirstSuggestion("abou"));
- suggested("their", mHelper.getFirstSuggestion("thei"));
- }
-
- /**
- * Tests for simple completions of two characters.
- */
- public void testCompletion2char() {
- suggested("people", mHelper.getFirstSuggestion("peop"));
- suggested("calling", mHelper.getFirstSuggestion("calli"));
- suggested("business", mHelper.getFirstSuggestion("busine"));
- }
-
- /**
- * Tests for proximity errors.
- */
- public void testProximityPositive() {
- suggested("typed peiple", "people", mHelper.getFirstSuggestion("peiple"));
- suggested("typed peoole", "people", mHelper.getFirstSuggestion("peoole"));
- suggested("typed pwpple", "people", mHelper.getFirstSuggestion("pwpple"));
- }
-
- /**
- * Tests for proximity errors - negative, when the error key is not close.
- */
- public void testProximityNegative() {
- notSuggested("about", mHelper.getFirstSuggestion("arout"));
- notSuggested("are", mHelper.getFirstSuggestion("ire"));
- }
-
- /**
- * Tests for checking if apostrophes are added automatically.
- */
- public void testApostropheInsertion() {
- suggested("I'm", mHelper.getFirstSuggestion("im"));
- suggested("don't", mHelper.getFirstSuggestion("dont"));
- }
-
- /**
- * Test to make sure apostrophed word is not suggested for an apostrophed word.
- */
- public void testApostrophe() {
- notSuggested("don't", mHelper.getFirstSuggestion("don't"));
- }
-
- /**
- * Tests for suggestion of capitalized version of a word.
- */
- public void testCapitalization() {
- suggested("I'm", mHelper.getFirstSuggestion("i'm"));
- suggested("Sunday", mHelper.getFirstSuggestion("sunday"));
- suggested("Sunday", mHelper.getFirstSuggestion("sundat"));
- }
-
- /**
- * Tests to see if more than one completion is provided for certain prefixes.
- */
- public void testMultipleCompletions() {
- isInSuggestions("com: come", mHelper.getSuggestIndex("com", "come"));
- isInSuggestions("com: company", mHelper.getSuggestIndex("com", "company"));
- isInSuggestions("th: the", mHelper.getSuggestIndex("th", "the"));
- isInSuggestions("th: that", mHelper.getSuggestIndex("th", "that"));
- isInSuggestions("th: this", mHelper.getSuggestIndex("th", "this"));
- isInSuggestions("th: they", mHelper.getSuggestIndex("th", "they"));
- }
-
- /**
- * Does the suggestion engine recognize zero frequency words as valid words.
- */
- public void testZeroFrequencyAccepted() {
- assertTrue("valid word yikes", mHelper.isValidWord("yikes"));
- assertFalse("non valid word yike", mHelper.isValidWord("yike"));
- }
-
- /**
- * Tests to make sure that zero frequency words are not suggested as completions.
- */
- public void testZeroFrequencySuggestionsNegative() {
- assertTrue(mHelper.getSuggestIndex("yike", "yikes") < 0);
- assertTrue(mHelper.getSuggestIndex("what", "whatcha") < 0);
- }
-
- /**
- * Tests to ensure that words with large edit distances are not suggested, in some cases.
- * Also such word is not considered auto correction, in some cases.
- */
- public void testTooLargeEditDistance() {
- assertTrue(mHelper.getSuggestIndex("sniyr", "about") < 0);
- // TODO: The following test fails.
- // notSuggested("the", mHelper.getAutoCorrection("rjw"));
- }
-
- /**
- * Make sure mHelper.isValidWord is case-sensitive.
- */
- public void testValidityCaseSensitivity() {
- assertTrue("valid word Sunday", mHelper.isValidWord("Sunday"));
- assertFalse("non valid word sunday", mHelper.isValidWord("sunday"));
- }
-
- /**
- * Are accented forms of words suggested as corrections?
- */
- public void testAccents() {
- // ni<LATIN SMALL LETTER N WITH TILDE>o
- suggested("ni\u00F1o", mHelper.getAutoCorrection("nino"));
- // ni<LATIN SMALL LETTER N WITH TILDE>o
- suggested("ni\u00F1o", mHelper.getAutoCorrection("nimo"));
- // Mar<LATIN SMALL LETTER I WITH ACUTE>a
- suggested("Mar\u00EDa", mHelper.getAutoCorrection("maria"));
- }
-
- /**
- * Make sure bigrams are showing when first character is typed
- * and don't show any when there aren't any
- */
- public void testBigramsAtFirstChar() {
- suggested("bigram: about p[art]",
- "part", mHelper.getBigramFirstSuggestion("about", "p"));
- suggested("bigram: I'm a[bout]",
- "about", mHelper.getBigramFirstSuggestion("I'm", "a"));
- suggested("bigram: about b[usiness]",
- "business", mHelper.getBigramFirstSuggestion("about", "b"));
- isInSuggestions("bigram: about b[eing]",
- mHelper.searchBigramSuggestion("about", "b", "being"));
- notSuggested("bigram: about p",
- "business", mHelper.getBigramFirstSuggestion("about", "p"));
- }
-
- /**
- * Make sure bigrams score affects the original score
- */
- public void testBigramsScoreEffect() {
- suggested("single: page",
- "page", mHelper.getAutoCorrection("pa"));
- suggested("bigram: about pa[rt]",
- "part", mHelper.getBigramAutoCorrection("about", "pa"));
- // TODO: The following test fails.
- // suggested("single: said", "said", mHelper.getAutoCorrection("sa"));
- suggested("bigram: from sa[me]",
- "same", mHelper.getBigramAutoCorrection("from", "sa"));
- }
-}
diff --git a/tests/src/com/android/inputmethod/latin/SuggestTestsBase.java b/tests/src/com/android/inputmethod/latin/SuggestTestsBase.java
deleted file mode 100644
index 058a3e7c0..000000000
--- a/tests/src/com/android/inputmethod/latin/SuggestTestsBase.java
+++ /dev/null
@@ -1,98 +0,0 @@
-/*
- * Copyright (C) 2011 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License"); you may not
- * use this file except in compliance with the License. You may obtain a copy of
- * the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
- * License for the specific language governing permissions and limitations under
- * the License.
- */
-
-package com.android.inputmethod.latin;
-
-import android.content.res.AssetFileDescriptor;
-import android.content.res.Configuration;
-import android.test.AndroidTestCase;
-import android.text.TextUtils;
-import android.util.DisplayMetrics;
-import android.view.inputmethod.EditorInfo;
-
-import com.android.inputmethod.keyboard.KeyboardId;
-
-import java.io.File;
-import java.io.InputStream;
-import java.util.Locale;
-
-public class SuggestTestsBase extends AndroidTestCase {
- protected File mTestPackageFile;
-
- @Override
- protected void setUp() throws Exception {
- super.setUp();
- mTestPackageFile = new File(getTestContext().getApplicationInfo().sourceDir);
- }
-
- protected KeyboardId createKeyboardId(Locale locale, int orientation) {
- final DisplayMetrics dm = getContext().getResources().getDisplayMetrics();
- final int width;
- if (orientation == Configuration.ORIENTATION_LANDSCAPE) {
- width = Math.max(dm.widthPixels, dm.heightPixels);
- } else if (orientation == Configuration.ORIENTATION_PORTRAIT) {
- width = Math.min(dm.widthPixels, dm.heightPixels);
- } else {
- fail("Orientation should be ORIENTATION_LANDSCAPE or ORIENTATION_PORTRAIT: "
- + "orientation=" + orientation);
- return null;
- }
- return new KeyboardId(locale.toString() + " keyboard",
- com.android.inputmethod.latin.R.xml.kbd_qwerty, locale, orientation, width,
- KeyboardId.MODE_TEXT, new EditorInfo(), false, KeyboardId.F2KEY_MODE_NONE,
- false, false, false);
- }
-
- protected InputStream openTestRawResource(int resIdInTest) {
- return getTestContext().getResources().openRawResource(resIdInTest);
- }
-
- protected AssetFileDescriptor openTestRawResourceFd(int resIdInTest) {
- return getTestContext().getResources().openRawResourceFd(resIdInTest);
- }
-
- private static String format(String message, Object expected, Object actual) {
- return message + " expected:<" + expected + "> but was:<" + actual + ">";
- }
-
- protected static void suggested(CharSequence expected, CharSequence actual) {
- if (!TextUtils.equals(expected, actual))
- fail(format("assertEquals", expected, actual));
- }
-
- protected static void suggested(String message, CharSequence expected, CharSequence actual) {
- if (!TextUtils.equals(expected, actual))
- fail(format(message, expected, actual));
- }
-
- protected static void notSuggested(CharSequence expected, CharSequence actual) {
- if (TextUtils.equals(expected, actual))
- fail(format("assertNotEquals", expected, actual));
- }
-
- protected static void notSuggested(String message, CharSequence expected, CharSequence actual) {
- if (TextUtils.equals(expected, actual))
- fail(format(message, expected, actual));
- }
-
- protected static void isInSuggestions(String message, int position) {
- assertTrue(message, position >= 0);
- }
-
- protected static void isNotInSuggestions(String message, int position) {
- assertTrue(message, position < 0);
- }
-}
diff --git a/tests/src/com/android/inputmethod/latin/UserBigramSuggestHelper.java b/tests/src/com/android/inputmethod/latin/UserBigramSuggestHelper.java
deleted file mode 100644
index 023e20a10..000000000
--- a/tests/src/com/android/inputmethod/latin/UserBigramSuggestHelper.java
+++ /dev/null
@@ -1,101 +0,0 @@
-/*
- * Copyright (C) 2011 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License"); you may not
- * use this file except in compliance with the License. You may obtain a copy of
- * the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
- * License for the specific language governing permissions and limitations under
- * the License.
- */
-
-package com.android.inputmethod.latin;
-
-import com.android.inputmethod.keyboard.KeyboardId;
-
-import android.content.Context;
-import android.text.TextUtils;
-
-import java.io.File;
-import java.util.Locale;
-import java.util.StringTokenizer;
-
-public class UserBigramSuggestHelper extends SuggestHelper {
- private final Context mContext;
- private UserBigramDictionary mUserBigram;
-
- public UserBigramSuggestHelper(final Context context, final File dictionaryPath,
- final long startOffset, final long length, final int userBigramMax,
- final int userBigramDelete, final KeyboardId keyboardId, final Locale locale) {
- super(context, dictionaryPath, startOffset, length, keyboardId, locale);
- mContext = context;
- mUserBigram = new UserBigramDictionary(context, null, locale.toString(),
- Suggest.DIC_USER);
- mUserBigram.setDatabaseMax(userBigramMax);
- mUserBigram.setDatabaseDelete(userBigramDelete);
- mSuggest.setCorrectionMode(Suggest.CORRECTION_FULL_BIGRAM);
- mSuggest.setUserBigramDictionary(mUserBigram);
- }
-
- public void changeUserBigramLocale(Locale locale) {
- if (mUserBigram != null) {
- flushUserBigrams();
- mUserBigram.close();
- mUserBigram = new UserBigramDictionary(mContext, null, locale.toString(),
- Suggest.DIC_USER);
- mSuggest.setUserBigramDictionary(mUserBigram);
- }
- }
-
- public int searchUserBigramSuggestion(CharSequence previous, char typed,
- CharSequence expected) {
- if (mUserBigram == null) return -1;
-
- flushUserBigrams();
- if (!TextUtils.isEmpty(previous) && !TextUtils.isEmpty(Character.toString(typed))) {
- WordComposer firstChar = createWordComposer(Character.toString(typed));
- mSuggest.getSuggestions(firstChar, previous, mKeyboard.getProximityInfo());
- boolean reloading = mUserBigram.reloadDictionaryIfRequired();
- if (reloading) mUserBigram.waitForDictionaryLoading();
- mUserBigram.getBigrams(firstChar, previous, mSuggest);
- }
-
- for (int i = 0; i < mSuggest.mBigramSuggestions.size(); i++) {
- final CharSequence word = mSuggest.mBigramSuggestions.get(i);
- if (TextUtils.equals(word, expected))
- return i;
- }
-
- return -1;
- }
-
- public void addToUserBigram(String sentence) {
- StringTokenizer st = new StringTokenizer(sentence);
- String previous = null;
- while (st.hasMoreTokens()) {
- String current = st.nextToken();
- if (previous != null) {
- addToUserBigram(new String[] {previous, current});
- }
- previous = current;
- }
- }
-
- public void addToUserBigram(String[] pair) {
- if (mUserBigram != null && pair.length == 2) {
- mUserBigram.addBigrams(pair[0], pair[1]);
- }
- }
-
- public void flushUserBigrams() {
- if (mUserBigram != null) {
- mUserBigram.flushPendingWrites();
- mUserBigram.waitUntilUpdateDBDone();
- }
- }
-}
diff --git a/tests/src/com/android/inputmethod/latin/UserBigramSuggestTests.java b/tests/src/com/android/inputmethod/latin/UserBigramSuggestTests.java
deleted file mode 100644
index 2bc0aabc0..000000000
--- a/tests/src/com/android/inputmethod/latin/UserBigramSuggestTests.java
+++ /dev/null
@@ -1,115 +0,0 @@
-/*
- * Copyright (C) 2010,2011 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License"); you may not
- * use this file except in compliance with the License. You may obtain a copy of
- * the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
- * License for the specific language governing permissions and limitations under
- * the License.
- */
-
-package com.android.inputmethod.latin;
-import android.content.res.AssetFileDescriptor;
-import android.content.res.Configuration;
-
-import com.android.inputmethod.latin.tests.R;
-
-import java.util.Locale;
-
-public class UserBigramSuggestTests extends SuggestTestsBase {
- private static final int SUGGESTION_STARTS = 6;
- private static final int MAX_DATA = 20;
- private static final int DELETE_DATA = 10;
-
- private UserBigramSuggestHelper mHelper;
-
- @Override
- protected void setUp() throws Exception {
- super.setUp();
- final AssetFileDescriptor dict = openTestRawResourceFd(R.raw.test);
- final Locale locale = Locale.US;
- mHelper = new UserBigramSuggestHelper(
- getContext(), mTestPackageFile, dict.getStartOffset(), dict.getLength(),
- MAX_DATA, DELETE_DATA,
- createKeyboardId(locale, Configuration.ORIENTATION_PORTRAIT), locale);
- }
-
- /************************** Tests ************************/
-
- /**
- * Test suggestion started at right time
- */
- public void testUserBigram() {
- for (int i = 0; i < SUGGESTION_STARTS; i++) mHelper.addToUserBigram(pair1);
- for (int i = 0; i < (SUGGESTION_STARTS - 1); i++) mHelper.addToUserBigram(pair2);
-
- isInSuggestions("bigram", mHelper.searchUserBigramSuggestion("user", 'b', "bigram"));
- isNotInSuggestions("platform",
- mHelper.searchUserBigramSuggestion("android", 'p', "platform"));
- }
-
- /**
- * Test loading correct (locale) bigrams
- */
- public void testOpenAndClose() {
- for (int i = 0; i < SUGGESTION_STARTS; i++) mHelper.addToUserBigram(pair1);
- isInSuggestions("bigram in default locale",
- mHelper.searchUserBigramSuggestion("user", 'b', "bigram"));
-
- // change to fr_FR
- mHelper.changeUserBigramLocale(Locale.FRANCE);
- for (int i = 0; i < SUGGESTION_STARTS; i++) mHelper.addToUserBigram(pair3);
- isInSuggestions("france in fr_FR",
- mHelper.searchUserBigramSuggestion("locale", 'f', "france"));
- isNotInSuggestions("bigram in fr_FR",
- mHelper.searchUserBigramSuggestion("user", 'b', "bigram"));
-
- // change back to en_US
- mHelper.changeUserBigramLocale(Locale.US);
- isNotInSuggestions("france in en_US",
- mHelper.searchUserBigramSuggestion("locale", 'f', "france"));
- isInSuggestions("bigram in en_US",
- mHelper.searchUserBigramSuggestion("user", 'b', "bigram"));
- }
-
- /**
- * Test data gets pruned when it is over maximum
- */
- public void testPruningData() {
- for (int i = 0; i < SUGGESTION_STARTS; i++) mHelper.addToUserBigram(sentence0);
- mHelper.flushUserBigrams();
- isInSuggestions("world after several sentence 0",
- mHelper.searchUserBigramSuggestion("Hello", 'w', "world"));
-
- mHelper.addToUserBigram(sentence1);
- mHelper.addToUserBigram(sentence2);
- isInSuggestions("world after sentence 1 and 2",
- mHelper.searchUserBigramSuggestion("Hello", 'w', "world"));
-
- // pruning should happen
- mHelper.addToUserBigram(sentence3);
- mHelper.addToUserBigram(sentence4);
-
- // trying to reopen database to check pruning happened in database
- mHelper.changeUserBigramLocale(Locale.US);
- isNotInSuggestions("world after sentence 3 and 4",
- mHelper.searchUserBigramSuggestion("Hello", 'w', "world"));
- }
-
- private static final String[] pair1 = {"user", "bigram"};
- private static final String[] pair2 = {"android","platform"};
- private static final String[] pair3 = {"locale", "france"};
- private static final String sentence0 = "Hello world";
- private static final String sentence1 = "This is a test for user input based bigram";
- private static final String sentence2 = "It learns phrases that contain both dictionary and "
- + "nondictionary words";
- private static final String sentence3 = "This should give better suggestions than the previous "
- + "version";
- private static final String sentence4 = "Android stock keyboard is improving";
-}
diff --git a/tests/src/com/android/inputmethod/latin/UtilsTests.java b/tests/src/com/android/inputmethod/latin/UtilsTests.java
index 5c0b03a0a..2ef4e2ff5 100644
--- a/tests/src/com/android/inputmethod/latin/UtilsTests.java
+++ b/tests/src/com/android/inputmethod/latin/UtilsTests.java
@@ -18,8 +18,6 @@ package com.android.inputmethod.latin;
import android.test.AndroidTestCase;
-import com.android.inputmethod.latin.tests.R;
-
public class UtilsTests extends AndroidTestCase {
// The following is meant to be a reasonable default for