diff options
Diffstat (limited to 'tests/src/com/android/dialer/calllog/CallLogListItemHelperTest.java')
-rw-r--r-- | tests/src/com/android/dialer/calllog/CallLogListItemHelperTest.java | 151 |
1 files changed, 151 insertions, 0 deletions
diff --git a/tests/src/com/android/dialer/calllog/CallLogListItemHelperTest.java b/tests/src/com/android/dialer/calllog/CallLogListItemHelperTest.java new file mode 100644 index 000000000..3ad5abe0a --- /dev/null +++ b/tests/src/com/android/dialer/calllog/CallLogListItemHelperTest.java @@ -0,0 +1,151 @@ +/* + * Copyright (C) 2011 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.dialer.calllog; + +import android.content.Context; +import android.content.res.Resources; +import android.provider.CallLog.Calls; +import android.test.AndroidTestCase; +import android.view.View; + +import com.android.dialer.PhoneCallDetails; +import com.android.dialer.PhoneCallDetailsHelper; +import com.android.internal.telephony.CallerInfo; + +/** + * Unit tests for {@link CallLogListItemHelper}. + */ +public class CallLogListItemHelperTest extends AndroidTestCase { + /** A test phone number for phone calls. */ + private static final String TEST_NUMBER = "14125555555"; + /** The formatted version of {@link #TEST_NUMBER}. */ + private static final String TEST_FORMATTED_NUMBER = "1-412-255-5555"; + /** A test date value for phone calls. */ + private static final long TEST_DATE = 1300000000; + /** A test duration value for phone calls. */ + private static final long TEST_DURATION = 62300; + /** A test voicemail number. */ + private static final String TEST_VOICEMAIL_NUMBER = "123"; + /** The country ISO name used in the tests. */ + private static final String TEST_COUNTRY_ISO = "US"; + /** The geocoded location used in the tests. */ + private static final String TEST_GEOCODE = "United States"; + + /** The object under test. */ + private CallLogListItemHelper mHelper; + + /** The views used in the tests. */ + private CallLogListItemViews mViews; + private PhoneNumberHelper mPhoneNumberHelper; + + @Override + protected void setUp() throws Exception { + super.setUp(); + Context context = getContext(); + Resources resources = context.getResources(); + CallTypeHelper callTypeHelper = new CallTypeHelper(resources); + mPhoneNumberHelper = new TestPhoneNumberHelper(resources, TEST_VOICEMAIL_NUMBER); + PhoneCallDetailsHelper phoneCallDetailsHelper = new PhoneCallDetailsHelper( + resources, callTypeHelper, mPhoneNumberHelper); + mHelper = new CallLogListItemHelper(phoneCallDetailsHelper, mPhoneNumberHelper, resources); + mViews = CallLogListItemViews.createForTest(context); + } + + @Override + protected void tearDown() throws Exception { + mHelper = null; + mViews = null; + super.tearDown(); + } + + public void testSetPhoneCallDetails() { + setPhoneCallDetailsWithNumber("12125551234", "1-212-555-1234"); + assertEquals(View.VISIBLE, mViews.secondaryActionView.getVisibility()); + } + + public void testSetPhoneCallDetails_Unknown() { + setPhoneCallDetailsWithNumber(CallerInfo.UNKNOWN_NUMBER, CallerInfo.UNKNOWN_NUMBER); + assertNoCallButton(); + } + + public void testSetPhoneCallDetails_Private() { + setPhoneCallDetailsWithNumber(CallerInfo.PRIVATE_NUMBER, CallerInfo.PRIVATE_NUMBER); + assertNoCallButton(); + } + + public void testSetPhoneCallDetails_Payphone() { + setPhoneCallDetailsWithNumber(CallerInfo.PAYPHONE_NUMBER, CallerInfo.PAYPHONE_NUMBER); + assertNoCallButton(); + } + + public void testSetPhoneCallDetails_VoicemailNumber() { + setPhoneCallDetailsWithNumber(TEST_VOICEMAIL_NUMBER, TEST_VOICEMAIL_NUMBER); + assertEquals(View.VISIBLE, mViews.secondaryActionView.getVisibility()); + } + + public void testSetPhoneCallDetails_ReadVoicemail() { + setPhoneCallDetailsWithTypes(Calls.VOICEMAIL_TYPE); + assertEquals(View.VISIBLE, mViews.secondaryActionView.getVisibility()); + } + + public void testSetPhoneCallDetails_UnreadVoicemail() { + setUnreadPhoneCallDetailsWithTypes(Calls.VOICEMAIL_TYPE); + assertEquals(View.VISIBLE, mViews.secondaryActionView.getVisibility()); + } + + public void testSetPhoneCallDetails_VoicemailFromUnknown() { + setPhoneCallDetailsWithNumberAndType(CallerInfo.UNKNOWN_NUMBER, CallerInfo.UNKNOWN_NUMBER, + Calls.VOICEMAIL_TYPE); + assertEquals(View.VISIBLE, mViews.secondaryActionView.getVisibility()); + } + + /** Asserts that the whole call area is gone. */ + private void assertNoCallButton() { + assertEquals(View.GONE, mViews.secondaryActionView.getVisibility()); + assertEquals(View.GONE, mViews.dividerView.getVisibility()); + } + + /** Sets the details of a phone call using the specified phone number. */ + private void setPhoneCallDetailsWithNumber(String number, String formattedNumber) { + setPhoneCallDetailsWithNumberAndType(number, formattedNumber, Calls.INCOMING_TYPE); + } + + /** Sets the details of a phone call using the specified phone number. */ + private void setPhoneCallDetailsWithNumberAndType(String number, String formattedNumber, + int callType) { + mHelper.setPhoneCallDetails(mViews, + new PhoneCallDetails(number, formattedNumber, TEST_COUNTRY_ISO, TEST_GEOCODE, + new int[]{ callType }, TEST_DATE, TEST_DURATION), + false); + } + + /** Sets the details of a phone call using the specified call type. */ + private void setPhoneCallDetailsWithTypes(int... types) { + mHelper.setPhoneCallDetails(mViews, + new PhoneCallDetails(TEST_NUMBER, TEST_FORMATTED_NUMBER, TEST_COUNTRY_ISO, + TEST_GEOCODE, types, TEST_DATE, TEST_DURATION), + false); + } + + /** Sets the details of a phone call using the specified call type. */ + private void setUnreadPhoneCallDetailsWithTypes(int... types) { + mHelper.setPhoneCallDetails(mViews, + new PhoneCallDetails(TEST_NUMBER, TEST_FORMATTED_NUMBER, TEST_COUNTRY_ISO, + TEST_GEOCODE, types, TEST_DATE, TEST_DURATION), + true); + } +} |