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