CallLogListItemHelperTest.java revision 9c466374c2cb5371197334bde701dc8f452ebf03
1/* 2 * Copyright (C) 2011 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 17package com.android.contacts.calllog; 18 19import com.android.contacts.PhoneCallDetails; 20import com.android.contacts.PhoneCallDetailsHelper; 21import com.android.contacts.PhoneCallDetailsViews; 22import com.android.contacts.R; 23import com.android.internal.telephony.CallerInfo; 24 25import android.content.Context; 26import android.content.res.Resources; 27import android.provider.CallLog.Calls; 28import android.test.AndroidTestCase; 29import android.view.View; 30import android.widget.ImageView; 31import android.widget.LinearLayout; 32import android.widget.QuickContactBadge; 33import android.widget.TextView; 34 35/** 36 * Unit tests for {@link CallLogListItemHelper}. 37 */ 38public class CallLogListItemHelperTest extends AndroidTestCase { 39 /** A test phone number for phone calls. */ 40 private static final String TEST_NUMBER = "14125555555"; 41 /** The formatted version of {@link #TEST_NUMBER}. */ 42 private static final String TEST_FORMATTED_NUMBER = "1-412-255-5555"; 43 /** A test date value for phone calls. */ 44 private static final long TEST_DATE = 1300000000; 45 /** A test duration value for phone calls. */ 46 private static final long TEST_DURATION = 62300; 47 /** A test voicemail number. */ 48 private static final String TEST_VOICEMAIL_NUMBER = "123"; 49 /** The country ISO name used in the tests. */ 50 private static final String TEST_COUNTRY_ISO = "US"; 51 52 /** The object under test. */ 53 private CallLogListItemHelper mHelper; 54 55 /** The views used in the tests. */ 56 private CallLogListItemViews mViews; 57 private PhoneNumberHelper mPhoneNumberHelper; 58 59 @Override 60 protected void setUp() throws Exception { 61 super.setUp(); 62 Context context = getContext(); 63 Resources resources = context.getResources(); 64 CallTypeHelper callTypeHelper = new CallTypeHelper(resources, 65 resources.getDrawable(R.drawable.ic_call_incoming_holo_dark), 66 resources.getDrawable(R.drawable.ic_call_outgoing_holo_dark), 67 resources.getDrawable(R.drawable.ic_call_missed_holo_dark), 68 resources.getDrawable(R.drawable.ic_call_voicemail_holo_dark)); 69 mPhoneNumberHelper = new PhoneNumberHelper(resources, TEST_VOICEMAIL_NUMBER); 70 PhoneCallDetailsHelper phoneCallDetailsHelper = new PhoneCallDetailsHelper(context, 71 resources, callTypeHelper, mPhoneNumberHelper); 72 mHelper = new CallLogListItemHelper(phoneCallDetailsHelper, mPhoneNumberHelper); 73 mViews = CallLogListItemViews.createForTest(new QuickContactBadge(context), 74 new ImageView(context), new ImageView(context), 75 PhoneCallDetailsViews.createForTest(new TextView(context), 76 new LinearLayout(context), new TextView(context), new TextView(context), 77 new TextView(context), new TextView(context)), 78 new View(context), new View(context), new TextView(context)); 79 } 80 81 @Override 82 protected void tearDown() throws Exception { 83 mHelper = null; 84 mViews = null; 85 super.tearDown(); 86 } 87 88 public void testSetPhoneCallDetails() { 89 setPhoneCallDetailsWithNumber("12125551234", "1-212-555-1234"); 90 assertEquals(View.VISIBLE, mViews.callView.getVisibility()); 91 assertEquals(View.GONE, mViews.playView.getVisibility()); 92 } 93 94 public void testSetPhoneCallDetails_Unknown() { 95 setPhoneCallDetailsWithNumber(CallerInfo.UNKNOWN_NUMBER, CallerInfo.UNKNOWN_NUMBER); 96 assertEquals(View.INVISIBLE, mViews.callView.getVisibility()); 97 assertEquals(View.GONE, mViews.playView.getVisibility()); 98 } 99 100 public void testSetPhoneCallDetails_Private() { 101 setPhoneCallDetailsWithNumber(CallerInfo.PRIVATE_NUMBER, CallerInfo.PRIVATE_NUMBER); 102 assertEquals(View.INVISIBLE, mViews.callView.getVisibility()); 103 assertEquals(View.GONE, mViews.playView.getVisibility()); 104 } 105 106 public void testSetPhoneCallDetails_Payphone() { 107 setPhoneCallDetailsWithNumber(CallerInfo.PAYPHONE_NUMBER, CallerInfo.PAYPHONE_NUMBER); 108 assertEquals(View.INVISIBLE, mViews.callView.getVisibility()); 109 assertEquals(View.GONE, mViews.playView.getVisibility()); 110 } 111 112 public void testSetPhoneCallDetails_VoicemailNumber() { 113 setPhoneCallDetailsWithNumber(TEST_VOICEMAIL_NUMBER, TEST_VOICEMAIL_NUMBER); 114 assertEquals(View.VISIBLE, mViews.callView.getVisibility()); 115 assertEquals(View.GONE, mViews.playView.getVisibility()); 116 } 117 118 public void testSetPhoneCallDetails_Voicemail() { 119 setPhoneCallDetailsWithTypes(Calls.VOICEMAIL_TYPE); 120 assertEquals(View.VISIBLE, mViews.callView.getVisibility()); 121 assertEquals(View.VISIBLE, mViews.playView.getVisibility()); 122 } 123 124 /** Sets the details of a phone call using the specified phone number. */ 125 private void setPhoneCallDetailsWithNumber(String number, String formattedNumber) { 126 mHelper.setPhoneCallDetails(mViews, 127 new PhoneCallDetails(number, formattedNumber, TEST_COUNTRY_ISO, 128 new int[]{ Calls.INCOMING_TYPE }, TEST_DATE, TEST_DURATION), 129 true, false); 130 } 131 132 /** Sets the details of a phone call using the specified call type. */ 133 private void setPhoneCallDetailsWithTypes(int... types) { 134 mHelper.setPhoneCallDetails(mViews, 135 new PhoneCallDetails(TEST_NUMBER, TEST_FORMATTED_NUMBER, TEST_COUNTRY_ISO, 136 types, TEST_DATE, TEST_DURATION), 137 true, false); 138 } 139} 140