1778df2417da0c0186862b25519ce65ed633a9b6dTyler Gunn/*
2778df2417da0c0186862b25519ce65ed633a9b6dTyler Gunn * Copyright (C) 2014 The Android Open Source Project
3778df2417da0c0186862b25519ce65ed633a9b6dTyler Gunn *
4778df2417da0c0186862b25519ce65ed633a9b6dTyler Gunn * Licensed under the Apache License, Version 2.0 (the "License");
5778df2417da0c0186862b25519ce65ed633a9b6dTyler Gunn * you may not use this file except in compliance with the License.
6778df2417da0c0186862b25519ce65ed633a9b6dTyler Gunn * You may obtain a copy of the License at
7778df2417da0c0186862b25519ce65ed633a9b6dTyler Gunn *
8778df2417da0c0186862b25519ce65ed633a9b6dTyler Gunn *      http://www.apache.org/licenses/LICENSE-2.0
9778df2417da0c0186862b25519ce65ed633a9b6dTyler Gunn *
10778df2417da0c0186862b25519ce65ed633a9b6dTyler Gunn * Unless required by applicable law or agreed to in writing, software
11778df2417da0c0186862b25519ce65ed633a9b6dTyler Gunn * distributed under the License is distributed on an "AS IS" BASIS,
12778df2417da0c0186862b25519ce65ed633a9b6dTyler Gunn * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13778df2417da0c0186862b25519ce65ed633a9b6dTyler Gunn * See the License for the specific language governing permissions and
14778df2417da0c0186862b25519ce65ed633a9b6dTyler Gunn * limitations under the License.
15778df2417da0c0186862b25519ce65ed633a9b6dTyler Gunn */
16778df2417da0c0186862b25519ce65ed633a9b6dTyler Gunn
17778df2417da0c0186862b25519ce65ed633a9b6dTyler Gunnpackage com.android.providers.contacts;
18778df2417da0c0186862b25519ce65ed633a9b6dTyler Gunn
19778df2417da0c0186862b25519ce65ed633a9b6dTyler Gunnimport android.content.ContentValues;
20778df2417da0c0186862b25519ce65ed633a9b6dTyler Gunnimport android.provider.CallLog.Calls;
21778df2417da0c0186862b25519ce65ed633a9b6dTyler Gunn
22778df2417da0c0186862b25519ce65ed633a9b6dTyler Gunnimport android.test.AndroidTestCase;
23778df2417da0c0186862b25519ce65ed633a9b6dTyler Gunn
24778df2417da0c0186862b25519ce65ed633a9b6dTyler Gunn/**
25778df2417da0c0186862b25519ce65ed633a9b6dTyler Gunn * Test cases for {@link com.android.providers.contacts.DefaultCallLogInsertionHelper}.
26778df2417da0c0186862b25519ce65ed633a9b6dTyler Gunn */
27778df2417da0c0186862b25519ce65ed633a9b6dTyler Gunnpublic class CallLogInsertionHelperTest extends AndroidTestCase {
28778df2417da0c0186862b25519ce65ed633a9b6dTyler Gunn
29778df2417da0c0186862b25519ce65ed633a9b6dTyler Gunn    /**
30778df2417da0c0186862b25519ce65ed633a9b6dTyler Gunn     * The default insertion helper under test.
31778df2417da0c0186862b25519ce65ed633a9b6dTyler Gunn     */
32778df2417da0c0186862b25519ce65ed633a9b6dTyler Gunn    private CallLogInsertionHelper mInsertionHelper =
33778df2417da0c0186862b25519ce65ed633a9b6dTyler Gunn            DefaultCallLogInsertionHelper.getInstance(this.getContext());
34778df2417da0c0186862b25519ce65ed633a9b6dTyler Gunn
35778df2417da0c0186862b25519ce65ed633a9b6dTyler Gunn    /**
36778df2417da0c0186862b25519ce65ed633a9b6dTyler Gunn     * Tests cases where valid, normalizable phone numbers are provided.
37778df2417da0c0186862b25519ce65ed633a9b6dTyler Gunn     */
38778df2417da0c0186862b25519ce65ed633a9b6dTyler Gunn    public void testValidNumber() {
39778df2417da0c0186862b25519ce65ed633a9b6dTyler Gunn        checkNormalization("650-555-1212", "+16505551212");
40778df2417da0c0186862b25519ce65ed633a9b6dTyler Gunn        checkNormalization("1-650-555-1212", "+16505551212");
41778df2417da0c0186862b25519ce65ed633a9b6dTyler Gunn        checkNormalization("+16505551212", "+16505551212");
42778df2417da0c0186862b25519ce65ed633a9b6dTyler Gunn        checkNormalization("011-81-3-6384-9000", "+81363849000");
43778df2417da0c0186862b25519ce65ed633a9b6dTyler Gunn    }
44778df2417da0c0186862b25519ce65ed633a9b6dTyler Gunn
45778df2417da0c0186862b25519ce65ed633a9b6dTyler Gunn    /**
46778df2417da0c0186862b25519ce65ed633a9b6dTyler Gunn     * Test cases where invalid unformatted numbers are entered.
47778df2417da0c0186862b25519ce65ed633a9b6dTyler Gunn     */
48778df2417da0c0186862b25519ce65ed633a9b6dTyler Gunn    public void testInvalidNumber() {
49778df2417da0c0186862b25519ce65ed633a9b6dTyler Gunn        checkNormalization("", null);
50778df2417da0c0186862b25519ce65ed633a9b6dTyler Gunn        // Invalid area code.
51778df2417da0c0186862b25519ce65ed633a9b6dTyler Gunn        checkNormalization("663-555-1212", null);
52778df2417da0c0186862b25519ce65ed633a9b6dTyler Gunn        // No area code.
53778df2417da0c0186862b25519ce65ed633a9b6dTyler Gunn        checkNormalization("555-1212", null);
54778df2417da0c0186862b25519ce65ed633a9b6dTyler Gunn        // Number as it should be dialed from Japan.
55778df2417da0c0186862b25519ce65ed633a9b6dTyler Gunn        checkNormalization("03-6384-9000", null);
56778df2417da0c0186862b25519ce65ed633a9b6dTyler Gunn        // SIP address
57778df2417da0c0186862b25519ce65ed633a9b6dTyler Gunn        checkNormalization("test@sip.org", null);
58778df2417da0c0186862b25519ce65ed633a9b6dTyler Gunn    }
59778df2417da0c0186862b25519ce65ed633a9b6dTyler Gunn
60778df2417da0c0186862b25519ce65ed633a9b6dTyler Gunn    /**
61778df2417da0c0186862b25519ce65ed633a9b6dTyler Gunn     * Runs the DefaultCallLogInsertionHelper to determine if it produces the correct normalized
62778df2417da0c0186862b25519ce65ed633a9b6dTyler Gunn     * phone number.
63778df2417da0c0186862b25519ce65ed633a9b6dTyler Gunn     *
64778df2417da0c0186862b25519ce65ed633a9b6dTyler Gunn     * @param number The unformatted phone number.
65778df2417da0c0186862b25519ce65ed633a9b6dTyler Gunn     * @param expectedNormalized The expected normalized number.
66778df2417da0c0186862b25519ce65ed633a9b6dTyler Gunn     */
67778df2417da0c0186862b25519ce65ed633a9b6dTyler Gunn    private void checkNormalization(String number, String expectedNormalized) {
68778df2417da0c0186862b25519ce65ed633a9b6dTyler Gunn        ContentValues values = new ContentValues();
69778df2417da0c0186862b25519ce65ed633a9b6dTyler Gunn        values.put(Calls.NUMBER, number);
70778df2417da0c0186862b25519ce65ed633a9b6dTyler Gunn        mInsertionHelper.addComputedValues(values);
71778df2417da0c0186862b25519ce65ed633a9b6dTyler Gunn
72778df2417da0c0186862b25519ce65ed633a9b6dTyler Gunn        assertEquals(expectedNormalized, values.getAsString(Calls.CACHED_NORMALIZED_NUMBER));
73778df2417da0c0186862b25519ce65ed633a9b6dTyler Gunn    }
74778df2417da0c0186862b25519ce65ed633a9b6dTyler Gunn}
75