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.text.method.cts; 18 19 import static org.junit.Assert.assertArrayEquals; 20 import static org.junit.Assert.assertEquals; 21 import static org.junit.Assert.assertNotNull; 22 import static org.junit.Assert.assertSame; 23 import static org.junit.Assert.assertTrue; 24 25 import android.support.test.filters.MediumTest; 26 import android.support.test.runner.AndroidJUnit4; 27 import android.text.InputType; 28 import android.text.Spannable; 29 import android.text.SpannableString; 30 import android.text.method.DialerKeyListener; 31 import android.view.KeyEvent; 32 33 import org.junit.Test; 34 import org.junit.runner.RunWith; 35 36 /** 37 * Test {@link android.text.method.DialerKeyListener}. 38 */ 39 @MediumTest 40 @RunWith(AndroidJUnit4.class) 41 public class DialerKeyListenerTest extends KeyListenerTestCase { 42 @Test 43 public void testConstructor() { 44 new DialerKeyListener(); 45 } 46 47 @Test 48 public void testLookup() { 49 MockDialerKeyListener mockDialerKeyListener = new MockDialerKeyListener(); 50 final int[] events = {KeyEvent.KEYCODE_0, KeyEvent.KEYCODE_N, KeyEvent.KEYCODE_A}; 51 SpannableString span = new SpannableString(""); // no meta spans 52 for (int event : events) { 53 KeyEvent keyEvent = new KeyEvent(KeyEvent.ACTION_DOWN, event); 54 int keyChar = keyEvent.getNumber(); 55 if (keyChar != 0) { 56 assertEquals(keyChar, mockDialerKeyListener.lookup(keyEvent, span)); 57 } else { 58 // cannot make any assumptions how the key code gets translated 59 } 60 } 61 } 62 63 @Test(expected=NullPointerException.class) 64 public void testLookupNull() { 65 MockDialerKeyListener mockDialerKeyListener = new MockDialerKeyListener(); 66 SpannableString span = new SpannableString(""); // no meta spans 67 mockDialerKeyListener.lookup(null, span); 68 } 69 70 @Test 71 public void testGetInstance() { 72 assertNotNull(DialerKeyListener.getInstance()); 73 74 DialerKeyListener listener1 = DialerKeyListener.getInstance(); 75 DialerKeyListener listener2 = DialerKeyListener.getInstance(); 76 77 assertTrue(listener1 instanceof DialerKeyListener); 78 assertTrue(listener2 instanceof DialerKeyListener); 79 assertSame(listener1, listener2); 80 } 81 82 @Test 83 public void testGetAcceptedChars() { 84 MockDialerKeyListener mockDialerKeyListener = new MockDialerKeyListener(); 85 86 assertArrayEquals(DialerKeyListener.CHARACTERS, 87 mockDialerKeyListener.getAcceptedChars()); 88 } 89 90 @Test 91 public void testGetInputType() { 92 DialerKeyListener listener = DialerKeyListener.getInstance(); 93 94 assertEquals(InputType.TYPE_CLASS_PHONE, listener.getInputType()); 95 } 96 97 /** 98 * A mocked {@link android.text.method.DialerKeyListener} for testing purposes. 99 * 100 * Allows {@link DialerKeyListenerTest} to call 101 * {@link android.text.method.DialerKeyListener#getAcceptedChars()} and 102 * {@link android.text.method.DialerKeyListener#lookup(KeyEvent, Spannable)}. 103 */ 104 private class MockDialerKeyListener extends DialerKeyListener { 105 @Override 106 protected char[] getAcceptedChars() { 107 return super.getAcceptedChars(); 108 } 109 110 @Override 111 protected int lookup(KeyEvent event, Spannable content) { 112 return super.lookup(event, content); 113 } 114 } 115 } 116