1f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project/* 2f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project * Copyright (C) 2008 The Android Open Source Project 3f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project * 4f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License"); 5f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project * you may not use this file except in compliance with the License. 6f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project * You may obtain a copy of the License at 7f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project * 8f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 9f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project * 10f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project * Unless required by applicable law or agreed to in writing, software 11f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, 12f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project * See the License for the specific language governing permissions and 14f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project * limitations under the License. 15f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project */ 16f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project 17f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Projectpackage android.text.method.cts; 18f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project 19f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Projectimport junit.framework.TestCase; 20f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Projectimport android.text.InputType; 21f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Projectimport android.text.Spannable; 22f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Projectimport android.text.SpannableString; 23f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Projectimport android.text.method.DialerKeyListener; 24f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Projectimport android.view.KeyEvent; 25f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project 26f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project/** 27f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project * Test {@link DialerKeyListener}. 28f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project */ 29f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Projectpublic class DialerKeyListenerTest extends TestCase { 30f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project public void testConstructor() { 31f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project new DialerKeyListener(); 32f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project } 33f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project 34f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project public void testLookup() { 35f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project MockDialerKeyListener mockDialerKeyListener = new MockDialerKeyListener(); 369e46cca85dd7468d128cc8c610f58402f10bc41aPhil Dubach final int[] events = { KeyEvent.KEYCODE_0, KeyEvent.KEYCODE_N, KeyEvent.KEYCODE_A }; 379e46cca85dd7468d128cc8c610f58402f10bc41aPhil Dubach SpannableString span = new SpannableString(""); // no meta spans 389e46cca85dd7468d128cc8c610f58402f10bc41aPhil Dubach for (int event: events) { 399e46cca85dd7468d128cc8c610f58402f10bc41aPhil Dubach KeyEvent keyEvent = new KeyEvent(KeyEvent.ACTION_DOWN, event); 409e46cca85dd7468d128cc8c610f58402f10bc41aPhil Dubach int keyChar = keyEvent.getNumber(); 419e46cca85dd7468d128cc8c610f58402f10bc41aPhil Dubach if (keyChar != 0) { 429e46cca85dd7468d128cc8c610f58402f10bc41aPhil Dubach assertEquals(keyChar, mockDialerKeyListener.lookup(keyEvent, span)); 439e46cca85dd7468d128cc8c610f58402f10bc41aPhil Dubach } else { 449e46cca85dd7468d128cc8c610f58402f10bc41aPhil Dubach // cannot make any assumptions how the key code gets translated 459e46cca85dd7468d128cc8c610f58402f10bc41aPhil Dubach } 469e46cca85dd7468d128cc8c610f58402f10bc41aPhil Dubach } 47f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project 48f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project try { 499e46cca85dd7468d128cc8c610f58402f10bc41aPhil Dubach mockDialerKeyListener.lookup(null, span); 50f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project fail("should throw NullPointerException."); 51f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project } catch (NullPointerException e) { 52f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project } 53f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project } 54f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project 55f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project public void testGetInstance() { 56f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project assertNotNull(DialerKeyListener.getInstance()); 57f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project 58f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project DialerKeyListener listener1 = DialerKeyListener.getInstance(); 59f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project DialerKeyListener listener2 = DialerKeyListener.getInstance(); 60f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project 61f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project assertTrue(listener1 instanceof DialerKeyListener); 62f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project assertTrue(listener2 instanceof DialerKeyListener); 63f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project assertSame(listener1, listener2); 64f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project } 65f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project 66f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project public void testGetAcceptedChars() { 67f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project MockDialerKeyListener mockDialerKeyListener = new MockDialerKeyListener(); 68f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project 69f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project TextMethodUtils.assertEquals(DialerKeyListener.CHARACTERS, 70f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project mockDialerKeyListener.getAcceptedChars()); 71f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project } 72f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project 73f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project public void testGetInputType() { 74f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project DialerKeyListener listener = DialerKeyListener.getInstance(); 75f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project 76f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project assertEquals(InputType.TYPE_CLASS_PHONE, listener.getInputType()); 77f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project } 78f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project 79f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project private class MockDialerKeyListener extends DialerKeyListener { 80f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project protected char[] getAcceptedChars() { 81f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project return super.getAcceptedChars(); 82f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project } 83f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project 84f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project protected int lookup(KeyEvent event, Spannable content) { 85f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project return super.lookup(event, content); 86f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project } 87f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project } 88f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project} 89