Home | History | Annotate | Download | only in cts
      1 /*
      2  * Copyright (C) 2008 The Android Open Source Project
      3  *
      4  * Licensed under the Apache License, Version 2.0 (the "License");
      5  * you may not use this file except in compliance with the License.
      6  * You may obtain a copy of the License at
      7  *
      8  *      http://www.apache.org/licenses/LICENSE-2.0
      9  *
     10  * Unless required by applicable law or agreed to in writing, software
     11  * distributed under the License is distributed on an "AS IS" BASIS,
     12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     13  * See the License for the specific language governing permissions and
     14  * limitations under the License.
     15  */
     16 
     17 package android.view.cts;
     18 
     19 import static org.junit.Assert.assertEquals;
     20 import static org.junit.Assert.assertFalse;
     21 import static org.junit.Assert.assertNotNull;
     22 import static org.junit.Assert.assertTrue;
     23 import static org.junit.Assert.fail;
     24 
     25 import android.support.test.filters.SmallTest;
     26 import android.support.test.runner.AndroidJUnit4;
     27 import android.text.TextUtils;
     28 import android.view.KeyCharacterMap;
     29 import android.view.KeyCharacterMap.KeyData;
     30 import android.view.KeyEvent;
     31 
     32 import org.junit.Before;
     33 import org.junit.Test;
     34 import org.junit.runner.RunWith;
     35 
     36 @SmallTest
     37 @RunWith(AndroidJUnit4.class)
     38 public class KeyCharacterMapTest {
     39 
     40     private KeyCharacterMap mKeyCharacterMap;
     41     private final char[] chars = {'A', 'B', 'C'};
     42 
     43     @Before
     44     public void setup() {
     45         mKeyCharacterMap = KeyCharacterMap.load(KeyCharacterMap.VIRTUAL_KEYBOARD);
     46     }
     47 
     48     @Test
     49     public void testIsPrintingKey() {
     50 
     51         assertFalse(mKeyCharacterMap.isPrintingKey(KeyEvent.KEYCODE_UNKNOWN));
     52         assertFalse(mKeyCharacterMap.isPrintingKey(KeyEvent.KEYCODE_SOFT_LEFT));
     53         assertFalse(mKeyCharacterMap.isPrintingKey(KeyEvent.KEYCODE_SOFT_RIGHT));
     54         assertFalse(mKeyCharacterMap.isPrintingKey(KeyEvent.KEYCODE_HOME));
     55         assertFalse(mKeyCharacterMap.isPrintingKey(KeyEvent.KEYCODE_BACK));
     56         assertFalse(mKeyCharacterMap.isPrintingKey(KeyEvent.KEYCODE_CALL));
     57         assertFalse(mKeyCharacterMap.isPrintingKey(KeyEvent.KEYCODE_ENDCALL));
     58 
     59         assertTrue(mKeyCharacterMap.isPrintingKey(KeyEvent.KEYCODE_0));
     60         assertTrue(mKeyCharacterMap.isPrintingKey(KeyEvent.KEYCODE_1));
     61         assertTrue(mKeyCharacterMap.isPrintingKey(KeyEvent.KEYCODE_2));
     62         assertTrue(mKeyCharacterMap.isPrintingKey(KeyEvent.KEYCODE_3));
     63         assertTrue(mKeyCharacterMap.isPrintingKey(KeyEvent.KEYCODE_4));
     64         assertTrue(mKeyCharacterMap.isPrintingKey(KeyEvent.KEYCODE_5));
     65         assertTrue(mKeyCharacterMap.isPrintingKey(KeyEvent.KEYCODE_6));
     66         assertTrue(mKeyCharacterMap.isPrintingKey(KeyEvent.KEYCODE_7));
     67         assertTrue(mKeyCharacterMap.isPrintingKey(KeyEvent.KEYCODE_8));
     68         assertTrue(mKeyCharacterMap.isPrintingKey(KeyEvent.KEYCODE_9));
     69         assertTrue(mKeyCharacterMap.isPrintingKey(KeyEvent.KEYCODE_STAR));
     70         assertTrue(mKeyCharacterMap.isPrintingKey(KeyEvent.KEYCODE_POUND));
     71 
     72         assertFalse(mKeyCharacterMap.isPrintingKey(KeyEvent.KEYCODE_DPAD_UP));
     73         assertFalse(mKeyCharacterMap.isPrintingKey(KeyEvent.KEYCODE_DPAD_DOWN));
     74         assertFalse(mKeyCharacterMap.isPrintingKey(KeyEvent.KEYCODE_DPAD_LEFT));
     75         assertFalse(mKeyCharacterMap.isPrintingKey(KeyEvent.KEYCODE_DPAD_RIGHT));
     76         assertFalse(mKeyCharacterMap.isPrintingKey(KeyEvent.KEYCODE_DPAD_CENTER));
     77         assertFalse(mKeyCharacterMap.isPrintingKey(KeyEvent.KEYCODE_VOLUME_UP));
     78         assertFalse(mKeyCharacterMap.isPrintingKey(KeyEvent.KEYCODE_VOLUME_DOWN));
     79         assertFalse(mKeyCharacterMap.isPrintingKey(KeyEvent.KEYCODE_POWER));
     80         assertFalse(mKeyCharacterMap.isPrintingKey(KeyEvent.KEYCODE_CAMERA));
     81         assertFalse(mKeyCharacterMap.isPrintingKey(KeyEvent.KEYCODE_CLEAR));
     82 
     83         assertTrue(mKeyCharacterMap.isPrintingKey(KeyEvent.KEYCODE_A));
     84         assertTrue(mKeyCharacterMap.isPrintingKey(KeyEvent.KEYCODE_B));
     85         assertTrue(mKeyCharacterMap.isPrintingKey(KeyEvent.KEYCODE_C));
     86         assertTrue(mKeyCharacterMap.isPrintingKey(KeyEvent.KEYCODE_D));
     87         assertTrue(mKeyCharacterMap.isPrintingKey(KeyEvent.KEYCODE_E));
     88         assertTrue(mKeyCharacterMap.isPrintingKey(KeyEvent.KEYCODE_F));
     89         assertTrue(mKeyCharacterMap.isPrintingKey(KeyEvent.KEYCODE_G));
     90         assertTrue(mKeyCharacterMap.isPrintingKey(KeyEvent.KEYCODE_H));
     91         assertTrue(mKeyCharacterMap.isPrintingKey(KeyEvent.KEYCODE_I));
     92         assertTrue(mKeyCharacterMap.isPrintingKey(KeyEvent.KEYCODE_J));
     93         assertTrue(mKeyCharacterMap.isPrintingKey(KeyEvent.KEYCODE_K));
     94         assertTrue(mKeyCharacterMap.isPrintingKey(KeyEvent.KEYCODE_L));
     95         assertTrue(mKeyCharacterMap.isPrintingKey(KeyEvent.KEYCODE_M));
     96         assertTrue(mKeyCharacterMap.isPrintingKey(KeyEvent.KEYCODE_N));
     97         assertTrue(mKeyCharacterMap.isPrintingKey(KeyEvent.KEYCODE_O));
     98         assertTrue(mKeyCharacterMap.isPrintingKey(KeyEvent.KEYCODE_P));
     99         assertTrue(mKeyCharacterMap.isPrintingKey(KeyEvent.KEYCODE_Q));
    100         assertTrue(mKeyCharacterMap.isPrintingKey(KeyEvent.KEYCODE_R));
    101         assertTrue(mKeyCharacterMap.isPrintingKey(KeyEvent.KEYCODE_S));
    102         assertTrue(mKeyCharacterMap.isPrintingKey(KeyEvent.KEYCODE_T));
    103         assertTrue(mKeyCharacterMap.isPrintingKey(KeyEvent.KEYCODE_U));
    104         assertTrue(mKeyCharacterMap.isPrintingKey(KeyEvent.KEYCODE_V));
    105         assertTrue(mKeyCharacterMap.isPrintingKey(KeyEvent.KEYCODE_W));
    106         assertTrue(mKeyCharacterMap.isPrintingKey(KeyEvent.KEYCODE_X));
    107         assertTrue(mKeyCharacterMap.isPrintingKey(KeyEvent.KEYCODE_Y));
    108         assertTrue(mKeyCharacterMap.isPrintingKey(KeyEvent.KEYCODE_Z));
    109         assertTrue(mKeyCharacterMap.isPrintingKey(KeyEvent.KEYCODE_COMMA));
    110         assertTrue(mKeyCharacterMap.isPrintingKey(KeyEvent.KEYCODE_PERIOD));
    111 
    112         assertFalse(mKeyCharacterMap.isPrintingKey(KeyEvent.KEYCODE_ALT_LEFT));
    113         assertFalse(mKeyCharacterMap.isPrintingKey(KeyEvent.KEYCODE_ALT_RIGHT));
    114         assertFalse(mKeyCharacterMap.isPrintingKey(KeyEvent.KEYCODE_SHIFT_LEFT));
    115         assertFalse(mKeyCharacterMap.isPrintingKey(KeyEvent.KEYCODE_SHIFT_RIGHT));
    116         assertFalse(mKeyCharacterMap.isPrintingKey(KeyEvent.KEYCODE_TAB));
    117         assertFalse(mKeyCharacterMap.isPrintingKey(KeyEvent.KEYCODE_SPACE));
    118         assertFalse(mKeyCharacterMap.isPrintingKey(KeyEvent.KEYCODE_SYM));
    119         assertFalse(mKeyCharacterMap.isPrintingKey(KeyEvent.KEYCODE_NUM));
    120         assertFalse(mKeyCharacterMap.isPrintingKey(KeyEvent.KEYCODE_EXPLORER));
    121         assertFalse(mKeyCharacterMap.isPrintingKey(KeyEvent.KEYCODE_ENVELOPE));
    122         assertFalse(mKeyCharacterMap.isPrintingKey(KeyEvent.KEYCODE_ENTER));
    123         assertFalse(mKeyCharacterMap.isPrintingKey(KeyEvent.KEYCODE_DEL));
    124 
    125         assertTrue(mKeyCharacterMap.isPrintingKey(KeyEvent.KEYCODE_GRAVE));
    126         assertTrue(mKeyCharacterMap.isPrintingKey(KeyEvent.KEYCODE_MINUS));
    127         assertTrue(mKeyCharacterMap.isPrintingKey(KeyEvent.KEYCODE_EQUALS));
    128         assertTrue(mKeyCharacterMap.isPrintingKey(KeyEvent.KEYCODE_LEFT_BRACKET));
    129         assertTrue(mKeyCharacterMap.isPrintingKey(KeyEvent.KEYCODE_RIGHT_BRACKET));
    130         assertTrue(mKeyCharacterMap.isPrintingKey(KeyEvent.KEYCODE_BACKSLASH));
    131         assertTrue(mKeyCharacterMap.isPrintingKey(KeyEvent.KEYCODE_SEMICOLON));
    132         assertTrue(mKeyCharacterMap.isPrintingKey(KeyEvent.KEYCODE_APOSTROPHE));
    133         assertTrue(mKeyCharacterMap.isPrintingKey(KeyEvent.KEYCODE_SLASH));
    134         assertTrue(mKeyCharacterMap.isPrintingKey(KeyEvent.KEYCODE_AT));
    135 
    136         assertFalse(mKeyCharacterMap.isPrintingKey(KeyEvent.KEYCODE_NUM));
    137         assertFalse(mKeyCharacterMap.isPrintingKey(KeyEvent.KEYCODE_HEADSETHOOK));
    138 
    139         assertFalse(mKeyCharacterMap.isPrintingKey(KeyEvent.KEYCODE_FOCUS));
    140         assertTrue(mKeyCharacterMap.isPrintingKey(KeyEvent.KEYCODE_PLUS));
    141         assertFalse(mKeyCharacterMap.isPrintingKey(KeyEvent.KEYCODE_MENU));
    142         assertFalse(mKeyCharacterMap.isPrintingKey(KeyEvent.KEYCODE_NOTIFICATION));
    143         assertFalse(mKeyCharacterMap.isPrintingKey(KeyEvent.KEYCODE_SEARCH));
    144 
    145         assertFalse(mKeyCharacterMap.isPrintingKey(KeyEvent.KEYCODE_MEDIA_PLAY_PAUSE));
    146         assertFalse(mKeyCharacterMap.isPrintingKey(KeyEvent.KEYCODE_MEDIA_STOP));
    147         assertFalse(mKeyCharacterMap.isPrintingKey(KeyEvent.KEYCODE_MEDIA_NEXT));
    148         assertFalse(mKeyCharacterMap.isPrintingKey(KeyEvent.KEYCODE_MEDIA_PREVIOUS));
    149         assertFalse(mKeyCharacterMap.isPrintingKey(KeyEvent.KEYCODE_MEDIA_REWIND));
    150         assertFalse(mKeyCharacterMap.isPrintingKey(KeyEvent.KEYCODE_MEDIA_FAST_FORWARD));
    151         assertFalse(mKeyCharacterMap.isPrintingKey(KeyEvent.KEYCODE_MUTE));
    152         assertFalse(mKeyCharacterMap.isPrintingKey(KeyEvent.KEYCODE_PAGE_UP));
    153         assertFalse(mKeyCharacterMap.isPrintingKey(KeyEvent.KEYCODE_PAGE_DOWN));
    154         assertFalse(mKeyCharacterMap.isPrintingKey(KeyEvent.KEYCODE_PICTSYMBOLS));
    155         assertFalse(mKeyCharacterMap.isPrintingKey(KeyEvent.KEYCODE_SWITCH_CHARSET));
    156         assertFalse(mKeyCharacterMap.isPrintingKey(KeyEvent.KEYCODE_BUTTON_A));
    157         assertFalse(mKeyCharacterMap.isPrintingKey(KeyEvent.KEYCODE_BUTTON_B));
    158         assertFalse(mKeyCharacterMap.isPrintingKey(KeyEvent.KEYCODE_BUTTON_C));
    159         assertFalse(mKeyCharacterMap.isPrintingKey(KeyEvent.KEYCODE_BUTTON_X));
    160         assertFalse(mKeyCharacterMap.isPrintingKey(KeyEvent.KEYCODE_BUTTON_Y));
    161         assertFalse(mKeyCharacterMap.isPrintingKey(KeyEvent.KEYCODE_BUTTON_Z));
    162         assertFalse(mKeyCharacterMap.isPrintingKey(KeyEvent.KEYCODE_BUTTON_L1));
    163         assertFalse(mKeyCharacterMap.isPrintingKey(KeyEvent.KEYCODE_BUTTON_R1));
    164         assertFalse(mKeyCharacterMap.isPrintingKey(KeyEvent.KEYCODE_BUTTON_L2));
    165         assertFalse(mKeyCharacterMap.isPrintingKey(KeyEvent.KEYCODE_BUTTON_R2));
    166         assertFalse(mKeyCharacterMap.isPrintingKey(KeyEvent.KEYCODE_BUTTON_THUMBL));
    167         assertFalse(mKeyCharacterMap.isPrintingKey(KeyEvent.KEYCODE_BUTTON_THUMBR));
    168         assertFalse(mKeyCharacterMap.isPrintingKey(KeyEvent.KEYCODE_BUTTON_START));
    169         assertFalse(mKeyCharacterMap.isPrintingKey(KeyEvent.KEYCODE_BUTTON_SELECT));
    170         assertFalse(mKeyCharacterMap.isPrintingKey(KeyEvent.KEYCODE_BUTTON_MODE));
    171         assertFalse(mKeyCharacterMap.isPrintingKey(KeyEvent.KEYCODE_ESCAPE));
    172         assertFalse(mKeyCharacterMap.isPrintingKey(KeyEvent.KEYCODE_FORWARD_DEL));
    173 
    174         assertFalse(mKeyCharacterMap.isPrintingKey(KeyEvent.KEYCODE_CTRL_LEFT));
    175         assertFalse(mKeyCharacterMap.isPrintingKey(KeyEvent.KEYCODE_CTRL_RIGHT));
    176 
    177         assertFalse(mKeyCharacterMap.isPrintingKey(KeyEvent.KEYCODE_CAPS_LOCK));
    178         assertFalse(mKeyCharacterMap.isPrintingKey(KeyEvent.KEYCODE_SCROLL_LOCK));
    179 
    180         assertFalse(mKeyCharacterMap.isPrintingKey(KeyEvent.KEYCODE_META_LEFT));
    181         assertFalse(mKeyCharacterMap.isPrintingKey(KeyEvent.KEYCODE_META_RIGHT));
    182 
    183         assertFalse(mKeyCharacterMap.isPrintingKey(KeyEvent.KEYCODE_FUNCTION));
    184         assertFalse(mKeyCharacterMap.isPrintingKey(KeyEvent.KEYCODE_SYSRQ));
    185         assertFalse(mKeyCharacterMap.isPrintingKey(KeyEvent.KEYCODE_BREAK));
    186 
    187         assertFalse(mKeyCharacterMap.isPrintingKey(KeyEvent.KEYCODE_MOVE_HOME));
    188         assertFalse(mKeyCharacterMap.isPrintingKey(KeyEvent.KEYCODE_MOVE_END));
    189 
    190         assertFalse(mKeyCharacterMap.isPrintingKey(KeyEvent.KEYCODE_INSERT));
    191         assertFalse(mKeyCharacterMap.isPrintingKey(KeyEvent.KEYCODE_FORWARD));
    192 
    193         assertFalse(mKeyCharacterMap.isPrintingKey(KeyEvent.KEYCODE_MEDIA_PLAY));
    194         assertFalse(mKeyCharacterMap.isPrintingKey(KeyEvent.KEYCODE_MEDIA_PAUSE));
    195         assertFalse(mKeyCharacterMap.isPrintingKey(KeyEvent.KEYCODE_MEDIA_CLOSE));
    196         assertFalse(mKeyCharacterMap.isPrintingKey(KeyEvent.KEYCODE_MEDIA_EJECT));
    197         assertFalse(mKeyCharacterMap.isPrintingKey(KeyEvent.KEYCODE_MEDIA_RECORD));
    198 
    199         assertFalse(mKeyCharacterMap.isPrintingKey(KeyEvent.KEYCODE_F1));
    200         assertFalse(mKeyCharacterMap.isPrintingKey(KeyEvent.KEYCODE_F2));
    201         assertFalse(mKeyCharacterMap.isPrintingKey(KeyEvent.KEYCODE_F3));
    202         assertFalse(mKeyCharacterMap.isPrintingKey(KeyEvent.KEYCODE_F4));
    203         assertFalse(mKeyCharacterMap.isPrintingKey(KeyEvent.KEYCODE_F5));
    204         assertFalse(mKeyCharacterMap.isPrintingKey(KeyEvent.KEYCODE_F6));
    205         assertFalse(mKeyCharacterMap.isPrintingKey(KeyEvent.KEYCODE_F7));
    206         assertFalse(mKeyCharacterMap.isPrintingKey(KeyEvent.KEYCODE_F8));
    207         assertFalse(mKeyCharacterMap.isPrintingKey(KeyEvent.KEYCODE_F9));
    208         assertFalse(mKeyCharacterMap.isPrintingKey(KeyEvent.KEYCODE_F10));
    209         assertFalse(mKeyCharacterMap.isPrintingKey(KeyEvent.KEYCODE_F11));
    210         assertFalse(mKeyCharacterMap.isPrintingKey(KeyEvent.KEYCODE_F12));
    211 
    212         assertFalse(mKeyCharacterMap.isPrintingKey(KeyEvent.KEYCODE_NUM_LOCK));
    213 
    214         assertTrue(mKeyCharacterMap.isPrintingKey(KeyEvent.KEYCODE_NUMPAD_0));
    215         assertTrue(mKeyCharacterMap.isPrintingKey(KeyEvent.KEYCODE_NUMPAD_1));
    216         assertTrue(mKeyCharacterMap.isPrintingKey(KeyEvent.KEYCODE_NUMPAD_2));
    217         assertTrue(mKeyCharacterMap.isPrintingKey(KeyEvent.KEYCODE_NUMPAD_3));
    218         assertTrue(mKeyCharacterMap.isPrintingKey(KeyEvent.KEYCODE_NUMPAD_4));
    219         assertTrue(mKeyCharacterMap.isPrintingKey(KeyEvent.KEYCODE_NUMPAD_5));
    220         assertTrue(mKeyCharacterMap.isPrintingKey(KeyEvent.KEYCODE_NUMPAD_6));
    221         assertTrue(mKeyCharacterMap.isPrintingKey(KeyEvent.KEYCODE_NUMPAD_7));
    222         assertTrue(mKeyCharacterMap.isPrintingKey(KeyEvent.KEYCODE_NUMPAD_8));
    223         assertTrue(mKeyCharacterMap.isPrintingKey(KeyEvent.KEYCODE_NUMPAD_9));
    224         assertTrue(mKeyCharacterMap.isPrintingKey(KeyEvent.KEYCODE_NUMPAD_DIVIDE));
    225         assertTrue(mKeyCharacterMap.isPrintingKey(KeyEvent.KEYCODE_NUMPAD_MULTIPLY));
    226         assertTrue(mKeyCharacterMap.isPrintingKey(KeyEvent.KEYCODE_NUMPAD_SUBTRACT));
    227         assertTrue(mKeyCharacterMap.isPrintingKey(KeyEvent.KEYCODE_NUMPAD_ADD));
    228         assertTrue(mKeyCharacterMap.isPrintingKey(KeyEvent.KEYCODE_NUMPAD_DOT));
    229         assertTrue(mKeyCharacterMap.isPrintingKey(KeyEvent.KEYCODE_NUMPAD_COMMA));
    230         assertFalse(mKeyCharacterMap.isPrintingKey(KeyEvent.KEYCODE_NUMPAD_ENTER));
    231         assertTrue(mKeyCharacterMap.isPrintingKey(KeyEvent.KEYCODE_NUMPAD_EQUALS));
    232         assertTrue(mKeyCharacterMap.isPrintingKey(KeyEvent.KEYCODE_NUMPAD_LEFT_PAREN));
    233         assertTrue(mKeyCharacterMap.isPrintingKey(KeyEvent.KEYCODE_NUMPAD_RIGHT_PAREN));
    234 
    235         assertFalse(mKeyCharacterMap.isPrintingKey(KeyEvent.KEYCODE_VOLUME_MUTE));
    236 
    237         assertFalse(mKeyCharacterMap.isPrintingKey(KeyEvent.KEYCODE_INFO));
    238 
    239         assertFalse(mKeyCharacterMap.isPrintingKey(KeyEvent.KEYCODE_CHANNEL_UP));
    240         assertFalse(mKeyCharacterMap.isPrintingKey(KeyEvent.KEYCODE_CHANNEL_DOWN));
    241 
    242         assertFalse(mKeyCharacterMap.isPrintingKey(KeyEvent.KEYCODE_ZOOM_IN));
    243         assertFalse(mKeyCharacterMap.isPrintingKey(KeyEvent.KEYCODE_ZOOM_OUT));
    244 
    245         assertFalse(mKeyCharacterMap.isPrintingKey(KeyEvent.KEYCODE_TV));
    246         assertFalse(mKeyCharacterMap.isPrintingKey(KeyEvent.KEYCODE_WINDOW));
    247         assertFalse(mKeyCharacterMap.isPrintingKey(KeyEvent.KEYCODE_GUIDE));
    248         assertFalse(mKeyCharacterMap.isPrintingKey(KeyEvent.KEYCODE_DVR));
    249         assertFalse(mKeyCharacterMap.isPrintingKey(KeyEvent.KEYCODE_BOOKMARK));
    250         assertFalse(mKeyCharacterMap.isPrintingKey(KeyEvent.KEYCODE_CAPTIONS));
    251         assertFalse(mKeyCharacterMap.isPrintingKey(KeyEvent.KEYCODE_SETTINGS));
    252 
    253         assertFalse(mKeyCharacterMap.isPrintingKey(KeyEvent.KEYCODE_TV_POWER));
    254         assertFalse(mKeyCharacterMap.isPrintingKey(KeyEvent.KEYCODE_TV_INPUT));
    255         assertFalse(mKeyCharacterMap.isPrintingKey(KeyEvent.KEYCODE_STB_POWER));
    256         assertFalse(mKeyCharacterMap.isPrintingKey(KeyEvent.KEYCODE_STB_INPUT));
    257         assertFalse(mKeyCharacterMap.isPrintingKey(KeyEvent.KEYCODE_AVR_POWER));
    258         assertFalse(mKeyCharacterMap.isPrintingKey(KeyEvent.KEYCODE_AVR_INPUT));
    259 
    260         assertFalse(mKeyCharacterMap.isPrintingKey(KeyEvent.KEYCODE_PROG_RED));
    261         assertFalse(mKeyCharacterMap.isPrintingKey(KeyEvent.KEYCODE_PROG_GREEN));
    262         assertFalse(mKeyCharacterMap.isPrintingKey(KeyEvent.KEYCODE_PROG_YELLOW));
    263         assertFalse(mKeyCharacterMap.isPrintingKey(KeyEvent.KEYCODE_PROG_BLUE));
    264     }
    265 
    266     @Test
    267     public void testLoad() {
    268         mKeyCharacterMap = null;
    269         mKeyCharacterMap = KeyCharacterMap.load(KeyCharacterMap.BUILT_IN_KEYBOARD);
    270         assertNotNull(mKeyCharacterMap);
    271     }
    272 
    273     @Test
    274     public void testGetNumber() {
    275         assertEquals('0', mKeyCharacterMap.getNumber(KeyEvent.KEYCODE_0));
    276         assertEquals('1', mKeyCharacterMap.getNumber(KeyEvent.KEYCODE_1));
    277         assertEquals('2', mKeyCharacterMap.getNumber(KeyEvent.KEYCODE_2));
    278         assertEquals('3', mKeyCharacterMap.getNumber(KeyEvent.KEYCODE_3));
    279         assertEquals('4', mKeyCharacterMap.getNumber(KeyEvent.KEYCODE_4));
    280         assertEquals('5', mKeyCharacterMap.getNumber(KeyEvent.KEYCODE_5));
    281         assertEquals('6', mKeyCharacterMap.getNumber(KeyEvent.KEYCODE_6));
    282         assertEquals('7', mKeyCharacterMap.getNumber(KeyEvent.KEYCODE_7));
    283         assertEquals('8', mKeyCharacterMap.getNumber(KeyEvent.KEYCODE_8));
    284         assertEquals('9', mKeyCharacterMap.getNumber(KeyEvent.KEYCODE_9));
    285         assertEquals('*', mKeyCharacterMap.getNumber(KeyEvent.KEYCODE_STAR));
    286         assertEquals('#', mKeyCharacterMap.getNumber(KeyEvent.KEYCODE_POUND));
    287     }
    288 
    289     @Test(expected=IllegalArgumentException.class)
    290     public void testGetMatchNull() {
    291         mKeyCharacterMap.getMatch(KeyEvent.KEYCODE_0, null);
    292     }
    293 
    294     @Test
    295     public void testGetMatch() {
    296         assertEquals('\0', mKeyCharacterMap.getMatch(getCharacterKeyCode('E'), chars));
    297         assertEquals('A', mKeyCharacterMap.getMatch(getCharacterKeyCode('A'), chars));
    298         assertEquals('B', mKeyCharacterMap.getMatch(getCharacterKeyCode('B'), chars));
    299     }
    300 
    301     private int getCharacterKeyCode(char oneChar) {
    302         // Lowercase the character to avoid getting modifiers in the KeyEvent array.
    303         char[] chars = new char[] {Character.toLowerCase(oneChar)};
    304         KeyEvent[] events = mKeyCharacterMap.getEvents(chars);
    305         return events[0].getKeyCode();
    306     }
    307 
    308     @Test(expected=IllegalArgumentException.class)
    309     public void testGetMatchMetaStateNull() {
    310         mKeyCharacterMap.getMatch(KeyEvent.KEYCODE_0, null, 1);
    311     }
    312 
    313     @Test
    314     public void testGetMatchMetaState() {
    315         assertEquals('\0', mKeyCharacterMap.getMatch(1000, chars, 2));
    316         assertEquals('\0', mKeyCharacterMap.getMatch(10000, chars, 2));
    317         assertEquals('\0', mKeyCharacterMap.getMatch(getCharacterKeyCode('E'), chars));
    318         assertEquals('A', mKeyCharacterMap.getMatch(getCharacterKeyCode('A'), chars));
    319         assertEquals('B', mKeyCharacterMap.getMatch(getCharacterKeyCode('B'), chars));
    320     }
    321 
    322     @Test
    323     public void testGetKeyboardType() {
    324         mKeyCharacterMap.getKeyboardType();
    325     }
    326 
    327     @Test(expected=IllegalArgumentException.class)
    328     public void testGetEventsNull() {
    329         mKeyCharacterMap.getEvents(null);
    330     }
    331 
    332     @Test
    333     public void testGetEvents() {
    334         CharSequence mCharSequence = "TestMessage123";
    335         int len = mCharSequence.length();
    336         char[] charsArray = new char[len];
    337         TextUtils.getChars(mCharSequence, 1, len, charsArray, 0);
    338         mKeyCharacterMap.getEvents(charsArray);
    339     }
    340 
    341     @Test
    342     public void testGetKeyData() {
    343         KeyData result = new KeyData();
    344         result.meta = new char[2];
    345         try {
    346             mKeyCharacterMap.getKeyData(KeyEvent.KEYCODE_HOME, result);
    347             fail("should throw exception");
    348         } catch (Exception e) {
    349         }
    350         result.meta = new char[4];
    351         assertFalse(mKeyCharacterMap.getKeyData(KeyEvent.KEYCODE_HOME, result));
    352         assertTrue(mKeyCharacterMap.getKeyData(KeyEvent.KEYCODE_0, result));
    353         assertEquals(48, result.meta[0]);
    354 
    355         // here just call deviceHasKey and deviceHasKeys.
    356         KeyCharacterMap.deviceHasKey(KeyEvent.KEYCODE_0);
    357         final int[] keyChar = new int[] {
    358                 KeyEvent.KEYCODE_0, KeyEvent.KEYCODE_1, KeyEvent.KEYCODE_3
    359         };
    360         boolean[] keys = KeyCharacterMap.deviceHasKeys(keyChar);
    361         assertEquals(keyChar.length, keys.length);
    362     }
    363 
    364 }
    365