104c96ab966e8a58e5cd401362b49509751ce75d9Tadashi G. Takaoka/*
204c96ab966e8a58e5cd401362b49509751ce75d9Tadashi G. Takaoka * Copyright (C) 2011 The Android Open Source Project
304c96ab966e8a58e5cd401362b49509751ce75d9Tadashi G. Takaoka *
4ce6bcdd1a547c9874f05a08074cafdfea16196d6Tadashi G. Takaoka * Licensed under the Apache License, Version 2.0 (the "License");
5ce6bcdd1a547c9874f05a08074cafdfea16196d6Tadashi G. Takaoka * you may not use this file except in compliance with the License.
6ce6bcdd1a547c9874f05a08074cafdfea16196d6Tadashi G. Takaoka * You may obtain a copy of the License at
704c96ab966e8a58e5cd401362b49509751ce75d9Tadashi G. Takaoka *
8ce6bcdd1a547c9874f05a08074cafdfea16196d6Tadashi G. Takaoka *      http://www.apache.org/licenses/LICENSE-2.0
904c96ab966e8a58e5cd401362b49509751ce75d9Tadashi G. Takaoka *
1004c96ab966e8a58e5cd401362b49509751ce75d9Tadashi G. Takaoka * Unless required by applicable law or agreed to in writing, software
11ce6bcdd1a547c9874f05a08074cafdfea16196d6Tadashi G. Takaoka * distributed under the License is distributed on an "AS IS" BASIS,
12ce6bcdd1a547c9874f05a08074cafdfea16196d6Tadashi G. Takaoka * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13ce6bcdd1a547c9874f05a08074cafdfea16196d6Tadashi G. Takaoka * See the License for the specific language governing permissions and
14ce6bcdd1a547c9874f05a08074cafdfea16196d6Tadashi G. Takaoka * limitations under the License.
1504c96ab966e8a58e5cd401362b49509751ce75d9Tadashi G. Takaoka */
1604c96ab966e8a58e5cd401362b49509751ce75d9Tadashi G. Takaoka
1732572948d7e3956efebcbd69d7c7d8403bb659e6Tadashi G. Takaokapackage com.android.inputmethod.keyboard;
1804c96ab966e8a58e5cd401362b49509751ce75d9Tadashi G. Takaoka
1904c96ab966e8a58e5cd401362b49509751ce75d9Tadashi G. Takaokaimport android.test.AndroidTestCase;
20307f49b8c1e954cfcba4f12ff74b22803825ca15Tadashi G. Takaokaimport android.test.suitebuilder.annotation.MediumTest;
2104c96ab966e8a58e5cd401362b49509751ce75d9Tadashi G. Takaoka
2235ff94547c16c84c5b6fafdae0b4a683be782b97Tadashi G. Takaokaimport com.android.inputmethod.keyboard.MoreKeysKeyboard.MoreKeysKeyboardParams;
232affaf91a04d63e0994102299816014a8bbe11e1Tadashi G. Takaoka
24307f49b8c1e954cfcba4f12ff74b22803825ca15Tadashi G. Takaoka@MediumTest
25a9fc8622fe6024a3740895db354829f574ddfa75Tadashi G. Takaokapublic class MoreKeysKeyboardBuilderMaxOrderTests extends AndroidTestCase {
2604c96ab966e8a58e5cd401362b49509751ce75d9Tadashi G. Takaoka    private static final int WIDTH = 10;
2704c96ab966e8a58e5cd401362b49509751ce75d9Tadashi G. Takaoka    private static final int HEIGHT = 10;
2804c96ab966e8a58e5cd401362b49509751ce75d9Tadashi G. Takaoka
295d542c24922ae531a581c122d685c3d86047b468Tadashi G. Takaoka    private static final int KEYBOARD_WIDTH = WIDTH * 10;
306213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka    private static final int XPOS_L0 = WIDTH * 0 + WIDTH / 2;
316213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka    private static final int XPOS_L1 = WIDTH * 1 + WIDTH / 2;
326213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka    private static final int XPOS_L2 = WIDTH * 2 + WIDTH / 2;
336213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka    private static final int XPOS_L3 = WIDTH * 3 + WIDTH / 2;
346213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka    private static final int XPOS_M0 = WIDTH * 4 + WIDTH / 2;
356213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka    private static final int XPOS_M1 = WIDTH * 5 + WIDTH / 2;
366213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka    private static final int XPOS_R3 = WIDTH * 6 + WIDTH / 2;
376213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka    private static final int XPOS_R2 = WIDTH * 7 + WIDTH / 2;
386213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka    private static final int XPOS_R1 = WIDTH * 8 + WIDTH / 2;
396213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka    private static final int XPOS_R0 = WIDTH * 9 + WIDTH / 2;
405d542c24922ae531a581c122d685c3d86047b468Tadashi G. Takaoka
4104c96ab966e8a58e5cd401362b49509751ce75d9Tadashi G. Takaoka    @Override
4204c96ab966e8a58e5cd401362b49509751ce75d9Tadashi G. Takaoka    protected void setUp() throws Exception {
4304c96ab966e8a58e5cd401362b49509751ce75d9Tadashi G. Takaoka        super.setUp();
4404c96ab966e8a58e5cd401362b49509751ce75d9Tadashi G. Takaoka    }
4504c96ab966e8a58e5cd401362b49509751ce75d9Tadashi G. Takaoka
46b12c2af32e09624e1298e0109441b0f4d74b74ddTadashi G. Takaoka    private static MoreKeysKeyboardParams createParams(final int numKeys, final int maxColumns,
47b12c2af32e09624e1298e0109441b0f4d74b74ddTadashi G. Takaoka            final int coordXInParent) {
4842fd1d2d72c097b2227d4b22f0f824dbb34a4d0cTadashi G. Takaoka        final MoreKeysKeyboardParams params = new MoreKeysKeyboardParams();
49b12c2af32e09624e1298e0109441b0f4d74b74ddTadashi G. Takaoka        params.setParameters(numKeys, maxColumns, WIDTH, HEIGHT, coordXInParent, KEYBOARD_WIDTH,
50a9fc8622fe6024a3740895db354829f574ddfa75Tadashi G. Takaoka                false /* isMoreKeysFixedColumn */, false /* isMoreKeysFixedOrder */,
51a9fc8622fe6024a3740895db354829f574ddfa75Tadashi G. Takaoka                0 /* dividerWidth */);
5242fd1d2d72c097b2227d4b22f0f824dbb34a4d0cTadashi G. Takaoka        return params;
536213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka    }
546213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka
5504c96ab966e8a58e5cd401362b49509751ce75d9Tadashi G. Takaoka    public void testLayoutError() {
562affaf91a04d63e0994102299816014a8bbe11e1Tadashi G. Takaoka        MoreKeysKeyboardParams params = null;
5704c96ab966e8a58e5cd401362b49509751ce75d9Tadashi G. Takaoka        try {
586213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka            final int maxColumns = KEYBOARD_WIDTH / WIDTH;
59b12c2af32e09624e1298e0109441b0f4d74b74ddTadashi G. Takaoka            params = createParams(maxColumns + 1, maxColumns + 1, HEIGHT);
6004c96ab966e8a58e5cd401362b49509751ce75d9Tadashi G. Takaoka            fail("Should throw IllegalArgumentException");
6104c96ab966e8a58e5cd401362b49509751ce75d9Tadashi G. Takaoka        } catch (IllegalArgumentException e) {
622affaf91a04d63e0994102299816014a8bbe11e1Tadashi G. Takaoka            // Too small keyboard to hold more keys keyboard.
6304c96ab966e8a58e5cd401362b49509751ce75d9Tadashi G. Takaoka        }
642affaf91a04d63e0994102299816014a8bbe11e1Tadashi G. Takaoka        assertNull("Too small keyboard to hold more keys keyboard", params);
6504c96ab966e8a58e5cd401362b49509751ce75d9Tadashi G. Takaoka    }
6604c96ab966e8a58e5cd401362b49509751ce75d9Tadashi G. Takaoka
672affaf91a04d63e0994102299816014a8bbe11e1Tadashi G. Takaoka    // More keys keyboard layout test.
682affaf91a04d63e0994102299816014a8bbe11e1Tadashi G. Takaoka    // "[n]" represents n-th key position in more keys keyboard.
69aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    // "<1>" is the default key.
7004c96ab966e8a58e5cd401362b49509751ce75d9Tadashi G. Takaoka
71aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    // <1>
726213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka    public void testLayout1KeyMax5M0() {
736213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        MoreKeysKeyboardParams params = createParams(1, 5, XPOS_M0);
746213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("1 key max 5 M0 columns", 1, params.mNumColumns);
756213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("1 key max 5 M0 rows", 1, params.mNumRows);
766213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("1 key max 5 M0 left", 0, params.mLeftKeys);
776213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("1 key max 5 M0 right", 1, params.mRightKeys);
78aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("1 key max 5 M0 <1>", 0, params.getColumnPos(0));
796213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("1 key max 5 M0 adjust", 0, params.mTopRowAdjustment);
806213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("1 key max 5 M0 default", WIDTH * 0, params.getDefaultKeyCoordX());
815d542c24922ae531a581c122d685c3d86047b468Tadashi G. Takaoka    }
825d542c24922ae531a581c122d685c3d86047b468Tadashi G. Takaoka
83aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    // |<1>
846213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka    public void testLayout1KeyMax5L0() {
856213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        MoreKeysKeyboardParams params = createParams(1, 5, XPOS_L0);
866213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("1 key max 5 L0 columns", 1, params.mNumColumns);
876213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("1 key max 5 L0 rows", 1, params.mNumRows);
886213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("1 key max 5 L0 left", 0, params.mLeftKeys);
896213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("1 key max 5 L0 right", 1, params.mRightKeys);
90aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("1 key max 5 L0 <1>", 0, params.getColumnPos(0));
916213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("1 key max 5 L0 adjust", 0, params.mTopRowAdjustment);
926213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("1 key max 5 L0 default", WIDTH * 0, params.getDefaultKeyCoordX());
935d542c24922ae531a581c122d685c3d86047b468Tadashi G. Takaoka    }
945d542c24922ae531a581c122d685c3d86047b468Tadashi G. Takaoka
95aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    // |___ <1>
966213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka    public void testLayout1KeyMax5L1() {
976213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        MoreKeysKeyboardParams params = createParams(1, 5, XPOS_L1);
986213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("1 key max 5 L1 columns", 1, params.mNumColumns);
996213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("1 key max 5 L1 rows", 1, params.mNumRows);
1006213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("1 key max 5 L1 left", 0, params.mLeftKeys);
1016213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("1 key max 5 L1 right", 1, params.mRightKeys);
102aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("1 key max 5 L1 <1>", 0, params.getColumnPos(0));
1036213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("1 key max 5 L1 adjust", 0, params.mTopRowAdjustment);
1046213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("1 key max 5 L1 default", WIDTH * 0, params.getDefaultKeyCoordX());
1055d542c24922ae531a581c122d685c3d86047b468Tadashi G. Takaoka    }
1065d542c24922ae531a581c122d685c3d86047b468Tadashi G. Takaoka
107aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    // |___ ___ <1>
1086213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka    public void testLayout1KeyMax5L2() {
1096213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        MoreKeysKeyboardParams params = createParams(1, 5, XPOS_L2);
1106213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("1 key max 5 L2 columns", 1, params.mNumColumns);
1116213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("1 key max 5 L2 rows", 1, params.mNumRows);
1126213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("1 key max 5 L2 left", 0, params.mLeftKeys);
1136213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("1 key max 5 L2 right", 1, params.mRightKeys);
114aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("1 key max 5 L2 <1>", 0, params.getColumnPos(0));
1156213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("1 key max 5 L2 adjust", 0, params.mTopRowAdjustment);
1166213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("1 key max 5 L2 default", WIDTH * 0, params.getDefaultKeyCoordX());
1175d542c24922ae531a581c122d685c3d86047b468Tadashi G. Takaoka    }
1185d542c24922ae531a581c122d685c3d86047b468Tadashi G. Takaoka
119aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    // <1>|
1206213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka    public void testLayout1KeyMax5R0() {
1216213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        MoreKeysKeyboardParams params = createParams(1, 5, XPOS_R0);
1226213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("1 key max 5 R0 columns", 1, params.mNumColumns);
1236213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("1 key max 5 R0 rows", 1, params.mNumRows);
1246213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("1 key max 5 R0 left", 0, params.mLeftKeys);
1256213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("1 key max 5 R0 right", 1, params.mRightKeys);
126aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("1 key max 5 R0 <1>", 0, params.getColumnPos(0));
1276213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("1 key max 5 R0 adjust", 0, params.mTopRowAdjustment);
1286213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("1 key max 5 R0 default", WIDTH * 0, params.getDefaultKeyCoordX());
1295d542c24922ae531a581c122d685c3d86047b468Tadashi G. Takaoka    }
1305d542c24922ae531a581c122d685c3d86047b468Tadashi G. Takaoka
131aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    // <1> ___|
1326213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka    public void testLayout1KeyMax5R1() {
1336213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        MoreKeysKeyboardParams params = createParams(1, 5, XPOS_R1);
1346213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("1 key max 5 R1 columns", 1, params.mNumColumns);
1356213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("1 key max 5 R1 rows", 1, params.mNumRows);
1366213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("1 key max 5 R1 left", 0, params.mLeftKeys);
1376213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("1 key max 5 R1 right", 1, params.mRightKeys);
138aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("1 key max 5 R1 <1>", 0, params.getColumnPos(0));
1396213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("1 key max 5 R1 adjust", 0, params.mTopRowAdjustment);
1406213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("1 key max 5 R1 default", WIDTH * 0, params.getDefaultKeyCoordX());
1415d542c24922ae531a581c122d685c3d86047b468Tadashi G. Takaoka    }
1425d542c24922ae531a581c122d685c3d86047b468Tadashi G. Takaoka
143aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    // <1> ___ ___|
1446213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka    public void testLayout1KeyMax5R2() {
1456213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        MoreKeysKeyboardParams params = createParams(1, 5, XPOS_R2);
1466213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("1 key max 5 R2 columns", 1, params.mNumColumns);
1476213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("1 key max 5 R2 rows", 1, params.mNumRows);
1486213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("1 key max 5 R2 left", 0, params.mLeftKeys);
1496213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("1 key max 5 R2 right", 1, params.mRightKeys);
150aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("1 key max 5 R2 <1>", 0, params.getColumnPos(0));
1516213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("1 key max 5 R2 adjust", 0, params.mTopRowAdjustment);
1526213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("1 key max 5 R2 default", WIDTH * 0, params.getDefaultKeyCoordX());
15304c96ab966e8a58e5cd401362b49509751ce75d9Tadashi G. Takaoka    }
15404c96ab966e8a58e5cd401362b49509751ce75d9Tadashi G. Takaoka
155aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    // <1> [2]
1566213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka    public void testLayout2KeyMax5M0() {
1576213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        MoreKeysKeyboardParams params = createParams(2, 5, XPOS_M0);
1586213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("2 key max 5 M0 columns", 2, params.mNumColumns);
1596213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("2 key max 5 M0 rows", 1, params.mNumRows);
1606213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("2 key max 5 M0 left", 0, params.mLeftKeys);
1616213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("2 key max 5 M0 right", 2, params.mRightKeys);
162aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("2 key max 5 M0 <1>", 0, params.getColumnPos(0));
1636213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("2 key max 5 M0 [2]", 1, params.getColumnPos(1));
1646213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("2 key max 5 M0 adjust", 0, params.mTopRowAdjustment);
1656213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("2 key max 5 M0 default", WIDTH * 0, params.getDefaultKeyCoordX());
1665d542c24922ae531a581c122d685c3d86047b468Tadashi G. Takaoka    }
1675d542c24922ae531a581c122d685c3d86047b468Tadashi G. Takaoka
168aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    // |<1> [2]
1696213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka    public void testLayout2KeyMax5L0() {
1706213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        MoreKeysKeyboardParams params = createParams(2, 5, XPOS_L0);
1716213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("2 key max 5 L0 columns", 2, params.mNumColumns);
1726213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("2 key max 5 L0 rows", 1, params.mNumRows);
1736213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("2 key max 5 L0 left", 0, params.mLeftKeys);
1746213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("2 key max 5 L0 right", 2, params.mRightKeys);
175aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("2 key max 5 L0 <1>", 0, params.getColumnPos(0));
1766213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("2 key max 5 L0 [2]", 1, params.getColumnPos(1));
1776213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("2 key max 5 L0 adjust", 0, params.mTopRowAdjustment);
1786213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("2 key max 5 L0 default", WIDTH * 0, params.getDefaultKeyCoordX());
1795d542c24922ae531a581c122d685c3d86047b468Tadashi G. Takaoka    }
1805d542c24922ae531a581c122d685c3d86047b468Tadashi G. Takaoka
181aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    // |___ <1> [2]
1826213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka    public void testLayout2KeyMax5L1() {
1836213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        MoreKeysKeyboardParams params = createParams(2, 5, XPOS_L1);
1846213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("2 key max 5 L1 columns", 2, params.mNumColumns);
1856213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("2 key max 5 L1 rows", 1, params.mNumRows);
1866213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("2 key max 5 L1 left", 0, params.mLeftKeys);
1876213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("2 key max 5 L1 right", 2, params.mRightKeys);
188aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("2 key max 5 L1 <1>", 0, params.getColumnPos(0));
1896213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("2 key max 5 L1 [2]", 1, params.getColumnPos(1));
1906213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("2 key max 5 L1 adjust", 0, params.mTopRowAdjustment);
1916213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("2 key max 5 L1 default", WIDTH * 0, params.getDefaultKeyCoordX());
1925d542c24922ae531a581c122d685c3d86047b468Tadashi G. Takaoka    }
1935d542c24922ae531a581c122d685c3d86047b468Tadashi G. Takaoka
194aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    // |___ ___ <1> [2]
1956213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka    public void testLayout2KeyMax5L2() {
1966213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        MoreKeysKeyboardParams params = createParams(2, 5, XPOS_L2);
1976213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("2 key max 5 L2 columns", 2, params.mNumColumns);
1986213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("2 key max 5 L2 rows", 1, params.mNumRows);
1996213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("2 key max 5 L2 left", 0, params.mLeftKeys);
2006213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("2 key max 5 L2 right", 2, params.mRightKeys);
201aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("2 key max 5 L2 <1>", 0, params.getColumnPos(0));
2026213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("2 key max 5 L2 [2]", 1, params.getColumnPos(1));
2036213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("2 key max 5 L2 adjust", 0, params.mTopRowAdjustment);
2046213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("2 key max 5 L2 default", WIDTH * 0, params.getDefaultKeyCoordX());
2055d542c24922ae531a581c122d685c3d86047b468Tadashi G. Takaoka    }
2065d542c24922ae531a581c122d685c3d86047b468Tadashi G. Takaoka
207aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    // [2] <1>|
2086213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka    public void testLayout2KeyMax5R0() {
2096213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        MoreKeysKeyboardParams params = createParams(2, 5, XPOS_R0);
2106213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("2 key max 5 R0 columns", 2, params.mNumColumns);
2116213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("2 key max 5 R0 rows", 1, params.mNumRows);
2126213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("2 key max 5 R0 left", 1, params.mLeftKeys);
2136213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("2 key max 5 R0 right", 1, params.mRightKeys);
214aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("2 key max 5 R0 <1>", 0, params.getColumnPos(0));
2156213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("2 key max 5 R0 [2]", -1, params.getColumnPos(1));
2166213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("2 key max 5 R0 adjust", 0, params.mTopRowAdjustment);
2176213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("2 key max 5 R0 default", WIDTH * 1, params.getDefaultKeyCoordX());
2185d542c24922ae531a581c122d685c3d86047b468Tadashi G. Takaoka    }
2195d542c24922ae531a581c122d685c3d86047b468Tadashi G. Takaoka
220aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    // [2] <1> ___|
2216213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka    public void testLayout2KeyMax5R1() {
2226213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        MoreKeysKeyboardParams params = createParams(2, 5, XPOS_R1);
2236213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("2 key max 5 R1 columns", 2, params.mNumColumns);
2246213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("2 key max 5 R1 rows", 1, params.mNumRows);
2256213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("2 key max 5 R1 left", 1, params.mLeftKeys);
2266213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("2 key max 5 R1 right", 1, params.mRightKeys);
227aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("2 key max 5 R1 <1>", 0, params.getColumnPos(0));
2286213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("2 key max 5 R1 [2]", -1, params.getColumnPos(1));
2296213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("2 key max 5 R1 adjust", 0, params.mTopRowAdjustment);
2306213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("2 key max 5 R1 default", WIDTH * 1, params.getDefaultKeyCoordX());
2316213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka    }
2326213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka
233aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    // <1> [2] ___|
2346213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka    public void testLayout2KeyMax5R2() {
2356213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        MoreKeysKeyboardParams params = createParams(2, 5, XPOS_R2);
2366213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("2 key max 5 R2 columns", 2, params.mNumColumns);
2376213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("2 key max 5 R2 rows", 1, params.mNumRows);
2386213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("2 key max 5 R2 left", 0, params.mLeftKeys);
2396213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("2 key max 5 R2 right", 2, params.mRightKeys);
240aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("2 key max 5 R2 <1>", 0, params.getColumnPos(0));
2416213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("2 key max 5 R2 [2]", 1, params.getColumnPos(1));
2426213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("2 key max 5 R2 adjust", 0, params.mTopRowAdjustment);
2436213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("2 key max 5 R2 default", WIDTH * 0, params.getDefaultKeyCoordX());
24404c96ab966e8a58e5cd401362b49509751ce75d9Tadashi G. Takaoka    }
24504c96ab966e8a58e5cd401362b49509751ce75d9Tadashi G. Takaoka
246aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    // [3] <1> [2]
2476213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka    public void testLayout3KeyMax5M0() {
2486213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        MoreKeysKeyboardParams params = createParams(3, 5, XPOS_M0);
249aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("3 key max 5 M0 columns", 3, params.mNumColumns);
250aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("3 key max 5 M0 rows", 1, params.mNumRows);
251aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("3 key max 5 M0 left", 1, params.mLeftKeys);
252aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("3 key max 5 M0 right", 2, params.mRightKeys);
253aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("3 key max 5 M0 <1>", 0, params.getColumnPos(0));
254aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("3 key max 5 M0 [2]", 1, params.getColumnPos(1));
255aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("3 key max 5 M0 [3]", -1, params.getColumnPos(2));
256aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("3 key max 5 M0 adjust", 0, params.mTopRowAdjustment);
257aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("3 key max 5 M0 default", WIDTH * 1, params.getDefaultKeyCoordX());
258aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    }
259aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka
260aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    // |<1> [2] [3]
2616213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka    public void testLayout3KeyMax5L0() {
2626213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        MoreKeysKeyboardParams params = createParams(3, 5, XPOS_L0);
2636213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("3 key max 5 L0 columns", 3, params.mNumColumns);
2646213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("3 key max 5 L0 rows", 1, params.mNumRows);
2656213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("3 key max 5 L0 left", 0, params.mLeftKeys);
2666213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("3 key max 5 L0 right", 3, params.mRightKeys);
267aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("3 key max 5 L0 <1>", 0, params.getColumnPos(0));
2686213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("3 key max 5 L0 [2]", 1, params.getColumnPos(1));
2696213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("3 key max 5 L0 [3]", 2, params.getColumnPos(2));
2706213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("3 key max 5 L0 adjust", 0, params.mTopRowAdjustment);
2716213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("3 key max 5 L0 default", WIDTH * 0, params.getDefaultKeyCoordX());
2725d542c24922ae531a581c122d685c3d86047b468Tadashi G. Takaoka    }
2735d542c24922ae531a581c122d685c3d86047b468Tadashi G. Takaoka
274aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    // |___ <1> [2] [3]
2756213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka    public void testLayout3KeyMax5L1() {
2766213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        MoreKeysKeyboardParams params = createParams(3, 5, XPOS_L1);
2776213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("3 key max 5 L1 columns", 3, params.mNumColumns);
2786213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("3 key max 5 L1 rows", 1, params.mNumRows);
2796213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("3 key max 5 L1 left", 0, params.mLeftKeys);
2806213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("3 key max 5 L1 right", 3, params.mRightKeys);
281aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("3 key max 5 L1 <1>", 0, params.getColumnPos(0));
2826213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("3 key max 5 L1 [2]", 1, params.getColumnPos(1));
2836213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("3 key max 5 L1 [3]", 2, params.getColumnPos(2));
2846213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("3 key max 5 L1 adjust", 0, params.mTopRowAdjustment);
2856213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("3 key max 5 L1 default", WIDTH * 0, params.getDefaultKeyCoordX());
2866213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka    }
2876213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka
288aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    // |___ [3] <1> [2]
2896213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka    public void testLayout3KeyMax5L2() {
2906213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        MoreKeysKeyboardParams params = createParams(3, 5, XPOS_L2);
2916213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("3 key max 5 L2 columns", 3, params.mNumColumns);
2926213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("3 key max 5 L2 rows", 1, params.mNumRows);
2936213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("3 key max 5 L2 left", 1, params.mLeftKeys);
2946213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("3 key max 5 L2 right", 2, params.mRightKeys);
295aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("3 key max 5 L2 <1>", 0, params.getColumnPos(0));
2966213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("3 key max 5 L2 [2]", 1, params.getColumnPos(1));
2976213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("3 key max 5 L2 [3]", -1, params.getColumnPos(2));
2986213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("3 key max 5 L2 adjust", 0, params.mTopRowAdjustment);
2996213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("3 key max 5 L2 default", WIDTH * 1, params.getDefaultKeyCoordX());
3005d542c24922ae531a581c122d685c3d86047b468Tadashi G. Takaoka    }
3015d542c24922ae531a581c122d685c3d86047b468Tadashi G. Takaoka
302aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    // [3] [2] <1>|
3036213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka    public void testLayout3KeyMax5R0() {
3046213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        MoreKeysKeyboardParams params = createParams(3, 5, XPOS_R0);
3056213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("3 key max 5 R0 columns", 3, params.mNumColumns);
3066213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("3 key max 5 R0 rows", 1, params.mNumRows);
3076213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("3 key max 5 R0 left", 2, params.mLeftKeys);
3086213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("3 key max 5 R0 right", 1, params.mRightKeys);
309aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("3 key max 5 R0 <1>", 0, params.getColumnPos(0));
3106213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("3 key max 5 R0 [2]", -1, params.getColumnPos(1));
3116213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("3 key max 5 R0 [3]", -2, params.getColumnPos(2));
3126213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("3 key max 5 R0 adjust", 0, params.mTopRowAdjustment);
3136213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("3 key max 5 R0 default", WIDTH * 2, params.getDefaultKeyCoordX());
3145d542c24922ae531a581c122d685c3d86047b468Tadashi G. Takaoka    }
3155d542c24922ae531a581c122d685c3d86047b468Tadashi G. Takaoka
316aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    // [3] [2] <1> ___|
3176213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka    public void testLayout3KeyMax5R1() {
3186213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        MoreKeysKeyboardParams params = createParams(3, 5, XPOS_R1);
3196213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("3 key max 5 R1 columns", 3, params.mNumColumns);
3206213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("3 key max 5 R1 rows", 1, params.mNumRows);
3216213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("3 key max 5 R1 left", 2, params.mLeftKeys);
3226213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("3 key max 5 R1 right", 1, params.mRightKeys);
323aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("3 key max 5 R1 <1>", 0, params.getColumnPos(0));
3246213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("3 key max 5 R1 [2]", -1, params.getColumnPos(1));
3256213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("3 key max 5 R1 [3]", -2, params.getColumnPos(2));
3266213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("3 key max 5 R1 adjust", 0, params.mTopRowAdjustment);
3276213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("3 key max 5 R1 default", WIDTH * 2, params.getDefaultKeyCoordX());
3286213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka    }
3296213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka
330aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    // [3] <1> [2] ___|
3316213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka    public void testLayout3KeyMax5R2() {
3326213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        MoreKeysKeyboardParams params = createParams(3, 5, XPOS_R2);
3336213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("3 key max 5 R2 columns", 3, params.mNumColumns);
3346213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("3 key max 5 R2 rows", 1, params.mNumRows);
3356213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("3 key max 5 R2 left", 1, params.mLeftKeys);
3366213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("3 key max 5 R2 right", 2, params.mRightKeys);
337aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("3 key max 5 R2 <1>", 0, params.getColumnPos(0));
3386213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("3 key max 5 R2 [2]", 1, params.getColumnPos(1));
3396213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("3 key max 5 R2 [3]", -1, params.getColumnPos(2));
3406213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("3 key max 5 R2 adjust", 0, params.mTopRowAdjustment);
3416213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("3 key max 5 R2 default", WIDTH * 1, params.getDefaultKeyCoordX());
3426213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka    }
3436213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka
344aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    // [3]
345aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    // <1> [2]
3466213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka    public void testLayout3KeyMax2M0() {
3476213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        MoreKeysKeyboardParams params = createParams(3, 2, XPOS_M0);
348aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("3 key max 2 M0 columns", 2, params.mNumColumns);
349aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("3 key max 2 M0 rows", 2, params.mNumRows);
350aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("3 key max 2 M0 left", 0, params.mLeftKeys);
351aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("3 key max 2 M0 right", 2, params.mRightKeys);
352aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("3 key max 2 M0 <1>", 0, params.getColumnPos(0));
353aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("3 key max 2 M0 [2]", 1, params.getColumnPos(1));
354aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("3 key max 2 M0 [3]", 0, params.getColumnPos(2));
355aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("3 key max 2 M0 adjust", 0, params.mTopRowAdjustment);
356aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("3 key max 2 M0 default", WIDTH * 0, params.getDefaultKeyCoordX());
357aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    }
358aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka
359aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    // |[3]
360aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    // |<1> [2]
3616213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka    public void testLayout3KeyMax2L0() {
3626213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        MoreKeysKeyboardParams params = createParams(3, 2, XPOS_L0);
3636213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("3 key max 2 L0 columns", 2, params.mNumColumns);
3646213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("3 key max 2 L0 rows", 2, params.mNumRows);
3656213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("3 key max 2 L0 left", 0, params.mLeftKeys);
3666213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("3 key max 2 L0 right", 2, params.mRightKeys);
367aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("3 key max 2 L0 <1>", 0, params.getColumnPos(0));
3686213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("3 key max 2 L0 [2]", 1, params.getColumnPos(1));
3696213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("3 key max 2 L0 [3]", 0, params.getColumnPos(2));
370aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("3 key max 2 L0 adjust", 0, params.mTopRowAdjustment);
3716213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("3 key max 2 L0 default", WIDTH * 0, params.getDefaultKeyCoordX());
3726213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka    }
3736213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka
374aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    // |___ [3]
375aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    // |___ <1> [2]
3766213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka    public void testLayout3KeyMax2L1() {
3776213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        MoreKeysKeyboardParams params = createParams(3, 2, XPOS_L1);
3786213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("3 key max 2 L1 columns", 2, params.mNumColumns);
3796213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("3 key max 2 L1 rows", 2, params.mNumRows);
3806213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("3 key max 2 L1 left", 0, params.mLeftKeys);
3816213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("3 key max 2 L1 right", 2, params.mRightKeys);
382aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("3 key max 2 L1 <1>", 0, params.getColumnPos(0));
3836213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("3 key max 2 L1 [2]", 1, params.getColumnPos(1));
3846213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("3 key max 2 L1 [3]", 0, params.getColumnPos(2));
385aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("3 key max 2 L1 adjust", 0, params.mTopRowAdjustment);
3866213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("3 key max 2 L1 default", WIDTH * 0, params.getDefaultKeyCoordX());
3876213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka    }
3886213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka
389aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    // |        [3]
390aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    // |___ ___ <1> [2]
3916213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka    public void testLayout3KeyMax2L2() {
3926213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        MoreKeysKeyboardParams params = createParams(3, 2, XPOS_L2);
3936213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("3 key max 2 L2 columns", 2, params.mNumColumns);
3946213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("3 key max 2 L2 rows", 2, params.mNumRows);
3956213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("3 key max 2 L2 left", 0, params.mLeftKeys);
3966213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("3 key max 2 L2 right", 2, params.mRightKeys);
397aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("3 key max 2 L2 <1>", 0, params.getColumnPos(0));
3986213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("3 key max 2 L2 [2]", 1, params.getColumnPos(1));
3996213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("3 key max 2 L2 [3]", 0, params.getColumnPos(2));
400aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("3 key max 2 L2 adjust", 0, params.mTopRowAdjustment);
4016213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("3 key max 2 L2 default", WIDTH * 0, params.getDefaultKeyCoordX());
4026213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka    }
4036213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka
404aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    //     [3]|
405aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    // [2] <1>|
4066213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka    public void testLayout3KeyMax2R0() {
4076213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        MoreKeysKeyboardParams params = createParams(3, 2, XPOS_R0);
4086213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("3 key max 2 R0 columns", 2, params.mNumColumns);
4096213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("3 key max 2 R0 rows", 2, params.mNumRows);
4106213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("3 key max 2 R0 left", 1, params.mLeftKeys);
4116213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("3 key max 2 R0 right", 1, params.mRightKeys);
412aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("3 key max 2 R0 <1>", 0, params.getColumnPos(0));
4136213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("3 key max 2 R0 [2]", -1, params.getColumnPos(1));
4146213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("3 key max 2 R0 [3]", 0, params.getColumnPos(2));
415aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("3 key max 2 R0 adjust", 0, params.mTopRowAdjustment);
4166213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("3 key max 2 R0 default", WIDTH * 1, params.getDefaultKeyCoordX());
4176213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka    }
4186213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka
419aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    //     [3]    |
420aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    // [2] <1> ___|
4216213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka    public void testLayout3KeyMax2R1() {
4226213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        MoreKeysKeyboardParams params = createParams(3, 2, XPOS_R1);
4236213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("3 key max 2 R1 columns", 2, params.mNumColumns);
4246213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("3 key max 2 R1 rows", 2, params.mNumRows);
4256213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("3 key max 2 R1 left", 1, params.mLeftKeys);
4266213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("3 key max 2 R1 right", 1, params.mRightKeys);
427aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("3 key max 2 R1 <1>", 0, params.getColumnPos(0));
4286213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("3 key max 2 R1 [2]", -1, params.getColumnPos(1));
4296213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("3 key max 2 R1 [3]", 0, params.getColumnPos(2));
430aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("3 key max 2 R1 adjust", 0, params.mTopRowAdjustment);
4316213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("3 key max 2 R1 default", WIDTH * 1, params.getDefaultKeyCoordX());
4326213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka    }
4336213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka
434aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    // [3]        |
435aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    // <1> [2] ___|
4366213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka    public void testLayout3KeyMax2R2() {
4376213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        MoreKeysKeyboardParams params = createParams(3, 2, XPOS_R2);
4386213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("3 key max 2 R2 columns", 2, params.mNumColumns);
4396213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("3 key max 2 R2 rows", 2, params.mNumRows);
4406213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("3 key max 2 R2 left", 0, params.mLeftKeys);
4416213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("3 key max 2 R2 right", 2, params.mRightKeys);
442aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("3 key max 2 R2 <1>", 0, params.getColumnPos(0));
4436213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("3 key max 2 R2 [2]", 1, params.getColumnPos(1));
4446213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("3 key max 2 R2 [3]", 0, params.getColumnPos(2));
445aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("3 key max 2 R2 adjust", 0, params.mTopRowAdjustment);
4466213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("3 key max 2 R2 default", WIDTH * 0, params.getDefaultKeyCoordX());
44704c96ab966e8a58e5cd401362b49509751ce75d9Tadashi G. Takaoka    }
44804c96ab966e8a58e5cd401362b49509751ce75d9Tadashi G. Takaoka
449aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    // [3] [4]
450aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    // <1> [2]
451aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    public void testLayout4KeyMax3M0() {
452aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        MoreKeysKeyboardParams params = createParams(4, 3, XPOS_M0);
453aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("4 key max 3 M0 columns", 2, params.mNumColumns);
454aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("4 key max 3 M0 rows", 2, params.mNumRows);
455aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("4 key max 3 M0 left", 0, params.mLeftKeys);
456aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("4 key max 3 M0 right", 2, params.mRightKeys);
457aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("4 key max 3 M0 <1>", 0, params.getColumnPos(0));
458aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("4 key max 3 M0 [2]", 1, params.getColumnPos(1));
459aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("4 key max 3 M0 [3]", 0, params.getColumnPos(2));
460aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("4 key max 3 M0 [4]", 1, params.getColumnPos(3));
461aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("4 key max 3 M0 adjust", 0, params.mTopRowAdjustment);
462aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("4 key max 3 M0 default", WIDTH * 0, params.getDefaultKeyCoordX());
463aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    }
464aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka
465aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    // |[3] [4]
466aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    // |<1> [2]
467aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    public void testLayout4KeyMax3L0() {
468aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        MoreKeysKeyboardParams params = createParams(4, 3, XPOS_L0);
469aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("4 key max 3 L0 columns", 2, params.mNumColumns);
470aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("4 key max 3 L0 rows", 2, params.mNumRows);
471aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("4 key max 3 L0 left", 0, params.mLeftKeys);
472aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("4 key max 3 L0 right", 2, params.mRightKeys);
473aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("4 key max 3 L0 <1>", 0, params.getColumnPos(0));
474aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("4 key max 3 L0 [2]", 1, params.getColumnPos(1));
475aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("4 key max 3 L0 [3]", 0, params.getColumnPos(2));
476aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("4 key max 3 L0 [4]", 1, params.getColumnPos(3));
477aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("4 key max 3 L0 adjust", 0, params.mTopRowAdjustment);
478aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("4 key max 3 L0 default", WIDTH * 0, params.getDefaultKeyCoordX());
479aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    }
480aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka
481aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    // |___ [3] [4]
482aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    // |___ <1> [2]
483aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    public void testLayout4KeyMax3L1() {
484aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        MoreKeysKeyboardParams params = createParams(4, 3, XPOS_L1);
485aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("4 key max 3 L1 columns", 2, params.mNumColumns);
486aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("4 key max 3 L1 rows", 2, params.mNumRows);
487aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("4 key max 3 L1 left", 0, params.mLeftKeys);
488aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("4 key max 3 L1 right", 2, params.mRightKeys);
489aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("4 key max 3 L1 <1>", 0, params.getColumnPos(0));
490aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("4 key max 3 L1 [2]", 1, params.getColumnPos(1));
491aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("4 key max 3 L1 [3]", 0, params.getColumnPos(2));
492aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("4 key max 3 L1 [4]", 1, params.getColumnPos(3));
493aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("4 key max 3 L1 adjust", 0, params.mTopRowAdjustment);
494aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("4 key max 3 L1 default", WIDTH * 0, params.getDefaultKeyCoordX());
495aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    }
496aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka
497aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    // |___ ___ [3] [4]
498aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    // |___ ___ <1> [2]
499aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    public void testLayout4KeyMax3L2() {
500aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        MoreKeysKeyboardParams params = createParams(4, 3, XPOS_L2);
501aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("4 key max 3 L2 columns", 2, params.mNumColumns);
502aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("4 key max 3 L2 rows", 2, params.mNumRows);
503aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("4 key max 3 L2 left", 0, params.mLeftKeys);
504aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("4 key max 3 L2 right", 2, params.mRightKeys);
505aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("4 key max 3 L2 <1>", 0, params.getColumnPos(0));
506aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("4 key max 3 L2 [2]", 1, params.getColumnPos(1));
507aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("4 key max 3 L2 [3]", 0, params.getColumnPos(2));
508aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("4 key max 3 L2 [4]", 1, params.getColumnPos(3));
509aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("4 key max 3 L2 adjust", 0, params.mTopRowAdjustment);
510aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("4 key max 3 L2 default", WIDTH * 0, params.getDefaultKeyCoordX());
511aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    }
512aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka
513aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    // [4] [3]|
514aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    // [2] <1>|
515aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    public void testLayout4KeyMax3R0() {
516aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        MoreKeysKeyboardParams params = createParams(4, 3, XPOS_R0);
517aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("4 key max 3 R0 columns", 2, params.mNumColumns);
518aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("4 key max 3 R0 rows", 2, params.mNumRows);
519aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("4 key max 3 R0 left", 1, params.mLeftKeys);
520aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("4 key max 3 R0 right", 1, params.mRightKeys);
521aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("4 key max 3 R0 <1>", 0, params.getColumnPos(0));
522aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("4 key max 3 R0 [2]", -1, params.getColumnPos(1));
523aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("4 key max 3 R0 [3]", 0, params.getColumnPos(2));
524aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("4 key max 3 R0 [4]", -1, params.getColumnPos(3));
525aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("4 key max 3 R0 adjust", 0, params.mTopRowAdjustment);
526aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("4 key max 3 R0 default", WIDTH * 1, params.getDefaultKeyCoordX());
527aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    }
528aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka
529aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    // [4] [3] ___|
530aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    // [2] <1> ___|
531aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    public void testLayout4KeyMax3R1() {
532aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        MoreKeysKeyboardParams params = createParams(4, 3, XPOS_R1);
533aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("4 key max 3 R1 columns", 2, params.mNumColumns);
534aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("4 key max 3 R1 rows", 2, params.mNumRows);
535aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("4 key max 3 R1 left", 1, params.mLeftKeys);
536aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("4 key max 3 R1 right", 1, params.mRightKeys);
537aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("4 key max 3 R1 <1>", 0, params.getColumnPos(0));
538aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("4 key max 3 R1 [2]", -1, params.getColumnPos(1));
539aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("4 key max 3 R1 [3]", 0, params.getColumnPos(2));
540aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("4 key max 3 R1 [4]", -1, params.getColumnPos(3));
541aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("4 key max 3 R1 adjust", 0, params.mTopRowAdjustment);
542aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("4 key max 3 R1 default", WIDTH * 1, params.getDefaultKeyCoordX());
543aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    }
544aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka
545aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    // [3] [4] ___|
546aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    // <1> [2] ___|
547aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    public void testLayout4KeyMax3R2() {
548aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        MoreKeysKeyboardParams params = createParams(4, 3, XPOS_R2);
549aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("4 key max 3 R2 columns", 2, params.mNumColumns);
550aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("4 key max 3 R2 rows", 2, params.mNumRows);
551aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("4 key max 3 R2 left", 0, params.mLeftKeys);
552aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("4 key max 3 R2 right", 2, params.mRightKeys);
553aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("4 key max 3 R2 <1>", 0, params.getColumnPos(0));
554aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("4 key max 3 R2 [2]", 1, params.getColumnPos(1));
555aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("4 key max 3 R2 [3]", 0, params.getColumnPos(2));
556aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("4 key max 3 R2 [4]", 1, params.getColumnPos(3));
557aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("4 key max 3 R2 adjust", 0, params.mTopRowAdjustment);
558aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("4 key max 3 R2 default", WIDTH * 0, params.getDefaultKeyCoordX());
559aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    }
560aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka
561aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    // [3] <1> [2] [4]
562aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    public void testLayout4KeyMax4M0() {
563aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        MoreKeysKeyboardParams params = createParams(4, 4, XPOS_M0);
564aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("4 key max 4 M0 columns", 4, params.mNumColumns);
565aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("4 key max 4 M0 rows", 1, params.mNumRows);
566aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("4 key max 4 M0 left", 1, params.mLeftKeys);
567aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("4 key max 4 M0 right", 3, params.mRightKeys);
568aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("4 key max 4 M0 <1>", 0, params.getColumnPos(0));
569aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("4 key max 4 M0 [2]", 1, params.getColumnPos(1));
570aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("4 key max 4 M0 [3]", -1, params.getColumnPos(2));
571aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("4 key max 4 M0 [4]", 2, params.getColumnPos(3));
572aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("4 key max 4 M0 adjust", 0, params.mTopRowAdjustment);
573aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("4 key max 4 M0 default", WIDTH * 1, params.getDefaultKeyCoordX());
574aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    }
575aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka
576aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    // |<1> [2] [3] [4]
577aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    public void testLayout4KeyMax4L0() {
578aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        MoreKeysKeyboardParams params = createParams(4, 4, XPOS_L0);
579aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("4 key max 4 L0 columns", 4, params.mNumColumns);
580aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("4 key max 4 L0 rows", 1, params.mNumRows);
581aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("4 key max 4 L0 left", 0, params.mLeftKeys);
582aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("4 key max 4 L0 right", 4, params.mRightKeys);
583aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("4 key max 4 L0 <1>", 0, params.getColumnPos(0));
584aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("4 key max 4 L0 [2]", 1, params.getColumnPos(1));
585aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("4 key max 4 L0 [3]", 2, params.getColumnPos(2));
586aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("4 key max 4 L0 [4]", 3, params.getColumnPos(3));
587aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("4 key max 4 L0 adjust", 0, params.mTopRowAdjustment);
588aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("4 key max 4 L0 default", WIDTH * 0, params.getDefaultKeyCoordX());
589aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    }
590aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka
591aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    // |___ <1> [2] [3] [4]
592aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    public void testLayout4KeyMax4L1() {
593aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        MoreKeysKeyboardParams params = createParams(4, 4, XPOS_L1);
594aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("4 key max 4 L1 columns", 4, params.mNumColumns);
595aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("4 key max 4 L1 rows", 1, params.mNumRows);
596aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("4 key max 4 L1 left", 0, params.mLeftKeys);
597aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("4 key max 4 L1 right", 4, params.mRightKeys);
598aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("4 key max 4 L1 <1>", 0, params.getColumnPos(0));
599aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("4 key max 4 L1 [2]", 1, params.getColumnPos(1));
600aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("4 key max 4 L1 [3]", 2, params.getColumnPos(2));
601aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("4 key max 4 L1 [4]", 3, params.getColumnPos(3));
602aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("4 key max 4 L1 adjust", 0, params.mTopRowAdjustment);
603aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("4 key max 4 L1 default", WIDTH * 0, params.getDefaultKeyCoordX());
604aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    }
605aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka
606aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    // |___ [3] <1> [2] [4]
607aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    public void testLayout4KeyMax4L2() {
608aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        MoreKeysKeyboardParams params = createParams(4, 4, XPOS_L2);
609aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("4 key max 4 L2 columns", 4, params.mNumColumns);
610aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("4 key max 4 L2 rows", 1, params.mNumRows);
611aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("4 key max 4 L2 left", 1, params.mLeftKeys);
612aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("4 key max 4 L2 right", 3, params.mRightKeys);
613aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("4 key max 4 L2 <1>", 0, params.getColumnPos(0));
614aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("4 key max 4 L2 [2]", 1, params.getColumnPos(1));
615aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("4 key max 4 L2 [3]", -1, params.getColumnPos(2));
616aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("4 key max 4 L2 [4]", 2, params.getColumnPos(3));
617aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("4 key max 4 L2 adjust", 0, params.mTopRowAdjustment);
618aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("4 key max 4 L2 default", WIDTH * 1, params.getDefaultKeyCoordX());
619aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    }
620aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka
621aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    // [4] [3] [2] <1>|
622aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    public void testLayout4KeyMax4R0() {
623aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        MoreKeysKeyboardParams params = createParams(4, 4, XPOS_R0);
624aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("4 key max 4 R0 columns", 4, params.mNumColumns);
625aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("4 key max 4 R0 rows", 1, params.mNumRows);
626aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("4 key max 4 R0 left", 3, params.mLeftKeys);
627aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("4 key max 4 R0 right", 1, params.mRightKeys);
628aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("4 key max 4 R0 <1>", 0, params.getColumnPos(0));
629aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("4 key max 4 R0 [2]", -1, params.getColumnPos(1));
630aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("4 key max 4 R0 [3]", -2, params.getColumnPos(2));
631aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("4 key max 4 R0 [4]", -3, params.getColumnPos(3));
632aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("4 key max 4 R0 adjust", 0, params.mTopRowAdjustment);
633aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("4 key max 4 R0 default", WIDTH * 3, params.getDefaultKeyCoordX());
634aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    }
635aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka
636aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    // [4] [3] [2] <1> ___|
637aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    public void testLayout4KeyMax4R1() {
638aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        MoreKeysKeyboardParams params = createParams(4, 4, XPOS_R1);
639aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("4 key max 4 R1 columns", 4, params.mNumColumns);
640aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("4 key max 4 R1 rows", 1, params.mNumRows);
641aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("4 key max 4 R1 left", 3, params.mLeftKeys);
642aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("4 key max 4 R1 right", 1, params.mRightKeys);
643aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("4 key max 4 R1 <1>", 0, params.getColumnPos(0));
644aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("4 key max 4 R1 [2]", -1, params.getColumnPos(1));
645aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("4 key max 4 R1 [3]", -2, params.getColumnPos(2));
646aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("4 key max 4 R1 [4]", -3, params.getColumnPos(3));
647aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("4 key max 4 R1 adjust", 0, params.mTopRowAdjustment);
648aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("4 key max 4 R1 default", WIDTH * 3, params.getDefaultKeyCoordX());
649aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    }
650aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka
651aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    // [4] [3] <1> [2] ___|
652aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    public void testLayout4KeyMax4R2() {
653aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        MoreKeysKeyboardParams params = createParams(4, 4, XPOS_R2);
654aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("4 key max 4 R2 columns", 4, params.mNumColumns);
655aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("4 key max 4 R2 rows", 1, params.mNumRows);
656aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("4 key max 4 R2 left", 2, params.mLeftKeys);
657aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("4 key max 4 R2 right", 2, params.mRightKeys);
658aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("4 key max 4 R2 <1>", 0, params.getColumnPos(0));
659aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("4 key max 4 R2 [2]", 1, params.getColumnPos(1));
660aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("4 key max 4 R2 [3]", -1, params.getColumnPos(2));
661aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("4 key max 4 R2 [4]", -2, params.getColumnPos(3));
662aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("4 key max 4 R2 adjust", 0, params.mTopRowAdjustment);
663aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("4 key max 4 R2 default", WIDTH * 2, params.getDefaultKeyCoordX());
664aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    }
665aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka
666aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    // [3] <1> [2] [4]
6676213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka    public void testLayout4KeyMax5M0() {
6686213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        MoreKeysKeyboardParams params = createParams(4, 5, XPOS_M0);
669aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("4 key max 5 M0 columns", 4, params.mNumColumns);
670aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("4 key max 5 M0 rows", 1, params.mNumRows);
671aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("4 key max 5 M0 left", 1, params.mLeftKeys);
672aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("4 key max 5 M0 right", 3, params.mRightKeys);
673aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("4 key max 5 M0 <1>", 0, params.getColumnPos(0));
674aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("4 key max 5 M0 [2]", 1, params.getColumnPos(1));
675aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("4 key max 5 M0 [3]", -1, params.getColumnPos(2));
676aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("4 key max 5 M0 [4]", 2, params.getColumnPos(3));
677aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("4 key max 5 M0 adjust", 0, params.mTopRowAdjustment);
678aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("4 key max 5 M0 default", WIDTH * 1, params.getDefaultKeyCoordX());
679aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    }
680aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka
681aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    // |<1> [2] [3] [4]
6826213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka    public void testLayout4KeyMax5L0() {
6836213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        MoreKeysKeyboardParams params = createParams(4, 5, XPOS_L0);
6846213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("4 key max 5 L0 columns", 4, params.mNumColumns);
6856213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("4 key max 5 L0 rows", 1, params.mNumRows);
6866213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("4 key max 5 L0 left", 0, params.mLeftKeys);
6876213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("4 key max 5 L0 right", 4, params.mRightKeys);
688aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("4 key max 5 L0 <1>", 0, params.getColumnPos(0));
6896213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("4 key max 5 L0 [2]", 1, params.getColumnPos(1));
6906213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("4 key max 5 L0 [3]", 2, params.getColumnPos(2));
6916213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("4 key max 5 L0 [4]", 3, params.getColumnPos(3));
6926213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("4 key max 5 L0 adjust", 0, params.mTopRowAdjustment);
6936213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("4 key max 5 L0 default", WIDTH * 0, params.getDefaultKeyCoordX());
6945d542c24922ae531a581c122d685c3d86047b468Tadashi G. Takaoka    }
6955d542c24922ae531a581c122d685c3d86047b468Tadashi G. Takaoka
696aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    // |___ <1> [2] [3] [4]
6976213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka    public void testLayout4KeyMax5L1() {
6986213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        MoreKeysKeyboardParams params = createParams(4, 5, XPOS_L1);
6996213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("4 key max 5 L1 columns", 4, params.mNumColumns);
7006213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("4 key max 5 L1 rows", 1, params.mNumRows);
7016213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("4 key max 5 L1 left", 0, params.mLeftKeys);
7026213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("4 key max 5 L1 right", 4, params.mRightKeys);
703aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("4 key max 5 L1 <1>", 0, params.getColumnPos(0));
7046213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("4 key max 5 L1 [2]", 1, params.getColumnPos(1));
7056213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("4 key max 5 L1 [3]", 2, params.getColumnPos(2));
7066213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("4 key max 5 L1 [4]", 3, params.getColumnPos(3));
7076213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("4 key max 5 L1 adjust", 0, params.mTopRowAdjustment);
7086213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("4 key max 5 L1 default", WIDTH * 0, params.getDefaultKeyCoordX());
7096213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka    }
7106213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka
711aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    // |___ [3] <1> [2] [4]
7126213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka    public void testLayout4KeyMax5L2() {
7136213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        MoreKeysKeyboardParams params = createParams(4, 5, XPOS_L2);
7146213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("4 key max 5 L2 columns", 4, params.mNumColumns);
7156213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("4 key max 5 L2 rows", 1, params.mNumRows);
7166213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("4 key max 5 L2 left", 1, params.mLeftKeys);
7176213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("4 key max 5 L2 right", 3, params.mRightKeys);
718aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("4 key max 5 L2 <1>", 0, params.getColumnPos(0));
7196213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("4 key max 5 L2 [2]", 1, params.getColumnPos(1));
7206213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("4 key max 5 L2 [3]", -1, params.getColumnPos(2));
7216213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("4 key max 5 L2 [4]", 2, params.getColumnPos(3));
7226213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("4 key max 5 L2 adjust", 0, params.mTopRowAdjustment);
7236213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("4 key max 5 L2 default", WIDTH * 1, params.getDefaultKeyCoordX());
7245d542c24922ae531a581c122d685c3d86047b468Tadashi G. Takaoka    }
7255d542c24922ae531a581c122d685c3d86047b468Tadashi G. Takaoka
726aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    // [4] [3] [2] <1>|
7276213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka    public void testLayout4KeyMax5R0() {
7286213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        MoreKeysKeyboardParams params = createParams(4, 5, XPOS_R0);
7296213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("4 key max 5 R0 columns", 4, params.mNumColumns);
7306213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("4 key max 5 R0 rows", 1, params.mNumRows);
7316213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("4 key max 5 R0 left", 3, params.mLeftKeys);
7326213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("4 key max 5 R0 right", 1, params.mRightKeys);
733aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("4 key max 5 R0 <1>", 0, params.getColumnPos(0));
7346213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("4 key max 5 R0 [2]", -1, params.getColumnPos(1));
7356213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("4 key max 5 R0 [3]", -2, params.getColumnPos(2));
7366213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("4 key max 5 R0 [4]", -3, params.getColumnPos(3));
7376213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("4 key max 5 R0 adjust", 0, params.mTopRowAdjustment);
7386213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("4 key max 5 R0 default", WIDTH * 3, params.getDefaultKeyCoordX());
7395d542c24922ae531a581c122d685c3d86047b468Tadashi G. Takaoka    }
7405d542c24922ae531a581c122d685c3d86047b468Tadashi G. Takaoka
741aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    // [4] [3] [2] <1> ___|
7426213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka    public void testLayout4KeyMax5R1() {
7436213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        MoreKeysKeyboardParams params = createParams(4, 5, XPOS_R1);
7446213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("4 key max 5 R1 columns", 4, params.mNumColumns);
7456213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("4 key max 5 R1 rows", 1, params.mNumRows);
7466213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("4 key max 5 R1 left", 3, params.mLeftKeys);
7476213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("4 key max 5 R1 right", 1, params.mRightKeys);
748aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("4 key max 5 R1 <1>", 0, params.getColumnPos(0));
7496213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("4 key max 5 R1 [2]", -1, params.getColumnPos(1));
7506213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("4 key max 5 R1 [3]", -2, params.getColumnPos(2));
7516213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("4 key max 5 R1 [4]", -3, params.getColumnPos(3));
7526213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("4 key max 5 R1 adjust", 0, params.mTopRowAdjustment);
7536213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("4 key max 5 R1 default", WIDTH * 3, params.getDefaultKeyCoordX());
7546213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka    }
7556213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka
756aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    // [4] [3] <1> [2] ___|
7576213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka    public void testLayout4KeyMax5R2() {
7586213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        MoreKeysKeyboardParams params = createParams(4, 5, XPOS_R2);
7596213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("4 key max 5 R2 columns", 4, params.mNumColumns);
7606213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("4 key max 5 R2 rows", 1, params.mNumRows);
7616213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("4 key max 5 R2 left", 2, params.mLeftKeys);
7626213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("4 key max 5 R2 right", 2, params.mRightKeys);
763aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("4 key max 5 R2 <1>", 0, params.getColumnPos(0));
7646213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("4 key max 5 R2 [2]", 1, params.getColumnPos(1));
7656213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("4 key max 5 R2 [3]", -1, params.getColumnPos(2));
7666213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("4 key max 5 R2 [4]", -2, params.getColumnPos(3));
7676213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("4 key max 5 R2 adjust", 0, params.mTopRowAdjustment);
7686213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("4 key max 5 R2 default", WIDTH * 2, params.getDefaultKeyCoordX());
76904c96ab966e8a58e5cd401362b49509751ce75d9Tadashi G. Takaoka    }
77004c96ab966e8a58e5cd401362b49509751ce75d9Tadashi G. Takaoka
771aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    //   [4] [5]
772aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    // [3] <1> [2]
773aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    public void testLayout5KeyMax3M0() {
774aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        MoreKeysKeyboardParams params = createParams(5, 3, XPOS_M0);
775aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("5 key max 3 M0 columns", 3, params.mNumColumns);
776aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("5 key max 3 M0 rows", 2, params.mNumRows);
777aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("5 key max 3 M0 left", 1, params.mLeftKeys);
778aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("5 key max 3 M0 right", 2, params.mRightKeys);
779aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("5 key max 3 M0 <1>", 0, params.getColumnPos(0));
780aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("5 key max 3 M0 [2]", 1, params.getColumnPos(1));
781aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("5 key max 3 M0 [3]", -1, params.getColumnPos(2));
782aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("5 key max 3 M0 [4]", 0, params.getColumnPos(3));
783aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("5 key max 3 M0 [5]", 1, params.getColumnPos(4));
784aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("5 key max 3 M0 adjust", -1, params.mTopRowAdjustment);
785aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("5 key max 3 M0 default", WIDTH * 1, params.getDefaultKeyCoordX());
786aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    }
787aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka
788aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    // |[4] [5]
789aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    // |<1> [2] [3]
790aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    public void testLayout5KeyMax3L0() {
791aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        MoreKeysKeyboardParams params = createParams(5, 3, XPOS_L0);
792aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("5 key max 3 L0 columns", 3, params.mNumColumns);
793aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("5 key max 3 L0 rows", 2, params.mNumRows);
794aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("5 key max 3 L0 left", 0, params.mLeftKeys);
795aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("5 key max 3 L0 right", 3, params.mRightKeys);
796aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("5 key max 3 L0 <1>", 0, params.getColumnPos(0));
797aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("5 key max 3 L0 [2]", 1, params.getColumnPos(1));
798aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("5 key max 3 L0 [3]", 2, params.getColumnPos(2));
799aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("5 key max 3 L0 [4]", 0, params.getColumnPos(3));
800aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("5 key max 3 L0 [5]", 1, params.getColumnPos(4));
801aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("5 key max 3 L0 adjust", 0, params.mTopRowAdjustment);
802aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("5 key max 3 L0 default", WIDTH * 0, params.getDefaultKeyCoordX());
803aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    }
804aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka
805aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    // |___ [4] [5]
806aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    // |___ <1> [2] [3]
807aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    public void testLayout5KeyMax3L1() {
808aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        MoreKeysKeyboardParams params = createParams(5, 3, XPOS_L1);
809aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("5 key max 3 L1 columns", 3, params.mNumColumns);
810aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("5 key max 3 L1 rows", 2, params.mNumRows);
811aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("5 key max 3 L1 left", 0, params.mLeftKeys);
812aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("5 key max 3 L1 right", 3, params.mRightKeys);
813aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("5 key max 3 L1 <1>", 0, params.getColumnPos(0));
814aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("5 key max 3 L1 [2]", 1, params.getColumnPos(1));
815aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("5 key max 3 L1 [3]", 2, params.getColumnPos(2));
816aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("5 key max 3 L1 [4]", 0, params.getColumnPos(3));
817aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("5 key max 3 L1 [5]", 1, params.getColumnPos(4));
818aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("5 key max 3 L1 adjust", 0, params.mTopRowAdjustment);
819aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("5 key max 3 L1 default", WIDTH * 0, params.getDefaultKeyCoordX());
820aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    }
821aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka
822aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    // |___   [4] [5]
823aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    // |___ [3] <1> [2]
824aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    public void testLayout5KeyMax3L2() {
825aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        MoreKeysKeyboardParams params = createParams(5, 3, XPOS_L2);
826aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("5 key max 3 L2 columns", 3, params.mNumColumns);
827aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("5 key max 3 L2 rows", 2, params.mNumRows);
828aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("5 key max 3 L2 left", 1, params.mLeftKeys);
829aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("5 key max 3 L2 right", 2, params.mRightKeys);
830aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("5 key max 3 L2 <1>", 0, params.getColumnPos(0));
831aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("5 key max 3 L2 [2]", 1, params.getColumnPos(1));
832aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("5 key max 3 L2 [3]", -1, params.getColumnPos(2));
833aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("5 key max 3 L2 [4]", 0, params.getColumnPos(3));
834aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("5 key max 3 L2 [5]", 1, params.getColumnPos(4));
835aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("5 key max 3 L2 adjust", -1, params.mTopRowAdjustment);
836aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("5 key max 3 L2 default", WIDTH * 1, params.getDefaultKeyCoordX());
837aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    }
838aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka
839aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    //     [5] [4]|
840aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    // [3] [2] <1>|
841aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    public void testLayout5KeyMax3R0() {
842aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        MoreKeysKeyboardParams params = createParams(5, 3, XPOS_R0);
843aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("5 key max 3 R0 columns", 3, params.mNumColumns);
844aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("5 key max 3 R0 rows", 2, params.mNumRows);
845aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("5 key max 3 R0 left", 2, params.mLeftKeys);
846aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("5 key max 3 R0 right", 1, params.mRightKeys);
847aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("5 key max 3 R0 <1>", 0, params.getColumnPos(0));
848aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("5 key max 3 R0 [2]", -1, params.getColumnPos(1));
849aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("5 key max 3 R0 [3]", -2, params.getColumnPos(2));
850aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("5 key max 3 R0 [4]", 0, params.getColumnPos(3));
851aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("5 key max 3 R0 [5]", -1, params.getColumnPos(4));
852aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("5 key max 3 R0 adjust", 0, params.mTopRowAdjustment);
853aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("5 key max 3 R0 default", WIDTH * 2, params.getDefaultKeyCoordX());
854aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    }
855aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka
856aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    //     [5] [4] ___|
857aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    // [3] [2] <1> ___|
858aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    public void testLayout5KeyMax3R1() {
859aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        MoreKeysKeyboardParams params = createParams(5, 3, XPOS_R1);
860aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("5 key max 3 R1 columns", 3, params.mNumColumns);
861aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("5 key max 3 R1 rows", 2, params.mNumRows);
862aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("5 key max 3 R1 left", 2, params.mLeftKeys);
863aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("5 key max 3 R1 right", 1, params.mRightKeys);
864aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("5 key max 3 R1 <1>", 0, params.getColumnPos(0));
865aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("5 key max 3 R1 [2]", -1, params.getColumnPos(1));
866aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("5 key max 3 R1 [3]", -2, params.getColumnPos(2));
867aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("5 key max 3 R1 [4]", 0, params.getColumnPos(3));
868aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("5 key max 3 R1 [5]", -1, params.getColumnPos(4));
869aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("5 key max 3 R1 adjust", 0, params.mTopRowAdjustment);
870aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("5 key max 3 R1 default", WIDTH * 2, params.getDefaultKeyCoordX());
871aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    }
872aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka
873aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    //   [4] [5]   ___|
874aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    // [3] <1> [2] ___|
875aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    public void testLayout5KeyMax3R2() {
876aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        MoreKeysKeyboardParams params = createParams(5, 3, XPOS_R2);
877aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("5 key max 3 R2 columns", 3, params.mNumColumns);
878aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("5 key max 3 R2 rows", 2, params.mNumRows);
879aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("5 key max 3 R2 left", 1, params.mLeftKeys);
880aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("5 key max 3 R2 right", 2, params.mRightKeys);
881aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("5 key max 3 R2 <1>", 0, params.getColumnPos(0));
882aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("5 key max 3 R2 [2]", 1, params.getColumnPos(1));
883aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("5 key max 3 R2 [3]", -1, params.getColumnPos(2));
884aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("5 key max 3 R2 [4]", 0, params.getColumnPos(3));
885aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("5 key max 3 R2 [5]", 1, params.getColumnPos(4));
886aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("5 key max 3 R2 adjust", -1, params.mTopRowAdjustment);
887aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("5 key max 3 R2 default", WIDTH * 1, params.getDefaultKeyCoordX());
888aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    }
889aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka
890aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    //   [4] [5]
891aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    // [3] <1> [2]
892aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    public void testLayout5KeyMax4M0() {
893aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        MoreKeysKeyboardParams params = createParams(5, 4, XPOS_M0);
894aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("5 key max 4 M0 columns", 3, params.mNumColumns);
895aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("5 key max 4 M0 rows", 2, params.mNumRows);
896aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("5 key max 4 M0 left", 1, params.mLeftKeys);
897aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("5 key max 4 M0 right", 2, params.mRightKeys);
898aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("5 key max 4 M0 <1>", 0, params.getColumnPos(0));
899aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("5 key max 4 M0 [2]", 1, params.getColumnPos(1));
900aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("5 key max 4 M0 [3]", -1, params.getColumnPos(2));
901aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("5 key max 4 M0 [4]", 0, params.getColumnPos(3));
902aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("5 key max 4 M0 [5]", 1, params.getColumnPos(4));
903aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("5 key max 4 M0 adjust", -1, params.mTopRowAdjustment);
904aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("5 key max 4 M0 default", WIDTH * 1, params.getDefaultKeyCoordX());
905aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    }
906aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka
907aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    // |[4] [5]
908aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    // |<1> [2] [3]
909aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    public void testLayout5KeyMax4L0() {
910aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        MoreKeysKeyboardParams params = createParams(5, 4, XPOS_L0);
911aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("5 key max 4 L0 columns", 3, params.mNumColumns);
912aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("5 key max 4 L0 rows", 2, params.mNumRows);
913aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("5 key max 4 L0 left", 0, params.mLeftKeys);
914aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("5 key max 4 L0 right", 3, params.mRightKeys);
915aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("5 key max 4 L0 <1>", 0, params.getColumnPos(0));
916aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("5 key max 4 L0 [2]", 1, params.getColumnPos(1));
917aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("5 key max 4 L0 [3]", 2, params.getColumnPos(2));
918aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("5 key max 4 L0 [4]", 0, params.getColumnPos(3));
919aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("5 key max 4 L0 [5]", 1, params.getColumnPos(4));
920aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("5 key max 4 L0 adjust", 0, params.mTopRowAdjustment);
921aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("5 key max 4 L0 default", WIDTH * 0, params.getDefaultKeyCoordX());
922aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    }
923aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka
924aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    // |___ [4] [5]
925aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    // |___ <1> [2] [3]
926aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    public void testLayout5KeyMax4L1() {
927aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        MoreKeysKeyboardParams params = createParams(5, 4, XPOS_L1);
928aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("5 key max 4 L1 columns", 3, params.mNumColumns);
929aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("5 key max 4 L1 rows", 2, params.mNumRows);
930aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("5 key max 4 L1 left", 0, params.mLeftKeys);
931aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("5 key max 4 L1 right", 3, params.mRightKeys);
932aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("5 key max 4 L1 <1>", 0, params.getColumnPos(0));
933aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("5 key max 4 L1 [2]", 1, params.getColumnPos(1));
934aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("5 key max 4 L1 [3]", 2, params.getColumnPos(2));
935aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("5 key max 4 L1 [4]", 0, params.getColumnPos(3));
936aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("5 key max 4 L1 [5]", 1, params.getColumnPos(4));
937aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("5 key max 4 L1 adjust", 0, params.mTopRowAdjustment);
938aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("5 key max 4 L1 default", WIDTH * 0, params.getDefaultKeyCoordX());
939aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    }
940aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka
941aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    // |___   [4] [5]
942aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    // |___ [3] <1> [2]
943aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    public void testLayout5KeyMax4L2() {
944aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        MoreKeysKeyboardParams params = createParams(5, 4, XPOS_L2);
945aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("5 key max 4 L2 columns", 3, params.mNumColumns);
946aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("5 key max 4 L2 rows", 2, params.mNumRows);
947aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("5 key max 4 L2 left", 1, params.mLeftKeys);
948aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("5 key max 4 L2 right", 2, params.mRightKeys);
949aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("5 key max 4 L2 <1>", 0, params.getColumnPos(0));
950aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("5 key max 4 L2 [2]", 1, params.getColumnPos(1));
951aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("5 key max 4 L2 [3]", -1, params.getColumnPos(2));
952aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("5 key max 4 L2 [4]", 0, params.getColumnPos(3));
953aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("5 key max 4 L2 [5]", 1, params.getColumnPos(4));
954aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("5 key max 4 L2 adjust", -1, params.mTopRowAdjustment);
955aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("5 key max 4 L2 default", WIDTH * 1, params.getDefaultKeyCoordX());
956aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    }
957aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka
958aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    //     [5] [4]|
959aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    // [3] [2] <1>|
960aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    public void testLayout5KeyMax4R0() {
961aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        MoreKeysKeyboardParams params = createParams(5, 4, XPOS_R0);
962aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("5 key max 4 R0 columns", 3, params.mNumColumns);
963aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("5 key max 4 R0 rows", 2, params.mNumRows);
964aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("5 key max 4 R0 left", 2, params.mLeftKeys);
965aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("5 key max 4 R0 right", 1, params.mRightKeys);
966aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("5 key max 4 R0 <1>", 0, params.getColumnPos(0));
967aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("5 key max 4 R0 [2]", -1, params.getColumnPos(1));
968aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("5 key max 4 R0 [3]", -2, params.getColumnPos(2));
969aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("5 key max 4 R0 [4]", 0, params.getColumnPos(3));
970aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("5 key max 4 R0 [5]", -1, params.getColumnPos(4));
971aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("5 key max 4 R0 adjust", 0, params.mTopRowAdjustment);
972aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("5 key max 4 R0 default", WIDTH * 2, params.getDefaultKeyCoordX());
973aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    }
974aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka
975aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    //     [5] [4] ___|
976aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    // [3] [2] <1> ___|
977aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    public void testLayout5KeyMax4R1() {
978aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        MoreKeysKeyboardParams params = createParams(5, 4, XPOS_R1);
979aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("5 key max 4 R1 columns", 3, params.mNumColumns);
980aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("5 key max 4 R1 rows", 2, params.mNumRows);
981aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("5 key max 4 R1 left", 2, params.mLeftKeys);
982aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("5 key max 4 R1 right", 1, params.mRightKeys);
983aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("5 key max 4 R1 <1>", 0, params.getColumnPos(0));
984aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("5 key max 4 R1 [2]", -1, params.getColumnPos(1));
985aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("5 key max 4 R1 [3]", -2, params.getColumnPos(2));
986aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("5 key max 4 R1 [4]", 0, params.getColumnPos(3));
987aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("5 key max 4 R1 [5]", -1, params.getColumnPos(4));
988aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("5 key max 4 R1 adjust", 0, params.mTopRowAdjustment);
989aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("5 key max 4 R1 default", WIDTH * 2, params.getDefaultKeyCoordX());
990aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    }
991aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka
992aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    //   [4] [5]   ___|
993aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    // [3] <1> [2] ___|
994aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    public void testLayout5KeyMax4R2() {
995aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        MoreKeysKeyboardParams params = createParams(5, 4, XPOS_R2);
996aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("5 key max 4 R2 columns", 3, params.mNumColumns);
997aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("5 key max 4 R2 rows", 2, params.mNumRows);
998aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("5 key max 4 R2 left", 1, params.mLeftKeys);
999aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("5 key max 4 R2 right", 2, params.mRightKeys);
1000aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("5 key max 4 R2 <1>", 0, params.getColumnPos(0));
1001aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("5 key max 4 R2 [2]", 1, params.getColumnPos(1));
1002aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("5 key max 4 R2 [3]", -1, params.getColumnPos(2));
1003aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("5 key max 4 R2 [4]", 0, params.getColumnPos(3));
1004aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("5 key max 4 R2 [5]", 1, params.getColumnPos(4));
1005aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("5 key max 4 R2 adjust", -1, params.mTopRowAdjustment);
1006aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("5 key max 4 R2 default", WIDTH * 1, params.getDefaultKeyCoordX());
1007aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    }
1008aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka
1009aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    // [5] [3] <1> [2] [4]
10106213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka    public void testLayout5KeyMax5M0() {
10116213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        MoreKeysKeyboardParams params = createParams(5, 5, XPOS_M0);
1012aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("5 key max 5 M0 columns", 5, params.mNumColumns);
1013aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("5 key max 5 M0 rows", 1, params.mNumRows);
1014aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("5 key max 5 M0 left", 2, params.mLeftKeys);
1015aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("5 key max 5 M0 right", 3, params.mRightKeys);
1016aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("5 key max 5 M0 <1>", 0, params.getColumnPos(0));
1017aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("5 key max 5 M0 [2]", 1, params.getColumnPos(1));
1018aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("5 key max 5 M0 [3]", -1, params.getColumnPos(2));
1019aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("5 key max 5 M0 [4]", 2, params.getColumnPos(3));
1020aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("5 key max 5 M0 [5]", -2, params.getColumnPos(4));
1021aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("5 key max 5 M0 adjust", 0, params.mTopRowAdjustment);
1022aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("5 key max 5 M0 default", WIDTH * 2, params.getDefaultKeyCoordX());
1023aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    }
1024aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka
1025aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    // |<1> [2] [3] [4] [5]
10266213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka    public void testLayout5KeyMax5L0() {
10276213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        MoreKeysKeyboardParams params = createParams(5, 5, XPOS_L0);
10286213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("5 key max 5 L0 columns", 5, params.mNumColumns);
10296213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("5 key max 5 L0 rows", 1, params.mNumRows);
10306213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("5 key max 5 L0 left", 0, params.mLeftKeys);
10316213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("5 key max 5 L0 right", 5, params.mRightKeys);
1032aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("5 key max 5 L0 <1>", 0, params.getColumnPos(0));
10336213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("5 key max 5 L0 [2]", 1, params.getColumnPos(1));
10346213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("5 key max 5 L0 [3]", 2, params.getColumnPos(2));
10356213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("5 key max 5 L0 [4]", 3, params.getColumnPos(3));
10366213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("5 key max 5 L0 [5]", 4, params.getColumnPos(4));
10376213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("5 key max 5 L0 adjust", 0, params.mTopRowAdjustment);
10386213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("5 key max 5 L0 default", WIDTH * 0, params.getDefaultKeyCoordX());
10395d542c24922ae531a581c122d685c3d86047b468Tadashi G. Takaoka    }
10405d542c24922ae531a581c122d685c3d86047b468Tadashi G. Takaoka
1041aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    // |___ <1> [2] [3] [4] [5]
10426213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka    public void testLayout5KeyMax5L1() {
10436213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        MoreKeysKeyboardParams params = createParams(5, 5, XPOS_L1);
10446213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("5 key max 5 L1 columns", 5, params.mNumColumns);
10456213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("5 key max 5 L1 rows", 1, params.mNumRows);
10466213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("5 key max 5 L1 left", 0, params.mLeftKeys);
10476213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("5 key max 5 L1 right", 5, params.mRightKeys);
1048aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("5 key max 5 L1 <1>", 0, params.getColumnPos(0));
10496213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("5 key max 5 L1 [2]", 1, params.getColumnPos(1));
10506213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("5 key max 5 L1 [3]", 2, params.getColumnPos(2));
10516213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("5 key max 5 L1 [4]", 3, params.getColumnPos(3));
10526213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("5 key max 5 L1 [5]", 4, params.getColumnPos(4));
10536213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("5 key max 5 L1 adjust", 0, params.mTopRowAdjustment);
10546213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("5 key max 5 L1 default", WIDTH * 0, params.getDefaultKeyCoordX());
10556213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka    }
10566213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka
1057aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    // |___ [3] <1> [2] [4] [5]
10586213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka    public void testLayout5KeyMax5L2() {
10596213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        MoreKeysKeyboardParams params = createParams(5, 5, XPOS_L2);
10606213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("5 key max 5 L2 columns", 5, params.mNumColumns);
10616213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("5 key max 5 L2 rows", 1, params.mNumRows);
10626213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("5 key max 5 L2 left", 1, params.mLeftKeys);
10636213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("5 key max 5 L2 right", 4, params.mRightKeys);
1064aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("5 key max 5 L2 <1>", 0, params.getColumnPos(0));
10656213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("5 key max 5 L2 [2]", 1, params.getColumnPos(1));
10666213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("5 key max 5 L2 [3]", -1, params.getColumnPos(2));
10676213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("5 key max 5 L2 [4]", 2, params.getColumnPos(3));
10686213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("5 key max 5 L2 [5]", 3, params.getColumnPos(4));
10696213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("5 key max 5 L2 adjust", 0, params.mTopRowAdjustment);
10706213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("5 key max 5 L2 default", WIDTH * 1, params.getDefaultKeyCoordX());
10715d542c24922ae531a581c122d685c3d86047b468Tadashi G. Takaoka    }
10725d542c24922ae531a581c122d685c3d86047b468Tadashi G. Takaoka
1073aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    // [5] [4] [3] [2] <1>|
10746213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka    public void testLayout5KeyMax5R0() {
10756213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        MoreKeysKeyboardParams params = createParams(5, 5, XPOS_R0);
10766213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("5 key max 5 R0 columns", 5, params.mNumColumns);
10776213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("5 key max 5 R0 rows", 1, params.mNumRows);
10786213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("5 key max 5 R0 left", 4, params.mLeftKeys);
10796213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("5 key max 5 R0 right", 1, params.mRightKeys);
1080aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("5 key max 5 R0 <1>", 0, params.getColumnPos(0));
10816213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("5 key max 5 R0 [2]", -1, params.getColumnPos(1));
10826213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("5 key max 5 R0 [3]", -2, params.getColumnPos(2));
10836213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("5 key max 5 R0 [4]", -3, params.getColumnPos(3));
10846213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("5 key max 5 R0 [5]", -4, params.getColumnPos(4));
10856213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("5 key max 5 R0 adjust", 0, params.mTopRowAdjustment);
10866213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("5 key max 5 R0 default", WIDTH * 4, params.getDefaultKeyCoordX());
10875d542c24922ae531a581c122d685c3d86047b468Tadashi G. Takaoka    }
10885d542c24922ae531a581c122d685c3d86047b468Tadashi G. Takaoka
1089aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    // [5] [4] [3] [2] <1> ___|
10906213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka    public void testLayout5KeyMax5R1() {
10916213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        MoreKeysKeyboardParams params = createParams(5, 5, XPOS_R1);
10926213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("5 key max 5 R1 columns", 5, params.mNumColumns);
10936213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("5 key max 5 R1 rows", 1, params.mNumRows);
10946213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("5 key max 5 R1 left", 4, params.mLeftKeys);
10956213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("5 key max 5 R1 right", 1, params.mRightKeys);
1096aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("5 key max 5 R1 <1>", 0, params.getColumnPos(0));
10976213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("5 key max 5 R1 [2]", -1, params.getColumnPos(1));
10986213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("5 key max 5 R1 [3]", -2, params.getColumnPos(2));
10996213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("5 key max 5 R1 [4]", -3, params.getColumnPos(3));
11006213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("5 key max 5 R1 [5]", -4, params.getColumnPos(4));
11016213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("5 key max 5 R1 adjust", 0, params.mTopRowAdjustment);
11026213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("5 key max 5 R1 default", WIDTH * 4, params.getDefaultKeyCoordX());
11036213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka    }
11046213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka
1105aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    // [5] [4] [3] <1> [2] ___|
11066213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka    public void testLayout5KeyMax5R2() {
11076213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        MoreKeysKeyboardParams params = createParams(5, 5, XPOS_R2);
11086213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("5 key max 5 R2 columns", 5, params.mNumColumns);
11096213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("5 key max 5 R2 rows", 1, params.mNumRows);
11106213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("5 key max 5 R2 left", 3, params.mLeftKeys);
11116213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("5 key max 5 R2 right", 2, params.mRightKeys);
1112aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("5 key max 5 R2 <1>", 0, params.getColumnPos(0));
11136213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("5 key max 5 R2 [2]", 1, params.getColumnPos(1));
11146213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("5 key max 5 R2 [3]", -1, params.getColumnPos(2));
11156213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("5 key max 5 R2 [4]", -2, params.getColumnPos(3));
11166213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("5 key max 5 R2 [5]", -3, params.getColumnPos(4));
11176213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("5 key max 5 R2 adjust", 0, params.mTopRowAdjustment);
11186213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("5 key max 5 R2 default", WIDTH * 3, params.getDefaultKeyCoordX());
11195d542c24922ae531a581c122d685c3d86047b468Tadashi G. Takaoka    }
11205d542c24922ae531a581c122d685c3d86047b468Tadashi G. Takaoka
11215d542c24922ae531a581c122d685c3d86047b468Tadashi G. Takaoka    // [6] [4] [5]
1122aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    // [3] <1> [2]
1123aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    public void testLayout6KeyMax4M0() {
1124aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        MoreKeysKeyboardParams params = createParams(6, 4, XPOS_M0);
1125aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("6 key max 4 M0 columns", 3, params.mNumColumns);
1126aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("6 key max 4 M0 rows", 2, params.mNumRows);
1127aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("6 key max 4 M0 left", 1, params.mLeftKeys);
1128aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("6 key max 4 M0 right", 2, params.mRightKeys);
1129aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("6 key max 4 M0 <1>", 0, params.getColumnPos(0));
1130aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("6 key max 4 M0 [2]", 1, params.getColumnPos(1));
1131aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("6 key max 4 M0 [3]", -1, params.getColumnPos(2));
1132aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("6 key max 4 M0 [4]", 0, params.getColumnPos(3));
1133aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("6 key max 4 M0 [5]", 1, params.getColumnPos(4));
1134aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("6 key max 4 M0 [6]", -1, params.getColumnPos(5));
1135aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("6 key max 4 M0 adjust", 0, params.mTopRowAdjustment);
1136aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("6 key max 4 M0 default", WIDTH * 1, params.getDefaultKeyCoordX());
1137aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    }
1138aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka
1139aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    // |[4] [5] [6]
1140aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    // |<1> [2] [3]
1141aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    public void testLayout6KeyMax4L0() {
1142aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        MoreKeysKeyboardParams params = createParams(6, 4, XPOS_L0);
1143aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("6 key max 4 L0 columns", 3, params.mNumColumns);
1144aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("6 key max 4 L0 rows", 2, params.mNumRows);
1145aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("6 key max 4 L0 left", 0, params.mLeftKeys);
1146aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("6 key max 4 L0 right", 3, params.mRightKeys);
1147aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("6 key max 4 L0 <1>", 0, params.getColumnPos(0));
1148aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("6 key max 4 L0 [2]", 1, params.getColumnPos(1));
1149aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("6 key max 4 L0 [3]", 2, params.getColumnPos(2));
1150aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("6 key max 4 L0 [4]", 0, params.getColumnPos(3));
1151aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("6 key max 4 L0 [5]", 1, params.getColumnPos(4));
1152aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("6 key max 4 L0 [6]", 2, params.getColumnPos(5));
1153aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("6 key max 4 L0 adjust", 0, params.mTopRowAdjustment);
1154aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("6 key max 4 L0 default", WIDTH * 0, params.getDefaultKeyCoordX());
1155aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    }
1156aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka
1157aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    // |___ [4] [5] [6]
1158aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    // |___ <1> [2] [3]
1159aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    public void testLayout6KeyMax4L1() {
1160aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        MoreKeysKeyboardParams params = createParams(6, 4, XPOS_L1);
1161aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("6 key max 4 L1 columns", 3, params.mNumColumns);
1162aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("6 key max 4 L1 rows", 2, params.mNumRows);
1163aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("6 key max 4 L1 left", 0, params.mLeftKeys);
1164aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("6 key max 4 L1 right", 3, params.mRightKeys);
1165aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("6 key max 4 L1 <1>", 0, params.getColumnPos(0));
1166aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("6 key max 4 L1 [2]", 1, params.getColumnPos(1));
1167aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("6 key max 4 L1 [3]", 2, params.getColumnPos(2));
1168aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("6 key max 4 L1 [4]", 0, params.getColumnPos(3));
1169aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("6 key max 4 L1 [5]", 1, params.getColumnPos(4));
1170aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("6 key max 4 L1 [6]", 2, params.getColumnPos(5));
1171aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("6 key max 4 L1 adjust", 0, params.mTopRowAdjustment);
1172aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("6 key max 4 L1 default", WIDTH * 0, params.getDefaultKeyCoordX());
1173aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    }
1174aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka
1175aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    // |___ [6] [4] [5]
1176aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    // |___ [3] <1> [2]
1177aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    public void testLayout6KeyMax4L2() {
1178aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        MoreKeysKeyboardParams params = createParams(6, 4, XPOS_L2);
1179aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("6 key max 4 L2 columns", 3, params.mNumColumns);
1180aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("6 key max 4 L2 rows", 2, params.mNumRows);
1181aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("6 key max 4 L2 left", 1, params.mLeftKeys);
1182aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("6 key max 4 L2 right", 2, params.mRightKeys);
1183aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("6 key max 4 L2 <1>", 0, params.getColumnPos(0));
1184aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("6 key max 4 L2 [2]", 1, params.getColumnPos(1));
1185aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("6 key max 4 L2 [3]", -1, params.getColumnPos(2));
1186aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("6 key max 4 L2 [4]", 0, params.getColumnPos(3));
1187aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("6 key max 4 L2 [5]", 1, params.getColumnPos(4));
1188aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("6 key max 4 L2 [6]", -1, params.getColumnPos(5));
1189aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("6 key max 4 L2 adjust", 0, params.mTopRowAdjustment);
1190aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("6 key max 4 L2 default", WIDTH * 1, params.getDefaultKeyCoordX());
1191aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    }
1192aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka
1193aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    // [6] [5] [4]|
1194aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    // [3] [2] <1>|
1195aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    public void testLayout6KeyMax4R0() {
1196aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        MoreKeysKeyboardParams params = createParams(6, 4, XPOS_R0);
1197aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("6 key max 4 R0 columns", 3, params.mNumColumns);
1198aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("6 key max 4 R0 rows", 2, params.mNumRows);
1199aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("6 key max 4 R0 left", 2, params.mLeftKeys);
1200aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("6 key max 4 R0 right", 1, params.mRightKeys);
1201aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("6 key max 4 R0 <1>", 0, params.getColumnPos(0));
1202aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("6 key max 4 R0 [2]", -1, params.getColumnPos(1));
1203aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("6 key max 4 R0 [3]", -2, params.getColumnPos(2));
1204aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("6 key max 4 R0 [4]", 0, params.getColumnPos(3));
1205aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("6 key max 4 R0 [5]", -1, params.getColumnPos(4));
1206aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("6 key max 4 R0 [6]", -2, params.getColumnPos(5));
1207aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("6 key max 4 R0 adjust", 0, params.mTopRowAdjustment);
1208aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("6 key max 4 R0 default", WIDTH * 2, params.getDefaultKeyCoordX());
1209aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    }
1210aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka
1211aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    // [6] [5] [4] ___|
1212aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    // [3] [2] <1> ___|
1213aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    public void testLayout6KeyMax4R1() {
1214aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        MoreKeysKeyboardParams params = createParams(6, 4, XPOS_R1);
1215aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("6 key max 4 R1 columns", 3, params.mNumColumns);
1216aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("6 key max 4 R1 rows", 2, params.mNumRows);
1217aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("6 key max 4 R1 left", 2, params.mLeftKeys);
1218aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("6 key max 4 R1 right", 1, params.mRightKeys);
1219aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("6 key max 4 R1 <1>", 0, params.getColumnPos(0));
1220aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("6 key max 4 R1 [2]", -1, params.getColumnPos(1));
1221aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("6 key max 4 R1 [3]", -2, params.getColumnPos(2));
1222aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("6 key max 4 R1 [4]", 0, params.getColumnPos(3));
1223aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("6 key max 4 R1 [5]", -1, params.getColumnPos(4));
1224aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("6 key max 4 R1 [6]", -2, params.getColumnPos(5));
1225aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("6 key max 4 R1 adjust", 0, params.mTopRowAdjustment);
1226aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("6 key max 4 R1 default", WIDTH * 2, params.getDefaultKeyCoordX());
1227aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    }
1228aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka
1229aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    // [6] [4] [5] ___|
1230aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    // [3] <1> [2] ___|
1231aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    public void testLayout6KeyMax4R2() {
1232aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        MoreKeysKeyboardParams params = createParams(6, 4, XPOS_R2);
1233aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("6 key max 4 R2 columns", 3, params.mNumColumns);
1234aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("6 key max 4 R2 rows", 2, params.mNumRows);
1235aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("6 key max 4 R2 left", 1, params.mLeftKeys);
1236aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("6 key max 4 R2 right", 2, params.mRightKeys);
1237aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("6 key max 4 R2 <1>", 0, params.getColumnPos(0));
1238aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("6 key max 4 R2 [2]", 1, params.getColumnPos(1));
1239aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("6 key max 4 R2 [3]", -1, params.getColumnPos(2));
1240aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("6 key max 4 R2 [4]", 0, params.getColumnPos(3));
1241aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("6 key max 4 R2 [5]", 1, params.getColumnPos(4));
1242aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("6 key max 4 R2 [6]", -1, params.getColumnPos(5));
1243aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("6 key max 4 R2 adjust", 0, params.mTopRowAdjustment);
1244aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("6 key max 4 R2 default", WIDTH * 1, params.getDefaultKeyCoordX());
1245aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    }
1246aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka
1247aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    // [6] [4] [5]
1248aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    // [3] <1> [2]
12496213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka    public void testLayout6KeyMax5M0() {
12506213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        MoreKeysKeyboardParams params = createParams(6, 5, XPOS_M0);
1251aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("6 key max 5 M0 columns", 3, params.mNumColumns);
1252aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("6 key max 5 M0 rows", 2, params.mNumRows);
1253aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("6 key max 5 M0 left", 1, params.mLeftKeys);
1254aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("6 key max 5 M0 right", 2, params.mRightKeys);
1255aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("6 key max 5 M0 <1>", 0, params.getColumnPos(0));
1256aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("6 key max 5 M0 [2]", 1, params.getColumnPos(1));
1257aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("6 key max 5 M0 [3]", -1, params.getColumnPos(2));
1258aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("6 key max 5 M0 [4]", 0, params.getColumnPos(3));
1259aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("6 key max 5 M0 [5]", 1, params.getColumnPos(4));
1260aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("6 key max 5 M0 [6]", -1, params.getColumnPos(5));
1261aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("6 key max 5 M0 adjust", 0, params.mTopRowAdjustment);
1262aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("6 key max 5 M0 default", WIDTH * 1, params.getDefaultKeyCoordX());
126304c96ab966e8a58e5cd401362b49509751ce75d9Tadashi G. Takaoka    }
126404c96ab966e8a58e5cd401362b49509751ce75d9Tadashi G. Takaoka
12655d542c24922ae531a581c122d685c3d86047b468Tadashi G. Takaoka    // |[4] [5] [6]
1266aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    // |<1> [2] [3]
12676213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka    public void testLayout6KeyMax5L0() {
12686213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        MoreKeysKeyboardParams params = createParams(6, 5, XPOS_L0);
12696213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("6 key max 5 L0 columns", 3, params.mNumColumns);
12706213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("6 key max 5 L0 rows", 2, params.mNumRows);
12716213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("6 key max 5 L0 left", 0, params.mLeftKeys);
12726213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("6 key max 5 L0 right", 3, params.mRightKeys);
1273aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("6 key max 5 L0 <1>", 0, params.getColumnPos(0));
12746213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("6 key max 5 L0 [2]", 1, params.getColumnPos(1));
12756213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("6 key max 5 L0 [3]", 2, params.getColumnPos(2));
12766213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("6 key max 5 L0 [4]", 0, params.getColumnPos(3));
12776213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("6 key max 5 L0 [5]", 1, params.getColumnPos(4));
12786213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("6 key max 5 L0 [6]", 2, params.getColumnPos(5));
12796213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("6 key max 5 L0 adjust", 0, params.mTopRowAdjustment);
12806213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("6 key max 5 L0 default", WIDTH * 0, params.getDefaultKeyCoordX());
12815d542c24922ae531a581c122d685c3d86047b468Tadashi G. Takaoka    }
12825d542c24922ae531a581c122d685c3d86047b468Tadashi G. Takaoka
12835d542c24922ae531a581c122d685c3d86047b468Tadashi G. Takaoka    // |___ [4] [5] [6]
1284aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    // |___ <1> [2] [3]
12856213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka    public void testLayout6KeyMax5L1() {
12866213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        MoreKeysKeyboardParams params = createParams(6, 5, XPOS_L1);
12876213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("6 key max 5 L1 columns", 3, params.mNumColumns);
12886213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("6 key max 5 L1 rows", 2, params.mNumRows);
12896213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("6 key max 5 L1 left", 0, params.mLeftKeys);
12906213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("6 key max 5 L1 right", 3, params.mRightKeys);
1291aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("6 key max 5 L1 <1>", 0, params.getColumnPos(0));
12926213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("6 key max 5 L1 [2]", 1, params.getColumnPos(1));
12936213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("6 key max 5 L1 [3]", 2, params.getColumnPos(2));
12946213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("6 key max 5 L1 [4]", 0, params.getColumnPos(3));
12956213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("6 key max 5 L1 [5]", 1, params.getColumnPos(4));
12966213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("6 key max 5 L1 [6]", 2, params.getColumnPos(5));
12976213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("6 key max 5 L1 adjust", 0, params.mTopRowAdjustment);
12986213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("6 key max 5 L1 default", WIDTH * 0, params.getDefaultKeyCoordX());
12996213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka    }
13006213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka
13016213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka    // |___ [6] [4] [5]
1302aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    // |___ [3] <1> [2]
13036213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka    public void testLayout6KeyMax5L2() {
13046213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        MoreKeysKeyboardParams params = createParams(6, 5, XPOS_L2);
13056213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("6 key max 5 L2 columns", 3, params.mNumColumns);
13066213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("6 key max 5 L2 rows", 2, params.mNumRows);
13076213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("6 key max 5 L2 left", 1, params.mLeftKeys);
13086213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("6 key max 5 L2 right", 2, params.mRightKeys);
1309aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("6 key max 5 L2 <1>", 0, params.getColumnPos(0));
13106213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("6 key max 5 L2 [2]", 1, params.getColumnPos(1));
13116213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("6 key max 5 L2 [3]", -1, params.getColumnPos(2));
13126213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("6 key max 5 L2 [4]", 0, params.getColumnPos(3));
13136213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("6 key max 5 L2 [5]", 1, params.getColumnPos(4));
13146213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("6 key max 5 L2 [6]", -1, params.getColumnPos(5));
13156213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("6 key max 5 L2 adjust", 0, params.mTopRowAdjustment);
13166213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("6 key max 5 L2 default", WIDTH * 1, params.getDefaultKeyCoordX());
13175d542c24922ae531a581c122d685c3d86047b468Tadashi G. Takaoka    }
13185d542c24922ae531a581c122d685c3d86047b468Tadashi G. Takaoka
13195d542c24922ae531a581c122d685c3d86047b468Tadashi G. Takaoka    // [6] [5] [4]|
1320aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    // [3] [2] <1>|
13216213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka    public void testLayout6KeyMax5R0() {
13226213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        MoreKeysKeyboardParams params = createParams(6, 5, XPOS_R0);
13236213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("6 key max 5 R0 columns", 3, params.mNumColumns);
13246213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("6 key max 5 R0 rows", 2, params.mNumRows);
13256213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("6 key max 5 R0 left", 2, params.mLeftKeys);
13266213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("6 key max 5 R0 right", 1, params.mRightKeys);
1327aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("6 key max 5 R0 <1>", 0, params.getColumnPos(0));
13286213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("6 key max 5 R0 [2]", -1, params.getColumnPos(1));
13296213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("6 key max 5 R0 [3]", -2, params.getColumnPos(2));
13306213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("6 key max 5 R0 [4]", 0, params.getColumnPos(3));
13316213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("6 key max 5 R0 [5]", -1, params.getColumnPos(4));
13326213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("6 key max 5 R0 [6]", -2, params.getColumnPos(5));
13336213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("6 key max 5 R0 adjust", 0, params.mTopRowAdjustment);
13346213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("6 key max 5 R0 default", WIDTH * 2, params.getDefaultKeyCoordX());
13355d542c24922ae531a581c122d685c3d86047b468Tadashi G. Takaoka    }
13365d542c24922ae531a581c122d685c3d86047b468Tadashi G. Takaoka
13375d542c24922ae531a581c122d685c3d86047b468Tadashi G. Takaoka    // [6] [5] [4] ___|
1338aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    // [3] [2] <1> ___|
13396213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka    public void testLayout6KeyMax5R1() {
13406213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        MoreKeysKeyboardParams params = createParams(6, 5, XPOS_R1);
13416213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("6 key max 5 R1 columns", 3, params.mNumColumns);
13426213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("6 key max 5 R1 rows", 2, params.mNumRows);
13436213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("6 key max 5 R1 left", 2, params.mLeftKeys);
13446213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("6 key max 5 R1 right", 1, params.mRightKeys);
1345aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("6 key max 5 R1 <1>", 0, params.getColumnPos(0));
13466213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("6 key max 5 R1 [2]", -1, params.getColumnPos(1));
13476213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("6 key max 5 R1 [3]", -2, params.getColumnPos(2));
13486213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("6 key max 5 R1 [4]", 0, params.getColumnPos(3));
13496213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("6 key max 5 R1 [5]", -1, params.getColumnPos(4));
13506213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("6 key max 5 R1 [6]", -2, params.getColumnPos(5));
13516213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("6 key max 5 R1 adjust", 0, params.mTopRowAdjustment);
13526213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("6 key max 5 R1 default", WIDTH * 2, params.getDefaultKeyCoordX());
13536213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka    }
13546213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka
13556213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka    // [6] [4] [5] ___|
1356aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    // [3] <1> [2] ___|
13576213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka    public void testLayout6KeyMax5R2() {
13586213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        MoreKeysKeyboardParams params = createParams(6, 5, XPOS_R2);
13596213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("6 key max 5 R2 columns", 3, params.mNumColumns);
13606213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("6 key max 5 R2 rows", 2, params.mNumRows);
13616213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("6 key max 5 R2 left", 1, params.mLeftKeys);
13626213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("6 key max 5 R2 right", 2, params.mRightKeys);
1363aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("6 key max 5 R2 <1>", 0, params.getColumnPos(0));
13646213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("6 key max 5 R2 [2]", 1, params.getColumnPos(1));
13656213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("6 key max 5 R2 [3]", -1, params.getColumnPos(2));
13666213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("6 key max 5 R2 [4]", 0, params.getColumnPos(3));
13676213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("6 key max 5 R2 [5]", 1, params.getColumnPos(4));
13686213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("6 key max 5 R2 [6]", -1, params.getColumnPos(5));
13696213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("6 key max 5 R2 adjust", 0, params.mTopRowAdjustment);
13706213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("6 key max 5 R2 default", WIDTH * 1, params.getDefaultKeyCoordX());
13715d542c24922ae531a581c122d685c3d86047b468Tadashi G. Takaoka    }
13725d542c24922ae531a581c122d685c3d86047b468Tadashi G. Takaoka
1373aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    // |<1> [2] [3] [4] [5] [6] [7] ___ ___ ___|
13746213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka    public void testLayout7KeyMax7L0() {
13756213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        MoreKeysKeyboardParams params = createParams(7, 7, XPOS_L0);
13766213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("7 key max 7 L0 columns", 7, params.mNumColumns);
13776213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("7 key max 7 L0 rows", 1, params.mNumRows);
13786213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("7 key max 7 L0 left", 0, params.mLeftKeys);
13796213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("7 key max 7 L0 right", 7, params.mRightKeys);
1380aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("7 key max 7 L0 <1>", 0, params.getColumnPos(0));
13816213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("7 key max 7 L0 [2]", 1, params.getColumnPos(1));
13826213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("7 key max 7 L0 [3]", 2, params.getColumnPos(2));
13836213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("7 key max 7 L0 [4]", 3, params.getColumnPos(3));
13846213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("7 key max 7 L0 [5]", 4, params.getColumnPos(4));
13856213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("7 key max 7 L0 [6]", 5, params.getColumnPos(5));
13866213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("7 key max 7 L0 [7]", 6, params.getColumnPos(6));
13876213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("7 key max 7 L0 adjust", 0, params.mTopRowAdjustment);
13886213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("7 key max 7 L0 default", WIDTH * 0, params.getDefaultKeyCoordX());
13896213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka    }
13906213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka
1391aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    // |___ <1> [2] [3] [4] [5] [6] [7] ___ ___|
13926213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka    public void testLayout7KeyMax7L1() {
13936213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        MoreKeysKeyboardParams params = createParams(7, 7, XPOS_L1);
13946213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("7 key max 7 L1 columns", 7, params.mNumColumns);
13956213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("7 key max 7 L1 rows", 1, params.mNumRows);
13966213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("7 key max 7 L1 left", 0, params.mLeftKeys);
13976213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("7 key max 7 L1 right", 7, params.mRightKeys);
1398aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("7 key max 7 L1 <1>", 0, params.getColumnPos(0));
13996213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("7 key max 7 L1 [2]", 1, params.getColumnPos(1));
14006213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("7 key max 7 L1 [3]", 2, params.getColumnPos(2));
14016213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("7 key max 7 L1 [4]", 3, params.getColumnPos(3));
14026213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("7 key max 7 L1 [5]", 4, params.getColumnPos(4));
14036213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("7 key max 7 L1 [6]", 5, params.getColumnPos(5));
14046213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("7 key max 7 L1 [7]", 6, params.getColumnPos(6));
14056213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("7 key max 7 L1 adjust", 0, params.mTopRowAdjustment);
14066213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("7 key max 7 L1 default", WIDTH * 0, params.getDefaultKeyCoordX());
14076213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka    }
14086213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka
1409aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    // |___ [3] <1> [2] [4] [5] [6] [7] ___ ___|
14106213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka    public void testLayout7KeyMax7L2() {
14116213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        MoreKeysKeyboardParams params = createParams(7, 7, XPOS_L2);
14126213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("7 key max 7 L2 columns", 7, params.mNumColumns);
14136213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("7 key max 7 L2 rows", 1, params.mNumRows);
14146213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("7 key max 7 L2 left", 1, params.mLeftKeys);
14156213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("7 key max 7 L2 right", 6, params.mRightKeys);
1416aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("7 key max 7 L2 <1>", 0, params.getColumnPos(0));
14176213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("7 key max 7 L2 [2]", 1, params.getColumnPos(1));
14186213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("7 key max 7 L2 [3]", -1, params.getColumnPos(2));
14196213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("7 key max 7 L2 [4]", 2, params.getColumnPos(3));
14206213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("7 key max 7 L2 [5]", 3, params.getColumnPos(4));
14216213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("7 key max 7 L2 [6]", 4, params.getColumnPos(5));
14226213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("7 key max 7 L2 [7]", 5, params.getColumnPos(6));
14236213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("7 key max 7 L2 adjust", 0, params.mTopRowAdjustment);
14246213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("7 key max 7 L2 default", WIDTH * 1, params.getDefaultKeyCoordX());
14256213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka    }
14266213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka
1427aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    // |___ [5] [3] <1> [2] [4] [6] [7] ___ ___|
14286213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka    public void testLayout7KeyMax7L3() {
14296213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        MoreKeysKeyboardParams params = createParams(7, 7, XPOS_L3);
14306213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("7 key max 7 L3 columns", 7, params.mNumColumns);
14316213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("7 key max 7 L3 rows", 1, params.mNumRows);
14326213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("7 key max 7 L3 left", 2, params.mLeftKeys);
14336213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("7 key max 7 L3 right", 5, params.mRightKeys);
1434aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("7 key max 7 L3 <1>", 0, params.getColumnPos(0));
14356213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("7 key max 7 L3 [2]", 1, params.getColumnPos(1));
14366213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("7 key max 7 L3 [3]", -1, params.getColumnPos(2));
14376213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("7 key max 7 L3 [4]", 2, params.getColumnPos(3));
14386213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("7 key max 7 L3 [5]", -2, params.getColumnPos(4));
14396213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("7 key max 7 L3 [6]", 3, params.getColumnPos(5));
14406213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("7 key max 7 L3 [7]", 4, params.getColumnPos(6));
14416213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("7 key max 7 L3 adjust", 0, params.mTopRowAdjustment);
14426213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("7 key max 7 L3 default", WIDTH * 2, params.getDefaultKeyCoordX());
14436213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka    }
14446213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka
1445aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    // |___ [7] [5] [3] <1> [2] [4] [6] ___ ___|
14466213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka    public void testLayout7KeyMax7M0() {
14476213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        MoreKeysKeyboardParams params = createParams(7, 7, XPOS_M0);
14486213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("7 key max 7 M0 columns", 7, params.mNumColumns);
14496213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("7 key max 7 M0 rows", 1, params.mNumRows);
14506213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("7 key max 7 M0 left", 3, params.mLeftKeys);
14516213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("7 key max 7 M0 right", 4, params.mRightKeys);
1452aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("7 key max 7 M0 <1>", 0, params.getColumnPos(0));
14536213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("7 key max 7 M0 [2]", 1, params.getColumnPos(1));
14546213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("7 key max 7 M0 [3]", -1, params.getColumnPos(2));
14556213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("7 key max 7 M0 [4]", 2, params.getColumnPos(3));
14566213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("7 key max 7 M0 [5]", -2, params.getColumnPos(4));
14576213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("7 key max 7 M0 [6]", 3, params.getColumnPos(5));
14586213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("7 key max 7 M0 [7]", -3, params.getColumnPos(6));
14596213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("7 key max 7 M0 adjust", 0, params.mTopRowAdjustment);
14606213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("7 key max 7 M0 default", WIDTH * 3, params.getDefaultKeyCoordX());
14616213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka    }
14626213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka
1463aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    // |___ ___ [7] [5] [3] <1> [2] [4] [6] ___|
14646213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka    public void testLayout7KeyMax7M1() {
14656213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        MoreKeysKeyboardParams params = createParams(7, 7, XPOS_M1);
14666213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("7 key max 7 M1 columns", 7, params.mNumColumns);
14676213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("7 key max 7 M1 rows", 1, params.mNumRows);
14686213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("7 key max 7 M1 left", 3, params.mLeftKeys);
14696213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("7 key max 7 M1 right", 4, params.mRightKeys);
1470aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("7 key max 7 M1 <1>", 0, params.getColumnPos(0));
14716213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("7 key max 7 M1 [2]", 1, params.getColumnPos(1));
14726213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("7 key max 7 M1 [3]", -1, params.getColumnPos(2));
14736213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("7 key max 7 M1 [4]", 2, params.getColumnPos(3));
14746213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("7 key max 7 M1 [5]", -2, params.getColumnPos(4));
14756213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("7 key max 7 M1 [6]", 3, params.getColumnPos(5));
14766213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("7 key max 7 M1 [7]", -3, params.getColumnPos(6));
14776213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("7 key max 7 M1 adjust", 0, params.mTopRowAdjustment);
14786213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("7 key max 7 M1 default", WIDTH * 3, params.getDefaultKeyCoordX());
14796213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka    }
14806213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka
1481aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    // |___ ___ [7] [6] [5] [3] <1> [2] [4] ___|
14826213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka    public void testLayout7KeyMax7R3() {
14836213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        MoreKeysKeyboardParams params = createParams(7, 7, XPOS_R3);
14846213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("7 key max 7 R3 columns", 7, params.mNumColumns);
14856213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("7 key max 7 R3 rows", 1, params.mNumRows);
14866213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("7 key max 7 R3 left", 4, params.mLeftKeys);
14876213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("7 key max 7 R3 right", 3, params.mRightKeys);
1488aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("7 key max 7 R3 <1>", 0, params.getColumnPos(0));
14896213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("7 key max 7 R3 [2]", 1, params.getColumnPos(1));
14906213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("7 key max 7 R3 [3]", -1, params.getColumnPos(2));
14916213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("7 key max 7 R3 [4]", 2, params.getColumnPos(3));
14926213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("7 key max 7 R3 [5]", -2, params.getColumnPos(4));
14936213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("7 key max 7 R3 [6]", -3, params.getColumnPos(5));
14946213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("7 key max 7 R3 [7]", -4, params.getColumnPos(6));
14956213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("7 key max 7 R3 adjust", 0, params.mTopRowAdjustment);
14966213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("7 key max 7 R3 default", WIDTH * 4, params.getDefaultKeyCoordX());
14976213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka    }
14986213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka
1499aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    // |___ ___ [7] [6] [5] [4] [3] <1> [2] ___|
15006213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka    public void testLayout7KeyMax7R2() {
15016213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        MoreKeysKeyboardParams params = createParams(7, 7, XPOS_R2);
15026213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("7 key max 7 R2 columns", 7, params.mNumColumns);
15036213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("7 key max 7 R2 rows", 1, params.mNumRows);
15046213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("7 key max 7 R2 left", 5, params.mLeftKeys);
15056213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("7 key max 7 R2 right", 2, params.mRightKeys);
1506aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("7 key max 7 R2 <1>", 0, params.getColumnPos(0));
15076213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("7 key max 7 R2 [2]", 1, params.getColumnPos(1));
15086213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("7 key max 7 R2 [3]", -1, params.getColumnPos(2));
15096213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("7 key max 7 R2 [4]", -2, params.getColumnPos(3));
15106213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("7 key max 7 R2 [5]", -3, params.getColumnPos(4));
15116213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("7 key max 7 R2 [6]", -4, params.getColumnPos(5));
15126213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("7 key max 7 R2 [7]", -5, params.getColumnPos(6));
15136213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("7 key max 7 R2 adjust", 0, params.mTopRowAdjustment);
15146213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("7 key max 7 R2 default", WIDTH * 5, params.getDefaultKeyCoordX());
15156213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka    }
15166213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka
1517aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    // |___ ___ [7] [6] [5] [4] [3] [2] <1> ___|
15186213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka    public void testLayout7KeyMax7R1() {
15196213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        MoreKeysKeyboardParams params = createParams(7, 7, XPOS_R1);
15206213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("7 key max 7 R1 columns", 7, params.mNumColumns);
15216213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("7 key max 7 R1 rows", 1, params.mNumRows);
15226213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("7 key max 7 R1 left", 6, params.mLeftKeys);
15236213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("7 key max 7 R1 right", 1, params.mRightKeys);
1524aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("7 key max 7 R1 <1>", 0, params.getColumnPos(0));
15256213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("7 key max 7 R1 [2]", -1, params.getColumnPos(1));
15266213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("7 key max 7 R1 [3]", -2, params.getColumnPos(2));
15276213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("7 key max 7 R1 [4]", -3, params.getColumnPos(3));
15286213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("7 key max 7 R1 [5]", -4, params.getColumnPos(4));
15296213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("7 key max 7 R1 [6]", -5, params.getColumnPos(5));
15306213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("7 key max 7 R1 [7]", -6, params.getColumnPos(6));
15316213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("7 key max 7 R1 adjust", 0, params.mTopRowAdjustment);
15326213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("7 key max 7 R1 default", WIDTH * 6, params.getDefaultKeyCoordX());
15336213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka    }
15346213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka
1535aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    // |___ ___ [7] [6] [5] [4] [3] [2] <1>|
15366213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka    public void testLayout7KeyMax7R0() {
15376213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        MoreKeysKeyboardParams params = createParams(7, 7, XPOS_R0);
15386213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("7 key max 7 R0 columns", 7, params.mNumColumns);
15396213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("7 key max 7 R0 rows", 1, params.mNumRows);
15406213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("7 key max 7 R0 left", 6, params.mLeftKeys);
15416213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("7 key max 7 R0 right", 1, params.mRightKeys);
1542aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("7 key max 7 R0 <1>", 0, params.getColumnPos(0));
15436213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("7 key max 7 R0 [2]", -1, params.getColumnPos(1));
15446213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("7 key max 7 R0 [3]", -2, params.getColumnPos(2));
15456213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("7 key max 7 R0 [4]", -3, params.getColumnPos(3));
15466213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("7 key max 7 R0 [5]", -4, params.getColumnPos(4));
15476213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("7 key max 7 R0 [6]", -5, params.getColumnPos(5));
15486213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("7 key max 7 R0 [7]", -6, params.getColumnPos(6));
15496213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("7 key max 7 R0 adjust", 0, params.mTopRowAdjustment);
15506213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("7 key max 7 R0 default", WIDTH * 6, params.getDefaultKeyCoordX());
15515d542c24922ae531a581c122d685c3d86047b468Tadashi G. Takaoka    }
15525d542c24922ae531a581c122d685c3d86047b468Tadashi G. Takaoka
1553aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    //   [5] [6] [7]
1554aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    // [3] <1> [2] [4]
1555aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    public void testLayout7KeyMax5M0() {
1556aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        MoreKeysKeyboardParams params = createParams(7, 5, XPOS_M0);
1557aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("7 key max 5 M0 columns", 4, params.mNumColumns);
1558aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("7 key max 5 M0 rows", 2, params.mNumRows);
1559aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("7 key max 5 M0 left", 1, params.mLeftKeys);
1560aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("7 key max 5 M0 right", 3, params.mRightKeys);
1561aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("7 key max 5 M0 <1>", 0, params.getColumnPos(0));
1562aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("7 key max 5 M0 [2]", 1, params.getColumnPos(1));
1563aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("7 key max 5 M0 [3]", -1, params.getColumnPos(2));
1564aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("7 key max 5 M0 [4]", 2, params.getColumnPos(3));
1565aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("7 key max 5 M0 [5]", 0, params.getColumnPos(4));
1566aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("7 key max 5 M0 [6]", 1, params.getColumnPos(5));
1567aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("7 key max 5 M0 [7]", 2, params.getColumnPos(6));
1568aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("7 key max 5 M0 adjust", -1, params.mTopRowAdjustment);
1569aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("7 key max 5 M0 default", WIDTH * 1, params.getDefaultKeyCoordX());
1570aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    }
1571aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka
1572aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    // |[5] [6] [7]
1573aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    // |<1> [2] [3] [4]
1574aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    public void testLayout7KeyMax5L0() {
1575aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        MoreKeysKeyboardParams params = createParams(7, 5, XPOS_L0);
1576aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("7 key max 5 L0 columns", 4, params.mNumColumns);
1577aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("7 key max 5 L0 rows", 2, params.mNumRows);
1578aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("7 key max 5 L0 left", 0, params.mLeftKeys);
1579aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("7 key max 5 L0 right", 4, params.mRightKeys);
1580aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("7 key max 5 L0 <1>", 0, params.getColumnPos(0));
1581aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("7 key max 5 L0 [2]", 1, params.getColumnPos(1));
1582aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("7 key max 5 L0 [3]", 2, params.getColumnPos(2));
1583aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("7 key max 5 L0 [4]", 3, params.getColumnPos(3));
1584aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("7 key max 5 L0 [5]", 0, params.getColumnPos(4));
1585aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("7 key max 5 L0 [6]", 1, params.getColumnPos(5));
1586aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("7 key max 5 L0 [7]", 2, params.getColumnPos(6));
1587aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("7 key max 5 L0 adjust", 0, params.mTopRowAdjustment);
1588aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("7 key max 5 L0 default", WIDTH * 0, params.getDefaultKeyCoordX());
1589aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    }
1590aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka
1591aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    // |___ [5] [6] [7]
1592aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    // |___ <1> [2] [3] [4]
1593aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    public void testLayout7KeyMax5L1() {
1594aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        MoreKeysKeyboardParams params = createParams(7, 5, XPOS_L1);
1595aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("7 key max 5 L1 columns", 4, params.mNumColumns);
1596aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("7 key max 5 L1 rows", 2, params.mNumRows);
1597aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("7 key max 5 L1 left", 0, params.mLeftKeys);
1598aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("7 key max 5 L1 right", 4, params.mRightKeys);
1599aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("7 key max 5 L1 <1>", 0, params.getColumnPos(0));
1600aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("7 key max 5 L1 [2]", 1, params.getColumnPos(1));
1601aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("7 key max 5 L1 [3]", 2, params.getColumnPos(2));
1602aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("7 key max 5 L1 [4]", 3, params.getColumnPos(3));
1603aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("7 key max 5 L1 [5]", 0, params.getColumnPos(4));
1604aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("7 key max 5 L1 [6]", 1, params.getColumnPos(5));
1605aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("7 key max 5 L1 [7]", 2, params.getColumnPos(6));
1606aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("7 key max 5 L1 adjust", 0, params.mTopRowAdjustment);
1607aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("7 key max 5 L1 default", WIDTH * 0, params.getDefaultKeyCoordX());
1608aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    }
1609aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka
1610aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    // |___   [5] [6] [7]
1611aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    // |___ [3] <1> [2] [4]
1612aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    public void testLayout7KeyMax5L2() {
1613aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        MoreKeysKeyboardParams params = createParams(7, 5, XPOS_L2);
1614aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("7 key max 5 L2 columns", 4, params.mNumColumns);
1615aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("7 key max 5 L2 rows", 2, params.mNumRows);
1616aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("7 key max 5 L2 left", 1, params.mLeftKeys);
1617aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("7 key max 5 L2 right", 3, params.mRightKeys);
1618aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("7 key max 5 L2 <1>", 0, params.getColumnPos(0));
1619aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("7 key max 5 L2 [2]", 1, params.getColumnPos(1));
1620aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("7 key max 5 L2 [3]", -1, params.getColumnPos(2));
1621aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("7 key max 5 L2 [4]", 2, params.getColumnPos(3));
1622aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("7 key max 5 L2 [5]", 0, params.getColumnPos(4));
1623aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("7 key max 5 L2 [6]", 1, params.getColumnPos(5));
1624aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("7 key max 5 L2 [7]", 2, params.getColumnPos(6));
1625aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("7 key max 5 L2 adjust", -1, params.mTopRowAdjustment);
1626aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("7 key max 5 L2 default", WIDTH * 1, params.getDefaultKeyCoordX());
1627aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    }
1628aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka
1629aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    //     [7] [6] [5]|
1630aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    // [4] [3] [2] <1>|
1631aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    public void testLayout7KeyMax5R0() {
1632aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        MoreKeysKeyboardParams params = createParams(7, 5, XPOS_R0);
1633aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("7 key max 5 R0 columns", 4, params.mNumColumns);
1634aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("7 key max 5 R0 rows", 2, params.mNumRows);
1635aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("7 key max 5 R0 left", 3, params.mLeftKeys);
1636aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("7 key max 5 R0 right", 1, params.mRightKeys);
1637aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("7 key max 5 R0 <1>", 0, params.getColumnPos(0));
1638aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("7 key max 5 R0 [2]", -1, params.getColumnPos(1));
1639aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("7 key max 5 R0 [3]", -2, params.getColumnPos(2));
1640aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("7 key max 5 R0 [4]", -3, params.getColumnPos(3));
1641aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("7 key max 5 R0 [5]", 0, params.getColumnPos(4));
1642aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("7 key max 5 R0 [6]", -1, params.getColumnPos(5));
1643aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("7 key max 5 R0 [7]", -2, params.getColumnPos(6));
1644aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("7 key max 5 R0 adjust", 0, params.mTopRowAdjustment);
1645aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("7 key max 5 R0 default", WIDTH * 3, params.getDefaultKeyCoordX());
1646aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    }
1647aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka
1648aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    //     [7] [6] [5] ___|
1649aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    // [4] [3] [2] <1> ___|
1650aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    public void testLayout7KeyMax5R1() {
1651aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        MoreKeysKeyboardParams params = createParams(7, 5, XPOS_R1);
1652aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("7 key max 5 R1 columns", 4, params.mNumColumns);
1653aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("7 key max 5 R1 rows", 2, params.mNumRows);
1654aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("7 key max 5 R1 left", 3, params.mLeftKeys);
1655aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("7 key max 5 R1 right", 1, params.mRightKeys);
1656aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("7 key max 5 R1 <1>", 0, params.getColumnPos(0));
1657aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("7 key max 5 R1 [2]", -1, params.getColumnPos(1));
1658aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("7 key max 5 R1 [3]", -2, params.getColumnPos(2));
1659aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("7 key max 5 R1 [4]", -3, params.getColumnPos(3));
1660aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("7 key max 5 R1 [5]", 0, params.getColumnPos(4));
1661aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("7 key max 5 R1 [6]", -1, params.getColumnPos(5));
1662aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("7 key max 5 R1 [7]", -2, params.getColumnPos(6));
1663aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("7 key max 5 R1 adjust", 0, params.mTopRowAdjustment);
1664aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("7 key max 5 R1 default", WIDTH * 3, params.getDefaultKeyCoordX());
1665aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    }
1666aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka
1667aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    //   [7] [5] [6]   ___|
1668aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    // [4] [3] <1> [2] ___|
1669aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    public void testLayout7KeyMax5R2() {
1670aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        MoreKeysKeyboardParams params = createParams(7, 5, XPOS_R2);
1671aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("7 key max 5 R2 columns", 4, params.mNumColumns);
1672aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("7 key max 5 R2 rows", 2, params.mNumRows);
1673aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("7 key max 5 R2 left", 2, params.mLeftKeys);
1674aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("7 key max 5 R2 right", 2, params.mRightKeys);
1675aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("7 key max 5 R2 <1>", 0, params.getColumnPos(0));
1676aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("7 key max 5 R2 [2]", 1, params.getColumnPos(1));
1677aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("7 key max 5 R2 [3]", -1, params.getColumnPos(2));
1678aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("7 key max 5 R2 [4]", -2, params.getColumnPos(3));
1679aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("7 key max 5 R2 [5]", 0, params.getColumnPos(4));
1680aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("7 key max 5 R2 [6]", 1, params.getColumnPos(5));
1681aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("7 key max 5 R2 [7]", -1, params.getColumnPos(6));
1682aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("7 key max 5 R2 adjust", -1, params.mTopRowAdjustment);
1683aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("7 key max 5 R2 default", WIDTH * 2, params.getDefaultKeyCoordX());
1684aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    }
1685aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka
1686aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    //     [7]
1687aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    // [6] [4] [5]
1688aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    // [3] <1> [2]
1689aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    public void testLayout7KeyMax3M0() {
1690aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        MoreKeysKeyboardParams params = createParams(7, 3, XPOS_M0);
1691aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("7 key max 3 M0 columns", 3, params.mNumColumns);
1692aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("7 key max 3 M0 rows", 3, params.mNumRows);
1693aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("7 key max 3 M0 left", 1, params.mLeftKeys);
1694aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("7 key max 3 M0 right", 2, params.mRightKeys);
1695aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("7 key max 3 M0 <1>", 0, params.getColumnPos(0));
1696aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("7 key max 3 M0 [2]", 1, params.getColumnPos(1));
1697aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("7 key max 3 M0 [3]", -1, params.getColumnPos(2));
1698aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("7 key max 3 M0 [4]", 0, params.getColumnPos(3));
1699aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("7 key max 3 M0 [5]", 1, params.getColumnPos(4));
1700aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("7 key max 3 M0 [6]", -1, params.getColumnPos(5));
1701aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("7 key max 3 M0 [7]", 0, params.getColumnPos(6));
1702aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("7 key max 3 M0 adjust", 0, params.mTopRowAdjustment);
1703aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("7 key max 3 M0 default", WIDTH * 1, params.getDefaultKeyCoordX());
1704aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    }
1705aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka
1706aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    // |[7]
1707aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    // |[4] [5] [6]
1708aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    // |<1> [2] [3]
1709aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    public void testLayout7KeyMax3L0() {
1710aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        MoreKeysKeyboardParams params = createParams(7, 3, XPOS_L0);
1711aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("7 key max 3 L0 columns", 3, params.mNumColumns);
1712aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("7 key max 3 L0 rows", 3, params.mNumRows);
1713aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("7 key max 3 L0 left", 0, params.mLeftKeys);
1714aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("7 key max 3 L0 right", 3, params.mRightKeys);
1715aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("7 key max 3 L0 <1>", 0, params.getColumnPos(0));
1716aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("7 key max 3 L0 [2]", 1, params.getColumnPos(1));
1717aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("7 key max 3 L0 [3]", 2, params.getColumnPos(2));
1718aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("7 key max 3 L0 [4]", 0, params.getColumnPos(3));
1719aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("7 key max 3 L0 [5]", 1, params.getColumnPos(4));
1720aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("7 key max 3 L0 [6]", 2, params.getColumnPos(5));
1721aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("7 key max 3 L0 [7]", 0, params.getColumnPos(6));
1722aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("7 key max 3 L0 adjust", 0, params.mTopRowAdjustment);
1723aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("7 key max 3 L0 default", WIDTH * 0, params.getDefaultKeyCoordX());
1724aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    }
1725aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka
1726aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    // |___ [7]
1727aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    // |___ [4] [5] [6]
1728aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    // |___ <1> [2] [3]
1729aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    public void testLayout7KeyMax3L1() {
1730aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        MoreKeysKeyboardParams params = createParams(7, 3, XPOS_L1);
1731aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("7 key max 3 L1 columns", 3, params.mNumColumns);
1732aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("7 key max 3 L1 rows", 3, params.mNumRows);
1733aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("7 key max 3 L1 left", 0, params.mLeftKeys);
1734aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("7 key max 3 L1 right", 3, params.mRightKeys);
1735aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("7 key max 3 L1 <1>", 0, params.getColumnPos(0));
1736aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("7 key max 3 L1 [2]", 1, params.getColumnPos(1));
1737aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("7 key max 3 L1 [3]", 2, params.getColumnPos(2));
1738aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("7 key max 3 L1 [4]", 0, params.getColumnPos(3));
1739aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("7 key max 3 L1 [5]", 1, params.getColumnPos(4));
1740aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("7 key max 3 L1 [6]", 2, params.getColumnPos(5));
1741aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("7 key max 3 L1 [7]", 0, params.getColumnPos(6));
1742aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("7 key max 3 L1 adjust", 0, params.mTopRowAdjustment);
1743aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("7 key max 3 L1 default", WIDTH * 0, params.getDefaultKeyCoordX());
1744aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    }
1745aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka
1746aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    // |___     [7]
1747aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    // |___ [6] [4] [5]
1748aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    // |___ [3] <1> [2]
1749aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    public void testLayout7KeyMax3L2() {
1750aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        MoreKeysKeyboardParams params = createParams(7, 3, XPOS_L2);
1751aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("7 key max 3 L2 columns", 3, params.mNumColumns);
1752aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("7 key max 3 L2 rows", 3, params.mNumRows);
1753aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("7 key max 3 L2 left", 1, params.mLeftKeys);
1754aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("7 key max 3 L2 right", 2, params.mRightKeys);
1755aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("7 key max 3 L2 <1>", 0, params.getColumnPos(0));
1756aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("7 key max 3 L2 [2]", 1, params.getColumnPos(1));
1757aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("7 key max 3 L2 [3]", -1, params.getColumnPos(2));
1758aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("7 key max 3 L2 [4]", 0, params.getColumnPos(3));
1759aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("7 key max 3 L2 [5]", 1, params.getColumnPos(4));
1760aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("7 key max 3 L2 [6]", -1, params.getColumnPos(5));
1761aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("7 key max 3 L2 [7]", 0, params.getColumnPos(6));
1762aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("7 key max 3 L2 adjust", 0, params.mTopRowAdjustment);
1763aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("7 key max 3 L2 default", WIDTH * 1, params.getDefaultKeyCoordX());
1764aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    }
1765aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka
1766aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    //         [7]|
1767aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    // [6] [5] [4]|
1768aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    // [3] [2] <1>|
1769aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    public void testLayout7KeyMax3R0() {
1770aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        MoreKeysKeyboardParams params = createParams(7, 3, XPOS_R0);
1771aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("7 key max 3 R0 columns", 3, params.mNumColumns);
1772aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("7 key max 3 R0 rows", 3, params.mNumRows);
1773aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("7 key max 3 R0 left", 2, params.mLeftKeys);
1774aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("7 key max 3 R0 right", 1, params.mRightKeys);
1775aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("7 key max 3 R0 <1>", 0, params.getColumnPos(0));
1776aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("7 key max 3 R0 [2]", -1, params.getColumnPos(1));
1777aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("7 key max 3 R0 [3]", -2, params.getColumnPos(2));
1778aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("7 key max 3 R0 [4]", 0, params.getColumnPos(3));
1779aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("7 key max 3 R0 [5]", -1, params.getColumnPos(4));
1780aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("7 key max 3 R0 [6]", -2, params.getColumnPos(5));
1781aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("7 key max 3 R0 [7]", 0, params.getColumnPos(6));
1782aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("7 key max 3 R0 adjust", 0, params.mTopRowAdjustment);
1783aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("7 key max 3 R0 default", WIDTH * 2, params.getDefaultKeyCoordX());
1784aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    }
1785aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka
1786aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    //         [7] ___|
1787aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    // [6] [5] [4] ___|
1788aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    // [3] [2] <1> ___|
1789aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    public void testLayout7KeyMax3R1() {
1790aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        MoreKeysKeyboardParams params = createParams(7, 3, XPOS_R1);
1791aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("7 key max 3 R1 columns", 3, params.mNumColumns);
1792aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("7 key max 3 R1 rows", 3, params.mNumRows);
1793aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("7 key max 3 R1 left", 2, params.mLeftKeys);
1794aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("7 key max 3 R1 right", 1, params.mRightKeys);
1795aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("7 key max 3 R1 <1>", 0, params.getColumnPos(0));
1796aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("7 key max 3 R1 [2]", -1, params.getColumnPos(1));
1797aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("7 key max 3 R1 [3]", -2, params.getColumnPos(2));
1798aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("7 key max 3 R1 [4]", 0, params.getColumnPos(3));
1799aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("7 key max 3 R1 [5]", -1, params.getColumnPos(4));
1800aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("7 key max 3 R1 [6]", -2, params.getColumnPos(5));
1801aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("7 key max 3 R1 [7]", 0, params.getColumnPos(6));
1802aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("7 key max 3 R1 adjust", 0, params.mTopRowAdjustment);
1803aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("7 key max 3 R1 default", WIDTH * 2, params.getDefaultKeyCoordX());
1804aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    }
1805aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka
1806aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    //     [7]     ___|
1807aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    // [6] [4] [5] ___|
1808aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    // [3] <1> [2] ___|
1809aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    public void testLayout7KeyMax3R2() {
1810aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        MoreKeysKeyboardParams params = createParams(7, 3, XPOS_R2);
1811aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("7 key max 3 R2 columns", 3, params.mNumColumns);
1812aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("7 key max 3 R2 rows", 3, params.mNumRows);
1813aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("7 key max 3 R2 left", 1, params.mLeftKeys);
1814aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("7 key max 3 R2 right", 2, params.mRightKeys);
1815aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("7 key max 3 R2 <1>", 0, params.getColumnPos(0));
1816aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("7 key max 3 R2 [2]", 1, params.getColumnPos(1));
1817aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("7 key max 3 R2 [3]", -1, params.getColumnPos(2));
1818aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("7 key max 3 R2 [4]", 0, params.getColumnPos(3));
1819aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("7 key max 3 R2 [5]", 1, params.getColumnPos(4));
1820aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("7 key max 3 R2 [6]", -1, params.getColumnPos(5));
1821aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("7 key max 3 R2 [7]", 0, params.getColumnPos(6));
1822aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("7 key max 3 R2 adjust", 0, params.mTopRowAdjustment);
1823aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("7 key max 3 R2 default", WIDTH * 1, params.getDefaultKeyCoordX());
1824aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    }
1825aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka
18265d542c24922ae531a581c122d685c3d86047b468Tadashi G. Takaoka    // [7] [5] [6] [8]
1827aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    // [3] <1> [2] [4]
18286213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka    public void testLayout8KeyMax5M0() {
18296213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        MoreKeysKeyboardParams params = createParams(8, 5, XPOS_M0);
18306213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("8 key max 5 M0 columns", 4, params.mNumColumns);
18316213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("8 key max 5 M0 rows", 2, params.mNumRows);
18326213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("8 key max 5 M0 left", 1, params.mLeftKeys);
18336213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("8 key max 5 M0 right", 3, params.mRightKeys);
1834aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("8 key max 5 M0 <1>", 0, params.getColumnPos(0));
18356213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("8 key max 5 M0 [2]", 1, params.getColumnPos(1));
18366213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("8 key max 5 M0 [3]", -1, params.getColumnPos(2));
18376213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("8 key max 5 M0 [4]", 2, params.getColumnPos(3));
18386213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("8 key max 5 M0 [5]", 0, params.getColumnPos(4));
18396213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("8 key max 5 M0 [6]", 1, params.getColumnPos(5));
18406213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("8 key max 5 M0 [7]", -1, params.getColumnPos(6));
18416213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("8 key max 5 M0 [8]", 2, params.getColumnPos(7));
18426213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("8 key max 5 M0 adjust", 0, params.mTopRowAdjustment);
18436213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("8 key max 5 M0 default", WIDTH * 1, params.getDefaultKeyCoordX());
18445d542c24922ae531a581c122d685c3d86047b468Tadashi G. Takaoka    }
18455d542c24922ae531a581c122d685c3d86047b468Tadashi G. Takaoka
18465d542c24922ae531a581c122d685c3d86047b468Tadashi G. Takaoka    // |[5] [6] [7] [8]
1847aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    // |<1> [2] [3] [4]
18486213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka    public void testLayout8KeyMax5L0() {
18496213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        MoreKeysKeyboardParams params = createParams(8, 5, XPOS_L0);
18506213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("8 key max 5 L0 columns", 4, params.mNumColumns);
18516213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("8 key max 5 L0 rows", 2, params.mNumRows);
18526213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("8 key max 5 L0 left", 0, params.mLeftKeys);
18536213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("8 key max 5 L0 right", 4, params.mRightKeys);
1854aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("8 key max 5 L0 <1>", 0, params.getColumnPos(0));
18556213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("8 key max 5 L0 [2]", 1, params.getColumnPos(1));
18566213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("8 key max 5 L0 [3]", 2, params.getColumnPos(2));
18576213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("8 key max 5 L0 [4]", 3, params.getColumnPos(3));
18586213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("8 key max 5 L0 [5]", 0, params.getColumnPos(4));
18596213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("8 key max 5 L0 [6]", 1, params.getColumnPos(5));
18606213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("8 key max 5 L0 [7]", 2, params.getColumnPos(6));
18616213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("8 key max 5 L0 [8]", 3, params.getColumnPos(7));
18626213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("8 key max 5 L0 adjust", 0, params.mTopRowAdjustment);
18636213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("8 key max 5 L0 default", WIDTH * 0, params.getDefaultKeyCoordX());
18645d542c24922ae531a581c122d685c3d86047b468Tadashi G. Takaoka    }
18655d542c24922ae531a581c122d685c3d86047b468Tadashi G. Takaoka
18665d542c24922ae531a581c122d685c3d86047b468Tadashi G. Takaoka    // |___ [5] [6] [7] [8]
1867aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    // |___ <1> [2] [3] [4]
18686213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka    public void testLayout8KeyMax5L1() {
18696213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        MoreKeysKeyboardParams params = createParams(8, 5, XPOS_L1);
18706213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("8 key max 5 L1 columns", 4, params.mNumColumns);
18716213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("8 key max 5 L1 rows", 2, params.mNumRows);
18726213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("8 key max 5 L1 left", 0, params.mLeftKeys);
18736213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("8 key max 5 L1 right", 4, params.mRightKeys);
1874aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("8 key max 5 L1 <1>", 0, params.getColumnPos(0));
18756213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("8 key max 5 L1 [2]", 1, params.getColumnPos(1));
18766213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("8 key max 5 L1 [3]", 2, params.getColumnPos(2));
18776213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("8 key max 5 L1 [4]", 3, params.getColumnPos(3));
18786213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("8 key max 5 L1 [5]", 0, params.getColumnPos(4));
18796213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("8 key max 5 L1 [6]", 1, params.getColumnPos(5));
18806213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("8 key max 5 L1 [7]", 2, params.getColumnPos(6));
18816213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("8 key max 5 L1 [8]", 3, params.getColumnPos(7));
18826213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("8 key max 5 L1 adjust", 0, params.mTopRowAdjustment);
18836213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("8 key max 5 L1 default", WIDTH * 0, params.getDefaultKeyCoordX());
18846213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka    }
18856213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka
18866213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka    // |___ [7] [5] [6] [8]
1887aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    // |___ [3] <1> [2] [4]
18886213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka    public void testLayout8KeyMax5L2() {
18896213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        MoreKeysKeyboardParams params = createParams(8, 5, XPOS_L2);
18906213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("8 key max 5 L2 columns", 4, params.mNumColumns);
18916213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("8 key max 5 L2 rows", 2, params.mNumRows);
18926213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("8 key max 5 L2 left", 1, params.mLeftKeys);
18936213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("8 key max 5 L2 right", 3, params.mRightKeys);
1894aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("8 key max 5 L2 <1>", 0, params.getColumnPos(0));
18956213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("8 key max 5 L2 [2]", 1, params.getColumnPos(1));
18966213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("8 key max 5 L2 [3]", -1, params.getColumnPos(2));
18976213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("8 key max 5 L2 [4]", 2, params.getColumnPos(3));
18986213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("8 key max 5 L2 [5]", 0, params.getColumnPos(4));
18996213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("8 key max 5 L2 [6]", 1, params.getColumnPos(5));
19006213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("8 key max 5 L2 [7]", -1, params.getColumnPos(6));
19016213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("8 key max 5 L2 [8]", 2, params.getColumnPos(7));
19026213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("8 key max 5 L2 adjust", 0, params.mTopRowAdjustment);
19036213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("8 key max 5 L2 default", WIDTH * 1, params.getDefaultKeyCoordX());
19045d542c24922ae531a581c122d685c3d86047b468Tadashi G. Takaoka    }
19055d542c24922ae531a581c122d685c3d86047b468Tadashi G. Takaoka
19065d542c24922ae531a581c122d685c3d86047b468Tadashi G. Takaoka    // [8] [7] [6] [5]|
1907aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    // [4] [3] [2] <1>|
19086213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka    public void testLayout8KeyMax5R0() {
19096213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        MoreKeysKeyboardParams params = createParams(8, 5, XPOS_R0);
19106213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("8 key max 5 R0 columns", 4, params.mNumColumns);
19116213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("8 key max 5 R0 rows", 2, params.mNumRows);
19126213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("8 key max 5 R0 left", 3, params.mLeftKeys);
19136213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("8 key max 5 R0 right", 1, params.mRightKeys);
1914aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("8 key max 5 R0 <1>", 0, params.getColumnPos(0));
19156213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("8 key max 5 R0 [2]", -1, params.getColumnPos(1));
19166213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("8 key max 5 R0 [3]", -2, params.getColumnPos(2));
19176213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("8 key max 5 R0 [4]", -3, params.getColumnPos(3));
19186213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("8 key max 5 R0 [5]", 0, params.getColumnPos(4));
19196213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("8 key max 5 R0 [6]", -1, params.getColumnPos(5));
19206213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("8 key max 5 R0 [7]", -2, params.getColumnPos(6));
19216213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("8 key max 5 R0 [8]", -3, params.getColumnPos(7));
19226213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("8 key max 5 R0 adjust", 0, params.mTopRowAdjustment);
19236213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("8 key max 5 R0 default", WIDTH * 3, params.getDefaultKeyCoordX());
19245d542c24922ae531a581c122d685c3d86047b468Tadashi G. Takaoka    }
19255d542c24922ae531a581c122d685c3d86047b468Tadashi G. Takaoka
19265d542c24922ae531a581c122d685c3d86047b468Tadashi G. Takaoka    // [8] [7] [6] [5] ___|
1927aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    // [4] [3] [2] <1> ___|
19286213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka    public void testLayout8KeyMax5R1() {
19296213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        MoreKeysKeyboardParams params = createParams(8, 5, XPOS_R1);
19306213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("8 key max 5 R1 columns", 4, params.mNumColumns);
19316213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("8 key max 5 R1 rows", 2, params.mNumRows);
19326213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("8 key max 5 R1 left", 3, params.mLeftKeys);
19336213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("8 key max 5 R1 right", 1, params.mRightKeys);
1934aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("8 key max 5 R1 <1>", 0, params.getColumnPos(0));
19356213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("8 key max 5 R1 [2]", -1, params.getColumnPos(1));
19366213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("8 key max 5 R1 [3]", -2, params.getColumnPos(2));
19376213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("8 key max 5 R1 [4]", -3, params.getColumnPos(3));
19386213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("8 key max 5 R1 [5]", 0, params.getColumnPos(4));
19396213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("8 key max 5 R1 [6]", -1, params.getColumnPos(5));
19406213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("8 key max 5 R1 [7]", -2, params.getColumnPos(6));
19416213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("8 key max 5 R1 [8]", -3, params.getColumnPos(7));
19426213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("8 key max 5 R1 adjust", 0, params.mTopRowAdjustment);
19436213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("8 key max 5 R1 default", WIDTH * 3, params.getDefaultKeyCoordX());
19446213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka    }
19456213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka
19466213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka    // [8] [7] [5] [6] ___|
1947aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    // [4] [3] <1> [2] ___|
19486213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka    public void testLayout8KeyMax5R2() {
19496213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        MoreKeysKeyboardParams params = createParams(8, 5, XPOS_R2);
19506213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("8 key max 5 R2 columns", 4, params.mNumColumns);
19516213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("8 key max 5 R2 rows", 2, params.mNumRows);
19526213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("8 key max 5 R2 left", 2, params.mLeftKeys);
19536213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("8 key max 5 R2 right", 2, params.mRightKeys);
1954aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("8 key max 5 R2 <1>", 0, params.getColumnPos(0));
19556213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("8 key max 5 R2 [2]", 1, params.getColumnPos(1));
19566213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("8 key max 5 R2 [3]", -1, params.getColumnPos(2));
19576213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("8 key max 5 R2 [4]", -2, params.getColumnPos(3));
19586213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("8 key max 5 R2 [5]", 0, params.getColumnPos(4));
19596213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("8 key max 5 R2 [6]", 1, params.getColumnPos(5));
19606213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("8 key max 5 R2 [7]", -1, params.getColumnPos(6));
19616213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("8 key max 5 R2 [8]", -2, params.getColumnPos(7));
19626213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("8 key max 5 R2 adjust", 0, params.mTopRowAdjustment);
19636213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("8 key max 5 R2 default", WIDTH * 2, params.getDefaultKeyCoordX());
196404c96ab966e8a58e5cd401362b49509751ce75d9Tadashi G. Takaoka    }
196504c96ab966e8a58e5cd401362b49509751ce75d9Tadashi G. Takaoka
196604c96ab966e8a58e5cd401362b49509751ce75d9Tadashi G. Takaoka    //   [8] [6] [7] [9]
1967aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    // [5] [3] <1> [2] [4]
19686213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka    public void testLayout9KeyMax5M0() {
19696213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        MoreKeysKeyboardParams params = createParams(9, 5, XPOS_M0);
19706213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("9 key max 5 M0 columns", 5, params.mNumColumns);
19716213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("9 key max 5 M0 rows", 2, params.mNumRows);
19726213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("9 key max 5 M0 left", 2, params.mLeftKeys);
19736213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("9 key max 5 M0 right", 3, params.mRightKeys);
1974aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("9 key max 5 M0 <1>", 0, params.getColumnPos(0));
19756213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("9 key max 5 M0 [2]", 1, params.getColumnPos(1));
19766213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("9 key max 5 M0 [3]", -1, params.getColumnPos(2));
19776213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("9 key max 5 M0 [4]", 2, params.getColumnPos(3));
19786213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("9 key max 5 M0 [5]", -2, params.getColumnPos(4));
19796213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("9 key max 5 M0 [6]", 0, params.getColumnPos(5));
19806213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("9 key max 5 M0 [7]", 1, params.getColumnPos(6));
19816213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("9 key max 5 M0 [8]", -1, params.getColumnPos(7));
19826213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("9 key max 5 M0 [9]", 2, params.getColumnPos(8));
19836213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("9 key max 5 M0 adjust", -1, params.mTopRowAdjustment);
19846213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("9 key max 5 M0 default", WIDTH * 2, params.getDefaultKeyCoordX());
19856213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka    }
19866213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka
1987aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    // |[6] [7] [8] [9]
1988aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    // |<1> [2] [3] [4] [5]
19896213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka    public void testLayout9KeyMax5L0() {
19906213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        MoreKeysKeyboardParams params = createParams(9, 5, XPOS_L0);
19916213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("9 key max 5 L0 columns", 5, params.mNumColumns);
19926213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("9 key max 5 L0 rows", 2, params.mNumRows);
19936213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("9 key max 5 L0 left", 0, params.mLeftKeys);
19946213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("9 key max 5 L0 right", 5, params.mRightKeys);
1995aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("9 key max 5 L0 <1>", 0, params.getColumnPos(0));
19966213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("9 key max 5 L0 [2]", 1, params.getColumnPos(1));
19976213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("9 key max 5 L0 [3]", 2, params.getColumnPos(2));
19986213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("9 key max 5 L0 [4]", 3, params.getColumnPos(3));
19996213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("9 key max 5 L0 [5]", 4, params.getColumnPos(4));
20006213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("9 key max 5 L0 [6]", 0, params.getColumnPos(5));
20016213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("9 key max 5 L0 [7]", 1, params.getColumnPos(6));
20026213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("9 key max 5 L0 [8]", 2, params.getColumnPos(7));
20036213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("9 key max 5 L0 [9]", 3, params.getColumnPos(8));
2004aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("9 key max 5 L0 adjust", 0, params.mTopRowAdjustment);
20056213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("9 key max 5 L0 default", WIDTH * 0, params.getDefaultKeyCoordX());
20066213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka    }
20076213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka
2008aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    // |___ [6] [7] [8] [9]
2009aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    // |___ <1> [2] [3] [4] [5]
20106213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka    public void testLayout9KeyMax5L1() {
20116213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        MoreKeysKeyboardParams params = createParams(9, 5, XPOS_L1);
20126213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("9 key max 5 L1 columns", 5, params.mNumColumns);
20136213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("9 key max 5 L1 rows", 2, params.mNumRows);
20146213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("9 key max 5 L1 left", 0, params.mLeftKeys);
20156213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("9 key max 5 L1 right", 5, params.mRightKeys);
2016aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("9 key max 5 L1 <1>", 0, params.getColumnPos(0));
20176213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("9 key max 5 L1 [2]", 1, params.getColumnPos(1));
20186213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("9 key max 5 L1 [3]", 2, params.getColumnPos(2));
20196213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("9 key max 5 L1 [4]", 3, params.getColumnPos(3));
20206213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("9 key max 5 L1 [5]", 4, params.getColumnPos(4));
20216213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("9 key max 5 L1 [6]", 0, params.getColumnPos(5));
20226213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("9 key max 5 L1 [7]", 1, params.getColumnPos(6));
20236213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("9 key max 5 L1 [8]", 2, params.getColumnPos(7));
20246213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("9 key max 5 L1 [9]", 3, params.getColumnPos(8));
2025aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("9 key max 5 L1 adjust",0, params.mTopRowAdjustment);
20266213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("9 key max 5 L1 default", WIDTH * 0, params.getDefaultKeyCoordX());
20276213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka    }
20286213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka
2029aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    // |___   [6] [7] [8] [9]
2030aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    // |___ [3] <1> [2] [4] [5]
20316213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka    public void testLayout9KeyMax5L2() {
20326213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        MoreKeysKeyboardParams params = createParams(9, 5, XPOS_L2);
20336213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("9 key max 5 L2 columns", 5, params.mNumColumns);
20346213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("9 key max 5 L2 rows", 2, params.mNumRows);
20356213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("9 key max 5 L2 left", 1, params.mLeftKeys);
20366213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("9 key max 5 L2 right", 4, params.mRightKeys);
2037aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("9 key max 5 L2 <1>", 0, params.getColumnPos(0));
20386213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("9 key max 5 L2 [2]", 1, params.getColumnPos(1));
20396213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("9 key max 5 L2 [3]", -1, params.getColumnPos(2));
20406213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("9 key max 5 L2 [4]", 2, params.getColumnPos(3));
20416213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("9 key max 5 L2 [5]", 3, params.getColumnPos(4));
20426213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("9 key max 5 L2 [6]", 0, params.getColumnPos(5));
20436213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("9 key max 5 L2 [7]", 1, params.getColumnPos(6));
2044aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("9 key max 5 L2 [8]", 2, params.getColumnPos(7));
2045aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("9 key max 5 L2 [9]", 3, params.getColumnPos(8));
2046aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("9 key max 5 L2 adjust", -1, params.mTopRowAdjustment);
20476213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("9 key max 5 L2 default", WIDTH * 1, params.getDefaultKeyCoordX());
20486213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka    }
20496213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka
2050aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    //     [9] [8] [7] [6]|
2051aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    // [5] [4] [3] [2] <1>|
20526213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka    public void testLayout9KeyMax5R0() {
20536213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        MoreKeysKeyboardParams params = createParams(9, 5, XPOS_R0);
20546213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("9 key max 5 R0 columns", 5, params.mNumColumns);
20556213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("9 key max 5 R0 rows", 2, params.mNumRows);
20566213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("9 key max 5 R0 left", 4, params.mLeftKeys);
20576213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("9 key max 5 R0 right", 1, params.mRightKeys);
2058aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("9 key max 5 R0 <1>", 0, params.getColumnPos(0));
20596213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("9 key max 5 R0 [2]", -1, params.getColumnPos(1));
20606213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("9 key max 5 R0 [3]", -2, params.getColumnPos(2));
20616213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("9 key max 5 R0 [4]", -3, params.getColumnPos(3));
20626213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("9 key max 5 R0 [5]", -4, params.getColumnPos(4));
20636213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("9 key max 5 R0 [6]", 0, params.getColumnPos(5));
20646213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("9 key max 5 R0 [7]", -1, params.getColumnPos(6));
20656213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("9 key max 5 R0 [8]", -2, params.getColumnPos(7));
20666213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("9 key max 5 R0 [9]", -3, params.getColumnPos(8));
2067aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("9 key max 5 R0 adjust", 0, params.mTopRowAdjustment);
20686213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("9 key max 5 R0 default", WIDTH * 4, params.getDefaultKeyCoordX());
20696213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka    }
20706213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka
2071aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    //     [9] [8] [7] [6] ___|
2072aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    // [5] [4] [3] [2] <1> ___|
20736213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka    public void testLayout9KeyMax5R1() {
20746213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        MoreKeysKeyboardParams params = createParams(9, 5, XPOS_R1);
20756213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("9 key max 5 R1 columns", 5, params.mNumColumns);
20766213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("9 key max 5 R1 rows", 2, params.mNumRows);
20776213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("9 key max 5 R1 left", 4, params.mLeftKeys);
20786213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("9 key max 5 R1 right", 1, params.mRightKeys);
2079aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("9 key max 5 R1 <1>", 0, params.getColumnPos(0));
20806213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("9 key max 5 R1 [2]", -1, params.getColumnPos(1));
20816213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("9 key max 5 R1 [3]", -2, params.getColumnPos(2));
20826213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("9 key max 5 R1 [4]", -3, params.getColumnPos(3));
20836213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("9 key max 5 R1 [5]", -4, params.getColumnPos(4));
20846213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("9 key max 5 R1 [6]", 0, params.getColumnPos(5));
20856213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("9 key max 5 R1 [7]", -1, params.getColumnPos(6));
20866213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("9 key max 5 R1 [8]", -2, params.getColumnPos(7));
20876213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("9 key max 5 R1 [9]", -3, params.getColumnPos(8));
2088aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("9 key max 5 R1 adjust", 0, params.mTopRowAdjustment);
20896213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("9 key max 5 R1 default", WIDTH * 4, params.getDefaultKeyCoordX());
20906213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka    }
20916213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka
20926213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka    //   [9] [8] [6] [7]   ___|
2093aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    // [5] [4] [3] <1> [2] ___|
20946213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka    public void testLayout9KeyMax5R2() {
20956213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        MoreKeysKeyboardParams params = createParams(9, 5, XPOS_R2);
20966213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("9 key max 5 R2 columns", 5, params.mNumColumns);
20976213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("9 key max 5 R2 rows", 2, params.mNumRows);
20986213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("9 key max 5 R2 left", 3, params.mLeftKeys);
20996213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("9 key max 5 R2 right", 2, params.mRightKeys);
2100aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("9 key max 5 R2 <1>", 0, params.getColumnPos(0));
21016213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("9 key max 5 R2 [2]", 1, params.getColumnPos(1));
21026213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("9 key max 5 R2 [3]", -1, params.getColumnPos(2));
21036213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("9 key max 5 R2 [4]", -2, params.getColumnPos(3));
21046213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("9 key max 5 R2 [5]", -3, params.getColumnPos(4));
21056213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("9 key max 5 R2 [6]", 0, params.getColumnPos(5));
21066213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("9 key max 5 R2 [7]", 1, params.getColumnPos(6));
21076213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("9 key max 5 R2 [8]", -1, params.getColumnPos(7));
21086213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("9 key max 5 R2 [9]", -2, params.getColumnPos(8));
21096213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("9 key max 5 R2 adjust", -1, params.mTopRowAdjustment);
21106213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("9 key max 5 R2 default", WIDTH * 3, params.getDefaultKeyCoordX());
21115d542c24922ae531a581c122d685c3d86047b468Tadashi G. Takaoka    }
21125d542c24922ae531a581c122d685c3d86047b468Tadashi G. Takaoka
21135d542c24922ae531a581c122d685c3d86047b468Tadashi G. Takaoka    // [A] [8] [6] [7] [9]
2114aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    // [5] [3] <1> [2] [4]
21156213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka    public void testLayout10KeyMax5M0() {
21166213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        MoreKeysKeyboardParams params = createParams(10, 5, XPOS_M0);
21176213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("10 key max 5 M0 columns", 5, params.mNumColumns);
21186213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("10 key max 5 M0 rows", 2, params.mNumRows);
21196213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("10 key max 5 M0 left", 2, params.mLeftKeys);
21206213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("10 key max 5 M0 right", 3, params.mRightKeys);
2121aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("10 key max 5 M0 <1>", 0, params.getColumnPos(0));
21226213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("10 key max 5 M0 [2]", 1, params.getColumnPos(1));
21236213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("10 key max 5 M0 [3]", -1, params.getColumnPos(2));
21246213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("10 key max 5 M0 [4]", 2, params.getColumnPos(3));
21256213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("10 key max 5 M0 [5]", -2, params.getColumnPos(4));
21266213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("10 key max 5 M0 [6]", 0, params.getColumnPos(5));
21276213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("10 key max 5 M0 [7]", 1, params.getColumnPos(6));
21286213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("10 key max 5 M0 [8]", -1, params.getColumnPos(7));
21296213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("10 key max 5 M0 [9]", 2, params.getColumnPos(8));
21306213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("10 key max 5 M0 [A]", -2, params.getColumnPos(9));
21316213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("10 key max 5 M0 adjust", 0, params.mTopRowAdjustment);
21326213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("10 key max 5 M0 default", WIDTH * 2, params.getDefaultKeyCoordX());
21335d542c24922ae531a581c122d685c3d86047b468Tadashi G. Takaoka    }
21345d542c24922ae531a581c122d685c3d86047b468Tadashi G. Takaoka
21355d542c24922ae531a581c122d685c3d86047b468Tadashi G. Takaoka    // |[6] [7] [8] [9] [A]
2136aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    // |<1> [2] [3] [4] [5]
21376213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka    public void testLayout10KeyMax5L0() {
21386213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        MoreKeysKeyboardParams params = createParams(10, 5, XPOS_L0);
21396213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("10 key max 5 L0 columns", 5, params.mNumColumns);
21406213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("10 key max 5 L0 rows", 2, params.mNumRows);
21416213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("10 key max 5 L0 left", 0, params.mLeftKeys);
21426213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("10 key max 5 L0 right", 5, params.mRightKeys);
2143aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("10 key max 5 L0 <1>", 0, params.getColumnPos(0));
21446213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("10 key max 5 L0 [2]", 1, params.getColumnPos(1));
21456213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("10 key max 5 L0 [3]", 2, params.getColumnPos(2));
21466213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("10 key max 5 L0 [4]", 3, params.getColumnPos(3));
21476213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("10 key max 5 L0 [5]", 4, params.getColumnPos(4));
21486213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("10 key max 5 L0 [6]", 0, params.getColumnPos(5));
21496213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("10 key max 5 L0 [7]", 1, params.getColumnPos(6));
21506213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("10 key max 5 L0 [8]", 2, params.getColumnPos(7));
21516213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("10 key max 5 L0 [9]", 3, params.getColumnPos(8));
21526213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("10 key max 5 L0 [A]", 4, params.getColumnPos(9));
21536213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("10 key max 5 L0 adjust", 0, params.mTopRowAdjustment);
21546213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("10 key max 5 L0 default", WIDTH * 0, params.getDefaultKeyCoordX());
21555d542c24922ae531a581c122d685c3d86047b468Tadashi G. Takaoka    }
21565d542c24922ae531a581c122d685c3d86047b468Tadashi G. Takaoka
21575d542c24922ae531a581c122d685c3d86047b468Tadashi G. Takaoka    // |___ [6] [7] [8] [9] [A]
2158aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    // |___ <1> [2] [3] [4] [5]
21596213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka    public void testLayout10KeyMax5L1() {
21606213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        MoreKeysKeyboardParams params = createParams(10, 5, XPOS_L1);
21616213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("10 key max 5 L1 columns", 5, params.mNumColumns);
21626213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("10 key max 5 L1 rows", 2, params.mNumRows);
21636213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("10 key max 5 L1 left", 0, params.mLeftKeys);
21646213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("10 key max 5 L1 right", 5, params.mRightKeys);
2165aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("10 key max 5 L1 <1>", 0, params.getColumnPos(0));
21666213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("10 key max 5 L1 [2]", 1, params.getColumnPos(1));
21676213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("10 key max 5 L1 [3]", 2, params.getColumnPos(2));
21686213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("10 key max 5 L1 [4]", 3, params.getColumnPos(3));
21696213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("10 key max 5 L1 [5]", 4, params.getColumnPos(4));
21706213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("10 key max 5 L1 [6]", 0, params.getColumnPos(5));
21716213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("10 key max 5 L1 [7]", 1, params.getColumnPos(6));
21726213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("10 key max 5 L1 [8]", 2, params.getColumnPos(7));
21736213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("10 key max 5 L1 [9]", 3, params.getColumnPos(8));
21746213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("10 key max 5 L1 [A]", 4, params.getColumnPos(9));
21756213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("10 key max 5 L1 adjust", 0, params.mTopRowAdjustment);
21766213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("10 key max 5 L1 default", WIDTH * 0, params.getDefaultKeyCoordX());
21776213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka    }
21786213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka
21796213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka    // |___ [8] [6] [7] [9] [A]
2180aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    // |___ [3] <1> [2] [4] [5]
21816213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka    public void testLayout10KeyMax5L2() {
21826213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        MoreKeysKeyboardParams params = createParams(10, 5, XPOS_L2);
21836213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("10 key max 5 L2 columns", 5, params.mNumColumns);
21846213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("10 key max 5 L2 rows", 2, params.mNumRows);
21856213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("10 key max 5 L2 left", 1, params.mLeftKeys);
21866213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("10 key max 5 L2 right", 4, params.mRightKeys);
2187aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("10 key max 5 L2 <1>", 0, params.getColumnPos(0));
21886213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("10 key max 5 L2 [2]", 1, params.getColumnPos(1));
21896213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("10 key max 5 L2 [3]", -1, params.getColumnPos(2));
21906213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("10 key max 5 L2 [4]", 2, params.getColumnPos(3));
21916213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("10 key max 5 L2 [5]", 3, params.getColumnPos(4));
21926213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("10 key max 5 L2 [6]", 0, params.getColumnPos(5));
21936213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("10 key max 5 L2 [7]", 1, params.getColumnPos(6));
21946213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("10 key max 5 L2 [8]", -1, params.getColumnPos(7));
21956213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("10 key max 5 L2 [9]", 2, params.getColumnPos(8));
21966213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("10 key max 5 L2 [A]", 3, params.getColumnPos(9));
21976213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("10 key max 5 L2 adjust", 0, params.mTopRowAdjustment);
21986213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("10 key max 5 L2 default", WIDTH * 1, params.getDefaultKeyCoordX());
21995d542c24922ae531a581c122d685c3d86047b468Tadashi G. Takaoka    }
22005d542c24922ae531a581c122d685c3d86047b468Tadashi G. Takaoka
22015d542c24922ae531a581c122d685c3d86047b468Tadashi G. Takaoka    // [A] [9] [8] [7] [6]|
2202aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    // [5] [4] [3] [2] <1>|
22036213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka    public void testLayout10KeyMax5R0() {
22046213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        MoreKeysKeyboardParams params = createParams(10, 5, XPOS_R0);
22056213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("10 key max 5 R0 columns", 5, params.mNumColumns);
22066213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("10 key max 5 R0 rows", 2, params.mNumRows);
22076213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("10 key max 5 R0 left", 4, params.mLeftKeys);
22086213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("10 key max 5 R0 right", 1, params.mRightKeys);
2209aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("10 key max 5 R0 <1>", 0, params.getColumnPos(0));
22106213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("10 key max 5 R0 [2]", -1, params.getColumnPos(1));
22116213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("10 key max 5 R0 [3]", -2, params.getColumnPos(2));
22126213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("10 key max 5 R0 [4]", -3, params.getColumnPos(3));
22136213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("10 key max 5 R0 [5]", -4, params.getColumnPos(4));
22146213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("10 key max 5 R0 [6]", 0, params.getColumnPos(5));
22156213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("10 key max 5 R0 [7]", -1, params.getColumnPos(6));
22166213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("10 key max 5 R0 [8]", -2, params.getColumnPos(7));
22176213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("10 key max 5 R0 [9]", -3, params.getColumnPos(8));
22186213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("10 key max 5 R0 [A]", -4, params.getColumnPos(9));
22196213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("10 key max 5 R0 adjust", 0, params.mTopRowAdjustment);
22206213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("10 key max 5 R0 default", WIDTH * 4, params.getDefaultKeyCoordX());
22215d542c24922ae531a581c122d685c3d86047b468Tadashi G. Takaoka    }
22225d542c24922ae531a581c122d685c3d86047b468Tadashi G. Takaoka
22235d542c24922ae531a581c122d685c3d86047b468Tadashi G. Takaoka    // [A] [9] [8] [7] [6] ___|
2224aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    // [5] [4] [3] [2] <1> ___|
22256213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka    public void testLayout10KeyMax5R1() {
22266213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        MoreKeysKeyboardParams params = createParams(10, 5, XPOS_R1);
22276213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("10 key max 5 R1 columns", 5, params.mNumColumns);
22286213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("10 key max 5 R1 rows", 2, params.mNumRows);
22296213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("10 key max 5 R1 left", 4, params.mLeftKeys);
22306213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("10 key max 5 R1 right", 1, params.mRightKeys);
2231aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("10 key max 5 R1 <1>", 0, params.getColumnPos(0));
22326213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("10 key max 5 R1 [2]", -1, params.getColumnPos(1));
22336213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("10 key max 5 R1 [3]", -2, params.getColumnPos(2));
22346213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("10 key max 5 R1 [4]", -3, params.getColumnPos(3));
22356213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("10 key max 5 R1 [5]", -4, params.getColumnPos(4));
22366213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("10 key max 5 R1 [6]", 0, params.getColumnPos(5));
22376213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("10 key max 5 R1 [7]", -1, params.getColumnPos(6));
22386213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("10 key max 5 R1 [8]", -2, params.getColumnPos(7));
22396213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("10 key max 5 R1 [9]", -3, params.getColumnPos(8));
22406213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("10 key max 5 R1 [A]", -4, params.getColumnPos(9));
22416213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("10 key max 5 R1 adjust", 0, params.mTopRowAdjustment);
22426213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("10 key max 5 R1 default", WIDTH * 4, params.getDefaultKeyCoordX());
22436213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka    }
22446213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka
22456213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka    // [A] [9] [8] [6] [7] ___|
2246aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    // [5] [4] [3] <1> [2] ___|
22476213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka    public void testLayout10KeyMax5R2() {
22486213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        MoreKeysKeyboardParams params = createParams(10, 5, XPOS_R2);
22496213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("10 key max 5 R2 columns", 5, params.mNumColumns);
22506213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("10 key max 5 R2 rows", 2, params.mNumRows);
22516213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("10 key max 5 R2 left", 3, params.mLeftKeys);
22526213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("10 key max 5 R2 right", 2, params.mRightKeys);
2253aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("10 key max 5 R2 <1>", 0, params.getColumnPos(0));
22546213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("10 key max 5 R2 [2]", 1, params.getColumnPos(1));
22556213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("10 key max 5 R2 [3]", -1, params.getColumnPos(2));
22566213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("10 key max 5 R2 [4]", -2, params.getColumnPos(3));
22576213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("10 key max 5 R2 [5]", -3, params.getColumnPos(4));
22586213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("10 key max 5 R2 [6]", 0, params.getColumnPos(5));
22596213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("10 key max 5 R2 [7]", 1, params.getColumnPos(6));
22606213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("10 key max 5 R2 [8]", -1, params.getColumnPos(7));
22616213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("10 key max 5 R2 [9]", -2, params.getColumnPos(8));
22626213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("10 key max 5 R2 [A]", -3, params.getColumnPos(9));
22636213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("10 key max 5 R2 adjust", 0, params.mTopRowAdjustment);
22646213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("10 key max 5 R2 default", WIDTH * 3, params.getDefaultKeyCoordX());
22655d542c24922ae531a581c122d685c3d86047b468Tadashi G. Takaoka    }
22665d542c24922ae531a581c122d685c3d86047b468Tadashi G. Takaoka
2267aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    //   [9] [A] [B]
22685d542c24922ae531a581c122d685c3d86047b468Tadashi G. Takaoka    // [7] [5] [6] [8]
2269aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    // [3] <1> [2] [4]
22706213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka    public void testLayout11KeyMax5M0() {
22716213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        MoreKeysKeyboardParams params = createParams(11, 5, XPOS_M0);
22726213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("11 key max 5 M0 columns", 4, params.mNumColumns);
22736213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("11 key max 5 M0 rows", 3, params.mNumRows);
22746213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("11 key max 5 M0 left", 1, params.mLeftKeys);
22756213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("11 key max 5 M0 right", 3, params.mRightKeys);
2276aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("11 key max 5 M0 <1>", 0, params.getColumnPos(0));
22776213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("11 key max 5 M0 [2]", 1, params.getColumnPos(1));
22786213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("11 key max 5 M0 [3]", -1, params.getColumnPos(2));
22796213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("11 key max 5 M0 [4]", 2, params.getColumnPos(3));
22806213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("11 key max 5 M0 [5]", 0, params.getColumnPos(4));
22816213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("11 key max 5 M0 [6]", 1, params.getColumnPos(5));
22826213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("11 key max 5 M0 [7]", -1, params.getColumnPos(6));
22836213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("11 key max 5 M0 [8]", 2, params.getColumnPos(7));
22846213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("11 key max 5 M0 [9]", 0, params.getColumnPos(8));
22856213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("11 key max 5 M0 [A]", 1, params.getColumnPos(9));
2286aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("11 key max 5 M0 [B]", 2, params.getColumnPos(10));
2287aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("11 key max 5 M0 adjust", -1, params.mTopRowAdjustment);
22886213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("11 key max 5 M0 default", WIDTH * 1, params.getDefaultKeyCoordX());
22895d542c24922ae531a581c122d685c3d86047b468Tadashi G. Takaoka    }
22905d542c24922ae531a581c122d685c3d86047b468Tadashi G. Takaoka
22915d542c24922ae531a581c122d685c3d86047b468Tadashi G. Takaoka    // [B] [9] [A] [C]
22925d542c24922ae531a581c122d685c3d86047b468Tadashi G. Takaoka    // [7] [5] [6] [8]
2293aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    // [3] <1> [2] [4]
22946213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka    public void testLayout12KeyMax5M0() {
22956213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        MoreKeysKeyboardParams params = createParams(12, 5, XPOS_M0);
22966213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("12 key max 5 M0 columns", 4, params.mNumColumns);
22976213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("12 key max 5 M0 rows", 3, params.mNumRows);
22986213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("12 key max 5 M0 left", 1, params.mLeftKeys);
22996213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("12 key max 5 M0 right", 3, params.mRightKeys);
2300aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("12 key max 5 M0 <1>", 0, params.getColumnPos(0));
23016213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("12 key max 5 M0 [2]", 1, params.getColumnPos(1));
23026213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("12 key max 5 M0 [3]", -1, params.getColumnPos(2));
23036213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("12 key max 5 M0 [4]", 2, params.getColumnPos(3));
23046213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("12 key max 5 M0 [5]", 0, params.getColumnPos(4));
23056213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("12 key max 5 M0 [6]", 1, params.getColumnPos(5));
23066213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("12 key max 5 M0 [7]", -1, params.getColumnPos(6));
23076213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("12 key max 5 M0 [8]", 2, params.getColumnPos(7));
23086213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("12 key max 5 M0 [9]", 0, params.getColumnPos(8));
23096213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("12 key max 5 M0 [A]", 1, params.getColumnPos(9));
23106213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("12 key max 5 M0 [B]", -1, params.getColumnPos(10));
23116213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("12 key max 5 M0 [C]", 2, params.getColumnPos(11));
23126213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("12 key max 5 M0 adjust", 0, params.mTopRowAdjustment);
23136213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("12 key max 5 M0 default", WIDTH * 1, params.getDefaultKeyCoordX());
23145d542c24922ae531a581c122d685c3d86047b468Tadashi G. Takaoka    }
23155d542c24922ae531a581c122d685c3d86047b468Tadashi G. Takaoka
23165d542c24922ae531a581c122d685c3d86047b468Tadashi G. Takaoka    //     [D] [B] [C]
23175d542c24922ae531a581c122d685c3d86047b468Tadashi G. Takaoka    // [A] [8] [6] [7] [9]
2318aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    // [5] [3] <1> [2] [4]
23196213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka    public void testLayout13KeyMax5M0() {
23206213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        MoreKeysKeyboardParams params = createParams(13, 5, XPOS_M0);
23216213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("13 key max 5 M0 columns", 5, params.mNumColumns);
23226213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("13 key max 5 M0 rows", 3, params.mNumRows);
23236213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("13 key max 5 M0 left", 2, params.mLeftKeys);
23246213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("13 key max 5 M0 right", 3, params.mRightKeys);
2325aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("13 key max 5 M0 <1>", 0, params.getColumnPos(0));
23266213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("13 key max 5 M0 [2]", 1, params.getColumnPos(1));
23276213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("13 key max 5 M0 [3]", -1, params.getColumnPos(2));
23286213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("13 key max 5 M0 [4]", 2, params.getColumnPos(3));
23296213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("13 key max 5 M0 [5]", -2, params.getColumnPos(4));
23306213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("13 key max 5 M0 [6]", 0, params.getColumnPos(5));
23316213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("13 key max 5 M0 [7]", 1, params.getColumnPos(6));
23326213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("13 key max 5 M0 [8]", -1, params.getColumnPos(7));
23336213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("13 key max 5 M0 [9]", 2, params.getColumnPos(8));
23346213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("13 key max 5 M0 [A]", -2, params.getColumnPos(9));
23356213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("13 key max 5 M0 [B]", 0, params.getColumnPos(10));
23366213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("13 key max 5 M0 [C]", 1, params.getColumnPos(11));
23376213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("13 key max 5 M0 [D]", -1, params.getColumnPos(12));
23386213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("13 key max 5 M0 adjust", 0, params.mTopRowAdjustment);
23396213983fa147d010ce30314f43b0a1800d2528baTadashi G. Takaoka        assertEquals("13 key max 5 M0 default", WIDTH * 2, params.getDefaultKeyCoordX());
234004c96ab966e8a58e5cd401362b49509751ce75d9Tadashi G. Takaoka    }
2341aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka
2342aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    //   [D] [B] [C] [E]
2343aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    // [A] [8] [6] [7] [9]
2344aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    // [5] [3] <1> [2] [4]
2345aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    public void testLayout14KeyMax5M0() {
2346aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        MoreKeysKeyboardParams params = createParams(14, 5, XPOS_M0);
2347aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("13 key max 5 M0 columns", 5, params.mNumColumns);
2348aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("13 key max 5 M0 rows", 3, params.mNumRows);
2349aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("13 key max 5 M0 left", 2, params.mLeftKeys);
2350aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("13 key max 5 M0 right", 3, params.mRightKeys);
2351aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("13 key max 5 M0 <1>", 0, params.getColumnPos(0));
2352aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("13 key max 5 M0 [2]", 1, params.getColumnPos(1));
2353aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("13 key max 5 M0 [3]", -1, params.getColumnPos(2));
2354aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("13 key max 5 M0 [4]", 2, params.getColumnPos(3));
2355aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("13 key max 5 M0 [5]", -2, params.getColumnPos(4));
2356aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("13 key max 5 M0 [6]", 0, params.getColumnPos(5));
2357aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("13 key max 5 M0 [7]", 1, params.getColumnPos(6));
2358aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("13 key max 5 M0 [8]", -1, params.getColumnPos(7));
2359aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("13 key max 5 M0 [9]", 2, params.getColumnPos(8));
2360aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("13 key max 5 M0 [A]", -2, params.getColumnPos(9));
2361aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("13 key max 5 M0 [B]", 0, params.getColumnPos(10));
2362aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("13 key max 5 M0 [C]", 1, params.getColumnPos(11));
2363aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("13 key max 5 M0 [D]", -1, params.getColumnPos(12));
2364aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("13 key max 5 M0 [E]", 2, params.getColumnPos(13));
2365aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("13 key max 5 M0 adjust", -1, params.mTopRowAdjustment);
2366aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka        assertEquals("13 key max 5 M0 default", WIDTH * 2, params.getDefaultKeyCoordX());
2367aeeed758480b0fac848f4556884d978f3004555bTadashi G. Takaoka    }
236804c96ab966e8a58e5cd401362b49509751ce75d9Tadashi G. Takaoka}
2369