summaryrefslogtreecommitdiff
path: root/tests/src/com/android
diff options
context:
space:
mode:
authorEric Erfanian <erfanian@google.com>2017-02-22 16:32:36 -0800
committerEric Erfanian <erfanian@google.com>2017-03-01 09:56:52 -0800
commitccca31529c07970e89419fb85a9e8153a5396838 (patch)
treea7034c0a01672b97728c13282a2672771cd28baa /tests/src/com/android
parente7ae4624ba6f25cb8e648db74e0d64c0113a16ba (diff)
Update dialer sources.
Test: Built package and system image. This change clobbers the old source, and is an export from an internal Google repository. The internal repository was forked form Android in March, and this change includes modifications since then, to near the v8 release. Since the fork, we've moved code from monolithic to independent modules. In addition, we've switched to Blaze/Bazel as the build sysetm. This export, however, still uses make. New dependencies have been added: - Dagger - Auto-Value - Glide - Libshortcutbadger Going forward, development will still be in Google3, and the Gerrit release will become an automated export, with the next drop happening in ~ two weeks. Android.mk includes local modifications from ToT. Abridged changelog: Bug fixes ● Not able to mute, add a call when using Phone app in multiwindow mode ● Double tap on keypad triggering multiple key and tones ● Reported spam numbers not showing as spam in the call log ● Crash when user tries to block number while Phone app is not set as default ● Crash when user picks a number from search auto-complete list Visual Voicemail (VVM) improvements ● Share Voicemail audio via standard exporting mechanisms that support file attachment (email, MMS, etc.) ● Make phone number, email and web sites in VVM transcript clickable ● Set PIN before declining VVM Terms of Service {Carrier} ● Set client type for outbound visual voicemail SMS {Carrier} New incoming call and incall UI on older devices (Android M) ● Updated Phone app icon ● New incall UI (large buttons, button labels) ● New and animated Answer/Reject gestures Accessibility ● Add custom answer/decline call buttons on answer screen for touch exploration accessibility services ● Increase size of touch target ● Add verbal feedback when a Voicemail fails to load ● Fix pressing of Phone buttons while in a phone call using Switch Access ● Fix selecting and opening contacts in talkback mode ● Split focus for ‘Learn More’ link in caller id & spam to help distinguish similar text Other ● Backup & Restore for App Preferences ● Prompt user to enable Wi-Fi calling if the call ends due to out of service and Wi-Fi is connected ● Rename “Dialpad” to “Keypad” ● Show "Private number" for restricted calls ● Delete unused items (vcard, add contact, call history) from Phone menu Change-Id: I2a7e53532a24c21bf308bf0a6d178d7ddbca4958
Diffstat (limited to 'tests/src/com/android')
-rw-r--r--tests/src/com/android/dialer/CallDetailActivityTest.java183
-rw-r--r--tests/src/com/android/dialer/DialerLaunchPerformance.java50
-rw-r--r--tests/src/com/android/dialer/calllog/BlockReportSpamListenerTest.java72
-rw-r--r--tests/src/com/android/dialer/calllog/CallLogAdapterTest.java918
-rw-r--r--tests/src/com/android/dialer/calllog/CallLogGroupBuilderTest.java470
-rw-r--r--tests/src/com/android/dialer/calllog/CallLogListItemHelperTest.java304
-rw-r--r--tests/src/com/android/dialer/calllog/CallLogNotificationsHelperTest.java137
-rw-r--r--tests/src/com/android/dialer/calllog/CallLogQueryTestUtils.java46
-rw-r--r--tests/src/com/android/dialer/calllog/ContactInfoHelperTest.java160
-rw-r--r--tests/src/com/android/dialer/calllog/GroupingListAdapterTests.java173
-rw-r--r--tests/src/com/android/dialer/calllog/PhoneAccountUtilsTest.java104
-rw-r--r--tests/src/com/android/dialer/calllog/PhoneCallDetailsHelperTest.java581
-rw-r--r--tests/src/com/android/dialer/calllog/PhoneCallDetailsTest.java63
-rw-r--r--tests/src/com/android/dialer/calllog/calllogcache/TestTelecomCallLogCache.java65
-rw-r--r--tests/src/com/android/dialer/compat/FilteredNumberCompatInstrumentationTest.java92
-rw-r--r--tests/src/com/android/dialer/compat/FilteredNumberCompatTest.java292
-rw-r--r--tests/src/com/android/dialer/compat/UserManagerCompatTest.java44
-rw-r--r--tests/src/com/android/dialer/contactinfo/ContactPhotoLoaderTest.java106
-rw-r--r--tests/src/com/android/dialer/database/DatabaseTestUtils.java82
-rw-r--r--tests/src/com/android/dialer/database/DialerDatabaseHelperTest.java154
-rw-r--r--tests/src/com/android/dialer/database/FilteredNumberAsyncQueryHandlerTest.java457
-rw-r--r--tests/src/com/android/dialer/database/FilteredNumberProviderTest.java232
-rw-r--r--tests/src/com/android/dialer/database/SmartDialPrefixTest.java523
-rw-r--r--tests/src/com/android/dialer/database/VoicemailArchiveProviderTest.java306
-rw-r--r--tests/src/com/android/dialer/dialpad/DialpadFragmentInstrumentationTest.java121
-rw-r--r--tests/src/com/android/dialer/dialpad/DialpadFragmentTest.java111
-rw-r--r--tests/src/com/android/dialer/dialpad/SmartDialNameMatcherTest.java275
-rw-r--r--tests/src/com/android/dialer/dialpad/UnicodeDialerKeyListenerTest.java74
-rw-r--r--tests/src/com/android/dialer/filterednumber/BlockedNumbersAutoMigratorTest.java201
-rw-r--r--tests/src/com/android/dialer/filterednumber/BlockedNumbersFragmentInstrumentationTest.java93
-rw-r--r--tests/src/com/android/dialer/filterednumber/BlockedNumbersMigratorTest.java160
-rw-r--r--tests/src/com/android/dialer/filterednumber/FilteredNumbersUtilTest.java132
-rw-r--r--tests/src/com/android/dialer/filterednumber/MigrateBlockedNumbersDialogFragmentInstrumentationTest.java93
-rw-r--r--tests/src/com/android/dialer/filterednumber/MigrateBlockedNumbersDialogFragmentTest.java61
-rw-r--r--tests/src/com/android/dialer/interactions/PhoneNumberInteractionTest.java262
-rw-r--r--tests/src/com/android/dialer/list/PhoneFavoritesTileAdapterTest.java301
-rw-r--r--tests/src/com/android/dialer/tests/calllog/FillCallLogTestActivity.java658
-rw-r--r--tests/src/com/android/dialer/util/DialerUtilsTest.java78
-rw-r--r--tests/src/com/android/dialer/util/ExpirableCacheTest.java125
-rw-r--r--tests/src/com/android/dialer/util/FakeAsyncTaskExecutor.java231
-rw-r--r--tests/src/com/android/dialer/util/LocaleTestUtils.java119
-rw-r--r--tests/src/com/android/dialer/util/TestConstants.java5
-rw-r--r--tests/src/com/android/dialer/voicemail/VoicemailActivityInstrumentationTestCase2.java227
-rw-r--r--tests/src/com/android/dialer/voicemail/VoicemailArchiveTest.java116
-rw-r--r--tests/src/com/android/dialer/voicemail/VoicemailAsyncTaskUtilTest.java388
-rw-r--r--tests/src/com/android/dialer/voicemail/VoicemailPlaybackTest.java145
-rw-r--r--tests/src/com/android/dialer/voicemail/VoicemailStatusHelperImplTest.java274
-rw-r--r--tests/src/com/android/dialer/widget/ActionBarControllerTest.java181
48 files changed, 0 insertions, 10045 deletions
diff --git a/tests/src/com/android/dialer/CallDetailActivityTest.java b/tests/src/com/android/dialer/CallDetailActivityTest.java
deleted file mode 100644
index fec25f655..000000000
--- a/tests/src/com/android/dialer/CallDetailActivityTest.java
+++ /dev/null
@@ -1,183 +0,0 @@
-/*
- * 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;
-
-import static com.android.dialer.calllog.CallLogAsyncTaskUtil.Tasks;
-
-import android.content.ContentResolver;
-import android.content.ContentUris;
-import android.content.ContentValues;
-import android.content.Intent;
-import android.net.Uri;
-import android.provider.CallLog;
-import android.provider.VoicemailContract;
-import android.test.ActivityInstrumentationTestCase2;
-import android.test.suitebuilder.annotation.LargeTest;
-import android.test.suitebuilder.annotation.Suppress;
-import android.view.Menu;
-import android.widget.PopupMenu;
-import android.widget.TextView;
-
-import com.android.dialer.calllog.CallLogAsyncTaskUtil;
-import com.android.dialer.util.AppCompatConstants;
-import com.android.dialer.util.AsyncTaskExecutors;
-import com.android.dialer.util.FakeAsyncTaskExecutor;
-
-/**
- * Unit tests for the {@link CallDetailActivity}. NOTE: The screen needs to be on for the
- * UI-related tests to pass.
- */
-@LargeTest
-public class CallDetailActivityTest extends ActivityInstrumentationTestCase2<CallDetailActivity> {
- private static final String CONTACT_NUMBER = "+1412555555";
- private static final String VOICEMAIL_FILE_LOCATION = "/sdcard/sadlfj893w4j23o9sfu.mp3";
-
- private Uri mCallLogUri;
- private Uri mVoicemailUri;
- private FakeAsyncTaskExecutor mFakeAsyncTaskExecutor;
- private CallDetailActivity mActivityUnderTest;
-
- public CallDetailActivityTest() {
- super(CallDetailActivity.class);
- }
-
- @Override
- protected void setUp() throws Exception {
- super.setUp();
-
- mFakeAsyncTaskExecutor = new FakeAsyncTaskExecutor(getInstrumentation());
- AsyncTaskExecutors.setFactoryForTest(mFakeAsyncTaskExecutor.getFactory());
-
- // I don't like the default of focus-mode for tests, the green focus border makes the
- // screenshots look weak.
- setActivityInitialTouchMode(true);
- }
-
- @Override
- protected void tearDown() throws Exception {
- cleanUpUri();
-
- AsyncTaskExecutors.setFactoryForTest(null);
- CallLogAsyncTaskUtil.resetForTest();
-
- super.tearDown();
- }
-
- /** Test for bug where missing Extras on intent used to start Activity causes NPE. */
- public void testCallLogUriWithMissingExtrasShouldNotCauseNPE() throws Throwable {
- setActivityIntentForTestCallEntry();
- startActivityUnderTest();
- }
-
- /**
- * Verifies the trash menu item is present and a voicemail URI is set.
- */
- @Suppress
- public void testVoicemailDeleteButton() throws Throwable {
- setActivityIntentForTestVoicemailEntry();
- startActivityUnderTest();
- mFakeAsyncTaskExecutor.runTask(Tasks.GET_CALL_DETAILS);
-
- Menu optionsMenu = (new PopupMenu(mActivityUnderTest, null)).getMenu();
- mActivityUnderTest.onCreateOptionsMenu(optionsMenu);
- mActivityUnderTest.onPrepareOptionsMenu(optionsMenu);
-
- assertTrue(mActivityUnderTest.hasVoicemail());
- mActivityUnderTest.runOnUiThread(new Runnable() {
- public void run() {
- mActivityUnderTest.findViewById(R.id.call_detail_delete_menu_item).performClick();
- }
- });
- getInstrumentation().waitForIdleSync();
- mFakeAsyncTaskExecutor.runTask(Tasks.DELETE_VOICEMAIL);
- }
-
- /**
- * Verifies the trash menu item is present and a voicemail URI is not set.
- */
- @Suppress
- public void testRegularCallDoesHaveRemoveFromCallLog() throws Throwable {
- setActivityIntentForTestCallEntry();
- startActivityUnderTest();
- mFakeAsyncTaskExecutor.runTask(Tasks.GET_CALL_DETAILS);
-
- Menu optionsMenu = (new PopupMenu(mActivityUnderTest, null)).getMenu();
- mActivityUnderTest.onCreateOptionsMenu(optionsMenu);
- mActivityUnderTest.onPrepareOptionsMenu(optionsMenu);
-
- assertFalse(mActivityUnderTest.hasVoicemail());
- mActivityUnderTest.runOnUiThread(new Runnable() {
- public void run() {
- mActivityUnderTest.findViewById(R.id.call_detail_delete_menu_item).performClick();
- }
- });
- getInstrumentation().waitForIdleSync();
- mFakeAsyncTaskExecutor.runTask(Tasks.DELETE_CALL);
- }
-
- private void setActivityIntentForTestCallEntry() {
- assertNull(mVoicemailUri);
- assertNull(mCallLogUri);
- ContentResolver contentResolver = getContentResolver();
- ContentValues values = new ContentValues();
- values.put(CallLog.Calls.NUMBER, CONTACT_NUMBER);
- values.put(CallLog.Calls.NUMBER_PRESENTATION, CallLog.Calls.PRESENTATION_ALLOWED);
- values.put(CallLog.Calls.TYPE, AppCompatConstants.CALLS_INCOMING_TYPE);
- mCallLogUri = contentResolver.insert(CallLog.Calls.CONTENT_URI, values);
- setActivityIntent(new Intent(Intent.ACTION_VIEW, mCallLogUri));
- }
-
- private void setActivityIntentForTestVoicemailEntry() {
- assertNull(mVoicemailUri);
- ContentResolver contentResolver = getContentResolver();
- ContentValues values = new ContentValues();
- values.put(VoicemailContract.Voicemails.NUMBER, CONTACT_NUMBER);
- values.put(VoicemailContract.Voicemails.HAS_CONTENT, 1);
- // VoicemailContract.Voicemails._DATA
- values.put("_data", VOICEMAIL_FILE_LOCATION);
- mVoicemailUri = contentResolver.insert(VoicemailContract.Voicemails.CONTENT_URI, values);
-
- Uri callLogUri = ContentUris.withAppendedId(CallLog.Calls.CONTENT_URI_WITH_VOICEMAIL,
- ContentUris.parseId(mVoicemailUri));
- Intent intent = new Intent(Intent.ACTION_VIEW, callLogUri);
- intent.putExtra(CallDetailActivity.EXTRA_VOICEMAIL_URI, mVoicemailUri);
- setActivityIntent(intent);
- }
-
- private void cleanUpUri() {
- if (mVoicemailUri != null) {
- getContentResolver().delete(VoicemailContract.Voicemails.CONTENT_URI,
- "_ID = ?", new String[] { String.valueOf(ContentUris.parseId(mVoicemailUri)) });
- mVoicemailUri = null;
- }
- if (mCallLogUri != null) {
- getContentResolver().delete(CallLog.Calls.CONTENT_URI_WITH_VOICEMAIL,
- "_ID = ?", new String[] { String.valueOf(ContentUris.parseId(mCallLogUri)) });
- mCallLogUri = null;
- }
- }
-
- private ContentResolver getContentResolver() {
- return getInstrumentation().getTargetContext().getContentResolver();
- }
-
- private void startActivityUnderTest() throws Throwable {
- assertNull(mActivityUnderTest);
- mActivityUnderTest = getActivity();
- assertNotNull("activity should not be null", mActivityUnderTest);
- }
-}
diff --git a/tests/src/com/android/dialer/DialerLaunchPerformance.java b/tests/src/com/android/dialer/DialerLaunchPerformance.java
deleted file mode 100644
index c409cc60b..000000000
--- a/tests/src/com/android/dialer/DialerLaunchPerformance.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- * Copyright (C) 2007 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;
-
-import android.app.Activity;
-import android.content.ComponentName;
-import android.content.Intent;
-import android.os.Bundle;
-
-import com.android.contacts.common.test.LaunchPerformanceBase;
-
-/**
- * Instrumentation class for Address Book launch performance testing.
- */
-public class DialerLaunchPerformance extends LaunchPerformanceBase {
-
- @Override
- public void onCreate(Bundle arguments) {
- mIntent.setAction(Intent.ACTION_MAIN);
- mIntent.addCategory(Intent.CATEGORY_LAUNCHER);
- mIntent.setComponent(new ComponentName("com.android.contacts",
- "testcom.android.dialer.DialtactsActivity"));
-
- start();
- }
-
- /**
- * Calls LaunchApp and finish.
- */
- @Override
- public void onStart() {
- super.onStart();
- LaunchApp();
- finish(Activity.RESULT_OK, mResults);
- }
-}
diff --git a/tests/src/com/android/dialer/calllog/BlockReportSpamListenerTest.java b/tests/src/com/android/dialer/calllog/BlockReportSpamListenerTest.java
deleted file mode 100644
index c63027d6b..000000000
--- a/tests/src/com/android/dialer/calllog/BlockReportSpamListenerTest.java
+++ /dev/null
@@ -1,72 +0,0 @@
-package com.android.dialer.calllog;
-
-import android.app.Activity;
-import android.support.v7.widget.RecyclerView;
-import android.test.ActivityInstrumentationTestCase2;
-
-import com.android.dialer.DialtactsActivity;
-import com.android.dialer.database.FilteredNumberAsyncQueryHandler;
-import com.android.dialer.service.ExtendedCallInfoService;
-
-import org.mockito.Mock;
-import org.mockito.MockitoAnnotations;
-
-/**
- * Unit tests for {@link BlockReportSpamListener}.
- */
-public class BlockReportSpamListenerTest extends ActivityInstrumentationTestCase2<DialtactsActivity> {
-
- private static final String TEST_DISPLAY_NUMBER = "(123)456-7890";
- private static final String TEST_NUMBER = "1234567890";
- private static final String TEST_COUNTRY_ISO = "us";
- private static final int TEST_CALL_TYPE = 0;
- private static final int TEST_CALL_BLOCK_ID = 1;
-
- private BlockReportSpamListener blockReportSpamListener;
-
- @Mock private RecyclerView.Adapter adapter;
- @Mock private ExtendedCallInfoService extendedCallInfoService;
- @Mock private FilteredNumberAsyncQueryHandler filteredNumberAsyncQueryHandler;
-
- public BlockReportSpamListenerTest() {
- super(DialtactsActivity.class);
- }
-
- @Override
- protected void setUp() throws Exception {
- super.setUp();
-
- MockitoAnnotations.initMocks(this);
-
- blockReportSpamListener = new BlockReportSpamListener(
- ((Activity) getActivity()).getFragmentManager(), adapter,
- extendedCallInfoService, filteredNumberAsyncQueryHandler);
- }
-
- public void testOnBlockReportSpam() {
- blockReportSpamListener.onBlockReportSpam(
- TEST_DISPLAY_NUMBER, TEST_NUMBER, TEST_COUNTRY_ISO, TEST_CALL_TYPE);
- }
-
- public void testOnBlock() {
- blockReportSpamListener.onBlock(
- TEST_DISPLAY_NUMBER, TEST_NUMBER, TEST_COUNTRY_ISO, TEST_CALL_TYPE);
- }
-
- public void testOnUnlock_isSpam() {
- blockReportSpamListener.onUnblock(
- TEST_DISPLAY_NUMBER, TEST_NUMBER, TEST_COUNTRY_ISO, TEST_CALL_BLOCK_ID,
- true, TEST_CALL_TYPE);
- }
-
- public void testOnUnlock_isNotSpam() {
- blockReportSpamListener.onUnblock(
- TEST_DISPLAY_NUMBER, TEST_NUMBER, TEST_COUNTRY_ISO, TEST_CALL_BLOCK_ID,
- false, TEST_CALL_TYPE);
- }
-
- public void testOnReportNotSpam() {
- blockReportSpamListener.onReportNotSpam(
- TEST_DISPLAY_NUMBER, TEST_NUMBER, TEST_COUNTRY_ISO, TEST_CALL_TYPE);
- }
-}
diff --git a/tests/src/com/android/dialer/calllog/CallLogAdapterTest.java b/tests/src/com/android/dialer/calllog/CallLogAdapterTest.java
deleted file mode 100644
index 3b1dd2c7d..000000000
--- a/tests/src/com/android/dialer/calllog/CallLogAdapterTest.java
+++ /dev/null
@@ -1,918 +0,0 @@
-/*
- * 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 com.google.common.collect.Lists;
-
-import android.content.ContentUris;
-import android.content.Context;
-import android.content.Intent;
-import android.content.res.Resources;
-import android.database.MatrixCursor;
-import android.net.Uri;
-import android.provider.CallLog.Calls;
-import android.provider.ContactsContract.CommonDataKinds.Phone;
-import android.provider.VoicemailContract;
-import android.telephony.PhoneNumberUtils;
-import android.test.AndroidTestCase;
-import android.test.suitebuilder.annotation.MediumTest;
-import android.text.TextUtils;
-import android.view.View;
-
-import com.android.contacts.common.compat.CompatUtils;
-import com.android.contacts.common.preference.ContactsPreferences;
-import com.android.dialer.contactinfo.ContactInfoCache;
-import com.android.dialer.database.VoicemailArchiveContract;
-import com.android.dialer.util.AppCompatConstants;
-import com.android.dialer.util.TestConstants;
-import com.android.dialer.R;
-
-import java.util.Date;
-import java.util.List;
-import java.util.Random;
-
-/**
- * Unit tests for {@link CallLogAdapter}.
- *
- * adb shell am instrument \
- * -e com.android.dialer.calllog.CallLogAdapterTest \
- * -w com.android.dialer.tests/android.test.InstrumentationTestRunner
- */
-public class CallLogAdapterTest extends AndroidTestCase {
- private static final String EMPTY_STRING = "";
- private static final int NO_VALUE_SET = -1;
- private static final int ARCHIVE_TYPE = -2;
-
- private static final String TEST_CACHED_NAME_PRIMARY = "Cached Name";
- private static final String TEST_CACHED_NAME_ALTERNATIVE = "Name Cached";
- private static final String CONTACT_NAME_PRIMARY = "Contact Name";
- private static final String CONTACT_NAME_ALTERNATIVE = "Name, Contact";
- private static final String TEST_CACHED_NUMBER_LABEL = "label";
- private static final int TEST_CACHED_NUMBER_TYPE = 1;
- private static final String TEST_COUNTRY_ISO = "US";
- private static final String TEST_DEFAULT_CUSTOM_LABEL = "myLabel";
- private static final Uri TEST_LOOKUP_URI = Uri.parse("content://contacts/2");
- private static final String TEST_ACCOUNT_ID_LABEL = "label";
-
- private static final String TEST_NUMBER = "12125551000";
- private static final String TEST_NUMBER_1 = "12345678";
- private static final String TEST_NUMBER_2 = "87654321";
- private static final String TEST_NUMBER_3 = "18273645";
- private static final String TEST_POST_DIAL_DIGITS = ";12345";
- private static final String TEST_VIA_NUMBER = "+16505551234";
- private static final String TEST_FORMATTED_NUMBER = "1 212-555-1000";
-
- // The object under test.
- private TestCallLogAdapter mAdapter;
-
- private MatrixCursor mCursor;
- private Resources mResources;
-
- private CallLogListItemViewHolder mViewHolder;
- private final Random mRandom = new Random();
-
- @Override
- protected void setUp() throws Exception {
- super.setUp();
- mContext = getContext();
- mResources = mContext.getResources();
-
- // Use a call fetcher that does not do anything.
- CallLogAdapter.CallFetcher fakeCallFetcher = new CallLogAdapter.CallFetcher() {
- @Override
- public void fetchCalls() {}
- };
-
- ContactInfoHelper fakeContactInfoHelper =
- new ContactInfoHelper(getContext(), TEST_COUNTRY_ISO) {
- @Override
- public ContactInfo lookupNumber(String number, String countryIso) {
- ContactInfo info = new ContactInfo();
- info.number = number;
- info.formattedNumber = number;
- return info;
- }
- };
-
- mAdapter = new TestCallLogAdapter(getContext(), fakeCallFetcher, fakeContactInfoHelper,
- CallLogAdapter.ACTIVITY_TYPE_DIALTACTS);
-
- // The cursor used in the tests to store the entries to display.
- mCursor = new MatrixCursor(CallLogQuery._PROJECTION);
- mCursor.moveToFirst();
-
- // The views into which to store the data.
- mViewHolder = CallLogListItemViewHolder.createForTest(getContext());
- }
-
- @MediumTest
- public void testBindView_NumberOnlyNoCache() {
- createCallLogEntry();
-
- mAdapter.changeCursor(mCursor);
- mAdapter.onBindViewHolder(mViewHolder, 0);
-
- assertNameIs(mViewHolder, TEST_NUMBER);
- }
-
- @MediumTest
- public void testBindView_PrivateCall() {
- createPrivateCallLogEntry();
-
- mAdapter.changeCursor(mCursor);
- mAdapter.onBindViewHolder(mViewHolder, 0);
-
- assertEquals(Calls.PRESENTATION_RESTRICTED, mViewHolder.numberPresentation);
- assertNull(mViewHolder.primaryActionButtonView.getTag());
- // QC should be disabled since there are no actions to be performed on this
- // call.
- assertFalse(mViewHolder.quickContactView.isEnabled());
- }
-
- @MediumTest
- public void testBindView_UnknownCall() {
- createUnknownCallLogEntry();
-
- mAdapter.changeCursor(mCursor);
- mAdapter.onBindViewHolder(mViewHolder, 0);
-
- assertEquals(Calls.PRESENTATION_UNKNOWN, mViewHolder.numberPresentation);
- assertNull(mViewHolder.primaryActionButtonView.getTag());
- // QC should be disabled since there are no actions to be performed on this
- // call.
- assertFalse(mViewHolder.quickContactView.isEnabled());
- }
-
- @MediumTest
- public void testBindView_WithoutQuickContactBadge() {
- createCallLogEntry();
-
- mAdapter.changeCursor(mCursor);
- mAdapter.onBindViewHolder(mViewHolder, 0);
-
- //assertFalse(mViewHolder.quickContactView.isEnabled());
- }
-
- @MediumTest
- public void testBindView_CallButton() {
- createCallLogEntry();
-
- mAdapter.changeCursor(mCursor);
- mAdapter.onBindViewHolder(mViewHolder, 0);
-
- // The primaryActionView tag is set when the ViewHolder is binded. If it is possible
- // to place a call to the phone number, a call intent will have been created which
- // starts a phone call to the entry's number.
- assertHasCallAction(mViewHolder);
- }
-
- @MediumTest
- public void testBindView_FirstNameFirstOrder() {
- createCallLogEntry();
-
- mAdapter.getContactInfoCache()
- .mockGetValue(createContactInfo(CONTACT_NAME_PRIMARY, CONTACT_NAME_ALTERNATIVE));
-
- setNameDisplayOrder(getContext(), ContactsPreferences.DISPLAY_ORDER_PRIMARY);
-
- mAdapter.changeCursor(mCursor);
- mAdapter.onBindViewHolder(mViewHolder, 0);
- assertEquals(CONTACT_NAME_PRIMARY, mViewHolder.phoneCallDetailsViews.nameView.getText());
- }
-
- @MediumTest
- public void testBindView_LastNameFirstOrder() {
- createCallLogEntry();
-
- mAdapter.getContactInfoCache()
- .mockGetValue(createContactInfo(CONTACT_NAME_PRIMARY, CONTACT_NAME_ALTERNATIVE));
-
- setNameDisplayOrder(getContext(), ContactsPreferences.DISPLAY_ORDER_ALTERNATIVE);
-
- mAdapter.changeCursor(mCursor);
- mAdapter.onBindViewHolder(mViewHolder, 0);
- assertEquals(CONTACT_NAME_ALTERNATIVE,
- mViewHolder.phoneCallDetailsViews.nameView.getText());
- }
-
- @MediumTest
- public void testBindView_NameOrderCorrectOnChange() {
- createCallLogEntry();
-
- mAdapter.getContactInfoCache()
- .mockGetValue(createContactInfo(CONTACT_NAME_PRIMARY, CONTACT_NAME_ALTERNATIVE));
-
- Context context = getContext();
- setNameDisplayOrder(context, ContactsPreferences.DISPLAY_ORDER_PRIMARY);
-
- mAdapter.changeCursor(mCursor);
- mAdapter.onBindViewHolder(mViewHolder, 0);
- assertEquals(CONTACT_NAME_PRIMARY,
- mViewHolder.phoneCallDetailsViews.nameView.getText());
-
- setNameDisplayOrder(context, ContactsPreferences.DISPLAY_ORDER_ALTERNATIVE);
- mAdapter.onResume();
-
- mAdapter.onBindViewHolder(mViewHolder, 0);
- assertEquals(CONTACT_NAME_ALTERNATIVE,
- mViewHolder.phoneCallDetailsViews.nameView.getText());
- }
-
- private void setNameDisplayOrder(Context context, int displayOrder) {
- context.getSharedPreferences(context.getPackageName(), Context.MODE_PRIVATE).edit().putInt(
- ContactsPreferences.DISPLAY_ORDER_KEY, displayOrder).commit();
- }
-
- @MediumTest
- public void testBindView_CallButtonWithPostDialDigits() {
- createCallLogEntry(TEST_NUMBER, TEST_POST_DIAL_DIGITS, NO_VALUE_SET, NO_VALUE_SET);
-
- mAdapter.changeCursor(mCursor);
- mAdapter.onBindViewHolder(mViewHolder, 0);
-
- if (CompatUtils.isNCompatible()) {
- assertHasCallActionToGivenNumber(mViewHolder, TEST_NUMBER + TEST_POST_DIAL_DIGITS);
- }
- }
-
- @MediumTest
- public void testBindView_VoicemailUri() {
- createVoicemailCallLogEntry();
-
- mAdapter.changeCursor(mCursor);
- mAdapter.onBindViewHolder(mViewHolder, 0);
-
- assertEquals(Uri.parse(mViewHolder.voicemailUri),
- ContentUris.withAppendedId(VoicemailContract.Voicemails.CONTENT_URI, 0));
- assertNull(mViewHolder.primaryActionButtonView.getTag());
- }
-
- @MediumTest
- public void testBindView_NumberWithPostDialDigits() {
- createCallLogEntry(TEST_NUMBER, TEST_POST_DIAL_DIGITS, NO_VALUE_SET, NO_VALUE_SET);
-
- mAdapter.changeCursor(mCursor);
- mAdapter.onBindViewHolder(mViewHolder, 0);
-
- if (CompatUtils.isNCompatible()) {
- assertNameIs(mViewHolder, TEST_NUMBER + TEST_POST_DIAL_DIGITS);
- }
- }
-
- @MediumTest
- public void testBindView_ContactWithPostDialDigits() {
- createCallLogEntry(TEST_NUMBER, TEST_POST_DIAL_DIGITS, NO_VALUE_SET, NO_VALUE_SET);
- mAdapter.injectContactInfoForTest(TEST_NUMBER + TEST_POST_DIAL_DIGITS, TEST_COUNTRY_ISO,
- createContactInfo());
-
- mAdapter.changeCursor(mCursor);
- mAdapter.onBindViewHolder(mViewHolder, 0);
-
- if (CompatUtils.isNCompatible()) {
- assertNameIs(mViewHolder, TEST_CACHED_NAME_PRIMARY);
- }
- }
-
- @MediumTest
- public void testBindView_CallLogWithViaNumber() {
- createCallLogEntry(TEST_NUMBER, EMPTY_STRING, TEST_VIA_NUMBER, NO_VALUE_SET, NO_VALUE_SET);
-
- mAdapter.changeCursor(mCursor);
- mAdapter.onBindViewHolder(mViewHolder, 0);
-
- // Copy format of Resource String
- String formattedNumber = mResources.getString(R.string.description_via_number,
- TEST_VIA_NUMBER);
-
- if (CompatUtils.isNCompatible()) {
- assertEquals(formattedNumber,
- mViewHolder.phoneCallDetailsViews.callAccountLabel.getText());
- }
- }
-
- @MediumTest
- public void testBindView_CallLogWithoutViaNumber() {
- createCallLogEntry(TEST_NUMBER, EMPTY_STRING, EMPTY_STRING, NO_VALUE_SET, NO_VALUE_SET);
-
- mAdapter.changeCursor(mCursor);
- mAdapter.onBindViewHolder(mViewHolder, 0);
-
- if (CompatUtils.isNCompatible()) {
- assertEquals(View.GONE,
- mViewHolder.phoneCallDetailsViews.callAccountLabel.getVisibility());
- }
- }
-
- @MediumTest
- public void testPresentationAfterRebindingViewHolders() {
- final int increment = 10;
- final int size = increment * 4;
-
- // Instantiate list of ViewHolders.
- CallLogListItemViewHolder[] holders = new CallLogListItemViewHolder[size];
- for (int i = 0; i < size; i++) {
- holders[i] = CallLogListItemViewHolder.createForTest(getContext());
- }
-
- // Add first set of entries to the cursor.
- for (int i = 0; i < increment; i++) {
- createCallLogEntry();
- createPrivateCallLogEntry();
- createCallLogEntry();
- createUnknownCallLogEntry();
- }
-
- mAdapter.changeCursor(mCursor);
-
- // Verify correct appearance for presentation.
- for (int i = 0; i < size; i++) {
- mAdapter.onBindViewHolder(holders[i], i);
- if (holders[i].numberPresentation == Calls.PRESENTATION_ALLOWED) {
- assertHasCallAction(holders[i]);
- } else {
- assertNull(holders[i].primaryActionButtonView.getTag());
- assertEquals(holders[i].number, EMPTY_STRING);
- }
- }
-
- // Append the rest of the entries to the cursor. Keep the first set of ViewHolders
- // so they are updated and not buitl from scratch. This checks for bugs which may
- // be evident only after the call log is updated.
- for (int i = 0; i < increment; i++) {
- createPrivateCallLogEntry();
- createCallLogEntry();
- createUnknownCallLogEntry();
- createCallLogEntry();
- }
-
- mCursor.move(size);
-
- // Verify correct appearnce for presentation.
- for (int i = 0; i < size; i++) {
- mAdapter.onBindViewHolder(holders[i], i + size);
- if (holders[i].numberPresentation == Calls.PRESENTATION_ALLOWED) {
- assertHasCallAction(holders[i]);
- } else {
- assertNull(holders[i].primaryActionButtonView.getTag());
- assertEquals(holders[i].number, EMPTY_STRING);
- }
- }
- }
-
- @MediumTest
- public void testBindView_NoCallLogCacheNorMemoryCache_EnqueueRequest() {
- createCallLogEntry();
-
- // Bind the views of a single row.
- mAdapter.changeCursor(mCursor);
- mAdapter.onBindViewHolder(mViewHolder, 0);
-
- // There is one request for contact details.
- assertEquals(1, mAdapter.getContactInfoCache().requests.size());
-
- TestContactInfoCache.Request request = mAdapter.getContactInfoCache().requests.get(0);
- // It is for the number we need to show.
- assertEquals(TEST_NUMBER, request.number);
- // It has the right country.
- assertEquals(TEST_COUNTRY_ISO, request.countryIso);
- // Since there is nothing in the cache, it is an immediate request.
- assertTrue("should be immediate", request.immediate);
- }
-
- @MediumTest
- public void testBindView_CallLogCacheButNoMemoryCache_EnqueueRequest() {
- createCallLogEntryWithCachedValues(false);
-
- // Bind the views of a single row.
- mAdapter.changeCursor(mCursor);
- mAdapter.onBindViewHolder(mViewHolder, 0);
-
- // There is one request for contact details.
- assertEquals(1, mAdapter.getContactInfoCache().requests.size());
-
- TestContactInfoCache.Request request = mAdapter.getContactInfoCache().requests.get(0);
-
- // The values passed to the request, match the ones in the call log cache.
- assertEquals(TEST_CACHED_NAME_PRIMARY, request.callLogInfo.name);
- assertEquals(TEST_CACHED_NUMBER_TYPE, request.callLogInfo.type);
- assertEquals(TEST_CACHED_NUMBER_LABEL, request.callLogInfo.label);
- }
-
- @MediumTest
- public void testBindView_NoCallLogButMemoryCache_EnqueueRequest() {
- createCallLogEntry();
- mAdapter.injectContactInfoForTest(TEST_NUMBER, TEST_COUNTRY_ISO, createContactInfo());
-
- // Bind the views of a single row.
- mAdapter.changeCursor(mCursor);
- mAdapter.onBindViewHolder(mViewHolder, 0);
-
- // There is one request for contact details.
- assertEquals(1, mAdapter.getContactInfoCache().requests.size());
-
- TestContactInfoCache.Request request = mAdapter.getContactInfoCache().requests.get(0);
- // Since there is something in the cache, it is not an immediate request.
- assertFalse("should not be immediate", request.immediate);
- }
-
- @MediumTest
- public void testBindView_BothCallLogAndMemoryCache_NoEnqueueRequest() {
- createCallLogEntryWithCachedValues(true);
-
- // Bind the views of a single row.
- mAdapter.changeCursor(mCursor);
- mAdapter.onBindViewHolder(mViewHolder, 0);
-
- // Cache and call log are up-to-date: no need to request update.
- assertEquals(0, mAdapter.getContactInfoCache().requests.size());
- }
-
- @MediumTest
- public void testBindView_MismatchBetweenCallLogAndMemoryCache_EnqueueRequest() {
- createCallLogEntryWithCachedValues(false);
-
- // Contact info contains a different name.
- ContactInfo info = createContactInfo();
- info.name = "new name";
- mAdapter.injectContactInfoForTest(TEST_NUMBER, TEST_COUNTRY_ISO, info);
-
- // Bind the views of a single row.
- mAdapter.changeCursor(mCursor);
- mAdapter.onBindViewHolder(mViewHolder, 0);
-
- // There is one request for contact details.
- assertEquals(1, mAdapter.getContactInfoCache().requests.size());
-
- TestContactInfoCache.Request request = mAdapter.getContactInfoCache().requests.get(0);
- // Since there is something in the cache, it is not an immediate request.
- assertFalse("should not be immediate", request.immediate);
- }
-
- @MediumTest
- public void testBindView_WithCachedName() {
- createCallLogEntryWithCachedValues(
- "John Doe",
- Phone.TYPE_HOME,
- TEST_CACHED_NUMBER_LABEL);
-
- mAdapter.changeCursor(mCursor);
- mAdapter.onBindViewHolder(mViewHolder, 0);
-
- assertNameIs(mViewHolder, "John Doe");
- assertLabel(mViewHolder, TEST_FORMATTED_NUMBER, getTypeLabel(Phone.TYPE_HOME));
- }
-
- @MediumTest
- public void testBindView_UriNumber() {
- createCallLogEntryWithCachedValues(
- "sip:johndoe@gmail.com",
- AppCompatConstants.CALLS_INCOMING_TYPE,
- "John Doe",
- Phone.TYPE_HOME,
- TEST_DEFAULT_CUSTOM_LABEL,
- EMPTY_STRING,
- false /* inject */);
-
- mAdapter.changeCursor(mCursor);
- mAdapter.onBindViewHolder(mViewHolder, 0);
-
- assertNameIs(mViewHolder, "John Doe");
- assertLabel(mViewHolder, "sip:johndoe@gmail.com", "sip:johndoe@gmail.com");
- }
-
- @MediumTest
- public void testBindView_HomeLabel() {
- createCallLogEntryWithCachedValues(
- "John Doe",
- Phone.TYPE_HOME,
- TEST_CACHED_NUMBER_LABEL);
-
- mAdapter.changeCursor(mCursor);
- mAdapter.onBindViewHolder(mViewHolder, 0);
-
- assertNameIs(mViewHolder, "John Doe");
- assertLabel(mViewHolder, TEST_FORMATTED_NUMBER, getTypeLabel(Phone.TYPE_HOME));
- }
-
- @MediumTest
- public void testBindView_WorkLabel() {
- createCallLogEntryWithCachedValues(
- "John Doe",
- Phone.TYPE_WORK,
- TEST_CACHED_NUMBER_LABEL);
-
- mAdapter.changeCursor(mCursor);
- mAdapter.onBindViewHolder(mViewHolder, 0);
-
- assertNameIs(mViewHolder, "John Doe");
- assertLabel(mViewHolder, TEST_FORMATTED_NUMBER, getTypeLabel(Phone.TYPE_WORK));
- }
-
- @MediumTest
- public void testBindView_CustomLabel() {
- createCallLogEntryWithCachedValues(
- "John Doe",
- Phone.TYPE_CUSTOM,
- TEST_DEFAULT_CUSTOM_LABEL);
-
- mAdapter.changeCursor(mCursor);
- mAdapter.onBindViewHolder(mViewHolder, 0);
-
- assertNameIs(mViewHolder, "John Doe");
- assertLabel(mViewHolder, TEST_FORMATTED_NUMBER, TEST_DEFAULT_CUSTOM_LABEL);
- }
-
- @MediumTest
- public void testBindView_NumberOnlyDbCachedFormattedNumber() {
- createCallLogEntryWithCachedValues(
- TEST_NUMBER,
- AppCompatConstants.CALLS_INCOMING_TYPE,
- EMPTY_STRING,
- TEST_CACHED_NUMBER_TYPE,
- TEST_CACHED_NUMBER_LABEL,
- TEST_FORMATTED_NUMBER,
- false /* inject */);
-
- mAdapter.changeCursor(mCursor);
- mAdapter.onBindViewHolder(mViewHolder, 0);
-
- assertNameIs(mViewHolder, TEST_FORMATTED_NUMBER);
- }
-
- @MediumTest
- public void testBindVoicemailPromoCard() {
- createCallLogEntry(TEST_NUMBER_1);
- createCallLogEntry(TEST_NUMBER_1);
- createCallLogEntry(TEST_NUMBER_2);
- createCallLogEntry(TEST_NUMBER_2);
- createCallLogEntry(TEST_NUMBER_2);
- createCallLogEntry(TEST_NUMBER_3);
-
- // Bind the voicemail promo card.
- mAdapter.showVoicemailPromoCard(true);
- mAdapter.changeCursor(mCursor);
- mAdapter.onBindViewHolder(PromoCardViewHolder.createForTest(getContext()), 0);
-
- // Check that displaying the promo card does not affect the grouping or list display.
- mAdapter.onBindViewHolder(mViewHolder, 1);
- assertEquals(2, mAdapter.getGroupSize(1));
- assertEquals(TEST_NUMBER_1, mViewHolder.number);
-
- mAdapter.onBindViewHolder(mViewHolder, 2);
- assertEquals(3, mAdapter.getGroupSize(2));
- assertEquals(TEST_NUMBER_2, mViewHolder.number);
-
- mAdapter.onBindViewHolder(mViewHolder, 3);
- assertEquals(1, mAdapter.getGroupSize(3));
- assertEquals(TEST_NUMBER_3, mViewHolder.number);
- }
-
- public void testVoicemailArchive() {
- setUpArchiveAdapter();
- createVoicemailArchiveCallLogEntry();
-
- mAdapter.changeCursorVoicemail(mCursor);
- mAdapter.onBindViewHolder(mViewHolder, 0);
-
- assertEquals(Uri.parse(mViewHolder.voicemailUri),
- ContentUris.withAppendedId(
- VoicemailArchiveContract.VoicemailArchive.CONTENT_URI, 0));
- assertNull(mViewHolder.primaryActionButtonView.getTag());
- }
-
- private void createCallLogEntry() {
- createCallLogEntry(TEST_NUMBER);
- }
-
- private void createCallLogEntry(String testNumber) {
- createCallLogEntry(testNumber, EMPTY_STRING, NO_VALUE_SET, NO_VALUE_SET);
- }
-
- private void createPrivateCallLogEntry() {
- createCallLogEntry(
- EMPTY_STRING,
- EMPTY_STRING,
- Calls.PRESENTATION_RESTRICTED,
- AppCompatConstants.CALLS_INCOMING_TYPE);
- }
-
- private void createUnknownCallLogEntry() {
- createCallLogEntry(
- EMPTY_STRING,
- EMPTY_STRING,
- Calls.PRESENTATION_UNKNOWN,
- AppCompatConstants.CALLS_INCOMING_TYPE);
- }
-
- private void createVoicemailCallLogEntry() {
- createCallLogEntry(TEST_NUMBER, EMPTY_STRING, NO_VALUE_SET, Calls.VOICEMAIL_TYPE);
- }
-
- private void createVoicemailArchiveCallLogEntry() {
- createCallLogEntry(TEST_NUMBER, EMPTY_STRING, NO_VALUE_SET, ARCHIVE_TYPE);
- }
-
- private void createCallLogEntry(String number, String postDialDigits, int presentation,
- int type) {
- Object[] values = getValues(number, postDialDigits, presentation, type);
- mCursor.addRow(values);
- }
-
- private void createCallLogEntry(String number, String postDialDigits, String viaNumber,
- int presentation, int type) {
- Object[] values = getValues(number, postDialDigits, viaNumber, presentation, type);
- mCursor.addRow(values);
- }
-
- private void createCallLogEntryWithCachedValues(boolean inject) {
- createCallLogEntryWithCachedValues(
- TEST_NUMBER,
- NO_VALUE_SET,
- TEST_CACHED_NAME_PRIMARY,
- TEST_CACHED_NUMBER_TYPE,
- TEST_CACHED_NUMBER_LABEL,
- EMPTY_STRING,
- inject);
- }
-
- private void createCallLogEntryWithCachedValues(
- String cachedName, int cachedNumberType, String cachedNumberLabel) {
- createCallLogEntryWithCachedValues(
- TEST_NUMBER,
- NO_VALUE_SET,
- cachedName,
- cachedNumberType,
- cachedNumberLabel,
- EMPTY_STRING,
- false /* inject */);
- }
-
- /**
- * Inserts a new call log entry
- *
- * It includes the values for the cached contact associated with the number.
- *
- * @param number The phone number.
- * @param type Valid value of {@code Calls.TYPE}.
- * @param cachedName The name of the contact with this number
- * @param cachedNumberType The type of the number, from the contact with this number.
- * @param cachedNumberLabel The label of the number, from the contact with this number.
- * @param cachedFormattedNumber The formatted number, from the contact with this number.
- * @param inject Whether to inject the contact info into the adapter's ContactInfoCache.
- */
- private void createCallLogEntryWithCachedValues(
- String number,
- int type,
- String cachedName,
- int cachedNumberType,
- String cachedNumberLabel,
- String cachedFormattedNumber,
- boolean inject) {
- Object[] values = getValues(number, EMPTY_STRING, NO_VALUE_SET, type);
- values[CallLogQuery.CACHED_NAME] = cachedName;
- values[CallLogQuery.CACHED_NUMBER_TYPE] = cachedNumberType;
- values[CallLogQuery.CACHED_NUMBER_LABEL] = cachedNumberLabel;
- values[CallLogQuery.CACHED_FORMATTED_NUMBER] = cachedFormattedNumber;
-
- mCursor.addRow(values);
-
- if (inject) {
- ContactInfo contactInfo =
- createContactInfo(cachedName, cachedName, cachedNumberType, cachedNumberLabel);
- mAdapter.injectContactInfoForTest(number, TEST_COUNTRY_ISO, contactInfo);
- }
- }
-
- /**
- * @param number The phone number.
- * @param postDialDigits The post dial digits dialed (if any)
- * @param presentation Number representing display rules for "allowed",
- * "payphone", "restricted", or "unknown".
- * @param type The type of the call (outgoing/ingoing)
- */
- private Object[] getValues(
- String number,
- String postDialDigits,
- int presentation,
- int type) {
- return getValues(number, postDialDigits, "", presentation, type);
- }
-
- /**
- * @param number The phone number.
- * @param postDialDigits The post dial digits dialed (if any)
- * @param viaNumber The secondary number that the call was placed via
- * @param presentation Number representing display rules for "allowed",
- * "payphone", "restricted", or "unknown".
- * @param type The type of the call (outgoing/ingoing)
- */
- private Object[] getValues(
- String number,
- String postDialDigits,
- String viaNumber,
- int presentation,
- int type) {
- Object[] values = CallLogQueryTestUtils.createTestValues();
-
- values[CallLogQuery.ID] = mCursor.getCount();
- values[CallLogQuery.COUNTRY_ISO] = TEST_COUNTRY_ISO;
- values[CallLogQuery.DATE] = new Date().getTime();
- values[CallLogQuery.DURATION] = mRandom.nextInt(10 * 60);
-
- if (!TextUtils.isEmpty(number)) {
- values[CallLogQuery.NUMBER] = number;
- }
- if (!TextUtils.isEmpty(postDialDigits) && CompatUtils.isNCompatible()) {
- values[CallLogQuery.POST_DIAL_DIGITS] = postDialDigits;
- }
- if (!TextUtils.isEmpty(viaNumber) && CompatUtils.isNCompatible()) {
- values[CallLogQuery.VIA_NUMBER] = viaNumber;
- }
- if (presentation != NO_VALUE_SET) {
- values[CallLogQuery.NUMBER_PRESENTATION] = presentation;
- }
- if (type != NO_VALUE_SET) {
- values[CallLogQuery.CALL_TYPE] = type;
- }
- if (type == AppCompatConstants.CALLS_VOICEMAIL_TYPE) {
- values[CallLogQuery.VOICEMAIL_URI] = ContentUris.withAppendedId(
- VoicemailContract.Voicemails.CONTENT_URI, mCursor.getCount());
- }
- if (type == ARCHIVE_TYPE) {
- values[CallLogQuery.VOICEMAIL_URI] = ContentUris.withAppendedId(
- VoicemailArchiveContract.VoicemailArchive.CONTENT_URI, mCursor.getCount());
- }
-
- return values;
- }
-
- private ContactInfo createContactInfo() {
- return createContactInfo(
- TEST_CACHED_NAME_PRIMARY,
- TEST_CACHED_NAME_ALTERNATIVE);
- }
-
- private ContactInfo createContactInfo(String namePrimary, String nameAlternative) {
- return createContactInfo(
- namePrimary,
- nameAlternative,
- TEST_CACHED_NUMBER_TYPE,
- TEST_CACHED_NUMBER_LABEL);
- }
-
- /** Returns a contact info with default values. */
- private ContactInfo createContactInfo(String namePrimary, String nameAlternative, int type, String label) {
- ContactInfo info = new ContactInfo();
- info.number = TEST_NUMBER;
- info.name = namePrimary;
- info.nameAlternative = nameAlternative;
- info.type = type;
- info.label = label;
- info.formattedNumber = TEST_FORMATTED_NUMBER;
- info.normalizedNumber = TEST_NUMBER;
- info.lookupUri = TEST_LOOKUP_URI;
- return info;
- }
-
- // Asserts that the name text view is shown and contains the given text.
- private void assertNameIs(CallLogListItemViewHolder viewHolder, String name) {
- assertEquals(View.VISIBLE, viewHolder.phoneCallDetailsViews.nameView.getVisibility());
- assertEquals(name, viewHolder.phoneCallDetailsViews.nameView.getText());
- }
-
- // Asserts that the label text view contains the given text.
- private void assertLabel(
- CallLogListItemViewHolder viewHolder, CharSequence number, CharSequence label) {
- if (label != null) {
- assertTrue(viewHolder.phoneCallDetailsViews.callLocationAndDate.getText()
- .toString().contains(label));
- }
- }
-
- private void assertHasCallAction(CallLogListItemViewHolder viewHolder) {
- assertHasCallActionToGivenNumber(viewHolder, TEST_NUMBER);
- }
-
- private void assertHasCallActionToGivenNumber(CallLogListItemViewHolder viewHolder,
- String number) {
- IntentProvider intentProvider =
- (IntentProvider) viewHolder.primaryActionButtonView.getTag();
- Intent intent = intentProvider.getIntent(getContext());
- assertEquals(TestConstants.CALL_INTENT_ACTION, intent.getAction());
- assertEquals(Uri.parse("tel:" + Uri.encode(number)), intent.getData());
- }
-
- /** Returns the label associated with a given phone type. */
- private CharSequence getTypeLabel(int phoneType) {
- return Phone.getTypeLabel(getContext().getResources(), phoneType, "");
- }
-
- private void setUpArchiveAdapter() {
- // Use a call fetcher that does not do anything.
- CallLogAdapter.CallFetcher fakeCallFetcher = new CallLogAdapter.CallFetcher() {
- @Override
- public void fetchCalls() {}
- };
-
- ContactInfoHelper fakeContactInfoHelper =
- new ContactInfoHelper(getContext(), TEST_COUNTRY_ISO) {
- @Override
- public ContactInfo lookupNumber(String number, String countryIso) {
- ContactInfo info = new ContactInfo();
- info.number = number;
- info.formattedNumber = number;
- return info;
- }
- };
-
- mAdapter = new TestCallLogAdapter(getContext(), fakeCallFetcher, fakeContactInfoHelper,
- CallLogAdapter.ACTIVITY_TYPE_ARCHIVE);
- }
-
- /// Subclass of {@link CallLogAdapter} used in tests to intercept certain calls.
- private static final class TestCallLogAdapter extends CallLogAdapter {
- public TestCallLogAdapter(Context context, CallFetcher callFetcher,
- ContactInfoHelper contactInfoHelper, int mActivity) {
- super(context, callFetcher, contactInfoHelper, null,
- mActivity);
- mContactInfoCache = new TestContactInfoCache(
- contactInfoHelper, mOnContactInfoChangedListener);
- }
-
- public TestContactInfoCache getContactInfoCache() {
- return (TestContactInfoCache) mContactInfoCache;
- }
-
- public void showVoicemailPromoCard(boolean show) {
- mShowVoicemailPromoCard = show;
- }
- }
-
- private static final class TestContactInfoCache extends ContactInfoCache {
- public static class Request {
- public final String number;
- public final String countryIso;
- public final ContactInfo callLogInfo;
- public final boolean immediate;
-
- public Request(String number, String countryIso, ContactInfo callLogInfo,
- boolean immediate) {
- this.number = number;
- this.countryIso = countryIso;
- this.callLogInfo = callLogInfo;
- this.immediate = immediate;
- }
- }
-
- public final List<Request> requests = Lists.newArrayList();
-
- /**
- * Dummy contactInfo to return in the even that the getValue method has been mocked
- */
- private ContactInfo mContactInfo;
-
- public TestContactInfoCache(
- ContactInfoHelper contactInfoHelper, OnContactInfoChangedListener listener) {
- super(contactInfoHelper, listener);
- }
-
- /**
- * Sets the given value to be returned by all calls to
- * {@link #getValue(String, String, ContactInfo)}
- *
- * @param contactInfo the contactInfo
- */
- public void mockGetValue(ContactInfo contactInfo) {
- this.mContactInfo = contactInfo;
- }
-
- @Override
- public ContactInfo getValue(String number, String countryIso,
- ContactInfo cachedContactInfo) {
- if (mContactInfo != null) {
- return mContactInfo;
- }
- return super.getValue(number, countryIso, cachedContactInfo);
- }
-
- @Override
- protected void enqueueRequest(String number, String countryIso, ContactInfo callLogInfo,
- boolean immediate) {
- requests.add(new Request(number, countryIso, callLogInfo, immediate));
- }
- }
-}
diff --git a/tests/src/com/android/dialer/calllog/CallLogGroupBuilderTest.java b/tests/src/com/android/dialer/calllog/CallLogGroupBuilderTest.java
deleted file mode 100644
index beb83b1ad..000000000
--- a/tests/src/com/android/dialer/calllog/CallLogGroupBuilderTest.java
+++ /dev/null
@@ -1,470 +0,0 @@
-/*
- * 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 static com.google.common.collect.Lists.newArrayList;
-
-import android.database.MatrixCursor;
-import android.test.AndroidTestCase;
-import android.test.suitebuilder.annotation.SmallTest;
-
-import com.android.contacts.common.compat.CompatUtils;
-import com.android.dialer.util.AppCompatConstants;
-
-import java.util.List;
-
-/**
- * Unit tests for {@link CallLogGroupBuilder}
- */
-@SmallTest
-public class CallLogGroupBuilderTest extends AndroidTestCase {
- /** A phone number for testing. */
- private static final String TEST_NUMBER1 = "14125551234";
- /** A phone number for testing. */
- private static final String TEST_NUMBER2 = "14125555555";
- /** A post-dial string for testing */
- private static final String TEST_POST_DIAL_DIGITS = ";12435;0987";
-
- /** The object under test. */
- private CallLogGroupBuilder mBuilder;
- /** Records the created groups. */
- private FakeGroupCreator mFakeGroupCreator;
- /** Cursor to store the values. */
- private MatrixCursor mCursor;
-
- @Override
- protected void setUp() throws Exception {
- super.setUp();
- mFakeGroupCreator = new FakeGroupCreator();
- mBuilder = new CallLogGroupBuilder(mFakeGroupCreator);
- createCursor();
- }
-
- @Override
- protected void tearDown() throws Exception {
- mCursor = null;
- mBuilder = null;
- mFakeGroupCreator = null;
- super.tearDown();
- }
-
- public void testAddGroups_NoCalls() {
- mBuilder.addGroups(mCursor);
- assertEquals(0, mFakeGroupCreator.groups.size());
- }
-
- public void testAddGroups_OneCall() {
- addCallLogEntry(TEST_NUMBER1, AppCompatConstants.CALLS_INCOMING_TYPE);
- mBuilder.addGroups(mCursor);
- assertEquals(1, mFakeGroupCreator.groups.size());
- }
-
- public void testAddGroups_TwoCallsNotMatching() {
- addCallLogEntry(TEST_NUMBER1, AppCompatConstants.CALLS_INCOMING_TYPE);
- addCallLogEntry(TEST_NUMBER2, AppCompatConstants.CALLS_INCOMING_TYPE);
- mBuilder.addGroups(mCursor);
- assertEquals(2, mFakeGroupCreator.groups.size());
- }
-
- public void testAddGroups_ThreeCallsMatching() {
- addCallLogEntry(TEST_NUMBER1, AppCompatConstants.CALLS_INCOMING_TYPE);
- addCallLogEntry(TEST_NUMBER1, AppCompatConstants.CALLS_INCOMING_TYPE);
- addCallLogEntry(TEST_NUMBER1, AppCompatConstants.CALLS_INCOMING_TYPE);
- mBuilder.addGroups(mCursor);
- assertEquals(1, mFakeGroupCreator.groups.size());
- assertGroupIs(0, 3, mFakeGroupCreator.groups.get(0));
- }
-
- public void testAddGroups_WithPostDialMatching() {
- addCallLogEntryWithPostDialDigits(TEST_NUMBER1, TEST_POST_DIAL_DIGITS,
- AppCompatConstants.CALLS_OUTGOING_TYPE);
- addCallLogEntryWithPostDialDigits(TEST_NUMBER1, TEST_POST_DIAL_DIGITS,
- AppCompatConstants.CALLS_OUTGOING_TYPE);
- addCallLogEntryWithPostDialDigits(TEST_NUMBER1, "",
- AppCompatConstants.CALLS_OUTGOING_TYPE);
-
- mBuilder.addGroups(mCursor);
-
- if (CompatUtils.isNCompatible()) {
- assertEquals(2, mFakeGroupCreator.groups.size());
- assertGroupIs(0, 2, mFakeGroupCreator.groups.get(0));
- assertGroupIs(2, 1, mFakeGroupCreator.groups.get(1));
- } else {
- assertEquals(1, mFakeGroupCreator.groups.size());
- assertGroupIs(0, 3, mFakeGroupCreator.groups.get(0));
- }
- }
-
- public void testAddGroups_WithViaNumberMatching() {
- addCallLogEntryWithViaNumber(TEST_NUMBER1, TEST_NUMBER2,
- AppCompatConstants.CALLS_OUTGOING_TYPE);
- addCallLogEntryWithViaNumber(TEST_NUMBER1, TEST_NUMBER2,
- AppCompatConstants.CALLS_OUTGOING_TYPE);
- addCallLogEntryWithViaNumber(TEST_NUMBER1, "",
- AppCompatConstants.CALLS_OUTGOING_TYPE);
-
- mBuilder.addGroups(mCursor);
-
- if (CompatUtils.isNCompatible()) {
- assertEquals(2, mFakeGroupCreator.groups.size());
- assertGroupIs(0, 2, mFakeGroupCreator.groups.get(0));
- assertGroupIs(2, 1, mFakeGroupCreator.groups.get(1));
- } else {
- assertEquals(1, mFakeGroupCreator.groups.size());
- assertGroupIs(0, 3, mFakeGroupCreator.groups.get(0));
- }
- }
-
- public void testAddGroups_MatchingIncomingAndOutgoing() {
- addCallLogEntry(TEST_NUMBER1, AppCompatConstants.CALLS_INCOMING_TYPE);
- addCallLogEntry(TEST_NUMBER1, AppCompatConstants.CALLS_OUTGOING_TYPE);
- addCallLogEntry(TEST_NUMBER1, AppCompatConstants.CALLS_INCOMING_TYPE);
- mBuilder.addGroups(mCursor);
- assertEquals(1, mFakeGroupCreator.groups.size());
- assertGroupIs(0, 3, mFakeGroupCreator.groups.get(0));
- }
-
- public void testGrouping_Voicemail() {
- // Does not group with other types of calls, include voicemail themselves.
- assertCallsAreNotGrouped(
- AppCompatConstants.CALLS_VOICEMAIL_TYPE, AppCompatConstants.CALLS_MISSED_TYPE);
- assertCallsAreNotGrouped(
- AppCompatConstants.CALLS_VOICEMAIL_TYPE, AppCompatConstants.CALLS_VOICEMAIL_TYPE);
- assertCallsAreNotGrouped(
- AppCompatConstants.CALLS_VOICEMAIL_TYPE, AppCompatConstants.CALLS_INCOMING_TYPE);
- assertCallsAreNotGrouped(
- AppCompatConstants.CALLS_VOICEMAIL_TYPE, AppCompatConstants.CALLS_OUTGOING_TYPE);
- }
-
- public void testGrouping_VoicemailArchive() {
- // Does not group with other types of calls, include voicemail themselves.
- assertVoicemailsAreNotGrouped(
- AppCompatConstants.CALLS_VOICEMAIL_TYPE, AppCompatConstants.CALLS_MISSED_TYPE);
- assertVoicemailsAreNotGrouped(
- AppCompatConstants.CALLS_VOICEMAIL_TYPE, AppCompatConstants.CALLS_VOICEMAIL_TYPE);
- assertVoicemailsAreNotGrouped(
- AppCompatConstants.CALLS_VOICEMAIL_TYPE, AppCompatConstants.CALLS_INCOMING_TYPE);
- assertVoicemailsAreNotGrouped(
- AppCompatConstants.CALLS_VOICEMAIL_TYPE, AppCompatConstants.CALLS_OUTGOING_TYPE);
- }
-
- public void testGrouping_Missed() {
- // Groups with one or more missed calls.
- assertCallsAreGrouped(
- AppCompatConstants.CALLS_MISSED_TYPE, AppCompatConstants.CALLS_MISSED_TYPE);
- assertCallsAreGrouped(
- AppCompatConstants.CALLS_MISSED_TYPE,
- AppCompatConstants.CALLS_MISSED_TYPE,
- AppCompatConstants.CALLS_MISSED_TYPE);
- // Does not group with other types of calls.
- assertCallsAreNotGrouped(
- AppCompatConstants.CALLS_MISSED_TYPE, AppCompatConstants.CALLS_VOICEMAIL_TYPE);
- assertCallsAreGrouped(
- AppCompatConstants.CALLS_MISSED_TYPE, AppCompatConstants.CALLS_INCOMING_TYPE);
- assertCallsAreGrouped(
- AppCompatConstants.CALLS_MISSED_TYPE, AppCompatConstants.CALLS_OUTGOING_TYPE);
- }
-
- public void testGrouping_Incoming() {
- // Groups with one or more incoming or outgoing.
- assertCallsAreGrouped(
- AppCompatConstants.CALLS_INCOMING_TYPE, AppCompatConstants.CALLS_INCOMING_TYPE);
- assertCallsAreGrouped(
- AppCompatConstants.CALLS_INCOMING_TYPE, AppCompatConstants.CALLS_OUTGOING_TYPE);
- assertCallsAreGrouped(
- AppCompatConstants.CALLS_INCOMING_TYPE,
- AppCompatConstants.CALLS_INCOMING_TYPE,
- AppCompatConstants.CALLS_OUTGOING_TYPE);
- assertCallsAreGrouped(
- AppCompatConstants.CALLS_INCOMING_TYPE,
- AppCompatConstants.CALLS_OUTGOING_TYPE,
- AppCompatConstants.CALLS_INCOMING_TYPE);
- assertCallsAreGrouped(
- AppCompatConstants.CALLS_INCOMING_TYPE, AppCompatConstants.CALLS_MISSED_TYPE);
- // Does not group with voicemail and missed calls.
- assertCallsAreNotGrouped(
- AppCompatConstants.CALLS_INCOMING_TYPE, AppCompatConstants.CALLS_VOICEMAIL_TYPE);
- }
-
- public void testGrouping_Outgoing() {
- // Groups with one or more incoming or outgoing.
- assertCallsAreGrouped(
- AppCompatConstants.CALLS_OUTGOING_TYPE, AppCompatConstants.CALLS_INCOMING_TYPE);
- assertCallsAreGrouped(
- AppCompatConstants.CALLS_OUTGOING_TYPE, AppCompatConstants.CALLS_OUTGOING_TYPE);
- assertCallsAreGrouped(
- AppCompatConstants.CALLS_OUTGOING_TYPE,
- AppCompatConstants.CALLS_INCOMING_TYPE,
- AppCompatConstants.CALLS_OUTGOING_TYPE);
- assertCallsAreGrouped(
- AppCompatConstants.CALLS_OUTGOING_TYPE,
- AppCompatConstants.CALLS_OUTGOING_TYPE,
- AppCompatConstants.CALLS_INCOMING_TYPE);
- assertCallsAreGrouped(
- AppCompatConstants.CALLS_INCOMING_TYPE, AppCompatConstants.CALLS_MISSED_TYPE);
- // Does not group with voicemail and missed calls.
- assertCallsAreNotGrouped(
- AppCompatConstants.CALLS_INCOMING_TYPE, AppCompatConstants.CALLS_VOICEMAIL_TYPE);
- }
-
- public void testGrouping_Blocked() {
- assertCallsAreNotGrouped(
- AppCompatConstants.CALLS_BLOCKED_TYPE, AppCompatConstants.CALLS_INCOMING_TYPE);
- assertCallsAreNotGrouped(
- AppCompatConstants.CALLS_BLOCKED_TYPE, AppCompatConstants.CALLS_OUTGOING_TYPE);
- assertCallsAreNotGrouped(
- AppCompatConstants.CALLS_BLOCKED_TYPE, AppCompatConstants.CALLS_MISSED_TYPE);
-
- }
-
- public void testAddGroups_Separate() {
- addMultipleCallLogEntries(TEST_NUMBER1,
- AppCompatConstants.CALLS_VOICEMAIL_TYPE, // Group 1: 0
- AppCompatConstants.CALLS_INCOMING_TYPE, // Group 2: 1
- AppCompatConstants.CALLS_OUTGOING_TYPE, // Group 3: 2
- AppCompatConstants.CALLS_MISSED_TYPE); // Group 4: 3
- mBuilder.addVoicemailGroups(mCursor);
-
- assertEquals(4, mFakeGroupCreator.groups.size());
- assertGroupIs(0, 1, mFakeGroupCreator.groups.get(0));
- assertGroupIs(1, 1, mFakeGroupCreator.groups.get(1));
- assertGroupIs(2, 1, mFakeGroupCreator.groups.get(2));
- assertGroupIs(3, 1, mFakeGroupCreator.groups.get(3));
- }
-
- public void testAddGroups_Mixed() {
- addMultipleCallLogEntries(TEST_NUMBER1,
- AppCompatConstants.CALLS_VOICEMAIL_TYPE, // Group 1: 0
- AppCompatConstants.CALLS_INCOMING_TYPE, // Group 2: 1-4
- AppCompatConstants.CALLS_OUTGOING_TYPE,
- AppCompatConstants.CALLS_MISSED_TYPE,
- AppCompatConstants.CALLS_MISSED_TYPE,
- AppCompatConstants.CALLS_VOICEMAIL_TYPE, // Group 3: 5
- AppCompatConstants.CALLS_INCOMING_TYPE, // Group 4: 6
- AppCompatConstants.CALLS_VOICEMAIL_TYPE, // Group 5: 7
- AppCompatConstants.CALLS_MISSED_TYPE, // Group 6: 8-10
- AppCompatConstants.CALLS_MISSED_TYPE,
- AppCompatConstants.CALLS_OUTGOING_TYPE);
- mBuilder.addGroups(mCursor);
-
- assertEquals(6, mFakeGroupCreator.groups.size());
- assertGroupIs(0, 1, mFakeGroupCreator.groups.get(0));
- assertGroupIs(1, 4, mFakeGroupCreator.groups.get(1));
- assertGroupIs(5, 1, mFakeGroupCreator.groups.get(2));
- assertGroupIs(6, 1, mFakeGroupCreator.groups.get(3));
- assertGroupIs(7, 1, mFakeGroupCreator.groups.get(4));
- assertGroupIs(8, 3, mFakeGroupCreator.groups.get(5));
- }
-
- public void testAddGroups_Blocked() {
- addMultipleCallLogEntries(TEST_NUMBER1,
- AppCompatConstants.CALLS_INCOMING_TYPE, // Group 1: 0-1
- AppCompatConstants.CALLS_OUTGOING_TYPE,
- AppCompatConstants.CALLS_BLOCKED_TYPE, // Group 2: 2
- AppCompatConstants.CALLS_MISSED_TYPE, // Group 3: 3
- AppCompatConstants.CALLS_BLOCKED_TYPE, // Group 4: 4-5
- AppCompatConstants.CALLS_BLOCKED_TYPE);
- mBuilder.addGroups(mCursor);
-
- assertEquals(4, mFakeGroupCreator.groups.size());
- assertGroupIs(0, 2, mFakeGroupCreator.groups.get(0));
- assertGroupIs(2, 1, mFakeGroupCreator.groups.get(1));
- assertGroupIs(3, 1, mFakeGroupCreator.groups.get(2));
- assertGroupIs(4, 2, mFakeGroupCreator.groups.get(3));
- }
-
- public void testEqualPhoneNumbers() {
- // Identical.
- assertTrue(mBuilder.equalNumbers("6505555555", "6505555555"));
- assertTrue(mBuilder.equalNumbers("650 555 5555", "650 555 5555"));
- // Formatting.
- assertTrue(mBuilder.equalNumbers("6505555555", "650 555 5555"));
- assertTrue(mBuilder.equalNumbers("6505555555", "(650) 555-5555"));
- assertTrue(mBuilder.equalNumbers("650 555 5555", "(650) 555-5555"));
- // Short codes.
- assertTrue(mBuilder.equalNumbers("55555", "55555"));
- assertTrue(mBuilder.equalNumbers("55555", "555 55"));
- // Different numbers.
- assertFalse(mBuilder.equalNumbers("6505555555", "650555555"));
- assertFalse(mBuilder.equalNumbers("6505555555", "6505555551"));
- assertFalse(mBuilder.equalNumbers("650 555 5555", "650 555 555"));
- assertFalse(mBuilder.equalNumbers("650 555 5555", "650 555 5551"));
- assertFalse(mBuilder.equalNumbers("55555", "5555"));
- assertFalse(mBuilder.equalNumbers("55555", "55551"));
- // SIP addresses.
- assertTrue(mBuilder.equalNumbers("6505555555@host.com", "6505555555@host.com"));
- assertTrue(mBuilder.equalNumbers("6505555555@host.com", "6505555555@HOST.COM"));
- assertTrue(mBuilder.equalNumbers("user@host.com", "user@host.com"));
- assertTrue(mBuilder.equalNumbers("user@host.com", "user@HOST.COM"));
- assertFalse(mBuilder.equalNumbers("USER@host.com", "user@host.com"));
- assertFalse(mBuilder.equalNumbers("user@host.com", "user@host1.com"));
- // SIP address vs phone number.
- assertFalse(mBuilder.equalNumbers("6505555555@host.com", "6505555555"));
- assertFalse(mBuilder.equalNumbers("6505555555", "6505555555@host.com"));
- assertFalse(mBuilder.equalNumbers("user@host.com", "6505555555"));
- assertFalse(mBuilder.equalNumbers("6505555555", "user@host.com"));
- // Nulls.
- assertTrue(mBuilder.equalNumbers(null, null));
- assertFalse(mBuilder.equalNumbers(null, "6505555555"));
- assertFalse(mBuilder.equalNumbers("6505555555", null));
- assertFalse(mBuilder.equalNumbers(null, "6505555555@host.com"));
- assertFalse(mBuilder.equalNumbers("6505555555@host.com", null));
- }
-
- public void testCompareSipAddresses() {
- // Identical.
- assertTrue(mBuilder.compareSipAddresses("6505555555@host.com", "6505555555@host.com"));
- assertTrue(mBuilder.compareSipAddresses("user@host.com", "user@host.com"));
- // Host is case insensitive.
- assertTrue(mBuilder.compareSipAddresses("6505555555@host.com", "6505555555@HOST.COM"));
- assertTrue(mBuilder.compareSipAddresses("user@host.com", "user@HOST.COM"));
- // Userinfo is case sensitive.
- assertFalse(mBuilder.compareSipAddresses("USER@host.com", "user@host.com"));
- // Different hosts.
- assertFalse(mBuilder.compareSipAddresses("user@host.com", "user@host1.com"));
- // Different users.
- assertFalse(mBuilder.compareSipAddresses("user1@host.com", "user@host.com"));
- // Nulls.
- assertTrue(mBuilder.compareSipAddresses(null, null));
- assertFalse(mBuilder.compareSipAddresses(null, "6505555555@host.com"));
- assertFalse(mBuilder.compareSipAddresses("6505555555@host.com", null));
- }
-
- /** Creates (or recreates) the cursor used to store the call log content for the tests. */
- private void createCursor() {
- mCursor = new MatrixCursor(CallLogQuery._PROJECTION);
- }
-
- /** Clears the content of the {@link FakeGroupCreator} used in the tests. */
- private void clearFakeGroupCreator() {
- mFakeGroupCreator.groups.clear();
- }
-
- /** Asserts that calls of the given types are grouped together into a single group. */
- private void assertCallsAreGrouped(int... types) {
- createCursor();
- clearFakeGroupCreator();
- addMultipleCallLogEntries(TEST_NUMBER1, types);
- mBuilder.addGroups(mCursor);
- assertEquals(1, mFakeGroupCreator.groups.size());
- assertGroupIs(0, types.length, mFakeGroupCreator.groups.get(0));
-
- }
-
- /** Asserts that calls of the given types are not grouped together at all. */
- private void assertCallsAreNotGrouped(int... types) {
- createCursor();
- clearFakeGroupCreator();
- addMultipleCallLogEntries(TEST_NUMBER1, types);
- mBuilder.addGroups(mCursor);
- assertEquals(types.length, mFakeGroupCreator.groups.size());
- }
-
- /** Asserts that voicemails are not grouped together with other types at all. */
- private void assertVoicemailsAreNotGrouped(int... types) {
- createCursor();
- clearFakeGroupCreator();
- addMultipleCallLogEntries(TEST_NUMBER1, types);
- mBuilder.addVoicemailGroups(mCursor);
- assertEquals(types.length, mFakeGroupCreator.groups.size());
- }
-
- /** Adds a set of calls with the given types, all from the same number, in the old section. */
- private void addMultipleCallLogEntries(String number, int... types) {
- for (int type : types) {
- addCallLogEntry(number, type);
- }
- }
- /** Adds a call log entry with the given number and type to the cursor. */
- private void addCallLogEntry(String number, int type) {
- addCallLogEntryWithPostDialDigits(number, "", type);
- }
-
- /** Adds a call log entry with the given number, post-dial digits, and type to the cursor. */
- private void addCallLogEntryWithPostDialDigits(String number, String postDialDigits, int type) {
- mCursor.moveToNext();
- Object[] values = CallLogQueryTestUtils.createTestValues();
- values[CallLogQuery.ID] = mCursor.getPosition();
- values[CallLogQuery.NUMBER] = number;
- values[CallLogQuery.CALL_TYPE] = type;
- if (CompatUtils.isNCompatible()) {
- values[CallLogQuery.POST_DIAL_DIGITS] = postDialDigits;
- }
- mCursor.addRow(values);
- }
-
- /** Adds a call log entry with the given number, post-dial digits, and type to the cursor. */
- private void addCallLogEntryWithViaNumber(String number, String viaNumber, int type) {
- mCursor.moveToNext();
- Object[] values = CallLogQueryTestUtils.createTestValues();
- values[CallLogQuery.ID] = mCursor.getPosition();
- values[CallLogQuery.NUMBER] = number;
- values[CallLogQuery.CALL_TYPE] = type;
- if (CompatUtils.isNCompatible()) {
- values[CallLogQuery.VIA_NUMBER] = viaNumber;
- }
- mCursor.addRow(values);
- }
-
- /** Adds a call log entry with a header to the cursor. */
- private void addCallLogHeader(int section) {
- mCursor.moveToNext();
- Object[] values = CallLogQueryTestUtils.createTestValues();
- values[CallLogQuery.ID] = mCursor.getPosition();
- mCursor.addRow(values);
- }
-
- /** Asserts that the group matches the given values. */
- private void assertGroupIs(int cursorPosition, int size, GroupSpec group) {
- assertEquals(cursorPosition, group.cursorPosition);
- assertEquals(size, group.size);
- }
-
- /** Defines an added group. Used by the {@link FakeGroupCreator}. */
- private static class GroupSpec {
- /** The starting position of the group. */
- public final int cursorPosition;
- /** The number of elements in the group. */
- public final int size;
-
- public GroupSpec(int cursorPosition, int size) {
- this.cursorPosition = cursorPosition;
- this.size = size;
- }
- }
-
- /** Fake implementation of a GroupCreator which stores the created groups in a member field. */
- private static class FakeGroupCreator implements CallLogGroupBuilder.GroupCreator {
- /** The list of created groups. */
- public final List<GroupSpec> groups = newArrayList();
-
- @Override
- public void addGroup(int cursorPosition, int size) {
- groups.add(new GroupSpec(cursorPosition, size));
- }
-
- @Override
- public void setDayGroup(long rowId, int dayGroup) {
- //No-op
- }
-
- @Override
- public void clearDayGroups() {
- //No-op
- }
- }
-}
diff --git a/tests/src/com/android/dialer/calllog/CallLogListItemHelperTest.java b/tests/src/com/android/dialer/calllog/CallLogListItemHelperTest.java
deleted file mode 100644
index daba42857..000000000
--- a/tests/src/com/android/dialer/calllog/CallLogListItemHelperTest.java
+++ /dev/null
@@ -1,304 +0,0 @@
-/*
- * 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.test.suitebuilder.annotation.MediumTest;
-import android.view.View;
-
-import com.android.contacts.common.CallUtil;
-import com.android.dialer.PhoneCallDetails;
-import com.android.dialer.R;
-import com.android.dialer.calllog.calllogcache.TestTelecomCallLogCache;
-import com.android.dialer.util.AppCompatConstants;
-
-/**
- * Unit tests for {@link CallLogListItemHelper}.
- */
-@MediumTest
-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 CallLogListItemViewHolder mViewHolder;
-
- private Context mContext;
- private Resources mResources;
-
- @Override
- protected void setUp() throws Exception {
- super.setUp();
- mContext = getContext();
- mResources = mContext.getResources();
- final TestTelecomCallLogCache phoneUtils =
- new TestTelecomCallLogCache(mContext, TEST_VOICEMAIL_NUMBER, "");
- PhoneCallDetailsHelper phoneCallDetailsHelper =
- new PhoneCallDetailsHelper(mContext, mResources, phoneUtils);
- mHelper = new CallLogListItemHelper(phoneCallDetailsHelper, mResources, phoneUtils);
- mViewHolder = CallLogListItemViewHolder.createForTest(mContext);
-
- }
-
- @Override
- protected void tearDown() throws Exception {
- mHelper = null;
- mViewHolder = null;
- super.tearDown();
- }
-
- public void testSetPhoneCallDetails() {
- setPhoneCallDetailsWithNumber("12125551234", Calls.PRESENTATION_ALLOWED,
- "1-212-555-1234");
- assertEquals(View.VISIBLE, mViewHolder.primaryActionButtonView.getVisibility());
- }
-
- public void testSetPhoneCallDetails_Unknown() {
- setPhoneCallDetailsWithNumber("", Calls.PRESENTATION_UNKNOWN, "");
- assertNoCallIntent();
- }
-
- public void testSetPhoneCallDetails_Private() {
- setPhoneCallDetailsWithNumber("", Calls.PRESENTATION_RESTRICTED, "");
- assertNoCallIntent();
- }
-
- public void testSetPhoneCallDetails_Payphone() {
- setPhoneCallDetailsWithNumber("", Calls.PRESENTATION_PAYPHONE, "");
- assertNoCallIntent();
- }
-
- public void testSetPhoneCallDetails_VoicemailNumber() {
- setPhoneCallDetailsWithNumber(TEST_VOICEMAIL_NUMBER,
- Calls.PRESENTATION_ALLOWED, TEST_VOICEMAIL_NUMBER);
- assertEquals(View.VISIBLE, mViewHolder.voicemailPlaybackView.getVisibility());
- }
-
- public void testSetPhoneCallDetails_ReadVoicemail() {
- PhoneCallDetails details =
- getPhoneCallDetailsWithTypes(AppCompatConstants.CALLS_VOICEMAIL_TYPE);
- mHelper.setPhoneCallDetails(mViewHolder, details);
- assertEquals(View.VISIBLE, mViewHolder.voicemailPlaybackView.getVisibility());
- }
-
- public void testSetPhoneCallDetails_UnreadVoicemail() {
- PhoneCallDetails details =
- getPhoneCallDetailsWithTypes(AppCompatConstants.CALLS_VOICEMAIL_TYPE);
- mHelper.setPhoneCallDetails(mViewHolder, details);
- assertEquals(View.VISIBLE, mViewHolder.voicemailPlaybackView.getVisibility());
- }
-
- public void testSetPhoneCallDetails_VoicemailFromUnknown() {
- setPhoneCallDetailsWithNumberAndType("", Calls.PRESENTATION_UNKNOWN,
- "", AppCompatConstants.CALLS_VOICEMAIL_TYPE);
- assertEquals(View.VISIBLE, mViewHolder.voicemailPlaybackView.getVisibility());
- }
-
- /**
- * Test getCallDescriptionID method used to get the accessibility description for calls.
- */
- public void testGetCallDescriptionID_Answered() {
- int[] callTypes = new int[] {AppCompatConstants.CALLS_INCOMING_TYPE};
- assertEquals(R.string.description_incoming_answered_call,
- mHelper.getCallDescriptionStringID(callTypes, true));
- }
-
- /**
- * Test getCallDescriptionID method used to get the accessibility description for calls.
- */
- public void testGetCallDescriptionID_Missed() {
- int[] callTypes = new int[] {AppCompatConstants.CALLS_MISSED_TYPE};
- assertEquals(R.string.description_incoming_missed_call,
- mHelper.getCallDescriptionStringID(callTypes, true));
- }
-
- /**
- * Test getCallDescriptionID method used to get the accessibility description for calls.
- * Test case where an outgoing call is made to a known number and there is a history of
- * only a single call for this caller.
- */
- public void testGetCallDescriptionID_OutgoingSingle() {
- int[] callTypes = new int[] {AppCompatConstants.CALLS_OUTGOING_TYPE};
- assertEquals(R.string.description_outgoing_call,
- mHelper.getCallDescriptionStringID(callTypes, true));
- }
-
- /**
- * Test getCallDescriptionID method used to get the accessibility description for calls.
- * Test case where an outgoing call is made to a known number and there is a history of
- * many calls for this caller.
- */
- public void testGetCallDescriptionID_OutgoingMultiple() {
- int[] callTypes = new int[] {
- AppCompatConstants.CALLS_OUTGOING_TYPE,
- AppCompatConstants.CALLS_OUTGOING_TYPE
- };
- assertEquals(R.string.description_outgoing_call,
- mHelper.getCallDescriptionStringID(callTypes, true));
- }
-
- /**
- * Test getCallDescription method used to get the accessibility description for calls.
- * For read voicemail calls, we should have "Voicemail" in the description.
- */
- public void testGetCallDescriptionID_Voicemail() {
- int[] callTypes = new int[] {AppCompatConstants.CALLS_VOICEMAIL_TYPE};
- assertEquals(R.string.description_read_voicemail,
- mHelper.getCallDescriptionStringID(callTypes, true));
- }
-
- /**
- * Test getCallDescription method used to get the accessibility description for calls.
- * For unread voicemail calls, we should have "Unread voicemail" in the description.
- */
- public void testGetCallDescriptionID_UnreadVoicemail() {
- int[] callTypes = new int[] {AppCompatConstants.CALLS_VOICEMAIL_TYPE};
- assertEquals(R.string.description_unread_voicemail,
- mHelper.getCallDescriptionStringID(callTypes, false));
- }
-
- /**
- * Test getCallDescription method used to get the accessibility description for calls.
- * Test that the "X calls" message is not present if there is only a single call.
- */
- public void testGetCallDescription_NumCallsSingle() {
- PhoneCallDetails details =
- getPhoneCallDetailsWithTypes(AppCompatConstants.CALLS_VOICEMAIL_TYPE);
- CharSequence description = mHelper.getCallDescription(details);
-
- // Rather than hard coding the "X calls" string message, we'll generate it with an empty
- // number of calls, and trim the resulting string. This gets us just the word "calls",
- // and ensures any trivial changes to that string resource won't unnecessarily break
- // the unit test.
- assertFalse(description.toString()
- .contains(this.mResources.getString(R.string.description_num_calls, "").trim()));
- }
-
- /**
- * Test getCallDescription method used to get the accessibility description for calls.
- * Test that the "X calls" message is present if there are many calls.
- */
- public void testGetCallDescription_NumCallsMultiple() {
- PhoneCallDetails details = getPhoneCallDetailsWithTypes(
- AppCompatConstants.CALLS_VOICEMAIL_TYPE, AppCompatConstants.CALLS_INCOMING_TYPE);
- CharSequence description = mHelper.getCallDescription(details);
- assertTrue(description.toString()
- .contains(this.mResources.getString(R.string.description_num_calls, 2)));
- }
-
- /**
- * Test getCallDescription method used to get the accessibility description for calls.
- * Test that the "Video call." message is present if the call had video capability.
- */
- public void testGetCallDescription_Video() {
- PhoneCallDetails details = getPhoneCallDetailsWithTypes(
- AppCompatConstants.CALLS_INCOMING_TYPE, AppCompatConstants.CALLS_INCOMING_TYPE);
- details.features = Calls.FEATURES_VIDEO;
-
- CharSequence description = mHelper.getCallDescription(details);
- final boolean isVideoEnabled = CallUtil.isVideoEnabled(getContext());
- assertTrue(description.toString()
- .contains(this.mResources.getString(
- isVideoEnabled
- ? R.string.description_video_call
- : R.string.description_num_calls,
- 2)));
- }
-
- /** Asserts that the primary action view does not have a call intent. */
- private void assertNoCallIntent() {
- Object intentProvider = mViewHolder.primaryActionView.getTag();
- // The intent provider should be null as there is no ability to make a call.
- assertNull(intentProvider);
- }
-
- /** Sets the details of a phone call using the specified phone number. */
- private void setPhoneCallDetailsWithNumber(String number,
- int presentation, String formattedNumber) {
- setPhoneCallDetailsWithNumberTypeAndPostDialDigits(number, "", presentation,
- formattedNumber, Calls.INCOMING_TYPE);
- }
-
- /** Sets the details of a phone call using the specified phone number. */
- private void setPhoneCallDetailsWithNumberAndType(String number,
- int presentation, String formattedNumber, int callType) {
- setPhoneCallDetailsWithNumberTypeAndPostDialDigits(number, "", presentation,
- formattedNumber, callType);
- }
-
- /** Sets the details of a phone call using the specified phone number and post-dial digits. */
- private void setPhoneCallDetailsWithNumberTypeAndPostDialDigits(String number,
- String postDialDigits, int presentation, String formattedNumber, int callType) {
- PhoneCallDetails details = getPhoneCallDetails(
- number, postDialDigits, presentation, formattedNumber);
- details.callTypes = new int[] {callType};
- mHelper.setPhoneCallDetails(mViewHolder, details);
- }
-
- private PhoneCallDetails getPhoneCallDetails(
- String number, String postDialDigits, int presentation, String formattedNumber) {
- PhoneCallDetails details = new PhoneCallDetails(
- mContext,
- number,
- presentation,
- formattedNumber,
- postDialDigits,
- false /* isVoicemail */);
- setDefaultDetails(details);
- return details;
- }
-
- /** Returns the details of a phone call using the specified call type. */
- private PhoneCallDetails getPhoneCallDetailsWithTypes(int... types) {
- PhoneCallDetails details = new PhoneCallDetails(
- mContext,
- TEST_NUMBER,
- Calls.PRESENTATION_ALLOWED,
- TEST_FORMATTED_NUMBER,
- "",
- false /* isVoicemail */);
- setDefaultDetails(details);
- details.callTypes = types;
- return details;
- }
-
- private void setDefaultDetails(PhoneCallDetails details) {
- details.callTypes = new int[] {Calls.INCOMING_TYPE};
- details.countryIso = TEST_COUNTRY_ISO;
- details.date = TEST_DATE;
- details.duration = TEST_DURATION;
- details.geocode = TEST_GEOCODE;
- }
-}
diff --git a/tests/src/com/android/dialer/calllog/CallLogNotificationsHelperTest.java b/tests/src/com/android/dialer/calllog/CallLogNotificationsHelperTest.java
deleted file mode 100644
index b5950d8b8..000000000
--- a/tests/src/com/android/dialer/calllog/CallLogNotificationsHelperTest.java
+++ /dev/null
@@ -1,137 +0,0 @@
-/*
- * Copyright (C) 2016 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 static org.mockito.Matchers.anyString;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.when;
-
-import android.provider.CallLog;
-import android.test.AndroidTestCase;
-
-import com.android.dialer.R;
-
-/**
- * Unit tests for {@link CallLogNotificationsHelper}.
- */
-public class CallLogNotificationsHelperTest extends AndroidTestCase {
- private static final String TEST_COUNTRY_ISO = "US";
- private static final String TEST_VALID_NUMBER = "14125555555";
- private static final String TEST_INVALID_NUMBER = "asdna128937123";
- private static final String TEST_FORMATTED_NUMBER = "1 412-555-5555";
- private static final String TEST_E164_NUMBER = "+14125555555";
-
- private final ContactInfoHelper mContactInfoHelper = mock(ContactInfoHelper.class);
-
- private CallLogNotificationsHelper mCallLogNotificationsHelper;
-
- @Override
- public void setUp() throws Exception {
- super.setUp();
- mCallLogNotificationsHelper = new CallLogNotificationsHelper(getContext(),
- null, null, mContactInfoHelper, TEST_COUNTRY_ISO);
- }
-
- public void testGetContactInfo_ValidNumberValidPresentationValidIso() {
- ContactInfo contactInfo = getContactInfo(
- TEST_VALID_NUMBER, CallLog.Calls.PRESENTATION_UNKNOWN, TEST_COUNTRY_ISO);
- assertEquals(TEST_VALID_NUMBER, contactInfo.number);
- assertEquals(mContext.getResources().getString(R.string.unknown), contactInfo.name);
- assertEquals(TEST_E164_NUMBER, contactInfo.normalizedNumber);
- }
-
- public void testGetContactInfo_ValidNumberInvalidPresentationValidIso() {
- ContactInfo contactInfo = getContactInfo(TEST_VALID_NUMBER, -1, TEST_COUNTRY_ISO);
- assertEquals(TEST_VALID_NUMBER, contactInfo.number);
- assertEquals(TEST_FORMATTED_NUMBER, contactInfo.name);
- assertEquals(TEST_E164_NUMBER, contactInfo.normalizedNumber);
- }
-
- public void testGetContactInfo_ValidNumberValidPresentationNullIso() {
- ContactInfo contactInfo = getContactInfo(
- TEST_VALID_NUMBER, CallLog.Calls.PRESENTATION_UNKNOWN, null);
- assertEquals(TEST_VALID_NUMBER, contactInfo.number);
- assertEquals(mContext.getResources().getString(R.string.unknown), contactInfo.name);
- assertEquals(TEST_E164_NUMBER, contactInfo.normalizedNumber);
- }
-
- public void testGetContactInfo_ValidNumberInvalidPresentationNullIso() {
- ContactInfo contactInfo = getContactInfo(
- TEST_VALID_NUMBER, -1, null);
- assertEquals(TEST_VALID_NUMBER, contactInfo.number);
- assertEquals(TEST_FORMATTED_NUMBER, contactInfo.name);
- assertEquals(TEST_E164_NUMBER, contactInfo.normalizedNumber);
- }
-
- public void testGetContactInfo_NullNumberValidPresentationValidIso() {
- ContactInfo contactInfo = getContactInfo(
- null, CallLog.Calls.PRESENTATION_UNKNOWN, TEST_COUNTRY_ISO);
- assertEquals("", contactInfo.number);
- assertEquals(mContext.getResources().getString(R.string.unknown), contactInfo.name);
- assertNull(contactInfo.normalizedNumber);
- }
-
- public void testGetContactInfo_NullNumberInvalidPresentationValidIso() {
- ContactInfo contactInfo = getContactInfo(null, -1, TEST_COUNTRY_ISO);
- assertEquals("", contactInfo.number);
- assertEquals(mContext.getResources().getString(R.string.unknown), contactInfo.name);
- assertNull(contactInfo.normalizedNumber);
- }
-
- public void testGetContactInfo_NullNumberValidPresentationNullIso() {
- ContactInfo contactInfo = getContactInfo(null, CallLog.Calls.PRESENTATION_RESTRICTED, null);
- assertEquals("", contactInfo.number);
- assertEquals(mContext.getResources().getString(R.string.private_num), contactInfo.name);
- assertNull(contactInfo.normalizedNumber);
- }
-
- public void testGetContactInfo_NullNumberInValidPresentationNullIso() {
- ContactInfo contactInfo = getContactInfo(null, -1, null);
- assertEquals("", contactInfo.number);
- assertEquals(mContext.getResources().getString(R.string.unknown), contactInfo.name);
- assertNull(contactInfo.normalizedNumber);
- }
-
- public void testGetContactInfo_InvalidNumberInValidPresentationNullIso() {
- ContactInfo contactInfo = getContactInfo(TEST_INVALID_NUMBER, -1, null);
- assertEquals(TEST_INVALID_NUMBER, contactInfo.name);
- assertEquals(TEST_INVALID_NUMBER, contactInfo.formattedNumber);
- assertEquals(null, contactInfo.normalizedNumber);
- }
-
- public void testGetContactInfo_NonNullCachedLookup() {
- when(mContactInfoHelper.lookupNumber(anyString(), anyString())).thenReturn(null);
- ContactInfo contactInfo = getContactInfo(TEST_VALID_NUMBER, -1, TEST_COUNTRY_ISO);
- assertEquals(TEST_VALID_NUMBER, contactInfo.number);
- assertEquals(TEST_FORMATTED_NUMBER, contactInfo.formattedNumber);
- }
-
- public void testGetContactInfo_NullCachedLookup() {
- ContactInfo cachedContactInfo = new ContactInfo();
- cachedContactInfo.number = TEST_VALID_NUMBER;
- cachedContactInfo.formattedNumber = TEST_FORMATTED_NUMBER;
- when(mContactInfoHelper.lookupNumber(anyString(), anyString()))
- .thenReturn(cachedContactInfo);
- ContactInfo contactInfo = getContactInfo(TEST_VALID_NUMBER, -1, TEST_COUNTRY_ISO);
- assertEquals(TEST_VALID_NUMBER, contactInfo.number);
- assertEquals(TEST_FORMATTED_NUMBER, contactInfo.name);
- }
-
- private ContactInfo getContactInfo(String number, int presentation, String countryIso) {
- return mCallLogNotificationsHelper.getContactInfo(number, presentation, countryIso);
- }
-}
diff --git a/tests/src/com/android/dialer/calllog/CallLogQueryTestUtils.java b/tests/src/com/android/dialer/calllog/CallLogQueryTestUtils.java
deleted file mode 100644
index c2cfedbac..000000000
--- a/tests/src/com/android/dialer/calllog/CallLogQueryTestUtils.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * 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 static junit.framework.Assert.assertEquals;
-
-import android.provider.CallLog.Calls;
-
-import com.android.contacts.common.compat.CompatUtils;
-
-/**
- * Helper class to create test values for {@link CallLogQuery}.
- */
-public class CallLogQueryTestUtils {
- public static Object[] createTestValues() {
- Object[] values;
- if (CompatUtils.isNCompatible()) {
- values = new Object[]{
- 0L, "", 0L, 0L, Calls.INCOMING_TYPE, "", "", "", null, 0, null, null, null,
- null, 0L, null, 0, Calls.PRESENTATION_ALLOWED, null, null, 0, null, null,
- null, "", ""
- };
- } else {
- values = new Object[]{
- 0L, "", 0L, 0L, Calls.INCOMING_TYPE, "", "", "", null, 0, null, null, null,
- null, 0L, null, 0, Calls.PRESENTATION_ALLOWED, null, null, 0, null, null, null
- };
- }
- assertEquals(CallLogQuery._PROJECTION.length, values.length);
- return values;
- }
-}
diff --git a/tests/src/com/android/dialer/calllog/ContactInfoHelperTest.java b/tests/src/com/android/dialer/calllog/ContactInfoHelperTest.java
deleted file mode 100644
index df385f425..000000000
--- a/tests/src/com/android/dialer/calllog/ContactInfoHelperTest.java
+++ /dev/null
@@ -1,160 +0,0 @@
-/*
- * Copyright (C) 2015 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.net.Uri;
-import android.provider.ContactsContract;
-import android.provider.ContactsContract.Contacts;
-import android.provider.ContactsContract.PhoneLookup;
-import android.test.AndroidTestCase;
-import android.test.suitebuilder.annotation.MediumTest;
-
-import com.android.contacts.common.ContactsUtils;
-import com.android.contacts.common.test.mocks.ContactsMockContext;
-import com.android.contacts.common.test.mocks.MockContentProvider.Query;
-
-import junit.framework.Assert;
-
-@MediumTest
-public class ContactInfoHelperTest extends AndroidTestCase {
-
- private static final String TEST_COUNTRY_ISO = "US";
- private static final String TEST_DISPLAY_NAME = "Display Name";
- private static final String TEST_DISPLAY_NAME_ALTERNATIVE = "Name, Display";
- private static final String[] TEST_DISPLAY_NAME_ALTERNATIVE_ROW = new String[]{
- TEST_DISPLAY_NAME_ALTERNATIVE};
- private static final String TEST_LOOKUP_KEY = "lookupKey";
- private static final String[] TEST_LOOKUP_ROW = new String[]{null, TEST_DISPLAY_NAME,
- null, null, null, null, null, TEST_LOOKUP_KEY, null};
-
- private Uri displayNameAlternativeUri;
- private ContactsMockContext mContext;
- private ContactInfo mContactInfo;
- private ContactInfoHelper mContactInfoHelper;
-
- @Override
- public void setUp() throws Exception {
- super.setUp();
-
- displayNameAlternativeUri = Uri.withAppendedPath(Contacts.CONTENT_LOOKUP_URI,
- TEST_LOOKUP_KEY);
- mContext = new ContactsMockContext(getContext());
- mContactInfo = new ContactInfo();
- mContactInfo.name = TEST_DISPLAY_NAME;
- mContactInfo.nameAlternative = TEST_DISPLAY_NAME_ALTERNATIVE;
- mContactInfoHelper = new ContactInfoHelper(mContext, TEST_COUNTRY_ISO);
- }
-
- public void testLookupContactFromUri_NullUri() {
- Assert.assertNull(mContactInfoHelper.lookupContactFromUri(null, false));
- }
-
- public void testLookupContactFromUri_NoResults() {
- setUpQueryExpectations(PhoneLookup.ENTERPRISE_CONTENT_FILTER_URI,
- PhoneQuery.getPhoneLookupProjection(PhoneLookup.ENTERPRISE_CONTENT_FILTER_URI));
-
- Assert.assertEquals(ContactInfo.EMPTY, mContactInfoHelper.lookupContactFromUri(
- PhoneLookup.ENTERPRISE_CONTENT_FILTER_URI, false));
- mContext.verify();
- }
-
- public void testLookupContactFromUri_NoDisplayNameAlternative() {
- setUpQueryExpectations(PhoneLookup.ENTERPRISE_CONTENT_FILTER_URI,
- PhoneQuery.getPhoneLookupProjection(PhoneLookup.ENTERPRISE_CONTENT_FILTER_URI),
- TEST_LOOKUP_ROW);
- setUpQueryExpectations(displayNameAlternativeUri,
- PhoneQuery.DISPLAY_NAME_ALTERNATIVE_PROJECTION);
-
- ContactInfo contactInfo = mContactInfoHelper.lookupContactFromUri(
- PhoneLookup.ENTERPRISE_CONTENT_FILTER_URI, false);
- Assert.assertEquals(TEST_DISPLAY_NAME, contactInfo.name);
- Assert.assertNull(contactInfo.nameAlternative);
- mContext.verify();
- }
-
- public void testLookupContactFromUri_HasDisplayNameAlternative() {
- setUpQueryExpectations(PhoneLookup.ENTERPRISE_CONTENT_FILTER_URI,
- PhoneQuery.getPhoneLookupProjection(PhoneLookup.ENTERPRISE_CONTENT_FILTER_URI),
- TEST_LOOKUP_ROW);
- setUpQueryExpectations(displayNameAlternativeUri,
- PhoneQuery.DISPLAY_NAME_ALTERNATIVE_PROJECTION, TEST_DISPLAY_NAME_ALTERNATIVE_ROW);
-
- ContactInfo contactInfo = mContactInfoHelper.lookupContactFromUri(
- PhoneLookup.ENTERPRISE_CONTENT_FILTER_URI, false);
- Assert.assertEquals(TEST_DISPLAY_NAME, contactInfo.name);
- Assert.assertEquals(TEST_DISPLAY_NAME_ALTERNATIVE, contactInfo.nameAlternative);
- mContext.verify();
- }
-
- public void testLookupDisplayNameAlternative_NullLookup() {
- Assert.assertNull(mContactInfoHelper.lookUpDisplayNameAlternative(mContext, null,
- ContactsUtils.USER_TYPE_CURRENT, null));
- }
-
- public void testLookupDisplayNameAlternative_NoResults() {
- setUpQueryExpectations(displayNameAlternativeUri,
- PhoneQuery.DISPLAY_NAME_ALTERNATIVE_PROJECTION);
- Assert.assertNull(mContactInfoHelper.lookUpDisplayNameAlternative(mContext,
- TEST_LOOKUP_KEY, ContactsUtils.USER_TYPE_CURRENT, null));
- mContext.verify();
- }
-
- public void testLookupDisplayNameAlternative_HasDisplayNameAlternative() {
- setUpQueryExpectations(displayNameAlternativeUri,
- PhoneQuery.DISPLAY_NAME_ALTERNATIVE_PROJECTION, TEST_DISPLAY_NAME_ALTERNATIVE_ROW);
- Assert.assertEquals(TEST_DISPLAY_NAME_ALTERNATIVE,
- mContactInfoHelper.lookUpDisplayNameAlternative(mContext, TEST_LOOKUP_KEY
- , ContactsUtils.USER_TYPE_CURRENT, null));
- mContext.verify();
- }
-
- public void testLookupDisplayNameAlternative_EnterpriseLocalDirectory() {
- Assert.assertNull(mContactInfoHelper.lookUpDisplayNameAlternative(mContext, TEST_LOOKUP_KEY,
- ContactsUtils.USER_TYPE_WORK, ContactsContract.Directory.ENTERPRISE_DEFAULT));
- Assert.assertNull(mContactInfoHelper.lookUpDisplayNameAlternative(mContext, TEST_LOOKUP_KEY,
- ContactsUtils.USER_TYPE_CURRENT, ContactsContract.Directory.ENTERPRISE_DEFAULT));
- }
-
- public void testLookupDisplayNameAlternative_EnterpriseRemoteDirectory() {
- Assert.assertNull(mContactInfoHelper.lookUpDisplayNameAlternative(mContext, TEST_LOOKUP_KEY,
- ContactsUtils.USER_TYPE_WORK,
- ContactsContract.Directory.ENTERPRISE_DEFAULT + 10));
- Assert.assertNull(mContactInfoHelper.lookUpDisplayNameAlternative(mContext, TEST_LOOKUP_KEY,
- ContactsUtils.USER_TYPE_CURRENT,
- ContactsContract.Directory.ENTERPRISE_DEFAULT + 10));
- }
-
- public void testLookupDisplayNameAlternative_PersonalRemoteDirectory() {
- Assert.assertNull(mContactInfoHelper.lookUpDisplayNameAlternative(mContext, null,
- ContactsUtils.USER_TYPE_CURRENT,
- ContactsContract.Directory.DEFAULT + 10));
- }
-
- /*
- * Sets up query expectations to return the given row for all queries for the given
- * uri and projection. If row is null, an empty cursor is returned for query calls
- */
- private void setUpQueryExpectations(Uri uri, String[] projection, String...row) {
- Query query = mContext.getContactsProvider().expectQuery(uri)
- .withProjection(projection).withAnySelection().withAnySortOrder();
- if (row == null || row.length == 0) {
- query.returnEmptyCursor();
- return;
- }
- query.returnRow(row);
- }
-}
diff --git a/tests/src/com/android/dialer/calllog/GroupingListAdapterTests.java b/tests/src/com/android/dialer/calllog/GroupingListAdapterTests.java
deleted file mode 100644
index 4d8cb9cc0..000000000
--- a/tests/src/com/android/dialer/calllog/GroupingListAdapterTests.java
+++ /dev/null
@@ -1,173 +0,0 @@
-/*
- * Copyright (C) 2015 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.database.Cursor;
-import android.database.MatrixCursor;
-import android.support.v7.widget.RecyclerView;
-import android.test.AndroidTestCase;
-import android.test.suitebuilder.annotation.MediumTest;
-import android.text.TextUtils;
-import android.view.View;
-import android.view.ViewGroup;
-
-/**
- * Tests for {@link GroupingListAdapter}.
- *
- * Running all tests:
- *
- * adb shell am instrument -e class com.android.dialer.calllog.GroupingListAdapterTests \
- * -w com.android.dialer.tests/android.test.InstrumentationTestRunner
- */
-@MediumTest
-public class GroupingListAdapterTests extends AndroidTestCase {
-
- static private final String[] PROJECTION = new String[] {
- "_id",
- "group",
- };
-
- private static final int GROUPING_COLUMN_INDEX = 1;
-
- private MatrixCursor mCursor;
- private long mNextId;
-
- private GroupingListAdapter mAdapter = new GroupingListAdapter(null) {
-
- @Override
- protected void addGroups(Cursor cursor) {
- int count = cursor.getCount();
- int groupItemCount = 1;
- cursor.moveToFirst();
- String currentValue = cursor.getString(GROUPING_COLUMN_INDEX);
- for (int i = 1; i < count; i++) {
- cursor.moveToNext();
- String value = cursor.getString(GROUPING_COLUMN_INDEX);
- if (TextUtils.equals(value, currentValue)) {
- groupItemCount++;
- } else {
- addGroup(i - groupItemCount, groupItemCount);
- groupItemCount = 1;
- currentValue = value;
- }
- }
- addGroup(count - groupItemCount, groupItemCount);
- }
-
- @Override
- protected void addVoicemailGroups(Cursor c) {
- // Do nothing.
- }
-
- @Override
- public void onContentChanged() {
- // Do nothing.
- }
-
- @Override
- public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int position) {
- return null;
- }
-
- @Override
- public void onBindViewHolder(RecyclerView.ViewHolder viewHolder, int position) {
- // Do nothing.
- }
- };
-
- private void buildCursor(String... numbers) {
- mCursor = new MatrixCursor(PROJECTION);
- mNextId = 1;
- for (String number : numbers) {
- mCursor.addRow(new Object[]{mNextId, number});
- mNextId++;
- }
- }
-
- public void testGroupingWithoutGroups() {
- buildCursor("1", "2", "3");
- mAdapter.changeCursor(mCursor);
-
- assertEquals(3, mAdapter.getItemCount());
- assertMetadata(0, 1, "1");
- assertMetadata(1, 1, "2");
- assertMetadata(2, 1, "3");
- }
-
- public void testGroupingWithGroupAtTheBeginning() {
- buildCursor("1", "1", "2");
- mAdapter.changeCursor(mCursor);
-
- assertEquals(2, mAdapter.getItemCount());
- assertMetadata(0, 2, "1");
- assertMetadata(1, 1, "2");
- }
-
- public void testGroupingWithGroupInTheMiddle() {
- buildCursor("1", "2", "2", "2", "3");
- mAdapter.changeCursor(mCursor);
-
- assertEquals(3, mAdapter.getItemCount());
- assertMetadata(0, 1, "1");
- assertMetadata(1, 3, "2");
- assertMetadata(2, 1, "3");
- }
-
- public void testGroupingWithGroupAtTheEnd() {
- buildCursor("1", "2", "3", "3", "3");
- mAdapter.changeCursor(mCursor);
-
- assertEquals(3, mAdapter.getItemCount());
- assertMetadata(0, 1, "1");
- assertMetadata(1, 1, "2");
- assertMetadata(2, 3, "3");
- }
-
- public void testGroupingWithMultipleGroups() {
- buildCursor("1", "2", "2", "3", "4", "4", "5", "5", "6");
- mAdapter.changeCursor(mCursor);
-
- assertEquals(6, mAdapter.getItemCount());
- assertMetadata(0, 1, "1");
- assertMetadata(1, 2, "2");
- assertMetadata(2, 1, "3");
- assertMetadata(3, 2, "4");
- assertMetadata(4, 2, "5");
- assertMetadata(5, 1, "6");
- }
-
- public void testGroupDescriptorArrayGrowth() {
- String[] numbers = new String[500];
- for (int i = 0; i < numbers.length; i++) {
-
- // Make groups of 2
- numbers[i] = String.valueOf((i / 2) * 2);
- }
-
- buildCursor(numbers);
- mAdapter.changeCursor(mCursor);
-
- assertEquals(250, mAdapter.getItemCount());
- }
-
- private void assertMetadata(int listPosition, int groupSize, String objectValue) {
- assertEquals(groupSize, mAdapter.getGroupSize(listPosition));
- MatrixCursor cursor = (MatrixCursor) mAdapter.getItem(listPosition);
- assertEquals(objectValue, cursor.getString(GROUPING_COLUMN_INDEX));
- }
-}
diff --git a/tests/src/com/android/dialer/calllog/PhoneAccountUtilsTest.java b/tests/src/com/android/dialer/calllog/PhoneAccountUtilsTest.java
deleted file mode 100644
index f2d0856bd..000000000
--- a/tests/src/com/android/dialer/calllog/PhoneAccountUtilsTest.java
+++ /dev/null
@@ -1,104 +0,0 @@
-/*
- * Copyright (C) 2016 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.ComponentName;
-import android.telecom.PhoneAccountHandle;
-import android.test.AndroidTestCase;
-import android.test.suitebuilder.annotation.SmallTest;
-
-public class PhoneAccountUtilsTest extends AndroidTestCase {
-
- private static final String VALID_COMPONENT_NAME =
- "com.android.dialer.calllog/com.android.dialer.calllog.PhoneAccountUtilsTest";
- private static final String VALID_ACCOUNT_ID = "Account1";
-
- @SmallTest
- public void testGetAccount_CorrectParams() {
- ComponentName correctComponentName =
- ComponentName.unflattenFromString(VALID_COMPONENT_NAME);
- PhoneAccountHandle correctPhoneAccountHandle = new PhoneAccountHandle(correctComponentName,
- VALID_ACCOUNT_ID);
-
- PhoneAccountHandle testPhoneAccountHandle =
- PhoneAccountUtils.getAccount(VALID_COMPONENT_NAME, VALID_ACCOUNT_ID);
-
- assertTrue(correctPhoneAccountHandle.equals(testPhoneAccountHandle));
- }
-
- @SmallTest
- public void testGetAccount_ComponentStringNoClassName() {
- final String malformedComponentName = "com.android.dialer.calllog/";
-
- PhoneAccountHandle testPhoneAccountHandle =
- PhoneAccountUtils.getAccount(malformedComponentName, VALID_ACCOUNT_ID);
-
- assertNull(testPhoneAccountHandle);
- }
-
- @SmallTest
- public void testGetAccount_ComponentStringInvalid() {
- final String malformedComponentName = "com.android.dialer.calllog";
-
- PhoneAccountHandle testPhoneAccountHandle =
- PhoneAccountUtils.getAccount(malformedComponentName, VALID_ACCOUNT_ID);
-
- assertNull(testPhoneAccountHandle);
- }
-
- @SmallTest
- public void testGetAccount_NoComponentName() {
- final String blankComponentName = "";
-
- PhoneAccountHandle testPhoneAccountHandle =
- PhoneAccountUtils.getAccount(blankComponentName, VALID_ACCOUNT_ID);
-
- assertNull(testPhoneAccountHandle);
- }
-
- @SmallTest
- public void testGetAccount_NoAccountId() {
- final String blankAccountId = "";
-
- PhoneAccountHandle testPhoneAccountHandle =
- PhoneAccountUtils.getAccount(VALID_COMPONENT_NAME, blankAccountId);
-
- assertNull(testPhoneAccountHandle);
- }
-
- @SmallTest
- public void testGetAccount_NoAccountIdOrComponentName() {
- final String blankComponentName = "";
- final String blankAccountId = "";
-
- PhoneAccountHandle testPhoneAccountHandle =
- PhoneAccountUtils.getAccount(VALID_COMPONENT_NAME, blankAccountId);
-
- assertNull(testPhoneAccountHandle);
- }
-
- @SmallTest
- public void testGetAccount_NullAccountIdAndComponentName() {
- final String blankComponentName = null;
- final String blankAccountId = null;
-
- PhoneAccountHandle testPhoneAccountHandle =
- PhoneAccountUtils.getAccount(VALID_COMPONENT_NAME, blankAccountId);
-
- assertNull(testPhoneAccountHandle);
- }
-}
diff --git a/tests/src/com/android/dialer/calllog/PhoneCallDetailsHelperTest.java b/tests/src/com/android/dialer/calllog/PhoneCallDetailsHelperTest.java
deleted file mode 100644
index 0c57fde3c..000000000
--- a/tests/src/com/android/dialer/calllog/PhoneCallDetailsHelperTest.java
+++ /dev/null
@@ -1,581 +0,0 @@
-/*
- * Copyright (C) 2010 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.ComponentName;
-import android.content.Context;
-import android.content.res.Resources;
-import android.provider.CallLog.Calls;
-import android.telecom.PhoneAccountHandle;
-import android.test.AndroidTestCase;
-import android.test.suitebuilder.annotation.MediumTest;
-import android.text.Html;
-import android.text.Spanned;
-import android.view.View;
-import android.widget.TextView;
-
-import com.android.dialer.PhoneCallDetails;
-import com.android.dialer.R;
-import com.android.dialer.calllog.calllogcache.TestTelecomCallLogCache;
-import com.android.dialer.util.AppCompatConstants;
-import com.android.dialer.util.LocaleTestUtils;
-
-import java.util.GregorianCalendar;
-import java.util.Locale;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
-/**
- * Unit tests for {@link PhoneCallDetailsHelper}.
- */
-@MediumTest
-public class PhoneCallDetailsHelperTest extends AndroidTestCase {
- /** The number to be used to access the voicemail. */
- private static final String TEST_VOICEMAIL_NUMBER = "125";
- /** The date of the call log entry. */
- private static final long TEST_DATE =
- new GregorianCalendar(2011, 5, 3, 13, 0, 0).getTimeInMillis();
- private static final long INJECTED_CURRENT_DATE =
- new GregorianCalendar(2011, 5, 4, 13, 0, 0).getTimeInMillis();
- /** A test duration value for phone calls. */
- private static final long TEST_DURATION = 62300;
- /** The number of the caller/callee in the log entry. */
- 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";
- /** 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";
- /** Empty geocode label */
- private static final String EMPTY_GEOCODE = "";
- /** Empty post-dial digits label */
- private static final String EMPTY_POSTDIAL = "";
- /** The number that the call was received via */
- private static final String TEST_VIA_NUMBER = "+16505551234";
- /** The Phone Account name that the Call was received on */
- private static final String TEST_ACCOUNT_LABEL = "T-Stationary";
-
- /** The object under test. */
- private PhoneCallDetailsHelper mHelper;
- /** The views to fill. */
- private PhoneCallDetailsViews mViews;
- private TextView mNameView;
- private LocaleTestUtils mLocaleTestUtils;
- private TestTelecomCallLogCache mPhoneUtils;
-
- private Context mContext;
-
- @Override
- protected void setUp() throws Exception {
- super.setUp();
- mContext = getContext();
- Resources resources = mContext.getResources();
- mPhoneUtils = new TestTelecomCallLogCache(mContext, TEST_VOICEMAIL_NUMBER,
- TEST_ACCOUNT_LABEL);
- mHelper = new PhoneCallDetailsHelper(mContext, resources, mPhoneUtils);
- mHelper.setCurrentTimeForTest(INJECTED_CURRENT_DATE);
- mViews = PhoneCallDetailsViews.createForTest(mContext);
- mNameView = new TextView(mContext);
- mLocaleTestUtils = new LocaleTestUtils(mContext);
- mLocaleTestUtils.setLocale(Locale.US);
- }
-
- @Override
- protected void tearDown() throws Exception {
- mLocaleTestUtils.restoreLocale();
- mNameView = null;
- mViews = null;
- mHelper = null;
- super.tearDown();
- }
-
- public void testSetPhoneCallDetails_Unknown() {
- setPhoneCallDetailsWithNumber("", Calls.PRESENTATION_UNKNOWN, "");
- assertNameEqualsResource(R.string.unknown);
- }
-
- public void testSetPhoneCallDetails_Private() {
- setPhoneCallDetailsWithNumber("", Calls.PRESENTATION_RESTRICTED, "");
- assertNameEqualsResource(R.string.private_num);
- }
-
- public void testSetPhoneCallDetails_Payphone() {
- setPhoneCallDetailsWithNumber("", Calls.PRESENTATION_PAYPHONE, "");
- assertNameEqualsResource(R.string.payphone);
- }
-
- public void testSetPhoneCallDetails_Voicemail() {
- setPhoneCallDetailsWithNumber(TEST_VOICEMAIL_NUMBER,
- Calls.PRESENTATION_ALLOWED, TEST_VOICEMAIL_NUMBER);
- assertNameEqualsResource(R.string.voicemail);
- }
-
- public void testSetPhoneCallDetails_ViaNumber() {
- setPhoneCallDetailsWithViaNumber(TEST_VIA_NUMBER);
- assertViaNumberEquals(TEST_VIA_NUMBER);
- }
-
- public void testSetPhoneCallDetails_NoViaNumber() {
- setDefaultPhoneCallDetailsNoViaNumber();
- assertCallAccountInvisible();
- }
-
- public void testSetPhoneCallDetails_AccountLabel() {
- setPhoneCallDetailsWithAccountHandle();
- assertAccountLabelEquals(TEST_ACCOUNT_LABEL);
- }
-
- public void testSetPhoneCallDetails_AccountHandleViaNumber() {
- setPhoneCallDetailsWithAccountLabelViaNumber(TEST_VIA_NUMBER);
- assertAccountLabelEquals(TEST_VIA_NUMBER, TEST_ACCOUNT_LABEL);
- }
-
- // Voicemail date string has 3 different formats depending on how long ago the call was placed
- public void testSetVoicemailPhoneCallDetails_Today() {
- setVoicemailPhoneCallDetailsWithDate(System.currentTimeMillis());
- assertLocationAndDateContains("Today at");
- }
-
- public void testSetVoicemailPhoneCallDetails_WithinCurrentYear() {
- mHelper.setCurrentTimeForTest(INJECTED_CURRENT_DATE);
- String formattedTestDate = "Jun 3 at 1:00 PM";
- setVoicemailPhoneCallDetailsWithDate(TEST_DATE);
- assertLocationAndDateContains(formattedTestDate);
- }
-
- public void testSetVoicemailPhoneCallDetails_OutsideCurrentYear() {
- mHelper.setCurrentTimeForTest(INJECTED_CURRENT_DATE);
- long testDate = new GregorianCalendar(2009, 5, 3, 13, 0, 0).getTimeInMillis();
- String formattedTestDate = "Jun 3, 2009 at 1:00 PM";
- setVoicemailPhoneCallDetailsWithDate(testDate);
- assertLocationAndDateContains(formattedTestDate);
- }
-
- public void testVoicemailLocationNotShownWithDate() {
- setVoicemailPhoneCallDetailsWithDate(TEST_DATE);
- assertLocationAndDateExactEquals("Jun 3 at 1:00 PM • 99:20");
- }
-
- public void testVoicemailDuration() {
- setVoicemailPhoneCallDetailsWithDuration(100);
- assertDurationExactEquals("01:40");
- }
-
- public void testVoicemailDuration_Capped() {
- setVoicemailPhoneCallDetailsWithDuration(TEST_DURATION);
- assertDurationExactEquals("99:20");
- }
-
- public void testVoicemailDuration_Zero() {
- setVoicemailPhoneCallDetailsWithDuration(0);
- assertLocationAndDateExactEquals("Jun 3 at 1:00 PM");
- }
-
- public void testVoicemailDuration_EvenMinute() {
- setVoicemailPhoneCallDetailsWithDuration(60);
- assertDurationExactEquals("01:00");
- }
-
- /** Asserts that a char sequence is actually a Spanned corresponding to the expected HTML. */
- private void assertEqualsHtml(String expectedHtml, CharSequence actualText) {
- // In order to contain HTML, the text should actually be a Spanned.
- assertTrue(actualText instanceof Spanned);
- Spanned actualSpanned = (Spanned) actualText;
- // Convert from and to HTML to take care of alternative formatting of HTML.
- assertEquals(Html.toHtml(Html.fromHtml(expectedHtml)), Html.toHtml(actualSpanned));
-
- }
-
- public void testSetPhoneCallDetails_Date() {
- mHelper.setCurrentTimeForTest(
- new GregorianCalendar(2011, 5, 3, 13, 0, 0).getTimeInMillis());
-
- setPhoneCallDetailsWithDate(
- new GregorianCalendar(2011, 5, 3, 13, 0, 0).getTimeInMillis());
- assertLocationAndDateContains("0 min. ago");
-
- setPhoneCallDetailsWithDate(
- new GregorianCalendar(2011, 5, 3, 12, 0, 0).getTimeInMillis());
- assertLocationAndDateContains("1 hr. ago");
-
- setPhoneCallDetailsWithDate(
- new GregorianCalendar(2011, 5, 2, 13, 0, 0).getTimeInMillis());
- assertLocationAndDateContains("Yesterday");
-
- setPhoneCallDetailsWithDate(
- new GregorianCalendar(2011, 5, 1, 13, 0, 0).getTimeInMillis());
- assertLocationAndDateContains("2 days ago");
- }
-
- public void testSetPhoneCallDetails_CallTypeIcons() {
- setPhoneCallDetailsWithCallTypeIcons(AppCompatConstants.CALLS_INCOMING_TYPE);
- assertCallTypeIconsEquals(AppCompatConstants.CALLS_INCOMING_TYPE);
-
- setPhoneCallDetailsWithCallTypeIcons(AppCompatConstants.CALLS_OUTGOING_TYPE);
- assertCallTypeIconsEquals(AppCompatConstants.CALLS_OUTGOING_TYPE);
-
- setPhoneCallDetailsWithCallTypeIcons(AppCompatConstants.CALLS_MISSED_TYPE);
- assertCallTypeIconsEquals(AppCompatConstants.CALLS_MISSED_TYPE);
-
- setPhoneCallDetailsWithCallTypeIcons(AppCompatConstants.CALLS_VOICEMAIL_TYPE);
- assertCallTypeIconsEquals(AppCompatConstants.CALLS_VOICEMAIL_TYPE);
- }
-
- /**
- * Tests a case where the video call feature is present.
- */
- public void testSetPhoneCallDetails_Video() {
- PhoneCallDetails details = getPhoneCallDetails();
- details.features = Calls.FEATURES_VIDEO;
- mHelper.setPhoneCallDetails(mViews, details);
-
- assertIsVideoCall(true);
- }
-
- /**
- * Tests a case where the video call feature is not present.
- */
- public void testSetPhoneCallDetails_NoVideo() {
- PhoneCallDetails details = getPhoneCallDetails();
- details.features = 0;
- mHelper.setPhoneCallDetails(mViews, details);
-
- assertIsVideoCall(false);
- }
-
- public void testSetPhoneCallDetails_MultipleCallTypeIcons() {
- setPhoneCallDetailsWithCallTypeIcons(
- AppCompatConstants.CALLS_INCOMING_TYPE,
- AppCompatConstants.CALLS_OUTGOING_TYPE);
- assertCallTypeIconsEquals(
- AppCompatConstants.CALLS_INCOMING_TYPE,
- AppCompatConstants.CALLS_OUTGOING_TYPE);
-
- setPhoneCallDetailsWithCallTypeIcons(
- AppCompatConstants.CALLS_MISSED_TYPE,
- AppCompatConstants.CALLS_MISSED_TYPE);
- assertCallTypeIconsEquals(
- AppCompatConstants.CALLS_MISSED_TYPE,
- AppCompatConstants.CALLS_MISSED_TYPE);
- }
-
- public void testSetPhoneCallDetails_MultipleCallTypeIconsLastOneDropped() {
- setPhoneCallDetailsWithCallTypeIcons(
- AppCompatConstants.CALLS_MISSED_TYPE,
- AppCompatConstants.CALLS_MISSED_TYPE,
- AppCompatConstants.CALLS_INCOMING_TYPE,
- AppCompatConstants.CALLS_OUTGOING_TYPE);
- assertCallTypeIconsEqualsPlusOverflow("(4)",
- AppCompatConstants.CALLS_MISSED_TYPE,
- AppCompatConstants.CALLS_MISSED_TYPE,
- AppCompatConstants.CALLS_INCOMING_TYPE);
- }
-
- public void testSetPhoneCallDetails_Geocode() {
- setPhoneCallDetailsWithNumberAndGeocode("+14125555555", "1-412-555-5555", "Pennsylvania");
- assertNameEquals("1-412-555-5555"); // The phone number is shown as the name.
- assertLocationAndDateContains("Pennsylvania"); // The geocode is shown as the label.
- }
-
- public void testSetPhoneCallDetails_NoGeocode() {
- setPhoneCallDetailsWithNumberAndGeocode("+14125555555", "1-412-555-5555", null);
- assertNameEquals("1-412-555-5555"); // The phone number is shown as the name.
- assertLocationAndDateContains(EMPTY_GEOCODE); // The empty geocode is shown as the label.
- }
-
- public void testSetPhoneCallDetails_EmptyGeocode() {
- setPhoneCallDetailsWithNumberAndGeocode("+14125555555", "1-412-555-5555", "");
- assertNameEquals("1-412-555-5555"); // The phone number is shown as the name.
- assertLocationAndDateContains(EMPTY_GEOCODE); // The empty geocode is shown as the label.
- }
-
- public void testSetPhoneCallDetails_NoGeocodeForVoicemail() {
- setPhoneCallDetailsWithNumberAndGeocode(TEST_VOICEMAIL_NUMBER, "", "United States");
- assertLocationAndDateContains(EMPTY_GEOCODE); // The empty geocode is shown as the label.
- }
-
- public void testSetPhoneCallDetails_Highlighted() {
- setPhoneCallDetailsWithNumber(TEST_VOICEMAIL_NUMBER,
- Calls.PRESENTATION_ALLOWED, "");
- }
-
- public void testSetCallDetailsHeader_NumberOnly() {
- setCallDetailsHeaderWithNumber(TEST_NUMBER, Calls.PRESENTATION_ALLOWED);
- assertEquals(View.VISIBLE, mNameView.getVisibility());
- assertEquals("1-412-255-5555", mNameView.getText().toString());
- }
-
- public void testSetCallDetailsHeader_UnknownNumber() {
- setCallDetailsHeaderWithNumber("", Calls.PRESENTATION_UNKNOWN);
- assertEquals(View.VISIBLE, mNameView.getVisibility());
- assertEquals("Unknown", mNameView.getText().toString());
- }
-
- public void testSetCallDetailsHeader_PrivateNumber() {
- setCallDetailsHeaderWithNumber("", Calls.PRESENTATION_RESTRICTED);
- assertEquals(View.VISIBLE, mNameView.getVisibility());
- assertEquals("Private number", mNameView.getText().toString());
- }
-
- public void testSetCallDetailsHeader_PayphoneNumber() {
- setCallDetailsHeaderWithNumber("", Calls.PRESENTATION_PAYPHONE);
- assertEquals(View.VISIBLE, mNameView.getVisibility());
- assertEquals("Payphone", mNameView.getText().toString());
- }
-
- public void testSetCallDetailsHeader_VoicemailNumber() {
- PhoneCallDetails details = getPhoneCallDetails(
- TEST_VOICEMAIL_NUMBER,
- Calls.PRESENTATION_ALLOWED,
- TEST_FORMATTED_NUMBER);
- mHelper.setCallDetailsHeader(mNameView, details);
- assertEquals(View.VISIBLE, mNameView.getVisibility());
- assertEquals("Voicemail", mNameView.getText().toString());
- }
-
- public void testSetCallDetailsHeader() {
- setCallDetailsHeader("John Doe");
- assertEquals(View.VISIBLE, mNameView.getVisibility());
- assertEquals("John Doe", mNameView.getText().toString());
- }
-
- public void testGetCallTypeOrLocation_Geocode() {
- assertEquals(TEST_GEOCODE, mHelper.getCallTypeOrLocation(getPhoneCallDetails()));
- }
-
- public void testGetCallTypeOrLocation_CallType() {
- PhoneCallDetails details = getPhoneCallDetails();
- details.geocode = null;
- details.numberType = Calls.INCOMING_TYPE;
- mHelper.setPhoneTypeLabelForTest("mobile");
- assertEquals("mobile", mHelper.getCallTypeOrLocation(details));
- }
-
- public void testGetCallTypeOrLocation_DisplayNumber() {
- PhoneCallDetails details = getPhoneCallDetails("", Calls.PRESENTATION_ALLOWED,
- TEST_FORMATTED_NUMBER);
- details.namePrimary = "name";
- assertEquals(TEST_FORMATTED_NUMBER, mHelper.getCallTypeOrLocation(details));
- }
-
- /** Asserts that the name text field contains the value of the given string resource. */
- private void assertNameEqualsResource(int resId) {
- assertNameEquals(getContext().getString(resId));
- }
-
- /** Asserts that the name text field contains the given string value. */
- private void assertNameEquals(String text) {
- assertEquals(text, mViews.nameView.getText().toString());
- }
-
- /** Asserts that the location and date text field contains the given string value. */
- private void assertLocationAndDateContains(String text) {
- assertTrue(mViews.callLocationAndDate.getText().toString().contains(text));
- }
-
- /** Asserts that the location and date text field exactly equals the given string value. */
- private void assertLocationAndDateExactEquals(String text) {
- assertEquals(text, mViews.callLocationAndDate.getText());
- }
-
- /** Asserts that the via number is correct. */
- private void assertViaNumberEquals(String text) {
- final String callAccountText =
- mContext.getResources().getString(R.string.description_via_number, text);
- assertEquals(callAccountText, mViews.callAccountLabel.getText());
- }
-
- /** Asserts that the account label is correct. */
- private void assertAccountLabelEquals(String text) {
- assertEquals(text, mViews.callAccountLabel.getText());
- }
-
- /** Asserts that the account label is correct when also showing the via number. */
- private void assertAccountLabelEquals(String viaNumber, String accountLabel) {
- final String viaNumberText =
- mContext.getResources().getString(R.string.description_via_number, viaNumber);
- assertEquals(accountLabel + " " + viaNumberText, mViews.callAccountLabel.getText());
- }
-
- /** Asserts that the call account label is invisible. */
- private void assertCallAccountInvisible() {
- assertEquals(mViews.callAccountLabel.getVisibility(), View.GONE);
- }
-
- /** Asserts that the duration is exactly as included in the location and date text field. */
- private void assertDurationExactEquals(String text) {
- Matcher matcher = Pattern.compile("(.*) (\\u2022) (\\d{2}:\\d{2})").matcher(
- mViews.callLocationAndDate.getText());
- assertEquals(true, matcher.matches());
- assertEquals(text, matcher.group(3));
- }
-
- /** Asserts that the video icon is shown. */
- private void assertIsVideoCall(boolean isVideoCall) {
- assertEquals(isVideoCall, mViews.callTypeIcons.isVideoShown());
- }
-
- /** Asserts that the call type contains the images with the given drawables. */
- private void assertCallTypeIconsEquals(int... ids) {
- assertEquals(ids.length, mViews.callTypeIcons.getCount());
- for (int index = 0; index < ids.length; ++index) {
- int id = ids[index];
- assertEquals(id, mViews.callTypeIcons.getCallType(index));
- }
- assertEquals(View.VISIBLE, mViews.callTypeIcons.getVisibility());
- }
-
- /**
- * Asserts that the call type contains the images with the given drawables and shows the given
- * text next to the icons.
- */
- private void assertCallTypeIconsEqualsPlusOverflow(String overflowText, int... ids) {
- assertEquals(ids.length, mViews.callTypeIcons.getCount());
- for (int index = 0; index < ids.length; ++index) {
- int id = ids[index];
- assertEquals(id, mViews.callTypeIcons.getCallType(index));
- }
- assertEquals(View.VISIBLE, mViews.callTypeIcons.getVisibility());
- assertTrue(mViews.callLocationAndDate.getText().toString().contains(overflowText));
- assertTrue(mViews.callLocationAndDate.getText().toString().contains("Yesterday"));
- }
-
- /** Sets the phone call details with default values and the given number. */
- private void setPhoneCallDetailsWithNumber(String number, int presentation,
- String formattedNumber) {
- PhoneCallDetails details = getPhoneCallDetails(number, presentation, formattedNumber);
- details.callTypes = new int[]{ AppCompatConstants.CALLS_VOICEMAIL_TYPE };
- mHelper.setPhoneCallDetails(mViews, details);
- }
-
- /** Sets the phone call details with default values and the given via number. */
- private void setPhoneCallDetailsWithViaNumber(String viaNumber) {
- PhoneCallDetails details = getPhoneCallDetails();
- mPhoneUtils.setAccountLabel("");
- details.viaNumber = viaNumber;
- mHelper.setPhoneCallDetails(mViews, details);
- }
-
- /** Sets the phone call details with an account handle. */
- private void setPhoneCallDetailsWithAccountHandle() {
- PhoneCallDetails details = getPhoneCallDetails();
- details.accountHandle = new PhoneAccountHandle(new ComponentName("",""), "");
- mHelper.setPhoneCallDetails(mViews, details);
- }
-
- /** Sets the phone call details with an account handle and via number */
- private void setPhoneCallDetailsWithAccountLabelViaNumber(String viaNumber) {
- PhoneCallDetails details = getPhoneCallDetails();
- details.viaNumber = viaNumber;
- details.accountHandle = new PhoneAccountHandle(new ComponentName("",""), "");
- mHelper.setPhoneCallDetails(mViews, details);
- }
-
- /** Populates the phone call details with the Defaults. */
- private void setDefaultPhoneCallDetailsNoViaNumber() {
- PhoneCallDetails details = getPhoneCallDetails();
- mPhoneUtils.setAccountLabel("");
- mHelper.setPhoneCallDetails(mViews, details);
- }
-
- /** Sets the phone call details with default values and the given number. */
- private void setPhoneCallDetailsWithNumberAndGeocode(
- String number, String formattedNumber, String geocodedLocation) {
- PhoneCallDetails details = getPhoneCallDetails(
- number, Calls.PRESENTATION_ALLOWED, formattedNumber);
- details.geocode = geocodedLocation;
- mHelper.setPhoneCallDetails(mViews, details);
- }
-
- /** Sets the phone call details with default values and the given date. */
- private void setPhoneCallDetailsWithDate(long date) {
- PhoneCallDetails details = getPhoneCallDetails();
- details.date = date;
- mHelper.setPhoneCallDetails(mViews, details);
- }
-
- private void setVoicemailPhoneCallDetailsWithDate(long date) {
- PhoneCallDetails details = getPhoneCallDetails();
- details.date = date;
- details.callTypes = new int[] {Calls.VOICEMAIL_TYPE};
- mHelper.setPhoneCallDetails(mViews, details);
- }
-
- /** Sets the voice mail details with default values and the given duration. */
- private void setVoicemailPhoneCallDetailsWithDuration(long duration) {
- PhoneCallDetails details = getPhoneCallDetails();
- details.duration = duration;
- details.callTypes = new int[] {Calls.VOICEMAIL_TYPE};
- mHelper.setPhoneCallDetails(mViews, details);
- }
-
- /** Sets the phone call details with default values and the given call types using icons. */
- private void setPhoneCallDetailsWithCallTypeIcons(int... callTypes) {
- PhoneCallDetails details = getPhoneCallDetails();
- details.callTypes = callTypes;
- mHelper.setPhoneCallDetails(mViews, details);
- }
-
- private void setCallDetailsHeaderWithNumber(String number, int presentation) {
- mHelper.setCallDetailsHeader(mNameView,
- getPhoneCallDetails(number, presentation, TEST_FORMATTED_NUMBER));
- }
-
- private void setCallDetailsHeader(String name) {
- PhoneCallDetails details = getPhoneCallDetails();
- details.namePrimary = name;
- mHelper.setCallDetailsHeader(mNameView, details);
- }
-
- private PhoneCallDetails getPhoneCallDetails() {
- PhoneCallDetails details = new PhoneCallDetails(
- mContext,
- TEST_NUMBER,
- Calls.PRESENTATION_ALLOWED,
- TEST_FORMATTED_NUMBER,
- EMPTY_POSTDIAL,
- false /* isVoicemail */);
- setDefaultDetails(details);
- return details;
- }
-
- private PhoneCallDetails getPhoneCallDetails(
- String number, int presentation, String formattedNumber) {
- PhoneCallDetails details = new PhoneCallDetails(
- mContext,
- number,
- presentation,
- formattedNumber,
- EMPTY_POSTDIAL,
- isVoicemail(number));
- setDefaultDetails(details);
- return details;
- }
-
- private void setDefaultDetails(PhoneCallDetails details) {
- details.callTypes = new int[]{ AppCompatConstants.CALLS_INCOMING_TYPE };
- details.countryIso = TEST_COUNTRY_ISO;
- details.date = TEST_DATE;
- details.duration = TEST_DURATION;
- details.geocode = TEST_GEOCODE;
- }
-
- private boolean isVoicemail(String number) {
- return number.equals(TEST_VOICEMAIL_NUMBER);
- }
-}
diff --git a/tests/src/com/android/dialer/calllog/PhoneCallDetailsTest.java b/tests/src/com/android/dialer/calllog/PhoneCallDetailsTest.java
deleted file mode 100644
index 5c500d8bb..000000000
--- a/tests/src/com/android/dialer/calllog/PhoneCallDetailsTest.java
+++ /dev/null
@@ -1,63 +0,0 @@
-package com.android.dialer.calllog;
-
-import android.content.res.Resources;
-import android.test.AndroidTestCase;
-import android.test.suitebuilder.annotation.SmallTest;
-import android.text.SpannableString;
-import android.text.TextUtils;
-import android.text.style.TtsSpan;
-
-import com.android.dialer.PhoneCallDetails;
-import com.android.dialer.R;
-import com.android.contacts.common.util.ContactDisplayUtils;
-
-/**
- * Unit tests for {@link PhoneCallDetails}.
- */
-public class PhoneCallDetailsTest extends AndroidTestCase {
- private static final String VIA_NUMBER = "+16505551212";
- private static final String PHONE_ACCOUNT_LABEL = "TEST";
-
- private Resources mResources;
-
- @Override
- protected void setUp() throws Exception {
- super.setUp();
- mResources = mContext.getResources();
- }
-
- @SmallTest
- public void testCreateAccountLabelDescription_NoViaNumberNoAccountLabel() {
- CharSequence result = PhoneCallDetails.createAccountLabelDescription(mResources, "","");
- assertEquals("", result);
- }
-
- @SmallTest
- public void testCreateAccountLabelDescription_ViaNumberAccountLabel() {
- String msg = mResources.getString(R.string.description_via_number_phone_account,
- PHONE_ACCOUNT_LABEL, VIA_NUMBER);
- CharSequence accountNumberLabel = ContactDisplayUtils.getTelephoneTtsSpannable(msg,
- VIA_NUMBER);
- CharSequence result = PhoneCallDetails.createAccountLabelDescription(mResources, VIA_NUMBER,
- PHONE_ACCOUNT_LABEL);
- assertEquals(accountNumberLabel.toString(), result.toString());
- }
-
- @SmallTest
- public void testCreateAccountLabelDescription_ViaNumber() {
- CharSequence viaNumberLabel = ContactDisplayUtils.getTtsSpannedPhoneNumber(mResources,
- R.string.description_via_number, VIA_NUMBER);
- CharSequence result = PhoneCallDetails.createAccountLabelDescription(mResources, VIA_NUMBER,
- "");
- assertEquals(viaNumberLabel.toString(), result.toString());
- }
-
- @SmallTest
- public void testCreateAccountLabelDescription_AccountLabel() {
- CharSequence accountLabel = TextUtils.expandTemplate(
- mResources.getString(R.string.description_phone_account), PHONE_ACCOUNT_LABEL);
- CharSequence result = PhoneCallDetails.createAccountLabelDescription(mResources, "",
- PHONE_ACCOUNT_LABEL);
- assertEquals(accountLabel, result);
- }
-}
diff --git a/tests/src/com/android/dialer/calllog/calllogcache/TestTelecomCallLogCache.java b/tests/src/com/android/dialer/calllog/calllogcache/TestTelecomCallLogCache.java
deleted file mode 100644
index 270019afd..000000000
--- a/tests/src/com/android/dialer/calllog/calllogcache/TestTelecomCallLogCache.java
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- * Copyright (C) 2013 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.calllogcache;
-
-import android.content.Context;
-import android.telecom.PhoneAccount;
-import android.telecom.PhoneAccountHandle;
-
-/**
- * Modified version of {@link com.android.dialer.calllog.calllogcache.CallLogCache} to be used in
- * tests that allows injecting the voicemail number.
- *
- * NOTE: This tests the pre-LMR1 version because currently none of the tests involve multi-SIM,
- * but...
- * TODO: write tests to test multi-SIM functionality in TelecomCallLogCache.
- */
-public class TestTelecomCallLogCache extends CallLogCache {
- private CharSequence mVoicemailNumber;
- private String mAccountLabel;
-
- public TestTelecomCallLogCache(Context context, CharSequence voicemailNumber,
- String accountLabel) {
- super(context);
- mVoicemailNumber = voicemailNumber;
- mAccountLabel = accountLabel;
- }
-
- @Override
- public boolean isVoicemailNumber(PhoneAccountHandle accountHandle, CharSequence number) {
- return mVoicemailNumber.equals(number);
- }
-
- @Override
- public String getAccountLabel(PhoneAccountHandle accountHandle) {
- return mAccountLabel;
- }
-
- public void setAccountLabel(String accountLabel) {
- mAccountLabel = accountLabel;
- }
-
- @Override
- public int getAccountColor(PhoneAccountHandle accountHandle) {
- return PhoneAccount.NO_HIGHLIGHT_COLOR;
- }
-
- @Override
- public boolean doesAccountSupportCallSubject(PhoneAccountHandle accountHandle) {
- return false;
- }
-}
diff --git a/tests/src/com/android/dialer/compat/FilteredNumberCompatInstrumentationTest.java b/tests/src/com/android/dialer/compat/FilteredNumberCompatInstrumentationTest.java
deleted file mode 100644
index 8ceb25046..000000000
--- a/tests/src/com/android/dialer/compat/FilteredNumberCompatInstrumentationTest.java
+++ /dev/null
@@ -1,92 +0,0 @@
-/*
- * Copyright (C) 2016 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.compat;
-
-import android.app.AlertDialog;
-import android.app.DialogFragment;
-import android.app.FragmentManager;
-import android.content.ContentResolver;
-import android.content.ContentValues;
-import android.content.DialogInterface;
-import android.provider.BlockedNumberContract.BlockedNumbers;
-import android.test.ActivityInstrumentationTestCase2;
-
-import com.android.contacts.common.compat.CompatUtils;
-import com.android.dialer.DialtactsActivity;
-import com.android.dialer.R;
-
-/**
- * UI tests for FilteredNumberCompat
- */
-public class FilteredNumberCompatInstrumentationTest extends
- ActivityInstrumentationTestCase2<DialtactsActivity> {
-
- private static final String E164_NUMBER = "+16502530000";
- private static final String NUMBER = "6502530000";
- private static final String COUNTRY_ISO = "US";
-
- private ContentResolver mContentResolver;
- private FragmentManager mFragmentManager;
-
- public FilteredNumberCompatInstrumentationTest() {
- super(DialtactsActivity.class);
- }
-
- @Override
- public void setUp() throws Exception {
- super.setUp();
- mContentResolver = getActivity().getContentResolver();
- mFragmentManager = getActivity().getFragmentManager();
- mContentResolver.delete(BlockedNumbersSdkCompat.CONTENT_URI,
- BlockedNumbers.COLUMN_ORIGINAL_NUMBER + " = ?", new String[]{NUMBER});
- }
-
- public void testShowBlockNumberDialogFlow_AlreadyBlocked() throws InterruptedException {
- if (!CompatUtils.isNCompatible()) {
- return;
- }
-
- ContentValues values = new ContentValues();
- values.put(BlockedNumbers.COLUMN_ORIGINAL_NUMBER, NUMBER);
- mContentResolver.insert(BlockedNumbers.CONTENT_URI, values);
-
- FilteredNumberCompat.setHasMigratedToNewBlocking(false);
- getInstrumentation().runOnMainSync(new Runnable() {
- @Override
- public void run() {
- FilteredNumberCompat
- .showBlockNumberDialogFlow(mContentResolver, null, NUMBER, COUNTRY_ISO,
- E164_NUMBER, R.id.floating_action_button_container,
- mFragmentManager, null);
- }
- });
- getInstrumentation().waitForIdleSync();
-
- final DialogFragment migrateDialogFragment = (DialogFragment) mFragmentManager
- .findFragmentByTag("MigrateBlockedNumbers");
- assertTrue(migrateDialogFragment.getDialog().isShowing());
- getInstrumentation().runOnMainSync(new Runnable() {
- @Override
- public void run() {
- ((AlertDialog) migrateDialogFragment.getDialog())
- .getButton(DialogInterface.BUTTON_POSITIVE).performClick();
- }
- });
- getInstrumentation().waitForIdleSync();
- assertNull(mFragmentManager.findFragmentByTag("BlockNumberDialog"));
- }
-}
diff --git a/tests/src/com/android/dialer/compat/FilteredNumberCompatTest.java b/tests/src/com/android/dialer/compat/FilteredNumberCompatTest.java
deleted file mode 100644
index 3572316db..000000000
--- a/tests/src/com/android/dialer/compat/FilteredNumberCompatTest.java
+++ /dev/null
@@ -1,292 +0,0 @@
-/*
- * Copyright (C) 2016 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.compat;
-
-import static org.mockito.Matchers.anyInt;
-import static org.mockito.Matchers.anyString;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.when;
-
-import android.content.ComponentName;
-import android.content.ContentUris;
-import android.content.ContentValues;
-import android.content.Context;
-import android.content.SharedPreferences;
-import android.net.Uri;
-import android.os.UserManager;
-import android.provider.BlockedNumberContract.BlockedNumbers;
-import android.test.AndroidTestCase;
-import android.test.suitebuilder.annotation.SmallTest;
-
-import com.android.contacts.common.compat.CompatUtils;
-import com.android.dialer.DialerApplication;
-import com.android.dialer.database.FilteredNumberContract.FilteredNumber;
-import com.android.dialer.database.FilteredNumberContract.FilteredNumberColumns;
-import com.android.dialer.database.FilteredNumberContract.FilteredNumberSources;
-import com.android.dialer.database.FilteredNumberContract.FilteredNumberTypes;
-import com.android.dialer.filterednumber.BlockedNumbersSettingsActivity;
-
-import org.mockito.Mock;
-import org.mockito.MockitoAnnotations;
-
-import java.util.Arrays;
-
-@SmallTest
-public class FilteredNumberCompatTest extends AndroidTestCase {
-
- private static final String E164_NUMBER = "+16502530000";
- private static final String NON_E164_NUMBER = "6502530000";
- private static final String COUNTRY_ISO = "US";
-
- private static final Uri EXPECTED_BASE_URI = CompatUtils.isNCompatible()
- ? BlockedNumbers.CONTENT_URI : FilteredNumber.CONTENT_URI;
-
- @Mock private Context mContext;
- @Mock private SharedPreferences mSharedPreferences;
-
- @Override
- public void setUp() throws Exception {
- super.setUp();
- MockitoAnnotations.initMocks(this);
- DialerApplication.setContextForTest(mContext);
- when(mContext.getSharedPreferences(anyString(), anyInt())).thenReturn(mSharedPreferences);
- FilteredNumberCompat.setIsEnabledForTest(true);
- }
-
- public void testIsNewFilteringEnabled_TestValueFalse() {
- FilteredNumberCompat.setIsEnabledForTest(false);
- assertFalse(FilteredNumberCompat.canUseNewFiltering());
- }
-
- public void testIsNewFilteringEnabled_TestValueTrue() {
- FilteredNumberCompat.setIsEnabledForTest(true);
- assertEquals(CompatUtils.isNCompatible(), FilteredNumberCompat.canUseNewFiltering());
- }
-
- public void testHasMigratedToNewBlocking_False() {
- assertFalse(FilteredNumberCompat.hasMigratedToNewBlocking());
- }
-
- public void testHasMigratedToNewBlocking_Migrated() {
- when(mSharedPreferences
- .getBoolean(FilteredNumberCompat.HAS_MIGRATED_TO_NEW_BLOCKING_KEY, false))
- .thenReturn(true);
- assertTrue(FilteredNumberCompat.hasMigratedToNewBlocking());
- }
-
- public void testGetContentUri_NullId() {
- assertEquals(FilteredNumber.CONTENT_URI, FilteredNumberCompat.getContentUri(null));
- }
-
- public void testGetContentUri_NotMigrated() {
- assertEquals(ContentUris.withAppendedId(FilteredNumber.CONTENT_URI, 1),
- FilteredNumberCompat.getContentUri(1));
- }
-
- public void testGetContentUri_Migrated() {
- when(mSharedPreferences
- .getBoolean(FilteredNumberCompat.HAS_MIGRATED_TO_NEW_BLOCKING_KEY, false))
- .thenReturn(true);
- assertEquals(ContentUris.withAppendedId(EXPECTED_BASE_URI, 1),
- FilteredNumberCompat.getContentUri(1));
- }
-
- public void testFilter_NullProjection() {
- assertNull(FilteredNumberCompat.filter(null));
- }
-
- public void testFilter_NoNulls() {
- assertArrayEquals(new String[] {"a", "b", "c"},
- FilteredNumberCompat.filter(new String[] {"a", "b", "c"}));
- }
-
- public void testFilter_WithNulls() {
- assertArrayEquals(new String[] {"a", "b"},
- FilteredNumberCompat.filter(new String[] {"a", null, "b"}));
- }
-
- public void testNewBlockNumberContentValues_NullNumber() {
- try {
- FilteredNumberCompat.newBlockNumberContentValues(null, null, null);
- fail();
- } catch (NullPointerException e) {}
- }
-
- public void testNewBlockNumberContentValues_N_NotMigrated() {
- if (!CompatUtils.isNCompatible()) {
- return;
- }
- assertEquals(newExpectedContentValuesM(NON_E164_NUMBER, null, null),
- FilteredNumberCompat.newBlockNumberContentValues(NON_E164_NUMBER, null, null));
- }
-
- public void testNewBlockNumberContentValues_N_Migrated() {
- if (!CompatUtils.isNCompatible()) {
- return;
- }
- ContentValues contentValues = new ContentValues();
- contentValues.put(BlockedNumbers.COLUMN_ORIGINAL_NUMBER, NON_E164_NUMBER);
- when(mSharedPreferences
- .getBoolean(FilteredNumberCompat.HAS_MIGRATED_TO_NEW_BLOCKING_KEY, false))
- .thenReturn(true);
- assertEquals(contentValues, FilteredNumberCompat.newBlockNumberContentValues(
- NON_E164_NUMBER,
- null, null));
- }
-
- public void testNewBlockNumberContentValues_N_Disabled() {
- if (!CompatUtils.isNCompatible()) {
- return;
- }
- FilteredNumberCompat.setIsEnabledForTest(false);
- assertEquals(newExpectedContentValuesM(NON_E164_NUMBER, E164_NUMBER, COUNTRY_ISO),
- FilteredNumberCompat.newBlockNumberContentValues(NON_E164_NUMBER, E164_NUMBER, COUNTRY_ISO));
- }
-
- public void testNewBlockNumberContentValues_M_NullE164() {
- if (CompatUtils.isNCompatible()) {
- return;
- }
- assertEquals(newExpectedContentValuesM(NON_E164_NUMBER, E164_NUMBER, COUNTRY_ISO),
- FilteredNumberCompat.newBlockNumberContentValues(NON_E164_NUMBER, null, COUNTRY_ISO));
- }
-
- public void testNewBlockNumberContentValues_M_NullCountryIso() {
- if (CompatUtils.isNCompatible()) {
- return;
- }
- assertEquals(newExpectedContentValuesM(NON_E164_NUMBER, E164_NUMBER, null),
- FilteredNumberCompat.newBlockNumberContentValues(NON_E164_NUMBER, E164_NUMBER, null));
- }
-
- public void testNewBlockNumberContentValues_M_NullE164AndCountryIso() {
- if (CompatUtils.isNCompatible()) {
- return;
- }
- // Number can't be formatted properly without country code
- assertEquals(newExpectedContentValuesM(NON_E164_NUMBER, null, null),
- FilteredNumberCompat.newBlockNumberContentValues(NON_E164_NUMBER, null, null));
- }
-
- public void testCreateManageBlockedNumbersIntent_NullContext() {
- try {
- FilteredNumberCompat.createManageBlockedNumbersIntent(null);
- fail();
- } catch (NullPointerException e) {}
- }
-
- public void testCreateManageBlockedNumbersIntent_M() {
- if (CompatUtils.isNCompatible()) {
- return;
- }
- assertEquals(new ComponentName(getContext(), BlockedNumbersSettingsActivity.class),
- FilteredNumberCompat.createManageBlockedNumbersIntent(getContext()).getComponent());
- }
-
- public void testCreateManageBlockedNumbersIntent_N_Disabled_NotMigrated() {
- if (!CompatUtils.isNCompatible()) {
- return;
- }
- FilteredNumberCompat.setIsEnabledForTest(false);
- assertEquals(new ComponentName(getContext(), BlockedNumbersSettingsActivity.class),
- FilteredNumberCompat.createManageBlockedNumbersIntent(getContext()).getComponent());
- }
-
- public void testCreateManageBlockedNumbersIntent_N_Enabled_NotMigrated() {
- if (!CompatUtils.isNCompatible()) {
- return;
- }
- assertEquals(new ComponentName(getContext(), BlockedNumbersSettingsActivity.class),
- FilteredNumberCompat.createManageBlockedNumbersIntent(getContext()).getComponent());
- }
-
- public void testCreateManageBlockedNumbersIntent_N_Enabled_Migrated() {
- if (!CompatUtils.isNCompatible()) {
- return;
- }
- when(mSharedPreferences
- .getBoolean(FilteredNumberCompat.HAS_MIGRATED_TO_NEW_BLOCKING_KEY, false))
- .thenReturn(true);
- assertFalse(new ComponentName(getContext(), BlockedNumbersSettingsActivity.class)
- .equals(FilteredNumberCompat.createManageBlockedNumbersIntent(getContext())
- .getComponent()));
- }
-
- public void testCanCurrentUserOpenBlockSettings_M_SecondaryUser() {
- if (CompatUtils.isNCompatible()) {
- return;
- }
- UserManager userManager = mock(UserManager.class);
- when(mContext.getSystemService(Context.USER_SERVICE)).thenReturn(userManager);
- when(userManager.isSystemUser()).thenReturn(false);
- assertFalse(FilteredNumberCompat.canCurrentUserOpenBlockSettings(mContext));
- verify(mContext).getSystemService(Context.USER_SERVICE);
- verify(userManager).isSystemUser();
- }
-
- public void testCanCurrentUserOpenBlockSettings_M_PrimaryUser() {
- if (CompatUtils.isNCompatible()) {
- return;
- }
- UserManager userManager = mock(UserManager.class);
- when(mContext.getSystemService(Context.USER_SERVICE)).thenReturn(userManager);
- when(userManager.isSystemUser()).thenReturn(true);
- assertTrue(FilteredNumberCompat.canCurrentUserOpenBlockSettings(mContext));
- verify(mContext).getSystemService(Context.USER_SERVICE);
- verify(userManager).isSystemUser();
- }
-
- public void testCanAttemptBlockOperations_M_SecondaryUser() {
- if (CompatUtils.isNCompatible()) {
- return;
- }
- UserManager userManager = mock(UserManager.class);
- when(mContext.getSystemService(Context.USER_SERVICE)).thenReturn(userManager);
- when(userManager.isSystemUser()).thenReturn(false);
- assertFalse(FilteredNumberCompat.canAttemptBlockOperations(mContext));
- verify(mContext).getSystemService(Context.USER_SERVICE);
- verify(userManager).isSystemUser();
- }
-
- public void testCanAttemptBlockOperations_M_PrimaryUser() {
- if (CompatUtils.isNCompatible()) {
- return;
- }
- UserManager userManager = mock(UserManager.class);
- when(mContext.getSystemService(Context.USER_SERVICE)).thenReturn(userManager);
- when(userManager.isSystemUser()).thenReturn(true);
- assertTrue(FilteredNumberCompat.canAttemptBlockOperations(mContext));
- verify(mContext).getSystemService(Context.USER_SERVICE);
- verify(userManager).isSystemUser();
- }
-
- private ContentValues newExpectedContentValuesM(String number, String e164Number,
- String countryIso) {
- ContentValues contentValues = new ContentValues();
- contentValues.put(FilteredNumberColumns.NUMBER, number);
- contentValues.put(FilteredNumberColumns.NORMALIZED_NUMBER, e164Number);
- contentValues.put(FilteredNumberColumns.COUNTRY_ISO, countryIso);
- contentValues.put(FilteredNumberColumns.TYPE, FilteredNumberTypes.BLOCKED_NUMBER);
- contentValues.put(FilteredNumberColumns.SOURCE, FilteredNumberSources.USER);
- return contentValues;
- }
-
- private void assertArrayEquals(String[] expected, String[] actual) {
- assertEquals(Arrays.toString(expected), Arrays.toString(actual));
- }
-}
diff --git a/tests/src/com/android/dialer/compat/UserManagerCompatTest.java b/tests/src/com/android/dialer/compat/UserManagerCompatTest.java
deleted file mode 100644
index ff734a19d..000000000
--- a/tests/src/com/android/dialer/compat/UserManagerCompatTest.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Copyright (C) 2015 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.compat;
-
-import android.test.AndroidTestCase;
-
-import com.android.contacts.common.compat.CompatUtils;
-
-public class UserManagerCompatTest extends AndroidTestCase {
-
- public void testIsUserUnlocked_N_NullContext() {
- if (!CompatUtils.isNCompatible()) {
- return;
- }
- try {
- UserManagerCompat.isUserUnlocked(null);
- fail("Expected NullPointerException but none was thrown");
- } catch (NullPointerException e) {}
- }
-
- public void testIsUserUnlocked_M_NullContext() {
- if (CompatUtils.isNCompatible()) {
- return;
- }
- assertTrue(UserManagerCompat.isUserUnlocked(null));
- }
-
- public void testIsUserUnlocked() {
- assertTrue(UserManagerCompat.isUserUnlocked(getContext()));
- }
-}
diff --git a/tests/src/com/android/dialer/contactinfo/ContactPhotoLoaderTest.java b/tests/src/com/android/dialer/contactinfo/ContactPhotoLoaderTest.java
deleted file mode 100644
index 42a5ae966..000000000
--- a/tests/src/com/android/dialer/contactinfo/ContactPhotoLoaderTest.java
+++ /dev/null
@@ -1,106 +0,0 @@
-/*
- * Copyright (C) 2016 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.contactinfo;
-
-import android.app.Instrumentation;
-import android.content.ContentResolver;
-import android.content.Context;
-import android.content.res.Resources;
-import android.graphics.Bitmap;
-import android.graphics.drawable.BitmapDrawable;
-import android.graphics.drawable.Drawable;
-import android.net.Uri;
-import android.support.test.InstrumentationRegistry;
-import android.support.v4.graphics.drawable.RoundedBitmapDrawable;
-import android.test.AndroidTestCase;
-import android.test.InstrumentationTestCase;
-import android.text.TextUtils;
-
-import com.android.contacts.common.GeoUtil;
-import com.android.contacts.common.lettertiles.LetterTileDrawable;
-import com.android.dialer.calllog.ContactInfo;
-import com.android.dialer.calllog.ContactInfoHelper;
-import com.android.dialer.tests.R;
-
-public class ContactPhotoLoaderTest extends InstrumentationTestCase {
-
- private Context mContext;
-
- @Override
- public void setUp() {
- mContext = getInstrumentation().getTargetContext();
- }
-
- public void testConstructor() {
- ContactPhotoLoader loader = new ContactPhotoLoader(mContext, new ContactInfo());
- }
-
- public void testConstructor_NullContext() {
- try {
- ContactPhotoLoader loader = new ContactPhotoLoader(null, new ContactInfo());
- fail();
- } catch (NullPointerException e) {
- //expected
- }
- }
-
- public void testConstructor_NullContactInfo() {
- try {
- ContactPhotoLoader loader = new ContactPhotoLoader(mContext, null);
- fail();
- } catch (NullPointerException e) {
- //expected
- }
- }
-
- public void testGetIcon_Photo() {
- ContactInfo info = getTestContactInfo();
- info.photoUri = getResourceUri(R.drawable.phone_icon);
- ContactPhotoLoader loader = new ContactPhotoLoader(mContext, info);
- assertTrue(loader.getIcon() instanceof RoundedBitmapDrawable);
- }
-
- public void testGetIcon_Photo_Invalid() {
- ContactInfo info = getTestContactInfo();
- info.photoUri = Uri.parse("file://invalid/uri");
- ContactPhotoLoader loader = new ContactPhotoLoader(mContext, info);
- //Should fall back to LetterTileDrawable
- assertTrue(loader.getIcon() instanceof LetterTileDrawable);
- }
-
- public void testGetIcon_LetterTile() {
- ContactInfo info = getTestContactInfo();
- ContactPhotoLoader loader = new ContactPhotoLoader(mContext, info);
- assertTrue(loader.getIcon() instanceof LetterTileDrawable);
- }
-
- private Uri getResourceUri(int resId) {
- Context testContext = getInstrumentation().getContext();
- Resources resources = testContext.getResources();
-
- assertNotNull(resources.getDrawable(resId));
- return Uri.parse(ContentResolver.SCHEME_ANDROID_RESOURCE + "://"
- + testContext.getPackageName()
- + '/' + resId);
- }
-
- private ContactInfo getTestContactInfo() {
- ContactInfo info = new ContactInfo();
- info.name = "foo";
- info.lookupKey = "bar";
- return info;
- }
-} \ No newline at end of file
diff --git a/tests/src/com/android/dialer/database/DatabaseTestUtils.java b/tests/src/com/android/dialer/database/DatabaseTestUtils.java
deleted file mode 100644
index 19fff7f89..000000000
--- a/tests/src/com/android/dialer/database/DatabaseTestUtils.java
+++ /dev/null
@@ -1,82 +0,0 @@
-/*
- * Copyright (C) 2015 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.database;
-
-import android.database.MatrixCursor;
-import android.provider.ContactsContract.Contacts;
-import android.provider.ContactsContract.Data;
-import android.provider.ContactsContract.CommonDataKinds.Phone;
-import android.text.TextUtils;
-
-import com.android.dialer.database.DialerDatabaseHelper.ContactNumber;
-
-public class DatabaseTestUtils {
- public static MatrixCursor constructNewNameCursor() {
- final MatrixCursor cursor = new MatrixCursor(new String[]{
- DialerDatabaseHelper.SmartDialDbColumns.DISPLAY_NAME_PRIMARY,
- DialerDatabaseHelper.SmartDialDbColumns.CONTACT_ID});
- return cursor;
- }
-
- public static MatrixCursor constructNewContactCursor() {
- final MatrixCursor cursor = new MatrixCursor(new String[]{
- Phone._ID, // 0
- Phone.TYPE, // 1
- Phone.LABEL, // 2
- Phone.NUMBER, // 3
- Phone.CONTACT_ID, // 4
- Phone.LOOKUP_KEY, // 5
- Phone.DISPLAY_NAME_PRIMARY, // 6
- Phone.PHOTO_ID, // 7
- Data.LAST_TIME_USED, // 8
- Data.TIMES_USED, // 9
- Contacts.STARRED, // 10
- Data.IS_SUPER_PRIMARY, // 11
- Contacts.IN_VISIBLE_GROUP, // 12
- Data.IS_PRIMARY, // 13
- Data.CARRIER_PRESENCE}); // 14
- return cursor;
- }
-
- public static ContactNumber constructNewContactWithDummyIds(MatrixCursor contactCursor,
- MatrixCursor nameCursor, String number, int id, String displayName) {
- return constructNewContact(contactCursor, nameCursor, id, number, id, String.valueOf(id),
- displayName, 0, 0, 0, 0, 0, 0, 0, 0);
- }
-
- public static ContactNumber constructNewContact(MatrixCursor contactCursor,
- MatrixCursor nameCursor, int id, String number, int contactId, String lookupKey,
- String displayName, int photoId, int lastTimeUsed, int timesUsed, int starred,
- int isSuperPrimary, int inVisibleGroup, int isPrimary, int carrierPresence) {
- if (contactCursor == null || nameCursor == null) {
- throw new IllegalArgumentException("Provided MatrixCursors cannot be null");
- }
-
- if (TextUtils.isEmpty(number)) {
- // Add a dummy number, otherwise DialerDatabaseHelper simply ignores the entire
- // row if the number is empty
- number = "0";
- }
-
- contactCursor.addRow(new Object[]{id, "", "", number, contactId, lookupKey, displayName,
- photoId, lastTimeUsed, timesUsed, starred, isSuperPrimary, inVisibleGroup,
- isPrimary, carrierPresence});
- nameCursor.addRow(new Object[]{displayName, contactId});
-
- return new ContactNumber(contactId, id, displayName, number, lookupKey, 0, 0);
- }
-}
diff --git a/tests/src/com/android/dialer/database/DialerDatabaseHelperTest.java b/tests/src/com/android/dialer/database/DialerDatabaseHelperTest.java
deleted file mode 100644
index a95a79e08..000000000
--- a/tests/src/com/android/dialer/database/DialerDatabaseHelperTest.java
+++ /dev/null
@@ -1,154 +0,0 @@
-/*
- * Copyright (C) 2013 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.database;
-
-import static com.android.dialer.database.DatabaseTestUtils.*;
-
-import android.database.MatrixCursor;
-import android.database.sqlite.SQLiteDatabase;
-import android.test.suitebuilder.annotation.SmallTest;
-import android.test.suitebuilder.annotation.Suppress;
-import android.test.AndroidTestCase;
-
-import com.android.dialer.database.DialerDatabaseHelper;
-import com.android.dialer.database.DialerDatabaseHelper.ContactNumber;
-import com.android.dialer.dialpad.SmartDialNameMatcher;
-import com.android.dialer.dialpad.SmartDialPrefix;
-
-import java.lang.Exception;
-import java.lang.Override;
-import java.util.ArrayList;
-
-/**
- * Validates the behavior of the smart dial database helper with regards to contact updates and
- * deletes.
- * To run this test, use the command:
- * adb shell am instrument -w -e class com.android.dialer.database.DialerDatabaseHelperTest /
- * com.android.dialer.tests/android.test.InstrumentationTestRunner
- */
-@SmallTest
-public class DialerDatabaseHelperTest extends AndroidTestCase {
-
- private DialerDatabaseHelper mTestHelper;
- private SQLiteDatabase mDb;
-
- @Override
- protected void setUp() {
- mTestHelper = DialerDatabaseHelper.getNewInstanceForTest(getContext());
- mDb = mTestHelper.getWritableDatabase();
- }
-
- @Override
- protected void tearDown() throws Exception {
- final SQLiteDatabase db = mTestHelper.getWritableDatabase();
- mTestHelper.removeAllContacts(db);
- super.tearDown();
- }
-
- /**
- * Verifies that a new contact added into the database is a match after the update.
- */
- public void testForNewContacts() {
- final MatrixCursor nameCursor = constructNewNameCursor();
- final MatrixCursor contactCursor = constructNewContactCursor();
-
- mTestHelper.insertUpdatedContactsAndNumberPrefix(mDb, contactCursor, 0L);
- mTestHelper.insertNamePrefixes(mDb, nameCursor);
- assertEquals(0, getMatchesFromDb("5105272357").size());
-
- // Insert new contact
- constructNewContactWithDummyIds(contactCursor, nameCursor,
- "510-527-2357", 0, "James");
- mTestHelper.insertUpdatedContactsAndNumberPrefix(mDb, contactCursor, 1L);
- mTestHelper.insertNamePrefixes(mDb, nameCursor);
- assertEquals(1, getMatchesFromDb("5105272357").size());
- }
-
- /**
- * Verifies that a contact that has its phone number changed is a match after the update.
- */
- public void testForUpdatedContacts() {
- final MatrixCursor nameCursor = constructNewNameCursor();
- final MatrixCursor contactCursor = constructNewContactCursor();
- constructNewContactWithDummyIds(contactCursor, nameCursor,
- "510-527-2357", 0, "James");
- mTestHelper.insertUpdatedContactsAndNumberPrefix(mDb, contactCursor, 0L);
- mTestHelper.insertNamePrefixes(mDb, nameCursor);
- assertEquals(1, getMatchesFromDb("5105272357").size());
- assertEquals(0, getMatchesFromDb("6501234567").size());
-
- // Update the database with the new contact information
- final MatrixCursor nameCursor2 = constructNewNameCursor();
- final MatrixCursor contactCursor2 = constructNewContactCursor();
- constructNewContactWithDummyIds(contactCursor2, nameCursor2,
- "650-123-4567", 0, "James");
- mTestHelper.removeUpdatedContacts(mDb, contactCursor2);
- mTestHelper.insertUpdatedContactsAndNumberPrefix(mDb, contactCursor2, 1L);
- mTestHelper.insertNamePrefixes(mDb, nameCursor2);
-
- // Now verify the matches are correct based on the new information
- assertEquals(0, getMatchesFromDb("5105272357").size());
- assertEquals(1, getMatchesFromDb("6501234567").size());
- }
-
- /**
- * Verifies that a contact that is deleted from CP2 is similarly deleted from the database
- */
- public void testForDeletedContacts() {
- final MatrixCursor nameCursor = constructNewNameCursor();
- final MatrixCursor contactCursor = constructNewContactCursor();
- constructNewContactWithDummyIds(contactCursor, nameCursor,
- "510-527-2357", 0, "James");
- mTestHelper.insertUpdatedContactsAndNumberPrefix(mDb, contactCursor, 0L);
- mTestHelper.insertNamePrefixes(mDb, nameCursor);
- assertEquals(1, getMatchesFromDb("5105272357").size());
-
- // Delete the contact and update its projection.
- final MatrixCursor deletedCursor =
- new MatrixCursor(DialerDatabaseHelper.DeleteContactQuery.PROJECTION);
- deletedCursor.addRow(new Object[] {0, 1L});
- mTestHelper.removeDeletedContacts(mDb, deletedCursor);
- assertEquals(0, getMatchesFromDb("5105272357").size());
- }
-
- /**
- * Verifies that when a contact's number is deleted (but not the entire contact), the
- * number is correctly deleted from the database.
- */
- public void testForDeletedNumber() {
- final MatrixCursor nameCursor = constructNewNameCursor();
- final MatrixCursor contactCursor = constructNewContactCursor();
- constructNewContactWithDummyIds(contactCursor, nameCursor,
- "510-527-2357", 0, "James");
- mTestHelper.insertUpdatedContactsAndNumberPrefix(mDb, contactCursor, 0L);
- mTestHelper.insertNamePrefixes(mDb, nameCursor);
- assertEquals(1, getMatchesFromDb("5105272357").size());
-
- // Match no longer exists after number was deleted from contact
- final MatrixCursor updatedContactCursor =
- new MatrixCursor(DialerDatabaseHelper.UpdatedContactQuery.PROJECTION);
- updatedContactCursor.addRow(new Object[] {0});
- mTestHelper.removeUpdatedContacts(mDb, updatedContactCursor);
- assertEquals(0, getMatchesFromDb("5105272357").size());
- }
-
- private ArrayList<ContactNumber> getMatchesFromDb(String query) {
- final SmartDialNameMatcher nameMatcher = new SmartDialNameMatcher(query,
- SmartDialPrefix.getMap());
- return mTestHelper.getLooseMatches(query, nameMatcher);
- }
-}
diff --git a/tests/src/com/android/dialer/database/FilteredNumberAsyncQueryHandlerTest.java b/tests/src/com/android/dialer/database/FilteredNumberAsyncQueryHandlerTest.java
deleted file mode 100644
index 625f3fdb5..000000000
--- a/tests/src/com/android/dialer/database/FilteredNumberAsyncQueryHandlerTest.java
+++ /dev/null
@@ -1,457 +0,0 @@
-/*
- * Copyright (C) 2016 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.database;
-
-import android.content.ContentUris;
-import android.content.ContentValues;
-import android.net.Uri;
-import android.provider.BlockedNumberContract;
-import android.provider.BlockedNumberContract.BlockedNumbers;
-import android.test.InstrumentationTestCase;
-import android.test.mock.MockContentResolver;
-import android.test.suitebuilder.annotation.SmallTest;
-
-import com.android.contacts.common.compat.CompatUtils;
-import com.android.contacts.common.test.mocks.MockContentProvider;
-import com.android.contacts.common.test.mocks.MockContentProvider.Query;
-import com.android.dialer.compat.FilteredNumberCompat;
-import com.android.dialer.database.FilteredNumberAsyncQueryHandler.OnBlockNumberListener;
-import com.android.dialer.database.FilteredNumberAsyncQueryHandler.OnCheckBlockedListener;
-import com.android.dialer.database.FilteredNumberAsyncQueryHandler.OnHasBlockedNumbersListener;
-import com.android.dialer.database.FilteredNumberAsyncQueryHandler.OnUnblockNumberListener;
-import com.android.dialer.database.FilteredNumberContract.FilteredNumberColumns;
-import com.android.dialer.database.FilteredNumberContract.FilteredNumberSources;
-import com.android.dialer.database.FilteredNumberContract.FilteredNumberTypes;
-
-import java.util.concurrent.CountDownLatch;
-import java.util.concurrent.TimeUnit;
-
-@SmallTest
-public class FilteredNumberAsyncQueryHandlerTest extends InstrumentationTestCase {
-
- private static final String E164_NUMBER = "+16502530000";
- private static final String NUMBER = "6502530000";
- private static final String COUNTRY_ISO = "US";
- private static final Integer ID = 1;
- private static final Integer ID2 = 2;
- private static final Uri BLOCKED_NUMBER_URI_N = CompatUtils.isNCompatible() ?
- Uri.withAppendedPath(BlockedNumberContract.AUTHORITY_URI, "blocked") : null;
- private static final Uri BLOCKED_NUMBER_URI_M =
- Uri.withAppendedPath(FilteredNumberContract.AUTHORITY_URI, "filtered_numbers_table");
- private static final Uri BLOCKED_NUMBER_URI = CompatUtils.isNCompatible() ? BLOCKED_NUMBER_URI_N
- : BLOCKED_NUMBER_URI_M;
- private static final Uri BLOCKED_NUMBER_URI_WITH_ID =
- ContentUris.withAppendedId(BLOCKED_NUMBER_URI, ID);
- private static final Uri EXPECTED_URI = Uri.fromParts("android", "google", "dialer");
-
- private final MockContentResolver mContentResolver = new MockContentResolver();
- private final MockContentProvider mContentProvider = new MockContentProvider();
-
- @Override
- public void setUp() throws Exception {
- super.setUp();
- FilteredNumberCompat.setIsEnabledForTest(true);
- if (CompatUtils.isNCompatible()) {
- mContentResolver.addProvider(BlockedNumberContract.AUTHORITY, mContentProvider);
- } else {
- mContentResolver.addProvider(FilteredNumberContract.AUTHORITY, mContentProvider);
- }
- }
-
- public void testHasBlockedNumbers_Disabled() throws Throwable {
- if (!CompatUtils.isNCompatible()) {
- return;
- }
- FilteredNumberCompat.setIsEnabledForTest(false);
- final MockContentResolver resolver = new MockContentResolver();
- MockContentProvider disabledProvider = new MockContentProvider();
- resolver.addProvider(FilteredNumberContract.AUTHORITY, disabledProvider);
-
- disabledProvider.expectQuery(BLOCKED_NUMBER_URI_M).withProjection(FilteredNumberColumns._ID)
- .withSelection(FilteredNumberColumns.TYPE + "="
- + FilteredNumberTypes.BLOCKED_NUMBER, null).returnRow(ID);
- final HasBlockedNumbersListener listener = new HasBlockedNumbersListener();
- runTestOnUiThread(new Runnable() {
- @Override
- public void run() {
- new FilteredNumberAsyncQueryHandler(resolver).hasBlockedNumbers(listener);
- }
- });
- assertTrue(listener.waitForCallback());
- disabledProvider.verify();
- }
-
- public void testHasBlockedNumbers_NoResults() throws Throwable {
- newHasBlockedNumbersExpectedQuery().returnEmptyCursor();
- final HasBlockedNumbersListener listener = new HasBlockedNumbersListener();
- runTestOnUiThread(new Runnable() {
- @Override
- public void run() {
- new FilteredNumberAsyncQueryHandler(mContentResolver).hasBlockedNumbers(listener);
- }
- });
- assertFalse(listener.waitForCallback());
- mContentProvider.verify();
- }
-
- public void testHasBlockedNumbers() throws Throwable {
- newHasBlockedNumbersExpectedQuery().returnRow(ID);
- final HasBlockedNumbersListener listener = new HasBlockedNumbersListener();
- runTestOnUiThread(new Runnable() {
- @Override
- public void run() {
- new FilteredNumberAsyncQueryHandler(mContentResolver).hasBlockedNumbers(listener);
- }
- });
- assertTrue(listener.waitForCallback());
- mContentProvider.verify();
- }
-
- public void testIsBlockedNumber_Disabled() throws Throwable {
- if (!CompatUtils.isNCompatible()) {
- return;
- }
- FilteredNumberCompat.setIsEnabledForTest(false);
- final MockContentResolver resolver = new MockContentResolver();
- MockContentProvider disabledProvider = new MockContentProvider();
- resolver.addProvider(FilteredNumberContract.AUTHORITY, disabledProvider);
- disabledProvider.expectQuery(BLOCKED_NUMBER_URI_M)
- .withProjection(FilteredNumberColumns._ID, FilteredNumberColumns.TYPE)
- .withSelection(FilteredNumberColumns.NORMALIZED_NUMBER + " = ?", E164_NUMBER)
- .returnRow(ID, FilteredNumberTypes.BLOCKED_NUMBER);
- final CheckBlockedListener listener = new CheckBlockedListener();
- runTestOnUiThread(new Runnable() {
- @Override
- public void run() {
- new FilteredNumberAsyncQueryHandler(resolver)
- .isBlockedNumber(listener, NUMBER, COUNTRY_ISO);
- }
- });
- assertEquals(ID, listener.waitForCallback());
- mContentProvider.verify();
- }
-
- public void testIsBlockedNumber_NoResults() throws Throwable {
- newIsBlockedNumberExpectedQuery().returnEmptyCursor();
- final CheckBlockedListener listener = new CheckBlockedListener();
-
- runTestOnUiThread(new Runnable() {
- @Override
- public void run() {
- new FilteredNumberAsyncQueryHandler(mContentResolver)
- .isBlockedNumber(listener, NUMBER, COUNTRY_ISO);
- }
- });
- assertNull(listener.waitForCallback());
- mContentProvider.verify();
- }
-
- public void testIsBlockedNumber() throws Throwable {
- if (CompatUtils.isNCompatible()) {
- newIsBlockedNumberExpectedQuery().returnRow(ID);
- } else {
- newIsBlockedNumberExpectedQuery().returnRow(ID, FilteredNumberTypes.BLOCKED_NUMBER);
- }
- final CheckBlockedListener listener = new CheckBlockedListener();
- runTestOnUiThread(new Runnable() {
- @Override
- public void run() {
- new FilteredNumberAsyncQueryHandler(mContentResolver)
- .isBlockedNumber(listener, NUMBER, COUNTRY_ISO);
- }
- });
- assertEquals(ID, listener.waitForCallback());
- mContentProvider.verify();
- }
-
- public void testIsBlockedNumber_MultipleResults() throws Throwable {
- if (CompatUtils.isNCompatible()) {
- newIsBlockedNumberExpectedQuery().returnRow(ID).returnRow(ID2);
- } else {
- newIsBlockedNumberExpectedQuery().returnRow(ID, FilteredNumberTypes.BLOCKED_NUMBER)
- .returnRow(ID2, FilteredNumberTypes.BLOCKED_NUMBER);
- }
- final CheckBlockedListener listener = new CheckBlockedListener();
- runTestOnUiThread(new Runnable() {
- @Override
- public void run() {
- new FilteredNumberAsyncQueryHandler(mContentResolver)
- .isBlockedNumber(listener, NUMBER, COUNTRY_ISO);
- }
- });
- // When there are multiple matches, the first is returned
- assertEquals(ID, listener.waitForCallback());
- mContentProvider.verify();
- }
-
- public void testBlockNumber_Disabled() throws Throwable {
- if (!CompatUtils.isNCompatible()) {
- return;
- }
- FilteredNumberCompat.setIsEnabledForTest(false);
- final MockContentResolver resolver = new MockContentResolver();
- MockContentProvider disabledProvider = new MockContentProvider();
- resolver.addProvider(FilteredNumberContract.AUTHORITY, disabledProvider);
-
- disabledProvider.expectInsert(BLOCKED_NUMBER_URI_M, newBlockNumberContentValuesM(),
- EXPECTED_URI);
- final BlockNumberListener listener = new BlockNumberListener();
- runTestOnUiThread(new Runnable() {
- @Override
- public void run() {
- new FilteredNumberAsyncQueryHandler(resolver).blockNumber(listener, E164_NUMBER,
- NUMBER, COUNTRY_ISO);
- }
- });
- assertSame(EXPECTED_URI, listener.waitForCallback());
- disabledProvider.verify();
- }
-
- public void testBlockNumber() throws Throwable {
- mContentProvider.expectInsert(BLOCKED_NUMBER_URI, newBlockNumberContentValues(),
- EXPECTED_URI);
- final BlockNumberListener listener = new BlockNumberListener();
- runTestOnUiThread(new Runnable() {
- @Override
- public void run() {
- new FilteredNumberAsyncQueryHandler(mContentResolver).blockNumber(listener,
- E164_NUMBER, NUMBER, COUNTRY_ISO);
- }
- });
- assertSame(EXPECTED_URI, listener.waitForCallback());
- mContentProvider.verify();
- }
-
- public void testBlockNumber_NullNormalizedNumber() throws Throwable {
- mContentProvider.expectInsert(BLOCKED_NUMBER_URI, newBlockNumberContentValues(),
- EXPECTED_URI);
- final BlockNumberListener listener = new BlockNumberListener();
- runTestOnUiThread(new Runnable() {
- @Override
- public void run() {
- new FilteredNumberAsyncQueryHandler(mContentResolver).blockNumber(listener,
- NUMBER, COUNTRY_ISO);
- }
- });
- assertSame(EXPECTED_URI, listener.waitForCallback());
- mContentProvider.verify();
- }
-
- public void testUnblockNumber_Disabled() throws Throwable {
- if (!CompatUtils.isNCompatible()) {
- return;
- }
- FilteredNumberCompat.setIsEnabledForTest(false);
- final MockContentResolver resolver = new MockContentResolver();
- MockContentProvider disabledProvider = new MockContentProvider();
- resolver.addProvider(FilteredNumberContract.AUTHORITY, disabledProvider);
-
- Uri uriWithId = ContentUris.withAppendedId(BLOCKED_NUMBER_URI_M, ID);
- disabledProvider.expectQuery(uriWithId)
- .withProjection(null)
- .withDefaultProjection(FilteredNumberCompat.getIdColumnName())
- .withSelection(null, null)
- .withSortOrder(null)
- .returnRow(ID);
- disabledProvider.expectDelete(uriWithId).returnRowsAffected(1);
- final UnblockNumberListener listener = new UnblockNumberListener();
- runTestOnUiThread(new Runnable() {
- @Override
- public void run() {
- new FilteredNumberAsyncQueryHandler(resolver).unblock(listener, ID);
- }
- });
- assertNotNull(listener.waitForCallback());
- disabledProvider.verify();
- }
-
- public void testUnblockNumber_NullId() {
- try {
- new FilteredNumberAsyncQueryHandler(mContentResolver).unblock(null, (Integer) null);
- fail();
- } catch (IllegalArgumentException e) {}
- }
-
- public void testUnblockNumber() throws Throwable {
- mContentProvider.expectQuery(BLOCKED_NUMBER_URI_WITH_ID)
- .withProjection(null)
- .withDefaultProjection(FilteredNumberCompat.getIdColumnName())
- .withSelection(null, null)
- .withSortOrder(null)
- .returnRow(ID);
- mContentProvider.expectDelete(BLOCKED_NUMBER_URI_WITH_ID).returnRowsAffected(1);
- final UnblockNumberListener listener = new UnblockNumberListener();
- runTestOnUiThread(new Runnable() {
- @Override
- public void run() {
- new FilteredNumberAsyncQueryHandler(mContentResolver).unblock(listener, ID);
- }
- });
- assertNotNull(listener.waitForCallback());
- mContentProvider.verify();
- }
-
- private Query newIsBlockedNumberExpectedQuery() {
- if (CompatUtils.isNCompatible()) {
- return newIsBlockedNumberExpectedQueryN();
- }
- return newIsBlockedNumberExpectedQueryM();
- }
-
- private Query newIsBlockedNumberExpectedQueryN() {
- return mContentProvider.expectQuery(BLOCKED_NUMBER_URI)
- .withProjection(BlockedNumbers.COLUMN_ID)
- .withSelection(BlockedNumbers.COLUMN_E164_NUMBER + " = ?", E164_NUMBER);
- }
-
- private Query newIsBlockedNumberExpectedQueryM() {
- return mContentProvider.expectQuery(BLOCKED_NUMBER_URI)
- .withProjection(FilteredNumberColumns._ID, FilteredNumberColumns.TYPE)
- .withSelection(FilteredNumberColumns.NORMALIZED_NUMBER + " = ?", E164_NUMBER);
- }
-
- private Query newHasBlockedNumbersExpectedQuery() {
- if (CompatUtils.isNCompatible()) {
- return newHasBlockedNumbersExpectedQueryN();
- }
- return newHasBlockedNumbersExpectedQueryM();
- }
-
- private Query newHasBlockedNumbersExpectedQueryN() {
- return mContentProvider.expectQuery(BLOCKED_NUMBER_URI)
- .withProjection(BlockedNumbers.COLUMN_ID)
- .withSelection(null, null);
- }
-
- private Query newHasBlockedNumbersExpectedQueryM() {
- return mContentProvider.expectQuery(BLOCKED_NUMBER_URI).withProjection(
- FilteredNumberColumns._ID)
- .withSelection(FilteredNumberColumns.TYPE + "="
- + FilteredNumberTypes.BLOCKED_NUMBER, null);
- }
-
- private ContentValues newBlockNumberContentValues() {
- if (CompatUtils.isNCompatible()) {
- return newBlockNumberContentValuesN();
- }
- return newBlockNumberContentValuesM();
- }
-
- private ContentValues newBlockNumberContentValuesN() {
- ContentValues contentValues = new ContentValues();
- contentValues.put(BlockedNumbers.COLUMN_ORIGINAL_NUMBER, NUMBER);
- return contentValues;
- }
-
- private ContentValues newBlockNumberContentValuesM() {
- ContentValues contentValues = new ContentValues();
- contentValues.put(FilteredNumberColumns.NORMALIZED_NUMBER, E164_NUMBER);
- contentValues.put(FilteredNumberColumns.NUMBER, NUMBER);
- contentValues.put(FilteredNumberColumns.COUNTRY_ISO, COUNTRY_ISO);
- contentValues.put(FilteredNumberColumns.TYPE, FilteredNumberTypes.BLOCKED_NUMBER);
- contentValues.put(FilteredNumberColumns.SOURCE, FilteredNumberSources.USER);
- return contentValues;
- }
-
- private class CheckBlockedListener implements OnCheckBlockedListener {
- public final CountDownLatch onCheckCompleteCalled;
- public Integer id;
-
- public CheckBlockedListener() {
- onCheckCompleteCalled = new CountDownLatch(1);
- }
-
- @Override
- public void onCheckComplete(Integer id) {
- this.id = id;
- onCheckCompleteCalled.countDown();
- }
-
- public Integer waitForCallback() throws InterruptedException {
- if (!onCheckCompleteCalled.await(5000, TimeUnit.MILLISECONDS)) {
- throw new IllegalStateException("Waiting on callback timed out.");
- }
- return id;
- }
- }
-
- private class HasBlockedNumbersListener implements OnHasBlockedNumbersListener {
- public final CountDownLatch onHasBlockedNumbersCalled;
- public boolean hasBlockedNumbers;
-
- public HasBlockedNumbersListener() {
- onHasBlockedNumbersCalled = new CountDownLatch(1);
- }
-
- @Override
- public void onHasBlockedNumbers(boolean hasBlockedNumbers) {
- this.hasBlockedNumbers = hasBlockedNumbers;
- onHasBlockedNumbersCalled.countDown();
- }
-
- public boolean waitForCallback() throws InterruptedException {
- if (!onHasBlockedNumbersCalled.await(5000, TimeUnit.MILLISECONDS)) {
- throw new IllegalStateException("Waiting on callback timed out.");
- }
- return hasBlockedNumbers;
- }
- }
-
- private class BlockNumberListener implements OnBlockNumberListener {
- public final CountDownLatch onBlockCompleteCalled;
- public Uri uri;
-
- public BlockNumberListener() {
- onBlockCompleteCalled = new CountDownLatch(1);
- }
-
- @Override
- public void onBlockComplete(Uri uri) {
- this.uri = uri;
- onBlockCompleteCalled.countDown();
- }
-
- public Uri waitForCallback() throws InterruptedException {
- if (!onBlockCompleteCalled.await(5000, TimeUnit.MILLISECONDS)) {
- throw new IllegalStateException("Waiting on callback timed out.");
- }
- return uri;
- }
- }
-
- private class UnblockNumberListener implements OnUnblockNumberListener {
- public final CountDownLatch onUnblockCompleteCalled;
- public Integer result;
-
- public UnblockNumberListener() {
- onUnblockCompleteCalled = new CountDownLatch(1);
- }
-
- @Override
- public void onUnblockComplete(int rows, ContentValues values) {
- result = rows;
- onUnblockCompleteCalled.countDown();
- }
-
- public Integer waitForCallback() throws InterruptedException {
- if (!onUnblockCompleteCalled.await(5000, TimeUnit.MILLISECONDS)) {
- throw new IllegalStateException("Waiting on callback timed out.");
- }
- return result;
- }
- }
-}
diff --git a/tests/src/com/android/dialer/database/FilteredNumberProviderTest.java b/tests/src/com/android/dialer/database/FilteredNumberProviderTest.java
deleted file mode 100644
index 1191560f5..000000000
--- a/tests/src/com/android/dialer/database/FilteredNumberProviderTest.java
+++ /dev/null
@@ -1,232 +0,0 @@
-/*
- * Copyright (C) 2015 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.database;
-
-import android.content.ContentResolver;
-import android.content.ContentUris;
-import android.content.ContentValues;
-import android.content.Context;
-import android.database.Cursor;
-import android.database.DatabaseUtils;
-import android.net.Uri;
-import android.test.ProviderTestCase2;
-import android.test.suitebuilder.annotation.MediumTest;
-
-@MediumTest
-public class FilteredNumberProviderTest extends
- ProviderTestCase2<FilteredNumberProviderTest.TestFilteredNumberProvider> {
- private ContentResolver mResolver;
-
- private static final String TIME_ZONE_AMERICA_LOS_ANGELES = "America/Los_Angeles";
- private static final String DEFAULT_TIMEZONE = TIME_ZONE_AMERICA_LOS_ANGELES;
- private static final String DEFAULT_COUNTRY_ISO = "US";
- private static final String TEST_NUMBER = "234567890";
- private static final String TEST_NORMALIZED_NUMBER = "+1234567890";
- private static final long TEST_TIME = 1439936706;
-
- public FilteredNumberProviderTest () {
- super(TestFilteredNumberProvider.class, FilteredNumberContract.AUTHORITY);
- }
-
- @Override
- protected void setUp() throws Exception {
- super.setUp();
- mResolver = getMockContentResolver();
- }
-
- public void testInsert() {
- // Insert row
- Uri uri = mResolver.insert(
- FilteredNumberContract.FilteredNumber.CONTENT_URI,
- getTestValues(null));
- assertNotNull(uri);
- long id = ContentUris.parseId(uri);
- assertTrue(id > 0);
- }
-
- public void testQuery() {
- Cursor cursor = mResolver.query(
- FilteredNumberContract.FilteredNumber.CONTENT_URI, null, null, null, null);
- assertNotNull(cursor);
- assertEquals(cursor.getCount(), 0);
- cursor.close();
- }
-
- public void testInsertAndQuery() {
- // Insert row
- ContentValues testValues = getTestValues(null);
- Uri uri = mResolver.insert(FilteredNumberContract.FilteredNumber.CONTENT_URI, testValues);
-
- // Query
- Cursor cursor = mResolver.query(uri, null, null, null, null);
- assertNotNull(cursor);
- assertEquals(cursor.getCount(), 1);
-
- cursor.moveToFirst();
- assertCursorValues(cursor, testValues);
- cursor.close();
- }
-
- public void testIllegalUri() {
- try {
- mResolver.query(
- Uri.withAppendedPath(
- FilteredNumberContract.FilteredNumber.CONTENT_URI,
- "ILLEGAL"), null, null, null, null);
- fail("Expecting exception but none was thrown.");
- } catch (IllegalArgumentException e) {
- }
- }
-
- public void testQueryWithId() {
- // Insert row
- ContentValues testValues = getTestValues(null);
- Uri uri = mResolver.insert(FilteredNumberContract.FilteredNumber.CONTENT_URI, testValues);
- long id = ContentUris.parseId(uri);
-
- // Query
- Cursor cursor = mResolver.query(
- ContentUris.withAppendedId(
- FilteredNumberContract.FilteredNumber.CONTENT_URI,
- id), null, null, null, null);
- assertNotNull(cursor);
- assertEquals(cursor.getCount(), 1);
-
- cursor.moveToFirst();
- assertCursorValues(cursor, testValues);
- cursor.close();
- }
-
- public void testDelete() {
- // Insert row
- Uri uri = mResolver.insert(
- FilteredNumberContract.FilteredNumber.CONTENT_URI,
- getTestValues(null));
- long id = ContentUris.parseId(uri);
-
- // Delete row
- int rows = mResolver.delete(
- FilteredNumberContract.FilteredNumber.CONTENT_URI,
- FilteredNumberContract.FilteredNumberColumns._ID + " = ?",
- new String[]{Long.toString(id)});
- assertEquals(rows, 1);
-
- // Query
- Cursor cursor = mResolver.query(uri, null, null, null, null);
- assertNotNull(cursor);
- assertEquals(cursor.getCount(), 0);
- cursor.close();
- }
-
- public void testUpdate() {
- // Insert row
- Uri uri = mResolver.insert(
- FilteredNumberContract.FilteredNumber.CONTENT_URI,
- getTestValues(null));
-
- // Update row
- ContentValues v = new ContentValues();
- v.put(FilteredNumberContract.FilteredNumberColumns.TIMES_FILTERED, 3);
- v.put(FilteredNumberContract.FilteredNumberColumns.LAST_TIME_FILTERED, TEST_TIME);
- int rows = mResolver.update(FilteredNumberContract.FilteredNumber.CONTENT_URI, v,
- FilteredNumberContract.FilteredNumberColumns.NORMALIZED_NUMBER + " = ?",
- new String[]{TEST_NORMALIZED_NUMBER});
- assertEquals(rows, 1);
-
- ContentValues expected = getTestValues(TEST_TIME);
- expected.put(FilteredNumberContract.FilteredNumberColumns.TIMES_FILTERED, 3);
- expected.put(FilteredNumberContract.FilteredNumberColumns.LAST_TIME_FILTERED, TEST_TIME);
-
- // Re-query
- Cursor cursor = mResolver.query(uri, null, null, null, null);
- assertNotNull(cursor);
- assertEquals(cursor.getCount(), 1);
- cursor.moveToFirst();
- assertCursorValues(cursor, expected);
- cursor.close();
- }
-
- public void testInsertDefaultValues() {
- // Insert row
- ContentValues v = getTestValues(null);
- Uri uri = mResolver.insert(FilteredNumberContract.FilteredNumber.CONTENT_URI, v);
- assertNotNull(uri);
- long id = ContentUris.parseId(uri);
- assertTrue(id > 0);
-
- // Query
- Cursor cursor = mResolver.query(uri, null, null, null, null);
- assertNotNull(cursor);
- assertEquals(cursor.getCount(), 1);
-
- int creationTimeIndex =
- cursor.getColumnIndex(FilteredNumberContract.FilteredNumberColumns.CREATION_TIME);
- cursor.moveToFirst();
- assertEquals(cursor.getLong(creationTimeIndex), TEST_TIME);
- cursor.close();
- }
-
- @Override
- protected void tearDown() throws Exception {
- getProvider().closeDb();
- super.tearDown();
- }
-
- private ContentValues getTestValues(Long timeNow) {
- ContentValues v = new ContentValues();
- v.putNull(FilteredNumberContract.FilteredNumberColumns._ID);
- v.put(FilteredNumberContract.FilteredNumberColumns.NORMALIZED_NUMBER,
- TEST_NORMALIZED_NUMBER);
- v.put(FilteredNumberContract.FilteredNumberColumns.NUMBER, TEST_NUMBER);
- v.put(FilteredNumberContract.FilteredNumberColumns.COUNTRY_ISO, DEFAULT_COUNTRY_ISO);
- v.put(FilteredNumberContract.FilteredNumberColumns.TIMES_FILTERED, 0);
- v.putNull(FilteredNumberContract.FilteredNumberColumns.LAST_TIME_FILTERED);
- v.put(FilteredNumberContract.FilteredNumberColumns.CREATION_TIME, timeNow);
- v.put(FilteredNumberContract.FilteredNumberColumns.SOURCE, 1);
- v.put(FilteredNumberContract.FilteredNumberColumns.TYPE, 1);
- return v;
- }
-
- private void assertCursorValues(Cursor cursor, ContentValues expectedValues) {
- ContentValues v = new ContentValues();
- DatabaseUtils.cursorRowToContentValues(cursor, v);
- v.remove(FilteredNumberContract.FilteredNumberColumns._ID);
- expectedValues.remove(FilteredNumberContract.FilteredNumberColumns._ID);
- assertEquals(v.toString(), expectedValues.toString());
- }
-
- public static class TestFilteredNumberProvider extends FilteredNumberProvider {
- private DialerDatabaseHelper mDialerDatabaseHelper;
-
- @Override
- protected DialerDatabaseHelper getDatabaseHelper(Context context) {
- if (mDialerDatabaseHelper == null) {
- mDialerDatabaseHelper = DialerDatabaseHelper.getNewInstanceForTest(context);
- }
- return mDialerDatabaseHelper;
- }
-
- protected void closeDb() {
- mDialerDatabaseHelper.close();
- }
-
- @Override
- protected long getCurrentTimeMs() {
- return TEST_TIME;
- }
- }
-}
diff --git a/tests/src/com/android/dialer/database/SmartDialPrefixTest.java b/tests/src/com/android/dialer/database/SmartDialPrefixTest.java
deleted file mode 100644
index 78962e3f4..000000000
--- a/tests/src/com/android/dialer/database/SmartDialPrefixTest.java
+++ /dev/null
@@ -1,523 +0,0 @@
-/*
- * Copyright (C) 2013 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.database;
-
-import static com.android.dialer.database.DatabaseTestUtils.*;
-
-import android.database.MatrixCursor;
-import android.database.sqlite.SQLiteDatabase;
-import android.test.suitebuilder.annotation.SmallTest;
-import android.test.AndroidTestCase;
-
-import com.android.dialer.database.DialerDatabaseHelper;
-import com.android.dialer.database.DialerDatabaseHelper.ContactNumber;
-import com.android.dialer.dialpad.SmartDialNameMatcher;
-import com.android.dialer.dialpad.SmartDialPrefix;
-
-import java.lang.Exception;
-import java.lang.Override;
-import java.lang.String;
-import java.util.ArrayList;
-
-/**
- * To run this test, use the command:
- * adb shell am instrument -w -e class com.android.dialer.database.SmartDialPrefixTest /
- * com.android.dialer.tests/android.test.InstrumentationTestRunner
- */
-@SmallTest
-public class SmartDialPrefixTest extends AndroidTestCase {
-
- private DialerDatabaseHelper mTestHelper;
-
- public void testIsCountryNanp_CaseInsensitive() {
- assertFalse(SmartDialPrefix.isCountryNanp(null));
- assertFalse(SmartDialPrefix.isCountryNanp("CN"));
- assertFalse(SmartDialPrefix.isCountryNanp("HK"));
- assertFalse(SmartDialPrefix.isCountryNanp("uk"));
- assertFalse(SmartDialPrefix.isCountryNanp("sg"));
- assertTrue(SmartDialPrefix.isCountryNanp("US"));
- assertTrue(SmartDialPrefix.isCountryNanp("CA"));
- assertTrue(SmartDialPrefix.isCountryNanp("AS"));
- assertTrue(SmartDialPrefix.isCountryNanp("AI"));
- assertTrue(SmartDialPrefix.isCountryNanp("AG"));
- assertTrue(SmartDialPrefix.isCountryNanp("BS"));
- assertTrue(SmartDialPrefix.isCountryNanp("BB"));
- assertTrue(SmartDialPrefix.isCountryNanp("bm"));
- assertTrue(SmartDialPrefix.isCountryNanp("vg"));
- assertTrue(SmartDialPrefix.isCountryNanp("ky"));
- assertTrue(SmartDialPrefix.isCountryNanp("dm"));
- assertTrue(SmartDialPrefix.isCountryNanp("do"));
- assertTrue(SmartDialPrefix.isCountryNanp("gd"));
- assertTrue(SmartDialPrefix.isCountryNanp("gu"));
- assertTrue(SmartDialPrefix.isCountryNanp("jm"));
- assertTrue(SmartDialPrefix.isCountryNanp("pr"));
- assertTrue(SmartDialPrefix.isCountryNanp("ms"));
- assertTrue(SmartDialPrefix.isCountryNanp("mp"));
- assertTrue(SmartDialPrefix.isCountryNanp("kn"));
- assertTrue(SmartDialPrefix.isCountryNanp("lc"));
- assertTrue(SmartDialPrefix.isCountryNanp("vc"));
- assertTrue(SmartDialPrefix.isCountryNanp("tt"));
- assertTrue(SmartDialPrefix.isCountryNanp("tc"));
- assertTrue(SmartDialPrefix.isCountryNanp("vi"));
- }
-
- @Override
- protected void setUp() {
- mTestHelper = DialerDatabaseHelper.getNewInstanceForTest(getContext());
- }
-
- @Override
- protected void tearDown() throws Exception {
- final SQLiteDatabase db = mTestHelper.getWritableDatabase();
- mTestHelper.removeAllContacts(db);
- super.tearDown();
- }
-
- private ArrayList<ContactNumber> getLooseMatchesFromDb(String query) {
- final SmartDialNameMatcher nameMatcher = new SmartDialNameMatcher(query,
- SmartDialPrefix.getMap());
- return mTestHelper.getLooseMatches(query, nameMatcher);
- }
-
- public void testPutForFullName() {
- final SQLiteDatabase db = mTestHelper.getWritableDatabase();
-
- final MatrixCursor nameCursor = constructNewNameCursor();
- final MatrixCursor contactCursor = constructNewContactCursor();
- final ContactNumber jasonsmith = constructNewContactWithDummyIds(contactCursor, nameCursor,
- "", 0, "Jason Smith");
- final ContactNumber jasonsmitt = constructNewContactWithDummyIds(contactCursor, nameCursor,
- "", 1, "Jason Smitt");
- final ContactNumber alphabet = constructNewContactWithDummyIds(contactCursor, nameCursor,
- "12345678", 2, "abc def ghi jkl mno pqrs tuv wxyz");
-
- mTestHelper.insertUpdatedContactsAndNumberPrefix(db, contactCursor, Long.valueOf(0));
- mTestHelper.insertNamePrefixes(db, nameCursor);
-
- nameCursor.close();
- contactCursor.close();
-
- final ArrayList<ContactNumber> result1 = getLooseMatchesFromDb("5276676484");
- assertFalse(result1.contains(jasonsmitt));
-
- final ArrayList<ContactNumber> result2 = getLooseMatchesFromDb("5276676488");
- assertFalse(result2.contains(jasonsmith));
- assertTrue(result2.contains(jasonsmitt));
-
- assertTrue(getLooseMatchesFromDb("22233344455566677778889999").contains(alphabet));
- assertTrue(getLooseMatchesFromDb("33344455566677778889999").contains(alphabet));
- assertTrue(getLooseMatchesFromDb("44455566677778889999").contains(alphabet));
- assertTrue(getLooseMatchesFromDb("55566677778889999").contains(alphabet));
- assertTrue(getLooseMatchesFromDb("66677778889999").contains(alphabet));
- assertTrue(getLooseMatchesFromDb("77778889999").contains(alphabet));
- assertTrue(getLooseMatchesFromDb("8889999").contains(alphabet));
- assertTrue(getLooseMatchesFromDb("9999").contains(alphabet));
-
- // Makes sure the phone number is correctly added.
- assertTrue(getLooseMatchesFromDb("12345678").contains(alphabet));
- }
-
- public void testPutForPartialName() {
- final SQLiteDatabase db = mTestHelper.getWritableDatabase();
-
- final MatrixCursor nameCursor = constructNewNameCursor();
- final MatrixCursor contactCursor = constructNewContactCursor();
- final ContactNumber maryjane = constructNewContactWithDummyIds(contactCursor, nameCursor,
- "", 0, "Mary Jane");
- final ContactNumber sarahsmith = constructNewContactWithDummyIds(contactCursor, nameCursor,
- "", 1, "Sarah Smith");
- final ContactNumber jasonsmitt = constructNewContactWithDummyIds(contactCursor, nameCursor,
- "", 2, "Jason Smitt");
-
- mTestHelper.insertUpdatedContactsAndNumberPrefix(db, contactCursor, Long.valueOf(0));
- mTestHelper.insertNamePrefixes(db, nameCursor);
-
- nameCursor.close();
- contactCursor.close();
-
- final ArrayList<ContactNumber> result1 = getLooseMatchesFromDb("6279");
- assertTrue(result1.contains(maryjane));
- assertFalse(result1.contains(jasonsmitt));
-
- // 72 corresponds to sa = "Sarah Smith" but not "Jason Smitt" or "Mary Jane"
- final ArrayList<ContactNumber> result2 = getLooseMatchesFromDb("72");
- assertFalse(result2.contains(maryjane));
- assertTrue(result2.contains(sarahsmith));
- assertFalse(result2.contains(jasonsmitt));
-
- // 76 corresponds to sm = "Sarah Smith" and "Jason Smitt" but not "Mary Jane"
- final ArrayList<ContactNumber> result3 = getLooseMatchesFromDb("76");
- assertFalse(result3.contains(maryjane));
- assertTrue(result3.contains(sarahsmith));
- assertTrue(result3.contains(jasonsmitt));
- }
-
- public void testPutForNameTokens() {
- final SQLiteDatabase db = mTestHelper.getWritableDatabase();
-
- final MatrixCursor nameCursor = constructNewNameCursor();
- final MatrixCursor contactCursor = constructNewContactCursor();
- final ContactNumber jasonfwilliams = constructNewContactWithDummyIds(contactCursor,
- nameCursor, "", 0, "Jason F. Williams");
-
- mTestHelper.insertUpdatedContactsAndNumberPrefix(db, contactCursor, Long.valueOf(0));
- mTestHelper.insertNamePrefixes(db, nameCursor);
-
- nameCursor.close();
- contactCursor.close();
-
- assertTrue(getLooseMatchesFromDb("527").contains(jasonfwilliams));
- // 72 corresponds to sa = "Sarah Smith" but not "Jason Smitt" or "Mary Jane"
- assertTrue(getLooseMatchesFromDb("945").contains(jasonfwilliams));
- // 76 corresponds to sm = "Sarah Smith" and "Jason Smitt" but not "Mary Jane"
- assertFalse(getLooseMatchesFromDb("66").contains(jasonfwilliams));
- }
-
- public void testPutForInitialMatches() {
- final SQLiteDatabase db = mTestHelper.getWritableDatabase();
-
- final MatrixCursor nameCursor = constructNewNameCursor();
- final MatrixCursor contactCursor = constructNewContactCursor();
- final ContactNumber martinjuniorharry = constructNewContactWithDummyIds(contactCursor,
- nameCursor, "", 0, "Martin Jr Harry");
-
- mTestHelper.insertUpdatedContactsAndNumberPrefix(db, contactCursor, Long.valueOf(0));
- mTestHelper.insertNamePrefixes(db, nameCursor);
-
- nameCursor.close();
- contactCursor.close();
-
- // 654 corresponds to mjh = "(M)artin (J)r (H)arry"
- assertTrue(getLooseMatchesFromDb("654").contains(martinjuniorharry));
- // The reverse (456) does not match (for now)
- assertFalse(getLooseMatchesFromDb("456").contains(martinjuniorharry));
- // 6542 corresponds to mjha = "(M)artin (J)r (Ha)rry"
- assertTrue(getLooseMatchesFromDb("6542").contains(martinjuniorharry));
- // 542 corresponds to jha = "Martin (J)r (Ha)rry"
- assertTrue(getLooseMatchesFromDb("542").contains(martinjuniorharry));
- // 642 corresponds to mha = "(M)artin Jr (Ha)rry"
- assertTrue(getLooseMatchesFromDb("642").contains(martinjuniorharry));
- // 6542779 (M)artin (J)r (Harry)
- assertTrue(getLooseMatchesFromDb("6542779").contains(martinjuniorharry));
- // 65742779 (M)artin (Jr) (Harry)
- assertTrue(getLooseMatchesFromDb("65742779").contains(martinjuniorharry));
- // 542779 Martin (J)r (Harry)
- assertTrue(getLooseMatchesFromDb("542779").contains(martinjuniorharry));
- // 547 doesn't match
- assertFalse(getLooseMatchesFromDb("547").contains(martinjuniorharry));
- // 655 doesn't match
- assertFalse(getLooseMatchesFromDb("655").contains(martinjuniorharry));
- // 653 doesn't match
- assertFalse(getLooseMatchesFromDb("653").contains(martinjuniorharry));
- // 6543 doesn't match
- assertFalse(getLooseMatchesFromDb("6543").contains(martinjuniorharry));
-
- // 7 actual rows, + 1 for the dummy number we added
- assertEquals(8, mTestHelper.countPrefixTableRows(db));
- }
-
- public void testPutForInitialMatchesForLongTokenNames() {
-
- final SQLiteDatabase db = mTestHelper.getWritableDatabase();
-
- final MatrixCursor nameCursor = constructNewNameCursor();
- final MatrixCursor contactCursor = constructNewContactCursor();
- final ContactNumber alphabet = constructNewContactWithDummyIds(contactCursor, nameCursor,
- "12345678", 0, "abc def ghi jkl mno pqrs tuv wxyz");
-
- mTestHelper.insertUpdatedContactsAndNumberPrefix(db, contactCursor, Long.valueOf(0));
- mTestHelper.insertNamePrefixes(db, nameCursor);
-
- nameCursor.close();
- contactCursor.close();
-
- // Makes sure only only the first two and last two token are considered for initials.
- // The cut-off constant can be set in SmartDialPrefix.java
- assertTrue(getLooseMatchesFromDb("2389999").contains(alphabet));
- assertTrue(getLooseMatchesFromDb("239999").contains(alphabet));
- assertTrue(getLooseMatchesFromDb("23888").contains(alphabet));
- assertTrue(getLooseMatchesFromDb("2333").contains(alphabet));
- assertTrue(getLooseMatchesFromDb("289999").contains(alphabet));
- assertTrue(getLooseMatchesFromDb("2888").contains(alphabet));
- assertTrue(getLooseMatchesFromDb("29999").contains(alphabet));
- assertTrue(getLooseMatchesFromDb("3888").contains(alphabet));
- assertTrue(getLooseMatchesFromDb("39999").contains(alphabet));
- assertTrue(getLooseMatchesFromDb("389999").contains(alphabet));
- assertTrue(getLooseMatchesFromDb("89999").contains(alphabet));
- }
-
- public void testCheckLongToken() {
- final SQLiteDatabase db = mTestHelper.getWritableDatabase();
-
- final MatrixCursor nameCursor = constructNewNameCursor();
- final MatrixCursor contactCursor = constructNewContactCursor();
- final ContactNumber alphabet = constructNewContactWithDummyIds(contactCursor, nameCursor,
- "1", 0, " aaaa bbbb cccc dddd eeee ffff gggg hhhh iiii jjjj kkkk llll mmmm nnnn" +
- " oooo pppp qqqq rrrr ssss tttt uuuu vvvv wwww xxxx yyyy zzzz");
-
- final ContactNumber alphabet2 = constructNewContactWithDummyIds(contactCursor, nameCursor,
- "1", 1, "aaaabbbbccccddddeeeeffffgggghhhhiiiijjjjkkkkllllmmmmnnnnooooppppqqqqrrrr" +
- "ssssttttuuuuvvvvwwwwxxxxyyyyzzzz");
-
- mTestHelper.insertUpdatedContactsAndNumberPrefix(db, contactCursor, Long.valueOf(0));
- mTestHelper.insertNamePrefixes(db, nameCursor);
-
- nameCursor.close();
- contactCursor.close();
-
- assertTrue(getLooseMatchesFromDb("2222").contains(alphabet));
- assertEquals(40, mTestHelper.countPrefixTableRows(db));
- }
-
- public void testAccentedCharacters() {
- final SQLiteDatabase db = mTestHelper.getWritableDatabase();
-
- final MatrixCursor nameCursor = constructNewNameCursor();
- final MatrixCursor contactCursor = constructNewContactCursor();
- final ContactNumber reene = constructNewContactWithDummyIds(contactCursor, nameCursor,
- "0", 0, "Reenée");
- final ContactNumber bronte = constructNewContactWithDummyIds(contactCursor, nameCursor,
- "0", 1, "Brontë");
-
- mTestHelper.insertUpdatedContactsAndNumberPrefix(db, contactCursor, Long.valueOf(0));
- mTestHelper.insertNamePrefixes(db, nameCursor);
-
- nameCursor.close();
- contactCursor.close();
-
- assertTrue(getLooseMatchesFromDb("733633").contains(reene));
- assertTrue(getLooseMatchesFromDb("276683").contains(bronte));
- }
-
- public void testNumbersInName() {
- final SQLiteDatabase db = mTestHelper.getWritableDatabase();
-
- final MatrixCursor nameCursor = constructNewNameCursor();
- final MatrixCursor contactCursor = constructNewContactCursor();
- final ContactNumber contact = constructNewContactWithDummyIds(contactCursor, nameCursor,
- "0", 0, "12345678");
- final ContactNumber teacher = constructNewContactWithDummyIds(contactCursor, nameCursor,
- "0", 1, "1st Grade Teacher");
-
- mTestHelper.insertUpdatedContactsAndNumberPrefix(db, contactCursor, Long.valueOf(0));
- mTestHelper.insertNamePrefixes(db, nameCursor);
-
- nameCursor.close();
- contactCursor.close();
-
- assertTrue(getLooseMatchesFromDb("12345678").contains(contact));
- assertTrue(getLooseMatchesFromDb("17847233").contains(teacher));
- assertTrue(getLooseMatchesFromDb("14832").contains(teacher));
- }
-
- public void testPutForNumbers() {
- final SQLiteDatabase db = mTestHelper.getWritableDatabase();
-
- final MatrixCursor nameCursor = constructNewNameCursor();
- final MatrixCursor contactCursor = constructNewContactCursor();
- final ContactNumber contactno1 = constructNewContactWithDummyIds(contactCursor, nameCursor,
- "510-527-2357", 0, "James");
- final ContactNumber contactno2 = constructNewContactWithDummyIds(contactCursor, nameCursor,
- "77212862357", 1, "James");
- final ContactNumber contactno3 = constructNewContactWithDummyIds(contactCursor, nameCursor,
- "+13684976334", 2, "James");
-
- mTestHelper.insertUpdatedContactsAndNumberPrefix(db, contactCursor, Long.valueOf(0));
- mTestHelper.insertNamePrefixes(db, nameCursor);
-
- nameCursor.close();
- contactCursor.close();
-
- assertTrue(getLooseMatchesFromDb("510").contains(contactno1));
- assertFalse(getLooseMatchesFromDb("511").contains(contactno1));
- assertTrue(getLooseMatchesFromDb("77212862357").contains(contactno2));
- assertFalse(getLooseMatchesFromDb("77212862356").contains(contactno2));
- assertTrue(getLooseMatchesFromDb("1368").contains(contactno3));
- assertFalse(getLooseMatchesFromDb("1367").contains(contactno3));
- }
-
- public void testPutNumbersCountryCode() {
- final SQLiteDatabase db = mTestHelper.getWritableDatabase();
-
- final MatrixCursor nameCursor = constructNewNameCursor();
- final MatrixCursor contactCursor = constructNewContactCursor();
- final ContactNumber contactno1 = constructNewContactWithDummyIds(contactCursor, nameCursor,
- "+13684976334", 0, "James");
- final ContactNumber contactno2 = constructNewContactWithDummyIds(contactCursor, nameCursor,
- "+65 9177-6930", 1, "Jason");
- final ContactNumber contactno3 = constructNewContactWithDummyIds(contactCursor, nameCursor,
- "+85212345678", 2, "Mike");
- final ContactNumber contactno4 = constructNewContactWithDummyIds(contactCursor, nameCursor,
- "+85112345678", 3, "Invalid");
- final ContactNumber contactno5 = constructNewContactWithDummyIds(contactCursor, nameCursor,
- "+852", 4, "Invalid");
-
- mTestHelper.insertUpdatedContactsAndNumberPrefix(db, contactCursor, Long.valueOf(0));
- mTestHelper.insertNamePrefixes(db, nameCursor);
-
- nameCursor.close();
- contactCursor.close();
-
- assertTrue(getLooseMatchesFromDb("1368").contains(contactno1));
- assertTrue(getLooseMatchesFromDb("368497").contains(contactno1));
- assertFalse(getLooseMatchesFromDb("2368497").contains(contactno1));
-
- assertTrue(getLooseMatchesFromDb("6591776930").contains(contactno2));
- assertTrue(getLooseMatchesFromDb("91776930").contains(contactno2));
- assertFalse(getLooseMatchesFromDb("591776930").contains(contactno2));
-
- assertTrue(getLooseMatchesFromDb("85212345678").contains(contactno3));
- assertTrue(getLooseMatchesFromDb("12345678").contains(contactno3));
- assertFalse(getLooseMatchesFromDb("5212345678").contains(contactno3));
-
- assertTrue(getLooseMatchesFromDb("85112345678").contains(contactno4));
- assertFalse(getLooseMatchesFromDb("12345678").contains(contactno4));
- }
-
- // Tests special case handling for NANP numbers
- public void testPutNumbersNANP() {
- SmartDialPrefix.setUserInNanpRegion(true);
- final SQLiteDatabase db = mTestHelper.getWritableDatabase();
-
- final MatrixCursor nameCursor = constructNewNameCursor();
- final MatrixCursor contactCursor = constructNewContactCursor();
- final ContactNumber contactno1 = constructNewContactWithDummyIds(contactCursor, nameCursor,
- "16503337596", 0, "James");
- final ContactNumber contactno2 = constructNewContactWithDummyIds(contactCursor, nameCursor,
- "5109921234", 1, "Michael");
- final ContactNumber contactno3 = constructNewContactWithDummyIds(contactCursor, nameCursor,
- "(415)-123-4567", 2, "Jason");
- final ContactNumber contactno4 = constructNewContactWithDummyIds(contactCursor, nameCursor,
- "1 510-284-9170", 3, "Mike");
- final ContactNumber contactno5 = constructNewContactWithDummyIds(contactCursor, nameCursor,
- "1-415-123-123", 4, "Invalid");
- final ContactNumber contactno6 = constructNewContactWithDummyIds(contactCursor, nameCursor,
- "415-123-123", 5, "Invalid2");
- final ContactNumber contactno7 = constructNewContactWithDummyIds(contactCursor, nameCursor,
- "+1-510-284-9170", 6, "Mike");
- final ContactNumber contactno8 = constructNewContactWithDummyIds(contactCursor, nameCursor,
- "+1-510-284-917", 7, "Invalid");
- final ContactNumber contactno9 = constructNewContactWithDummyIds(contactCursor, nameCursor,
- "+857-510-284-9170", 8, "Inv");
-
- mTestHelper.insertUpdatedContactsAndNumberPrefix(db, contactCursor, Long.valueOf(0));
- mTestHelper.insertNamePrefixes(db, nameCursor);
-
- nameCursor.close();
- contactCursor.close();
-
- assertTrue(getLooseMatchesFromDb("16503337596").contains(contactno1));
- assertTrue(getLooseMatchesFromDb("6503337596").contains(contactno1));
- assertTrue(getLooseMatchesFromDb("3337596").contains(contactno1));
-
- assertTrue(getLooseMatchesFromDb("5109921234").contains(contactno2));
- assertTrue(getLooseMatchesFromDb("9921234").contains(contactno2));
-
- assertTrue(getLooseMatchesFromDb("4151234567").contains(contactno3));
- assertTrue(getLooseMatchesFromDb("1234567").contains(contactno3));
-
- assertTrue(getLooseMatchesFromDb("15102849170").contains(contactno4));
- assertTrue(getLooseMatchesFromDb("5102849170").contains(contactno4));
- assertTrue(getLooseMatchesFromDb("2849170").contains(contactno4));
-
- assertTrue(getLooseMatchesFromDb("1415123123").contains(contactno5));
- assertFalse(getLooseMatchesFromDb("415123123").contains(contactno5));
- assertFalse(getLooseMatchesFromDb("123123").contains(contactno5));
-
- assertTrue(getLooseMatchesFromDb("415123123").contains(contactno6));
- assertFalse(getLooseMatchesFromDb("123123").contains(contactno6));
-
- assertTrue(getLooseMatchesFromDb("15102849170").contains(contactno7));
- assertTrue(getLooseMatchesFromDb("5102849170").contains(contactno7));
- assertTrue(getLooseMatchesFromDb("2849170").contains(contactno7));
- assertFalse(getLooseMatchesFromDb("849170").contains(contactno7));
- assertFalse(getLooseMatchesFromDb("10849170").contains(contactno7));
-
- assertTrue(getLooseMatchesFromDb("1510284917").contains(contactno8));
- assertTrue(getLooseMatchesFromDb("510284917").contains(contactno8));
- assertFalse(getLooseMatchesFromDb("2849170").contains(contactno8));
-
- assertTrue(getLooseMatchesFromDb("8575102849170").contains(contactno9));
- assertFalse(getLooseMatchesFromDb("5102849170").contains(contactno9));
- assertFalse(getLooseMatchesFromDb("2849170").contains(contactno9));
-
- // TODO(klp) Adds test for non-NANP region number matchings.
- }
-
- // Tests special case handling for non-NANP numbers
- public void testPutNumbersNonNANP() {
- SmartDialPrefix.setUserInNanpRegion(false);
- final SQLiteDatabase db = mTestHelper.getWritableDatabase();
-
- final MatrixCursor nameCursor = constructNewNameCursor();
- final MatrixCursor contactCursor = constructNewContactCursor();
-
- final ContactNumber contactno0 = constructNewContactWithDummyIds(contactCursor, nameCursor,
- "(415)-123-4567", 0, "Jason");
- final ContactNumber contactno1 = constructNewContactWithDummyIds(contactCursor, nameCursor,
- "1 510-284-9170", 1, "Mike");
-
-
- mTestHelper.insertUpdatedContactsAndNumberPrefix(db, contactCursor, Long.valueOf(0));
- mTestHelper.insertNamePrefixes(db, nameCursor);
-
- nameCursor.close();
- contactCursor.close();
-
- assertTrue(getLooseMatchesFromDb("4151234567").contains(contactno0));
- assertFalse(getLooseMatchesFromDb("1234567").contains(contactno0));
-
- assertTrue(getLooseMatchesFromDb("15102849170").contains(contactno1));
- assertFalse(getLooseMatchesFromDb("5102849170").contains(contactno1));
- assertFalse(getLooseMatchesFromDb("2849170").contains(contactno1));
- }
-
- public void testParseInfo() {
- final String name = "Mcdonald Jamie-Cullum";
- final ArrayList<String> info = SmartDialPrefix.parseToIndexTokens(name);
- assertEquals(3, info.size());
- assertEquals(8, info.get(0).length());
- assertEquals(5, info.get(1).length());
- assertEquals(6, info.get(2).length());
-
- final String name2 = "aaa bbb ccc ddd eee fff ggg hhh iii jjj kkk";
- final ArrayList<String> info2 = SmartDialPrefix.parseToIndexTokens(name2);
- assertEquals(11, info2.size());
- assertEquals(3, info2.get(0).length());
- assertEquals(3, info2.get(10).length());
-
- final String name3 = "this is- a,test name";
- final ArrayList<String> info3 = SmartDialPrefix.parseToIndexTokens(name3);
- assertEquals(5, info3.size());
- assertEquals(2, info3.get(1).length());
- assertEquals(1, info3.get(2).length());
- assertEquals(4, info3.get(3).length());
- assertEquals(4, info3.get(4).length());
-
- final String name4 = "M c-Donald James";
- final ArrayList<String> info4 = SmartDialPrefix.parseToIndexTokens(name4);
- assertEquals(4, info4.size());
- assertEquals(1, info4.get(1).length());
- assertEquals(6, info4.get(2).length());
-
- final String name5 = " Aa'Bb c dddd e'e";
- final ArrayList<String> info5 = SmartDialPrefix.parseToIndexTokens(name5);
- assertEquals(6, info5.size());
- assertEquals(2, info5.get(0).length());
- assertEquals(1, info5.get(5).length());
- }
-}
diff --git a/tests/src/com/android/dialer/database/VoicemailArchiveProviderTest.java b/tests/src/com/android/dialer/database/VoicemailArchiveProviderTest.java
deleted file mode 100644
index abc2dc5b0..000000000
--- a/tests/src/com/android/dialer/database/VoicemailArchiveProviderTest.java
+++ /dev/null
@@ -1,306 +0,0 @@
-/*
- * Copyright (C) 2016 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.database;
-
-import android.content.ContentUris;
-import android.content.ContentValues;
-import android.content.Context;
-import android.database.Cursor;
-import android.net.Uri;
-import android.test.ProviderTestCase2;
-import android.test.mock.MockContentResolver;
-import com.android.dialer.database.VoicemailArchiveContract.VoicemailArchive;
-
-import java.io.File;
-import java.io.OutputStream;
-
-/**
- * Tests for {@link VoicemailArchiveProvider}.
- */
-public class VoicemailArchiveProviderTest extends
- ProviderTestCase2<VoicemailArchiveProviderTest.TestVoicemailArchiveProvider> {
- private static final String TEST_MIME_TYPE = "audio/mp3";
- private static final String TEST_NUMBER = "+1412555555";
- private static final int TEST_ARCHIVED = 1;
- private static final String TEST_STRING = "TEST";
-
- private MockContentResolver mResolver;
- private Cursor mCursor;
- private Uri mVoicemailUri;
-
- public VoicemailArchiveProviderTest() {
- super(TestVoicemailArchiveProvider.class, VoicemailArchiveContract.AUTHORITY);
- }
-
- @Override
- protected void setUp() throws Exception {
- super.setUp();
- mResolver = getMockContentResolver();
- }
-
- @Override
- protected void tearDown() throws Exception {
- if (mCursor != null) {
- mCursor.close();
- }
- // Need to delete test.cache folder created by {@link android.test.ProviderTestCase2}
- deleteRecursive(getContext().getCacheDir());
- getProvider().closeDb();
- super.tearDown();
- }
-
- public void testInsert() {
- insertVoicemail();
- assertNotNull(mVoicemailUri);
- assertTrue(doesRowExist());
- long id = ContentUris.parseId(mVoicemailUri);
- assertTrue(id > 0);
- }
-
- public void testQuery_createFile() throws Exception {
- insertVoicemail();
- assertTrue(doesRowExist());
- assertFalse(doesFileExist());
- createFile();
- assertTrue(doesFileExist());
- }
-
- public void testQuery_createFileMimeTypeIsAMR() throws Exception {
- insertVoicemailWithMimeType("audio/amr");
- assertTrue(doesRowExist());
- assertFalse(doesFileExist());
- createFile();
- assertTrue(doesFileExist());
- assertEquals("amr", getFileExtension(getFilePath()));
- }
-
- public void testQuery_createFileMimeTypeIsMP3() throws Exception {
- insertVoicemailWithMimeType("audio/mpeg");
- assertTrue(doesRowExist());
- assertFalse(doesFileExist());
- createFile();
- assertTrue(doesFileExist());
- assertEquals("mp3", getFileExtension(getFilePath()));
- }
-
- public void testQuery_createFileMimeTypeNotExists() throws Exception {
- insertVoicemailWithMimeType(TEST_STRING);
- assertTrue(doesRowExist());
- assertFalse(doesFileExist());
- createFile();
- assertTrue(doesFileExist());
- assertEquals("", getFileExtension(getFilePath()));
- }
-
- public void testQuery() {
- insertVoicemail();
- updateCursor();
- assertCursorCount(1);
- assertContentValues();
- }
-
- public void testQuery_correctValuesSelection() {
- insertVoicemail();
- updateCursorWithIdQuery();
- assertCursorCount(1);
- assertContentValues();
- }
-
- public void testQuery_illegalUri() {
- try {
- mResolver.query(Uri.withAppendedPath(VoicemailArchive.CONTENT_URI, TEST_STRING),
- null, null, null, null);
- fail("Expecting exception but none was thrown.");
- } catch (IllegalArgumentException e) {}
- }
-
- public void testUpdate() throws Exception {
- insertVoicemail();
- assertTrue(doesRowExist());
- ContentValues values = new ContentValues();
- values.put(VoicemailArchive.MIME_TYPE, TEST_STRING);
- values.put(VoicemailArchive.NUMBER, TEST_STRING);
- values.put(VoicemailArchive.ARCHIVED, false);
- mResolver.update(mVoicemailUri, values, null, null);
- updateCursor();
- assertEquals(TEST_STRING, mCursor.getString(mCursor.getColumnIndex(VoicemailArchive.MIME_TYPE)));
- assertEquals(TEST_STRING, mCursor.getString(mCursor.getColumnIndex(VoicemailArchive.NUMBER)));
- assertEquals(false, mCursor.getInt(
- mCursor.getColumnIndex(VoicemailArchive.ARCHIVED)) == 1);
- }
-
- public void testUpdate_selection() throws Exception {
- insertVoicemail();
- assertTrue(doesRowExist());
- ContentValues values = new ContentValues();
- values.put(VoicemailArchive.MIME_TYPE, TEST_STRING);
- values.put(VoicemailArchive.NUMBER, TEST_STRING);
- values.put(VoicemailArchive.ARCHIVED, false);
- mResolver.update(VoicemailArchive.CONTENT_URI, values, getIdQuery(), null);
- updateCursor();
- assertEquals(TEST_STRING, mCursor.getString(mCursor.getColumnIndex(VoicemailArchive.MIME_TYPE)));
- assertEquals(TEST_STRING, mCursor.getString(mCursor.getColumnIndex(VoicemailArchive.NUMBER)));
- assertEquals(false, mCursor.getInt(
- mCursor.getColumnIndex(VoicemailArchive.ARCHIVED)) == 1);
- }
-
- public void testUpdate_illegalUri() {
- try {
- mResolver.update(Uri.withAppendedPath(VoicemailArchive.CONTENT_URI, TEST_STRING),
- null, null, null);
- fail("Expecting exception but none was thrown.");
- } catch (IllegalArgumentException e) {}
- }
-
- public void testDelete() throws Exception {
- insertVoicemail();
- createFile();
- assertTrue(doesRowExist());
- assertTrue(doesFileExist());
- mResolver.delete(mVoicemailUri, null, null);
- assertFalse(doesRowExist());
- assertFalse(doesFileExist());
- }
-
- public void testDelete_selection() throws Exception{
- insertVoicemail();
- createFile();
- assertTrue(doesRowExist());
- assertTrue(doesFileExist());
- mResolver.delete(VoicemailArchive.CONTENT_URI, getIdQuery(), null);
- assertFalse(doesRowExist());
- assertFalse(doesFileExist());
- }
-
- public void testDelete_illegalUri() {
- try {
- mResolver.delete(Uri.withAppendedPath(VoicemailArchive.CONTENT_URI, TEST_STRING),
- null, null);
- fail("Expecting exception but none was thrown.");
- } catch (IllegalArgumentException e) {}
- }
-
- private boolean doesRowExist() {
- Cursor tempCursor = mResolver.query(mVoicemailUri, null, null, null, null);
- boolean rowExists = tempCursor != null && tempCursor.getCount() > 0;
- tempCursor.close();
- return rowExists;
- }
-
- private boolean doesFileExist() {
- File voicemailFile = new File(getFilePath());
- return voicemailFile.exists();
- }
-
- private static String getFileExtension(String filePath) {
- File file = new File(filePath);
- String fileName = file.getName();
- int index = fileName.lastIndexOf(".");
- return index > 0 ? fileName.substring(index + 1) : "";
- }
-
- private void assertCursorCount(int count) {
- assertEquals(count, mCursor.getCount());
- }
-
- private void assertContentValues() {
- assertEquals(TEST_MIME_TYPE, mCursor
- .getString(mCursor.getColumnIndex(VoicemailArchive.MIME_TYPE)));
- assertEquals(TEST_NUMBER, mCursor
- .getString(mCursor.getColumnIndex(VoicemailArchive.NUMBER)));
- assertEquals(TEST_ARCHIVED, mCursor
- .getInt(mCursor.getColumnIndex(VoicemailArchive.ARCHIVED)));
- }
-
- private void insertVoicemail() {
- mVoicemailUri = mResolver.insert(VoicemailArchive.CONTENT_URI, getTestValues());
- }
-
- private void insertVoicemailWithMimeType(String mimeType) {
- ContentValues values = getTestValues();
- values.put(VoicemailArchive.MIME_TYPE, mimeType);
- mVoicemailUri = mResolver.insert(VoicemailArchive.CONTENT_URI, values);
- }
-
- private void updateCursor() {
- mCursor = mResolver.query(mVoicemailUri, null, null, null, null);
- assertEquals(true, mCursor.getCount() > 0);
- mCursor.moveToFirst();
- }
-
- private void updateCursorWithIdQuery() {
- mCursor = mResolver.query(mVoicemailUri, null, getIdQuery(), null, null);
- assertEquals(true, mCursor.getCount() > 0);
- mCursor.moveToFirst();
- }
-
- private void createFile() throws Exception {
- assertFalse(doesFileExist());
- // Opening output stream and closing it should create the file
- OutputStream outputStream = mResolver.openOutputStream(mVoicemailUri);
- outputStream.close();
- }
-
- private String getIdQuery() {
- return VoicemailArchive._ID + "=" + ContentUris.parseId(mVoicemailUri);
- }
-
- private String getFilePath() {
- if (mCursor == null) {
- updateCursor();
- }
- return mCursor.getString(mCursor.getColumnIndex(VoicemailArchive._DATA));
- }
-
- private static ContentValues getTestValues() {
- ContentValues values = new ContentValues();
- values.put(VoicemailArchive.NUMBER, TEST_NUMBER);
- values.put(VoicemailArchive.MIME_TYPE, TEST_MIME_TYPE);
- values.put(VoicemailArchive.ARCHIVED, TEST_ARCHIVED);
- return values;
- }
-
- private void deleteRecursive(File fileOrDirectory) {
- if (fileOrDirectory.isDirectory()) {
- for (File child : fileOrDirectory.listFiles()) {
- deleteRecursive(child);
- }
- }
- fileOrDirectory.delete();
- }
-
- public static class TestVoicemailArchiveProvider extends VoicemailArchiveProvider {
- private DialerDatabaseHelper mDialerDatabaseHelper;
-
- @Override
- protected File getFilesDir() {
- return getContext().getCacheDir();
- }
-
- @Override
- protected DialerDatabaseHelper getDatabaseHelper(Context context) {
- if (mDialerDatabaseHelper == null) {
- mDialerDatabaseHelper = DialerDatabaseHelper.getNewInstanceForTest(context);
- }
- return mDialerDatabaseHelper;
- }
-
- protected void closeDb() {
- mDialerDatabaseHelper.close();
- }
- }
-}
diff --git a/tests/src/com/android/dialer/dialpad/DialpadFragmentInstrumentationTest.java b/tests/src/com/android/dialer/dialpad/DialpadFragmentInstrumentationTest.java
deleted file mode 100644
index 876c13ba1..000000000
--- a/tests/src/com/android/dialer/dialpad/DialpadFragmentInstrumentationTest.java
+++ /dev/null
@@ -1,121 +0,0 @@
-package com.android.dialer.dialpad;
-
-import android.test.ActivityInstrumentationTestCase2;
-import android.view.View;
-
-import com.android.dialer.DialtactsActivity;
-import com.android.dialer.R;
-
-/**
- * Tests that rely on instrumenting an actual instance of a {@link DialpadFragment}.
- */
-public class DialpadFragmentInstrumentationTest extends
- ActivityInstrumentationTestCase2<DialtactsActivity> {
- private DialtactsActivity mActivity;
-
- public DialpadFragmentInstrumentationTest() {
- super(DialtactsActivity.class);
- }
-
- @Override
- protected void setUp() throws Exception {
- super.setUp();
- mActivity = getActivity();
- }
-
- /**
- * Simulates a long click event on the zero key with a prior onPressed callback.
- *
- */
- public void testManualLongClickZero_DeletesPreviousCharacter() {
- final DialpadFragment fragment = showDialpad();
- pressAndReleaseKey(9, fragment);
-
- getInstrumentation().runOnMainSync(new Runnable() {
- @Override
- public void run() {
- final View zeroKey = findViewByDigit(0, fragment);
- fragment.onPressed(zeroKey, true);
- fragment.onLongClick(zeroKey);
- }
- });
-
- assertEquals("9+", fragment.getDigitsWidget().getText().toString());
- }
-
- /**
- * Simulates a long click event on the zero key without a prior onPressed
- * callback.
- */
- public void testSystemLongClickZero_PreservesPreviousCharacter() {
- final DialpadFragment fragment = showDialpad();
- pressAndReleaseKey(9, fragment);
-
- getInstrumentation().runOnMainSync(new Runnable() {
- @Override
- public void run() {
- final View zeroKey = findViewByDigit(0, fragment);
- fragment.onLongClick(zeroKey);
- }
- });
-
- assertEquals("9+", fragment.getDigitsWidget().getText().toString());
- }
-
- private DialpadFragment showDialpad() {
- getInstrumentation().runOnMainSync(new Runnable() {
- @Override
- public void run() {
- mActivity.showDialpad();
- }
- });
- getInstrumentation().waitForIdleSync();
- return (DialpadFragment) mActivity.getFragmentManager().findFragmentByTag(
- DialtactsActivity.TAG_DIALPAD_FRAGMENT);
- }
-
- private void pressAndReleaseKey(int digit, final DialpadFragment fragment) {
- final View dialpadKey = findViewByDigit(digit, fragment);
- final String digitsBefore = fragment.getDigitsWidget().getText().toString();
- getInstrumentation().runOnMainSync(new Runnable() {
- @Override
- public void run() {
- fragment.onPressed(dialpadKey, true);
- fragment.onPressed(dialpadKey, false);
- }
- });
- assertEquals(digitsBefore + String.valueOf(digit),
- fragment.getDigitsWidget().getText().toString());
- }
-
- private View findViewByDigit(int digit, DialpadFragment fragment) {
- return fragment.getView().findViewById(getViewIdByDigit(digit));
- }
-
- private int getViewIdByDigit(int digit) {
- switch (digit) {
- case 0:
- return R.id.zero;
- case 1:
- return R.id.one;
- case 2:
- return R.id.two;
- case 3:
- return R.id.three;
- case 4:
- return R.id.four;
- case 5:
- return R.id.five;
- case 6:
- return R.id.six;
- case 7:
- return R.id.seven;
- case 8:
- return R.id.eight;
- case 9:
- return R.id.nine;
- default:
- return 0;
- }
- }
-}
diff --git a/tests/src/com/android/dialer/dialpad/DialpadFragmentTest.java b/tests/src/com/android/dialer/dialpad/DialpadFragmentTest.java
deleted file mode 100644
index 3015e87ff..000000000
--- a/tests/src/com/android/dialer/dialpad/DialpadFragmentTest.java
+++ /dev/null
@@ -1,111 +0,0 @@
-/*
- * Copyright (C) 2012 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.dialpad;
-
-import android.test.suitebuilder.annotation.SmallTest;
-
-import junit.framework.TestCase;
-
-/** Unit tests for {@link DialpadFragment}. */
-@SmallTest
-public class DialpadFragmentTest extends TestCase {
-
- public void testCanAddDigit_Valid() {
- // end, middle, selection to end, middle selection
- assertTrue(DialpadFragment.canAddDigit("123", 3, 3, ';'));
- assertTrue(DialpadFragment.canAddDigit("123", 1, 1, ','));
- assertTrue(DialpadFragment.canAddDigit("123", 1, 3, ';'));
- assertTrue(DialpadFragment.canAddDigit("123", 1, 2, ','));
- }
-
- public void testCanAddDigit_InvalidCharacter() {
- // only handles wait/pause
- try {
- DialpadFragment.canAddDigit("123", 1, 1, '5');
- fail("Calling canAddDigit with invalid character should throw an exception");
- } catch (IllegalArgumentException e) {
- }
- }
-
- public void testCanAddDigit_BadOrNoSelection() {
- // no selection
- assertFalse(DialpadFragment.canAddDigit("123", -1, -1, ';'));
- assertFalse(DialpadFragment.canAddDigit("123", -1, 1, ','));
-
- // start > end
- assertFalse(DialpadFragment.canAddDigit("123", 2, 1, ','));
- }
-
- public void testCanAddDigit_OutOfBounds() {
- // start or end is > digits.length()
- assertFalse(DialpadFragment.canAddDigit("123", 1, 4, ';'));
- assertFalse(DialpadFragment.canAddDigit("123", 4, 4, ','));
- }
-
- public void testCanAddDigit_AsFirstCharacter() {
- assertFalse(DialpadFragment.canAddDigit("", 0, 0, ','));
- assertFalse(DialpadFragment.canAddDigit("123", 0, 0, ';'));
- assertFalse(DialpadFragment.canAddDigit("123", 0, 2, ','));
- assertFalse(DialpadFragment.canAddDigit("123", 0, 3, ','));
- }
-
- public void testCanAddDigit_AdjacentCharacters_Before() {
- // before
- assertFalse(DialpadFragment.canAddDigit("55;55", 2, 2, ';')); // WAIT
- assertFalse(DialpadFragment.canAddDigit("55;55", 1, 2, ';'));
- assertTrue(DialpadFragment.canAddDigit("55,55", 2, 2, ',')); // PAUSE
- assertTrue(DialpadFragment.canAddDigit("55,55", 1, 2, ','));
- assertTrue(DialpadFragment.canAddDigit("55;55", 2, 2, ',')); // WAIT & PAUSE
- assertTrue(DialpadFragment.canAddDigit("55,55", 1, 2, ';'));
- }
-
- public void testCanAddDigit_AdjacentCharacters_After() {
- // after
- assertFalse(DialpadFragment.canAddDigit("55;55", 3, 3, ';')); // WAIT
- assertFalse(DialpadFragment.canAddDigit("55;55", 3, 4, ';'));
- assertTrue(DialpadFragment.canAddDigit("55,55", 3, 3, ',')); // PAUSE
- assertTrue(DialpadFragment.canAddDigit("55,55", 3, 4, ','));
- assertTrue(DialpadFragment.canAddDigit("55;55", 3, 3, ',')); // WAIT & PAUSE
- assertTrue(DialpadFragment.canAddDigit("55,55", 3, 4, ';'));
- }
-
- public void testGetFormattedDigits_NoPostDialString() {
- assertEquals("(510) 333-7596",
- DialpadFragment.getFormattedDigits("5103337596", null, "US"));
- assertEquals("(510) 333-7596",
- DialpadFragment.getFormattedDigits("5103337596", "+15103337596", "US"));
- }
-
- public void testGetFormattedDigits_WithPostDialString() {
- assertEquals("(510) 333-7596,1234",
- DialpadFragment.getFormattedDigits("5103337596,1234", null, "US"));
- assertEquals("(510) 333-7596;;1234",
- DialpadFragment.getFormattedDigits("5103337596;;1234", null, "US"));
- assertEquals("(510) 333-7596;123,,4",
- DialpadFragment.getFormattedDigits("(510)3337596;123,,4", "+15103337596", "US"));
- }
-
- public void testGetFormattedDigits_PostDialStringOnly() {
- assertEquals(",1234567", DialpadFragment.getFormattedDigits(",1234567", null, "US"));
- assertEquals(";4321", DialpadFragment.getFormattedDigits(";4321", null, "US"));
- }
-
- public void testGetFormattedDigits_Invalid() {
- assertEquals(null, DialpadFragment.getFormattedDigits(null, null, "US"));
- assertEquals("", DialpadFragment.getFormattedDigits("", "+15104233335", "US"));
- }
-}
diff --git a/tests/src/com/android/dialer/dialpad/SmartDialNameMatcherTest.java b/tests/src/com/android/dialer/dialpad/SmartDialNameMatcherTest.java
deleted file mode 100644
index c1365f5cf..000000000
--- a/tests/src/com/android/dialer/dialpad/SmartDialNameMatcherTest.java
+++ /dev/null
@@ -1,275 +0,0 @@
-/*
- * Copyright (C) 2012 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.dialpad;
-
-import android.test.suitebuilder.annotation.SmallTest;
-import android.test.suitebuilder.annotation.Suppress;
-import android.util.Log;
-import android.test.AndroidTestCase;
-
-import com.android.dialer.dialpad.SmartDialNameMatcher;
-import com.android.dialer.dialpad.SmartDialPrefix;
-
-import java.text.Normalizer;
-import java.util.ArrayList;
-
-import junit.framework.TestCase;
-
-@SmallTest
-public class SmartDialNameMatcherTest extends TestCase {
- private static final String TAG = "SmartDialNameMatcherTest";
-
- public void testMatches() {
- // Test to ensure that all alphabetic characters are covered
- checkMatches("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",
- "22233344455566677778889999" + "22233344455566677778889999", true, 0, 26 * 2);
- // Should fail because of a mistyped 2 instead of 9 in the second last character
- checkMatches("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",
- "22233344455566677778889999" + "22233344455566677778889929", false, 0, 0);
-
- // Basic name test
- checkMatches("joe", "5", true, 0, 1);
- checkMatches("joe", "56", true, 0, 2);
- checkMatches("joe", "563", true, 0, 3);
-
- // Matches only word boundary.
- checkMatches("joe", "63", false, 0, 0);
- checkMatches("joe oe", "63", true, 4, 6);
-
- // Test for a match across word boundaries
- checkMatches("joe oe", "56363", true, 0, 6);
- }
-
- public void testMatches_repeatedLetters() {
- checkMatches("aaaaaaaaaa", "2222222222", true, 0, 10);
- // Fails because of one extra 2
- checkMatches("aaaaaaaaaa", "22222222222", false, 0, 0);
- checkMatches("zzzzzzzzzz zzzzzzzzzz", "99999999999999999999", true, 0, 21);
- }
-
- public void testMatches_repeatedSpaces() {
- checkMatches("William J Smith", "9455426576", true, 0, 17);
- checkMatches("William J Smith", "576", true, 12, 17);
- // Fails because we start at non-word boundary
- checkMatches("William J Smith", "6576", false, 0, 0);
- }
-
-
- public void testMatches_Initial() {
- // wjs matches (W)illiam (J)ohn (S)mith
- checkMatches("William John Smith", "957", true, 0, 1, 8, 9, 13, 14);
- // wjsmit matches (W)illiam (J)ohn (Smit)h
- checkMatches("William John Smith", "957648", true, 0, 1, 8, 9, 13, 17);
- // wjohn matches (W)illiam (John) Smith
- checkMatches("William John Smith", "95646", true, 0, 1, 8, 12);
- // jsmi matches William (J)ohn (Smi)th
- checkMatches("William John Smith", "5764", true, 8, 9, 13, 16);
- // make sure multiple spaces don't mess things up
- checkMatches("William John Smith", "5764", true, 15, 16, 22, 25);
- }
-
- public void testMatches_InitialWithSeparator() {
- // wjs matches (W)illiam (J)ohn (S)mith
- checkMatches("William John-Smith", "957", true, 0, 1, 8, 9, 13, 14);
- // wjsmit matches (W)illiam (J)ohn-(OShe)a
- checkMatches("William John-O'Shea", "956743", true, 0, 1, 8, 9, 13, 18);
- // wjohn matches (W)illiam-(John) Smith
- checkMatches("William-John Smith", "95646", true, 0, 1, 8, 12);
- // jsmi matches William (J)ohn-(Smi)th
- checkMatches("William John-Smith", "5764", true, 8, 9, 13, 16);
- // wsmi matches (W)illiam John (Smi)th
- checkMatches("William John-Smith", "9764", true, 0, 1, 13, 16);
- // make sure multiple spaces don't mess things up
- checkMatches("William John---Smith", "5764", true, 15, 16, 22, 25);
- // match tokens that are located directly after a non-space separator (studio)
- checkMatches("Berkeley Hair-Studio", "788346", true, 14, 20);
- // match tokens with same initials
- checkMatches("H.Harold", "427653", true, 2, 8);
- // various matching combinations of tokens with similar initials
- checkMatches("Yo-Yoghurt Land", "964487", true, 3, 9);
- checkMatches("Yo-Yoghurt Land", "96448785263", true, 3, 15);
- checkMatches("Yo-Yoghurt Land", "95263", true, 3, 4, 11, 15);
- checkMatches("Yo-Yoghurt Land", "995263", true, 0, 1, 3, 4, 11, 15);
-
- checkMatches("ab zz ef", "23", true, 0, 1, 6, 7);
- }
-
- public void testMatches_repeatedSeparators() {
- // Simple match for single token
- checkMatches("John,,,,,Doe", "5646", true, 0, 4);
- // Match across tokens
- checkMatches("John,,,,,Doe", "56463", true, 0, 10);
- // Match token after chain of separators
- checkMatches("John,,,,,Doe", "363", true, 9, 12);
- }
-
- public void testMatches_LatinMix() {
- // Latin + Chinese characters
- checkMatches("Lee王力Wang宏", "59264", true, 0, 1, 5, 9);
- // Latin + Japanese characters
- checkMatches("千Abcd佳智Efgh佳IJKL", "222333444555", true, 1, 16);
- // Latin + Arabic characters
- checkMatches("Peterعبد الرحمنJames", "752637", true, 0, 1, 15, 20);
- }
-
- public void testMatches_umlaut() {
- checkMatches("ÄÖÜäöü", "268268", true, 0, 6);
- }
-
- public void testMatches_NumberInName() {
- // Number used as display name
- checkMatches("+1-123-456-6789", "1234566789", true, 3, 15);
- // Mix of numbers and letters
- checkMatches("3rd Grade Teacher", "373", true, 0, 3);
- checkMatches("1800 Win A Prize", "1800", true, 0, 4);
- checkMatches("1800 Win A Prize", "1800946277493", true, 0, 16);
- checkMatches("1800 Win A Prize", "977493", true, 5, 6, 11, 16);
- }
-
-
- // TODO: Great if it was treated as "s" or "ss. Figure out if possible without prefix trie?
- @Suppress
- public void testMatches_germanSharpS() {
- checkMatches("ß", "s", true, 0, 1);
- checkMatches("ß", "ss", true, 0, 1);
- }
-
- // TODO: Add this and make it work
- @Suppress
- public void testMatches_greek() {
- // http://en.wikipedia.org/wiki/Greek_alphabet
- fail("Greek letters aren't supported yet.");
- }
-
- // TODO: Add this and make it work
- @Suppress
- public void testMatches_cyrillic() {
- // http://en.wikipedia.org/wiki/Cyrillic_script
- fail("Cyrillic letters aren't supported yet.");
- }
-
-
- public void testMatches_NumberBasic() {
- // Simple basic examples that start the match from the start of the number
- checkMatchesNumber("5103337596", "510", true, 0, 3);
- checkMatchesNumber("5103337596", "511", false, 0, 0);
- checkMatchesNumber("5103337596", "5103337596", true, 0, 10);
- checkMatchesNumber("123-456-789", "123456789", true, 0, 11);
- checkMatchesNumber("123-456-789", "123456788", false, 0, 0);
- checkMatchesNumber("09999999999", "099", true, 0, 3);
- }
-
- public void testMatches_NumberWithCountryCode() {
- // These matches should ignore the country prefix
- // USA (+1)
- checkMatchesNumber("+15103337596", "5103337596", true, 2, 12);
- checkMatchesNumber("+15103337596", "15103337596", true, 0, 12);
-
- // Singapore (+65)
- checkMatchesNumber("+6591776930", "6591", true, 0, 5);
- checkMatchesNumber("+6591776930", "9177", true, 3, 7);
- checkMatchesNumber("+6591776930", "5917", false, 3, 7);
-
- // Hungary (+36)
- checkMatchesNumber("+3612345678", "361234", true, 0, 7);
- checkMatchesNumber("+3612345678", "1234", true, 3, 7);
-
- // Hongkong (+852)
- checkMatchesNumber("+852 2222 2222", "85222222222", true, 0, 14);
- checkMatchesNumber("+852 2222 3333", "2222", true, 5, 9);
-
- // Invalid (+854)
- checkMatchesNumber("+854 1111 2222", "8541111", true, 0, 9);
- checkMatchesNumber("+854 1111 2222", "1111", false, 0, 0);
- }
-
- public void testMatches_NumberNANP() {
- SmartDialPrefix.setUserInNanpRegion(true);
- // An 11 digit number prefixed with 1 should be matched by the 10 digit number, as well as
- // the 7 digit number (without area code)
- checkMatchesNumber("1-510-333-7596", "5103337596", true, true, 2, 14);
- checkMatchesNumber("1-510-333-7596", "3337596", true, true, 6, 14);
-
- // An 11 digit number prefixed with +1 should be matched by the 10 digit number, as well as
- // the 7 digit number (without area code)
- checkMatchesNumber("+1-510-333-7596", "5103337596", true, true, 3, 15);
- checkMatchesNumber("+1-510-333-7596", "3337596", true, true, 7, 15);
- checkMatchesNumber("+1-510-333-7596", "103337596", false, true, 0, 0);
- checkMatchesNumber("+1-510-333-7596", "337596", false, true, 0, 0);
- checkMatchesNumber("+1510 3337596", "5103337596", true, true, 2, 13);
- checkMatchesNumber("+1510 3337596", "3337596", true, true, 6, 13);
- checkMatchesNumber("+1510 3337596", "103337596", false, true, 0, 0);
- checkMatchesNumber("+1510 3337596", "37596", false, true, 0, 0);
-
- // Invalid NANP numbers should not be matched
- checkMatchesNumber("1-510-333-759", "510333759", false, true, 0, 0);
- checkMatchesNumber("510-333-759", "333759", false, true, 0, 0);
-
- // match should fail if NANP flag is switched off
- checkMatchesNumber("1-510-333-7596", "3337596", false, false, 0, 0);
-
- // A 10 digit number without a 1 prefix should be matched by the 7 digit number
- checkMatchesNumber("(650) 292 2323", "2922323", true, true, 6, 14);
- checkMatchesNumber("(650) 292 2323", "6502922323", true, true, 0, 14);
- // match should fail if NANP flag is switched off
- checkMatchesNumber("(650) 292 2323", "2922323", false, false, 0, 0);
- // But this should still match (since it is the full number)
- checkMatchesNumber("(650) 292 2323", "6502922323", true, false, 0, 14);
- }
-
-
- private void checkMatchesNumber(String number, String query, boolean expectedMatches,
- int matchStart, int matchEnd) {
- checkMatchesNumber(number, query, expectedMatches, false, matchStart, matchEnd);
- }
-
- private void checkMatchesNumber(String number, String query, boolean expectedMatches,
- boolean matchNanp, int matchStart, int matchEnd) {
- final SmartDialNameMatcher matcher = new SmartDialNameMatcher(query);
- final SmartDialMatchPosition pos = matcher.matchesNumber(number, query, matchNanp);
- assertEquals(expectedMatches, pos != null);
- if (expectedMatches) {
- assertEquals("start", matchStart, pos.start);
- assertEquals("end", matchEnd, pos.end);
- }
- }
-
- private void checkMatches(String displayName, String query, boolean expectedMatches,
- int... expectedMatchPositions) {
- final SmartDialNameMatcher matcher = new SmartDialNameMatcher(query);
- final ArrayList<SmartDialMatchPosition> matchPositions =
- new ArrayList<SmartDialMatchPosition>();
- final boolean matches = matcher.matchesCombination(
- displayName, query, matchPositions);
- Log.d(TAG, "query=" + query + " text=" + displayName
- + " nfd=" + Normalizer.normalize(displayName, Normalizer.Form.NFD)
- + " nfc=" + Normalizer.normalize(displayName, Normalizer.Form.NFC)
- + " nfkd=" + Normalizer.normalize(displayName, Normalizer.Form.NFKD)
- + " nfkc=" + Normalizer.normalize(displayName, Normalizer.Form.NFKC)
- + " matches=" + matches);
- assertEquals("matches", expectedMatches, matches);
- final int length = expectedMatchPositions.length;
- assertEquals(length % 2, 0);
- if (matches) {
- for (int i = 0; i < length/2; i++) {
- assertEquals("start", expectedMatchPositions[i * 2], matchPositions.get(i).start);
- assertEquals("end", expectedMatchPositions[i * 2 + 1], matchPositions.get(i).end);
- }
- }
- }
-
-}
diff --git a/tests/src/com/android/dialer/dialpad/UnicodeDialerKeyListenerTest.java b/tests/src/com/android/dialer/dialpad/UnicodeDialerKeyListenerTest.java
deleted file mode 100644
index 21ccec3c0..000000000
--- a/tests/src/com/android/dialer/dialpad/UnicodeDialerKeyListenerTest.java
+++ /dev/null
@@ -1,74 +0,0 @@
-/*
- * Copyright (C) 2012 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.dialpad;
-
-import android.test.suitebuilder.annotation.SmallTest;
-
-import com.android.dialer.dialpad.UnicodeDialerKeyListener;
-
-import junit.framework.TestCase;
-/**
- * Test case for {@link UnicodeDialerKeyListener}.
- *
- * adb shell am instrument -w -e class com.android.contacts.dialpad.UnicodeDialerKeyListenerTest \
- com.android.contacts.tests/android.test.InstrumentationTestRunner
- */
-@SmallTest
-public class UnicodeDialerKeyListenerTest extends TestCase {
- private static UnicodeDialerKeyListener mUnicodeDialerKeyListener;
-
- // Pasted numeric digits should remain unchanged
- public void testNumericDigits() {
- // The last 3 arguments don't matter because {@link NumberKeyListener} doesn't care
- // about dest, dstart, dend in
- // public CharSequence filter (CharSequence source, int start, int end,
- // Spanned dest, int dstart, int dend)
- // anyway. This applies to all tests.
- assertEquals(null, mUnicodeDialerKeyListener.filter("111222333", 0, 9, null, 0, 0));
- }
-
- // Pasted Arabic digits should be converted to ascii digits
- public void testArabicDigits() {
- assertEquals("0123456789", mUnicodeDialerKeyListener.filter("٠١٢٣٤٥٦٧٨٩", 0, 10,
- null, 0, 0));
- }
-
- // Pasted Farsi(Persian) digits should be converted to ascii digits
- // Note the difference in digits 4, 5 and 6 when compared to arabic. The rest of the digits
- // look the same compared to the Arabic digits but they actually have different unicode codes.
- public void testFarsiDigits() {
- assertEquals("0123456789", mUnicodeDialerKeyListener.filter("۰۱۲۳۴۵۶۷۸۹", 0, 10,
- null, 0, 0));
- }
-
- // This is a rare use case but we should make sure it works all the same.
- public void testCombinationDigits() {
- assertEquals("15102849177", mUnicodeDialerKeyListener.filter("۱510٢٨٤۹۱۷۷", 0, 11,
- null, 0, 0));
- }
-
- // Test that a normal digit string with dashes is returned unfiltered
- public void testDashes() {
- assertEquals(null, mUnicodeDialerKeyListener.filter("1510-284-9177", 0, 13,
- null, 0, 0));
- }
-
- @Override
- protected void setUp() throws Exception {
- mUnicodeDialerKeyListener = UnicodeDialerKeyListener.INSTANCE;
- }
-}
diff --git a/tests/src/com/android/dialer/filterednumber/BlockedNumbersAutoMigratorTest.java b/tests/src/com/android/dialer/filterednumber/BlockedNumbersAutoMigratorTest.java
deleted file mode 100644
index 505855528..000000000
--- a/tests/src/com/android/dialer/filterednumber/BlockedNumbersAutoMigratorTest.java
+++ /dev/null
@@ -1,201 +0,0 @@
-/*
- * Copyright (C) 2016 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.filterednumber;
-
-import static org.mockito.Matchers.any;
-import static org.mockito.Mockito.doAnswer;
-import static org.mockito.Mockito.never;
-import static org.mockito.Mockito.times;
-import static org.mockito.Mockito.verify;
-
-import android.content.SharedPreferences;
-import android.preference.PreferenceManager;
-import android.test.AndroidTestCase;
-
-import com.android.contacts.common.compat.CompatUtils;
-import com.android.dialer.compat.FilteredNumberCompat;
-import com.android.dialer.database.FilteredNumberAsyncQueryHandler;
-import com.android.dialer.database.FilteredNumberAsyncQueryHandler.OnHasBlockedNumbersListener;
-
-import org.mockito.Mock;
-import org.mockito.MockitoAnnotations;
-import org.mockito.invocation.InvocationOnMock;
-import org.mockito.stubbing.Answer;
-
-public class BlockedNumbersAutoMigratorTest extends AndroidTestCase {
-
- private static final String HAS_CHECKED_AUTO_MIGRATE_KEY_FOR_TEST = "checkedAutoMigrateForTest";
-
- @Mock
- private FilteredNumberAsyncQueryHandler mockQueryHandler;
-
- private SharedPreferences sharedPreferences;
-
- private BlockedNumbersAutoMigrator blockedNumbersAutoMigrator;
-
- @Override
- public void setUp() throws Exception {
- super.setUp();
- MockitoAnnotations.initMocks(this);
- FilteredNumberCompat.setContextForTest(getContext());
- FilteredNumberCompat.setHasMigratedToNewBlocking(false);
-
- sharedPreferences = PreferenceManager.getDefaultSharedPreferences(getContext());
- // SharedPreference state isn't cleaned up between each test automatically, clear it now
- sharedPreferences.edit().clear().apply();
-
- blockedNumbersAutoMigrator = new BlockedNumbersAutoMigrator(sharedPreferences,
- mockQueryHandler);
- }
-
- public void testConstructor_NullSharedPreferences() {
- try {
- new BlockedNumbersAutoMigrator(null, mockQueryHandler);
- fail();
- } catch (NullPointerException e) {
- }
- }
-
- public void testConstructor_NullQueryHandler() {
- try {
- new BlockedNumbersAutoMigrator(sharedPreferences, null);
- fail();
- } catch (NullPointerException e) {
- }
- }
-
- public void testAutoMigrate_M() {
- if (CompatUtils.isNCompatible()) {
- return;
- }
- blockedNumbersAutoMigrator.autoMigrate();
-
- verify(mockQueryHandler, never()).hasBlockedNumbers(any(OnHasBlockedNumbersListener.class));
- }
-
- public void testAutoMigrate_AlreadyMigrated() {
- if (!CompatUtils.isNCompatible()) {
- return;
- }
- FilteredNumberCompat.setHasMigratedToNewBlocking(true);
-
- blockedNumbersAutoMigrator.autoMigrate();
-
- verify(mockQueryHandler, never()).hasBlockedNumbers(any(OnHasBlockedNumbersListener.class));
- }
-
- public void testAutoMigrate_AlreadyChecked() {
- if (!CompatUtils.isNCompatible()) {
- return;
- }
- sharedPreferences.edit()
- .putBoolean(HAS_CHECKED_AUTO_MIGRATE_KEY_FOR_TEST, true)
- .apply();
-
- blockedNumbersAutoMigrator.autoMigrate();
-
- verify(mockQueryHandler, never()).hasBlockedNumbers(any(OnHasBlockedNumbersListener.class));
- }
-
- public void testAutoMigrate_HasNumbers() {
- if (!CompatUtils.isNCompatible()) {
- return;
- }
- setupFilteredNumberHasBlockedNumbersExpectation(true);
-
- blockedNumbersAutoMigrator.autoMigrate();
-
- verify(mockQueryHandler).hasBlockedNumbers(any(OnHasBlockedNumbersListener.class));
- assertFalse(FilteredNumberCompat.hasMigratedToNewBlocking());
- }
-
- public void testAutoMigrate_HasNumbers_MultipleCalls() {
- if (!CompatUtils.isNCompatible()) {
- return;
- }
- setupFilteredNumberHasBlockedNumbersExpectation(true);
-
- blockedNumbersAutoMigrator.autoMigrate();
- blockedNumbersAutoMigrator.autoMigrate();
-
- verify(mockQueryHandler, times(1))
- .hasBlockedNumbers(any(OnHasBlockedNumbersListener.class));
- assertFalse(FilteredNumberCompat.hasMigratedToNewBlocking());
- }
-
- public void testAutoMigrate_NoNumbers() {
- if (!CompatUtils.isNCompatible()) {
- return;
- }
- setupFilteredNumberHasBlockedNumbersExpectation(false);
-
- blockedNumbersAutoMigrator.autoMigrate();
-
- verify(mockQueryHandler).hasBlockedNumbers(any(OnHasBlockedNumbersListener.class));
- assertTrue(FilteredNumberCompat.hasMigratedToNewBlocking());
- }
-
- public void testAutoMigrate_NoNumbers_MultipleCalls() {
- if (!CompatUtils.isNCompatible()) {
- return;
- }
- setupFilteredNumberHasBlockedNumbersExpectation(false);
-
- blockedNumbersAutoMigrator.autoMigrate();
- blockedNumbersAutoMigrator.autoMigrate();
-
- verify(mockQueryHandler, times(1))
- .hasBlockedNumbers(any(OnHasBlockedNumbersListener.class));
- assertTrue(FilteredNumberCompat.hasMigratedToNewBlocking());
- }
-
-
- public void testAutoMigrate_SimulateClearingAppData() {
- if (!CompatUtils.isNCompatible()) {
- return;
- }
- setupFilteredNumberHasBlockedNumbersExpectation(true);
-
- blockedNumbersAutoMigrator.autoMigrate();
-
- // Clearing app data removes the sharedPreferences and all of the blocked numbers
- sharedPreferences.edit().clear().apply();
- setupFilteredNumberHasBlockedNumbersExpectation(false);
-
- blockedNumbersAutoMigrator.autoMigrate();
-
- verify(mockQueryHandler, times(2))
- .hasBlockedNumbers(any(OnHasBlockedNumbersListener.class));
- assertTrue(FilteredNumberCompat.hasMigratedToNewBlocking());
- }
-
- /*
- * Sets up the {@link #mockQueryHandler} to call the {@link OnHasBlockedNumbersListener} with
- * the given hasBlockedNumbers value as the parameter, when
- * {@link FilteredNumberAsyncQueryHandler#hasBlockedNumbers} is called.
- */
- private void setupFilteredNumberHasBlockedNumbersExpectation(final boolean hasBlockedNumbers) {
- doAnswer(new Answer<Void>() {
- @Override
- public Void answer(InvocationOnMock invocation) throws Throwable {
- ((OnHasBlockedNumbersListener) invocation.getArguments()[0])
- .onHasBlockedNumbers(hasBlockedNumbers);
- return null;
- }
- }).when(mockQueryHandler).hasBlockedNumbers(any(OnHasBlockedNumbersListener.class));
- }
-}
diff --git a/tests/src/com/android/dialer/filterednumber/BlockedNumbersFragmentInstrumentationTest.java b/tests/src/com/android/dialer/filterednumber/BlockedNumbersFragmentInstrumentationTest.java
deleted file mode 100644
index ea4c51e21..000000000
--- a/tests/src/com/android/dialer/filterednumber/BlockedNumbersFragmentInstrumentationTest.java
+++ /dev/null
@@ -1,93 +0,0 @@
-/*
- * Copyright (C) 2016 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.filterednumber;
-
-import static org.mockito.Matchers.any;
-import static org.mockito.Mockito.verify;
-
-import android.test.ActivityInstrumentationTestCase2;
-import android.view.View;
-
-import com.android.contacts.common.compat.CompatUtils;
-import com.android.dialer.R;
-import com.android.dialer.compat.FilteredNumberCompat;
-import com.android.dialer.filterednumber.BlockedNumbersMigrator.Listener;
-
-import org.mockito.Mock;
-import org.mockito.MockitoAnnotations;
-
-/**
- * Instrumentation tests for {@link BlockedNumbersFragment}. Note for these tests to work properly,
- * the device's screen must be on.
- */
-public class BlockedNumbersFragmentInstrumentationTest extends
- ActivityInstrumentationTestCase2<BlockedNumbersSettingsActivity> {
-
- private static final String FRAGMENT_TAG = "blocked_management";
-
- private BlockedNumbersFragment blockedNumbersFragment;
- @Mock private BlockedNumbersMigrator blockedNumbersMigrator;
-
- public BlockedNumbersFragmentInstrumentationTest() {
- super(BlockedNumbersSettingsActivity.class);
- }
-
- @Override
- public void setUp() throws Exception {
- super.setUp();
- MockitoAnnotations.initMocks(this);
- FilteredNumberCompat.setIsEnabledForTest(true);
- blockedNumbersFragment = new BlockedNumbersFragment();
- blockedNumbersFragment.setBlockedNumbersMigratorForTest(blockedNumbersMigrator);
- getActivity().getFragmentManager().beginTransaction()
- .replace(R.id.blocked_numbers_activity_container, blockedNumbersFragment, FRAGMENT_TAG)
- .commit();
- getInstrumentation().waitForIdleSync();
- }
-
- public void testMigrationPromo_NotShown_M() {
- if (CompatUtils.isNCompatible()) {
- return;
- }
- assertEquals(View.GONE, blockedNumbersFragment.migratePromoView.getVisibility());
- }
-
- public void testMigrationPromo_Shown_N() {
- if (!CompatUtils.isNCompatible()) {
- return;
- }
- assertEquals(View.VISIBLE, blockedNumbersFragment.migratePromoView.getVisibility());
- }
-
- public void testOnClick_Migrate() {
- if (!CompatUtils.isNCompatible()) {
- return;
- }
-
- getInstrumentation().runOnMainSync(new Runnable() {
- @Override
- public void run() {
- blockedNumbersFragment.getListView().findViewById(R.id.migrate_promo_allow_button)
- .performClick();
- }
- });
- getInstrumentation().waitForIdleSync();
- assertFalse(blockedNumbersFragment.getListView().findViewById(R.id.migrate_promo_allow_button)
- .isEnabled());
- verify(blockedNumbersMigrator).migrate(any(Listener.class));
- }
-}
diff --git a/tests/src/com/android/dialer/filterednumber/BlockedNumbersMigratorTest.java b/tests/src/com/android/dialer/filterednumber/BlockedNumbersMigratorTest.java
deleted file mode 100644
index 565c206d8..000000000
--- a/tests/src/com/android/dialer/filterednumber/BlockedNumbersMigratorTest.java
+++ /dev/null
@@ -1,160 +0,0 @@
-/*
- * Copyright (C) 2016 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.filterednumber;
-
-import android.content.ContentUris;
-import android.content.ContentValues;
-import android.provider.BlockedNumberContract;
-import android.provider.BlockedNumberContract.BlockedNumbers;
-import android.test.AndroidTestCase;
-import android.test.mock.MockContentResolver;
-
-import com.android.contacts.common.compat.CompatUtils;
-import com.android.contacts.common.test.mocks.MockContentProvider;
-import com.android.dialer.compat.FilteredNumberCompat;
-import com.android.dialer.database.FilteredNumberContract;
-import com.android.dialer.database.FilteredNumberContract.FilteredNumber;
-import com.android.dialer.database.FilteredNumberContract.FilteredNumberColumns;
-
-import org.mockito.Mock;
-import org.mockito.MockitoAnnotations;
-
-import java.util.concurrent.CountDownLatch;
-import java.util.concurrent.TimeUnit;
-
-public class BlockedNumbersMigratorTest extends AndroidTestCase {
-
- private static final String NUMBER = "6502530000";
- private static final String NUMBER1 = "6502530001";
- private static final String NUMBER2 = "6502530002";
-
- @Mock private BlockedNumbersMigrator.Listener mListener;
- private final MockContentResolver mContentResolver = new MockContentResolver();
- private final MockContentProvider mContentProvider = new MockContentProvider();
- private BlockedNumbersMigrator mMigrator;
-
- @Override
- public void setUp() throws Exception {
- super.setUp();
- MockitoAnnotations.initMocks(this);
- FilteredNumberCompat.setIsEnabledForTest(true);
- mContentResolver.addProvider(FilteredNumberContract.AUTHORITY, mContentProvider);
- mContentResolver.addProvider(BlockedNumberContract.AUTHORITY, mContentProvider);
- mMigrator = new BlockedNumbersMigrator(mContentResolver);
- }
-
- public void testConstructor_NullContentResolver() {
- try {
- new BlockedNumbersMigrator(null);
- fail();
- } catch (NullPointerException e) {}
- }
-
- public void testMigrate_M() {
- if (CompatUtils.isNCompatible()) {
- return;
- }
- assertFalse(mMigrator.migrate(mListener));
- }
-
- public void testMigrate_N_Disabled() {
- if (!CompatUtils.isNCompatible()) {
- return;
- }
- FilteredNumberCompat.setIsEnabledForTest(false);
- assertFalse(mMigrator.migrate(mListener));
- }
-
- public void testMigrate_N_NullListener() {
- if (!CompatUtils.isNCompatible()) {
- return;
- }
- try {
- mMigrator.migrate(null);
- fail();
- } catch (NullPointerException e) {}
- }
-
- public void testMigrate_N() throws InterruptedException {
- if (!CompatUtils.isNCompatible()) {
- return;
- }
- mContentProvider.expectQuery(FilteredNumber.CONTENT_URI)
- .withProjection(FilteredNumberColumns.NUMBER).returnRow(NUMBER).returnRow(NUMBER1)
- .returnRow(NUMBER2);
-
- setUpNewBlockedNumberExpectations(mContentProvider, NUMBER, 0);
- setUpNewBlockedNumberExpectations(mContentProvider, NUMBER1, 1);
- setUpNewBlockedNumberExpectations(mContentProvider, NUMBER2, 2);
-
- MigrationListener listener = new MigrationListener();
- assertTrue(mMigrator.migrate(listener));
- listener.waitForCallback();
- assertTrue(FilteredNumberCompat.hasMigratedToNewBlocking());
- mContentProvider.verify();
- }
-
- public void testMigrate_N_AlreadyBlocked() throws InterruptedException {
- if (!CompatUtils.isNCompatible()) {
- return;
- }
- mContentProvider.expectQuery(FilteredNumber.CONTENT_URI)
- .withProjection(FilteredNumberColumns.NUMBER).returnRow(NUMBER);
- mContentProvider.expectQuery(BlockedNumbers.CONTENT_URI)
- .withProjection(BlockedNumbers.COLUMN_ID)
- .withSelection(BlockedNumbers.COLUMN_ORIGINAL_NUMBER + " = ?", NUMBER).returnRow(0);
- // No expectation for insert into BlockedNumbers.CONTENT_URI because it's already there
-
- MigrationListener listener = new MigrationListener();
- assertTrue(mMigrator.migrate(listener));
- listener.waitForCallback();
- assertTrue(FilteredNumberCompat.hasMigratedToNewBlocking());
- mContentProvider.verify();
- }
-
- private void setUpNewBlockedNumberExpectations(MockContentProvider contentProvider,
- String number, int returnId) {
- contentProvider.expectQuery(BlockedNumbers.CONTENT_URI)
- .withProjection(BlockedNumbers.COLUMN_ID)
- .withSelection(BlockedNumbers.COLUMN_ORIGINAL_NUMBER + " = ?", number).returnEmptyCursor();
- contentProvider.expectInsert(BlockedNumbers.CONTENT_URI,
- createBlockedNumberInsertValues(number),
- ContentUris.withAppendedId(BlockedNumbers.CONTENT_URI, returnId));
- }
-
- private ContentValues createBlockedNumberInsertValues(String number) {
- ContentValues values = new ContentValues();
- values.put(BlockedNumbers.COLUMN_ORIGINAL_NUMBER, number);
- return values;
- }
-
- private static class MigrationListener implements BlockedNumbersMigrator.Listener {
-
- private final CountDownLatch mOnCompleteCalled = new CountDownLatch(1);
-
- @Override
- public void onComplete() {
- mOnCompleteCalled.countDown();
- }
-
- public void waitForCallback() throws InterruptedException {
- if (!mOnCompleteCalled.await(5000, TimeUnit.MILLISECONDS)) {
- throw new IllegalStateException("Waiting on callback timed out.");
- }
- }
- }
-}
diff --git a/tests/src/com/android/dialer/filterednumber/FilteredNumbersUtilTest.java b/tests/src/com/android/dialer/filterednumber/FilteredNumbersUtilTest.java
deleted file mode 100644
index d496b1845..000000000
--- a/tests/src/com/android/dialer/filterednumber/FilteredNumbersUtilTest.java
+++ /dev/null
@@ -1,132 +0,0 @@
-/*
- * Copyright (C) 2015 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.filterednumber;
-
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.never;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.verifyZeroInteractions;
-
-import android.content.Context;
-import android.preference.PreferenceManager;
-import android.test.AndroidTestCase;
-import android.test.suitebuilder.annotation.SmallTest;
-
-import com.android.contacts.common.compat.CompatUtils;
-import com.android.contacts.common.test.mocks.ContactsMockContext;
-import com.android.contacts.common.test.mocks.MockContentProvider.Query;
-import com.android.dialer.compat.FilteredNumberCompat;
-import com.android.dialer.database.FilteredNumberContract;
-import com.android.dialer.database.FilteredNumberContract.FilteredNumber;
-import com.android.dialer.database.FilteredNumberContract.FilteredNumberColumns;
-
-@SmallTest
-public class FilteredNumbersUtilTest extends AndroidTestCase {
-
- private static final String COUNTRY_ISO = "US";
-
- // Wed Nov 11 2015 15:00:00
- private static final long EARLIER_TIME = 1447282800000L;
-
- // Wed Nov 11 2015 15:01:40
- private static final long LATER_TIME = 1447282900000L;
-
- private static final String[] FILTERED_NUMBER_PROJECTION = new String[] {
- FilteredNumberColumns.CREATION_TIME };
-
- private static final String NORMALIZED_NUMBER = "+16503903411";
-
- private static final long NULL_CREATION_TIME = -1;
-
- private ContactsMockContext mContext;
-
- @Override
- public void setUp() throws Exception {
- super.setUp();
- mContext = new ContactsMockContext(getContext(), FilteredNumberContract.AUTHORITY);
-
- // Reset whether an emergency number was dialed
- PreferenceManager.getDefaultSharedPreferences(mContext)
- .edit()
- .putLong(FilteredNumbersUtil.LAST_EMERGENCY_CALL_MS_PREF_KEY, 0)
- .apply();
- }
-
- public void testShouldBlockVoicemail_NotBlocked() {
- setupShouldBlockVoicemailQuery(NULL_CREATION_TIME);
- assertFalse(FilteredNumbersUtil.shouldBlockVoicemail(mContext, NORMALIZED_NUMBER,
- COUNTRY_ISO, EARLIER_TIME));
- }
-
- public void testShouldBlockVoicemail_BlockedBeforeVoicemail() {
- setupShouldBlockVoicemailQuery(EARLIER_TIME);
- assertTrue(FilteredNumbersUtil.shouldBlockVoicemail(mContext, NORMALIZED_NUMBER,
- COUNTRY_ISO, LATER_TIME));
- }
-
- public void testShouldBlockVoicemail_BlockedAfterVoicemail() {
- setupShouldBlockVoicemailQuery(LATER_TIME);
- assertFalse(FilteredNumbersUtil.shouldBlockVoicemail(mContext, NORMALIZED_NUMBER,
- COUNTRY_ISO, EARLIER_TIME));
- }
-
- public void testShouldBlockVoicemail_BlockedSameTimeAsVoicemail() {
- setupShouldBlockVoicemailQuery(EARLIER_TIME);
- assertTrue(FilteredNumbersUtil.shouldBlockVoicemail(mContext, NORMALIZED_NUMBER,
- COUNTRY_ISO, EARLIER_TIME));
- }
-
- public void testShouldBlockVoicemail_BlockedInSameMinuteAsVoicemail() {
- setupShouldBlockVoicemailQuery(EARLIER_TIME);
- assertTrue(FilteredNumbersUtil.shouldBlockVoicemail(mContext, NORMALIZED_NUMBER,
- COUNTRY_ISO, EARLIER_TIME + 30000));
- }
-
- public void testShouldBlockVoicemail_AfterEmergencyCall() {
- // Just called emergency services
- PreferenceManager.getDefaultSharedPreferences(mContext)
- .edit()
- .putLong(FilteredNumbersUtil.LAST_EMERGENCY_CALL_MS_PREF_KEY,
- System.currentTimeMillis())
- .apply();
- assertFalse(FilteredNumbersUtil.shouldBlockVoicemail(mContext, NORMALIZED_NUMBER,
- COUNTRY_ISO, 0));
- }
-
- public void testMaybeNotifyCallBlockingDisabled_Migrated() {
- if (!CompatUtils.isNCompatible()) {
- return;
- }
- FilteredNumberCompat.setIsEnabledForTest(true);
- FilteredNumberCompat.setHasMigratedToNewBlocking(true);
- Context mockContext = mock(Context.class);
-
- FilteredNumbersUtil.maybeNotifyCallBlockingDisabled(mockContext);
- verifyZeroInteractions(mockContext);
- }
-
- private void setupShouldBlockVoicemailQuery(long creationTimeMs) {
- Query query = mContext.getContactsProvider().expectQuery(FilteredNumber.CONTENT_URI)
- .withProjection(FILTERED_NUMBER_PROJECTION)
- .withAnySelection()
- .withAnySortOrder();
- if (creationTimeMs == NULL_CREATION_TIME) {
- query.returnEmptyCursor();
- return;
- }
- query.returnRow(creationTimeMs);
- }
-}
diff --git a/tests/src/com/android/dialer/filterednumber/MigrateBlockedNumbersDialogFragmentInstrumentationTest.java b/tests/src/com/android/dialer/filterednumber/MigrateBlockedNumbersDialogFragmentInstrumentationTest.java
deleted file mode 100644
index 0bfa6bcb2..000000000
--- a/tests/src/com/android/dialer/filterednumber/MigrateBlockedNumbersDialogFragmentInstrumentationTest.java
+++ /dev/null
@@ -1,93 +0,0 @@
-/*
- * Copyright (C) 2016 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.filterednumber;
-
-import android.app.AlertDialog;
-import android.app.DialogFragment;
-import android.content.ContentResolver;
-import android.content.DialogInterface;
-import android.test.ActivityInstrumentationTestCase2;
-
-import com.android.dialer.DialtactsActivity;
-import com.android.dialer.filterednumber.BlockedNumbersMigrator.Listener;
-
-import org.mockito.Mock;
-import org.mockito.MockitoAnnotations;
-
-/**
- * Instrumentation tests for {@link MigrateBlockedNumbersDialogFragment}. Note for these tests to
- * work properly, the device's screen must be on.
- */
-public class MigrateBlockedNumbersDialogFragmentInstrumentationTest extends
- ActivityInstrumentationTestCase2<DialtactsActivity> {
-
- private static final String SHOW_TAG = "ShowTag";
-
- private BlockedNumbersMigrator mBlockedNumbersMigrator;
- @Mock private Listener mListener;
- private DialogFragment mMigrateDialogFragment;
-
- public MigrateBlockedNumbersDialogFragmentInstrumentationTest() {
- super(DialtactsActivity.class);
- }
-
- @Override
- public void setUp() throws Exception {
- super.setUp();
- MockitoAnnotations.initMocks(this);
- mBlockedNumbersMigrator = new SynchronousBlockedNumbersMigrator(
- getActivity().getContentResolver());
- mMigrateDialogFragment = MigrateBlockedNumbersDialogFragment
- .newInstance(mBlockedNumbersMigrator, mListener);
- getInstrumentation().runOnMainSync(new Runnable() {
- @Override
- public void run() {
- mMigrateDialogFragment.show(getActivity().getFragmentManager(), SHOW_TAG);
- }
- });
- getInstrumentation().waitForIdleSync();
- }
-
- public void testDialogAppears() {
- assertTrue(mMigrateDialogFragment.getDialog().isShowing());
- }
-
- public void testDialogPositiveButtonPress() {
- getInstrumentation().runOnMainSync(new Runnable() {
- @Override
- public void run() {
- ((AlertDialog) mMigrateDialogFragment.getDialog())
- .getButton(DialogInterface.BUTTON_POSITIVE).performClick();
- }
- });
- getInstrumentation().waitForIdleSync();
- // Dialog was dismissed
- assertNull(mMigrateDialogFragment.getDialog());
- }
-
- private static class SynchronousBlockedNumbersMigrator extends BlockedNumbersMigrator {
- public SynchronousBlockedNumbersMigrator(ContentResolver contentResolver) {
- super(contentResolver);
- }
-
- @Override
- public boolean migrate(BlockedNumbersMigrator.Listener listener) {
- listener.onComplete();
- return true;
- }
- }
-}
diff --git a/tests/src/com/android/dialer/filterednumber/MigrateBlockedNumbersDialogFragmentTest.java b/tests/src/com/android/dialer/filterednumber/MigrateBlockedNumbersDialogFragmentTest.java
deleted file mode 100644
index 1b419cee8..000000000
--- a/tests/src/com/android/dialer/filterednumber/MigrateBlockedNumbersDialogFragmentTest.java
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- * Copyright (C) 2016 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.filterednumber;
-
-import android.test.AndroidTestCase;
-import android.test.suitebuilder.annotation.SmallTest;
-
-import com.android.dialer.filterednumber.BlockedNumbersMigrator.Listener;
-
-import org.mockito.Mock;
-import org.mockito.MockitoAnnotations;
-
-
-/**
- * Unit tests for {@link MigrateBlockedNumbersDialogFragment}
- */
-@SmallTest
-public class MigrateBlockedNumbersDialogFragmentTest extends AndroidTestCase {
-
- @Mock private BlockedNumbersMigrator mBlockedNumbersMigrator;
- @Mock private Listener mListener;
-
- @Override
- public void setUp() throws Exception {
- super.setUp();
- MockitoAnnotations.initMocks(this);
- }
-
- public void testNewInstance_NullMigrator() {
- try {
- MigrateBlockedNumbersDialogFragment.newInstance(null, mListener);
- fail();
- } catch (NullPointerException e) {}
- }
-
- public void testNewInstance_NullListener() {
- try {
- MigrateBlockedNumbersDialogFragment.newInstance(mBlockedNumbersMigrator, null);
- fail();
- } catch (NullPointerException e) {}
- }
-
- public void testNewInstance_WithListener() {
- assertNotNull(MigrateBlockedNumbersDialogFragment.newInstance(mBlockedNumbersMigrator,
- mListener));
- }
-}
diff --git a/tests/src/com/android/dialer/interactions/PhoneNumberInteractionTest.java b/tests/src/com/android/dialer/interactions/PhoneNumberInteractionTest.java
deleted file mode 100644
index f58e6cc6c..000000000
--- a/tests/src/com/android/dialer/interactions/PhoneNumberInteractionTest.java
+++ /dev/null
@@ -1,262 +0,0 @@
-/*
- * Copyright (C) 2010 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.interactions;
-
-import android.content.ContentUris;
-import android.content.Context;
-import android.content.CursorLoader;
-import android.content.DialogInterface.OnDismissListener;
-import android.content.Intent;
-import android.net.Uri;
-import android.provider.ContactsContract.CommonDataKinds.Phone;
-import android.provider.ContactsContract.CommonDataKinds.SipAddress;
-import android.provider.ContactsContract.Contacts;
-import android.provider.ContactsContract.Data;
-import android.provider.ContactsContract.RawContacts;
-import android.test.InstrumentationTestCase;
-import android.test.suitebuilder.annotation.SmallTest;
-
-import com.android.contacts.common.test.mocks.ContactsMockContext;
-import com.android.contacts.common.test.mocks.MockContentProvider;
-import com.android.contacts.common.test.mocks.MockContentProvider.Query;
-import com.android.contacts.common.util.ContactDisplayUtils;
-import com.android.dialer.interactions.PhoneNumberInteraction.PhoneItem;
-import com.android.dialer.util.TestConstants;
-
-import java.lang.reflect.Method;
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * Tests for {@link com.android.contacts.common.interactions.PhoneNumberInteraction}.
- *
- * adb shell am instrument \
- * -w com.android.dialer.tests/android.test.InstrumentationTestRunner
- */
-@SmallTest
-public class PhoneNumberInteractionTest extends InstrumentationTestCase {
- private final static class TestPhoneNumberInteraction extends PhoneNumberInteraction {
- private ArrayList<PhoneItem> mPhoneList;
-
- public TestPhoneNumberInteraction(Context context, int interactionType,
- OnDismissListener dismissListener) {
- super(context, interactionType, dismissListener);
- }
-
- @Override
- void showDisambiguationDialog(ArrayList<PhoneItem> phoneList) {
- this.mPhoneList = phoneList;
- }
-
- public void waitForLoader() {
- final CursorLoader loader = getLoader();
- try {
- final Method waitMethod = CursorLoader.class.getMethod("waitForLoader");
- waitMethod.invoke(loader, null);
- } catch(Exception e) {
- // ignore
- }
- }
- }
-
- private ContactsMockContext mContext;
- private MockContentProvider mContactsProvider;
-
- @Override
- protected void setUp() throws Exception {
- super.setUp();
- mContext = new ContactsMockContext(getInstrumentation().getTargetContext());
- mContactsProvider = mContext.getContactsProvider();
- }
-
- @Override
- protected void tearDown() throws Exception {
- mContactsProvider.verify();
- super.tearDown();
- }
-
- public void testSendSmsWhenOnlyOneNumberAvailable() {
- Uri contactUri = ContentUris.withAppendedId(Contacts.CONTENT_URI, 13);
- expectQuery(contactUri)
- .returnRow(1, "123", 0, null, null, Phone.TYPE_HOME, null,
- Phone.CONTENT_ITEM_TYPE, 13);
-
- TestPhoneNumberInteraction interaction = new TestPhoneNumberInteraction(
- mContext, ContactDisplayUtils.INTERACTION_SMS, null);
-
- interaction.startInteraction(contactUri);
- interaction.waitForLoader();
-
- Intent intent = mContext.getIntentForStartActivity();
- assertNotNull(intent);
-
- assertEquals(Intent.ACTION_SENDTO, intent.getAction());
- assertEquals("sms:123", intent.getDataString());
- }
-
- public void testSendSmsWhenDataIdIsProvided() {
- Uri dataUri = ContentUris.withAppendedId(Data.CONTENT_URI, 1);
- expectQuery(dataUri, true /* isDataUri */ )
- .returnRow(1, "987", 0, null, null, Phone.TYPE_HOME, null,
- Phone.CONTENT_ITEM_TYPE, 1);
-
- TestPhoneNumberInteraction interaction = new TestPhoneNumberInteraction(
- mContext, ContactDisplayUtils.INTERACTION_SMS, null);
-
- interaction.startInteraction(dataUri);
- interaction.waitForLoader();
-
- Intent intent = mContext.getIntentForStartActivity();
- assertNotNull(intent);
-
- assertEquals(Intent.ACTION_SENDTO, intent.getAction());
- assertEquals("sms:987", intent.getDataString());
- }
-
- public void testSendSmsWhenThereIsPrimaryNumber() {
- Uri contactUri = ContentUris.withAppendedId(Contacts.CONTENT_URI, 13);
- expectQuery(contactUri)
- .returnRow(1, "123", 0, null, null, Phone.TYPE_HOME, null,
- Phone.CONTENT_ITEM_TYPE, 13)
- .returnRow(2, "456", 1, null, null, Phone.TYPE_HOME, null,
- Phone.CONTENT_ITEM_TYPE, 13);
-
- TestPhoneNumberInteraction interaction = new TestPhoneNumberInteraction(
- mContext, ContactDisplayUtils.INTERACTION_SMS, null);
-
- interaction.startInteraction(contactUri);
- interaction.waitForLoader();
-
- Intent intent = mContext.getIntentForStartActivity();
- assertNotNull(intent);
-
- assertEquals(Intent.ACTION_SENDTO, intent.getAction());
- assertEquals("sms:456", intent.getDataString());
- }
-
- public void testShouldCollapseWith() {
- PhoneNumberInteraction.PhoneItem phoneItem1 = new PhoneNumberInteraction.PhoneItem();
- PhoneNumberInteraction.PhoneItem phoneItem2 = new PhoneNumberInteraction.PhoneItem();
-
- phoneItem1.phoneNumber = "123";
- phoneItem2.phoneNumber = "123";
-
- assertTrue(phoneItem1.shouldCollapseWith(phoneItem2, mContext));
-
- phoneItem1.phoneNumber = "123";
- phoneItem2.phoneNumber = "456";
-
- assertFalse(phoneItem1.shouldCollapseWith(phoneItem2, mContext));
-
- phoneItem1.phoneNumber = "123#,123";
- phoneItem2.phoneNumber = "123#,456";
-
- assertFalse(phoneItem1.shouldCollapseWith(phoneItem2, mContext));
- }
-
- public void testCallNumberWhenThereAreDuplicates() {
- Uri contactUri = ContentUris.withAppendedId(Contacts.CONTENT_URI, 13);
- expectQuery(contactUri)
- .returnRow(1, "123", 0, null, null, Phone.TYPE_HOME, null,
- Phone.CONTENT_ITEM_TYPE, 13)
- .returnRow(2, "123", 0, null, null, Phone.TYPE_WORK, null,
- Phone.CONTENT_ITEM_TYPE, 13);
-
- TestPhoneNumberInteraction interaction = new TestPhoneNumberInteraction(
- mContext, ContactDisplayUtils.INTERACTION_CALL, null);
-
- interaction.startInteraction(contactUri);
- interaction.waitForLoader();
-
- Intent intent = mContext.getIntentForStartActivity();
- assertNotNull(intent);
-
- assertEquals(TestConstants.CALL_INTENT_ACTION, intent.getAction());
- assertEquals("tel:123", intent.getDataString());
- }
-
- public void testCallWithSip() {
- Uri contactUri = ContentUris.withAppendedId(Contacts.CONTENT_URI, 13);
- expectQuery(contactUri)
- .returnRow(1, "example@example.com", 0, null, null, Phone.TYPE_HOME, null,
- SipAddress.CONTENT_ITEM_TYPE, 13);
- TestPhoneNumberInteraction interaction = new TestPhoneNumberInteraction(
- mContext, ContactDisplayUtils.INTERACTION_CALL, null);
-
- interaction.startInteraction(contactUri);
- interaction.waitForLoader();
-
- Intent intent = mContext.getIntentForStartActivity();
- assertNotNull(intent);
-
- assertEquals(TestConstants.CALL_INTENT_ACTION, intent.getAction());
- assertEquals("sip:example%40example.com", intent.getDataString());
- }
-
- public void testShowDisambigDialogForCalling() {
- Uri contactUri = ContentUris.withAppendedId(Contacts.CONTENT_URI, 13);
- expectQuery(contactUri)
- .returnRow(1, "123", 0, "account", null, Phone.TYPE_HOME, "label",
- Phone.CONTENT_ITEM_TYPE, 13)
- .returnRow(2, "456", 0, null, null, Phone.TYPE_WORK, null,
- Phone.CONTENT_ITEM_TYPE, 13);
-
- TestPhoneNumberInteraction interaction = new TestPhoneNumberInteraction(
- mContext, ContactDisplayUtils.INTERACTION_CALL, null);
-
- interaction.startInteraction(contactUri);
- interaction.waitForLoader();
-
- List<PhoneItem> items = interaction.mPhoneList;
- assertNotNull(items);
- assertEquals(2, items.size());
-
- PhoneItem item = items.get(0);
- assertEquals(1, item.id);
- assertEquals("123", item.phoneNumber);
- assertEquals("account", item.accountType);
- assertEquals(Phone.TYPE_HOME, item.type);
- assertEquals("label", item.label);
- }
-
- private Query expectQuery(Uri contactUri) {
- return expectQuery(contactUri, false);
- }
-
- private Query expectQuery(Uri uri, boolean isDataUri) {
- final Uri dataUri;
- if (isDataUri) {
- dataUri = uri;
- } else {
- dataUri = Uri.withAppendedPath(uri, Contacts.Data.CONTENT_DIRECTORY);
- }
- return mContactsProvider
- .expectQuery(dataUri)
- .withProjection(
- Phone._ID,
- Phone.NUMBER,
- Phone.IS_SUPER_PRIMARY,
- RawContacts.ACCOUNT_TYPE,
- RawContacts.DATA_SET,
- Phone.TYPE,
- Phone.LABEL,
- Phone.MIMETYPE,
- Phone.CONTACT_ID)
- .withSelection("mimetype IN ('vnd.android.cursor.item/phone_v2',"
- + " 'vnd.android.cursor.item/sip_address') AND data1 NOT NULL", null);
- }
-}
diff --git a/tests/src/com/android/dialer/list/PhoneFavoritesTileAdapterTest.java b/tests/src/com/android/dialer/list/PhoneFavoritesTileAdapterTest.java
deleted file mode 100644
index 881938400..000000000
--- a/tests/src/com/android/dialer/list/PhoneFavoritesTileAdapterTest.java
+++ /dev/null
@@ -1,301 +0,0 @@
-package com.android.dialer.list;
-
-import com.google.common.collect.Lists;
-
-import android.content.Context;
-import android.database.Cursor;
-import android.database.MatrixCursor;
-import android.provider.ContactsContract.PinnedPositions;
-import android.test.AndroidTestCase;
-import android.test.suitebuilder.annotation.SmallTest;
-
-import com.android.contacts.common.ContactTileLoaderFactory;
-import com.android.contacts.common.list.ContactEntry;
-import com.android.contacts.common.preference.ContactsPreferences;
-import com.android.dialer.list.PhoneFavoritesTileAdapter.OnDataSetChangedForAnimationListener;
-
-import junit.framework.Assert;
-
-import java.util.ArrayList;
-
-@SmallTest
-public class PhoneFavoritesTileAdapterTest extends AndroidTestCase {
-
- private static final OnDataSetChangedForAnimationListener NOOP_ANIMATION_LISTENER =
- new OnDataSetChangedForAnimationListener() {
- @Override
- public void onDataSetChangedForAnimation(long... idsInPlace) {}
-
- @Override
- public void cacheOffsetsForDatasetChange() {}
- };
-
- private PhoneFavoritesTileAdapter mAdapter;
-
- @Override
- public void setUp() {
- this.mAdapter = new PhoneFavoritesTileAdapter(getContext(), null, NOOP_ANIMATION_LISTENER);
- }
-
- /**
- * For all arrangeContactsByPinnedPosition tests, the id for a particular ContactEntry
- * represents the index at which it should be located after calling
- * arrangeContactsByPinnedPosition
- */
-
- public void testArrangeContactsByPinnedPosition_NoPinned() {
- ArrayList<ContactEntry> toArrange = Lists.newArrayList(getTestContactEntry(0),
- getTestContactEntry(1), getTestContactEntry(2));
- mAdapter.arrangeContactsByPinnedPosition(toArrange);
-
- assertContactEntryListPositionsMatchId(toArrange, 3);
- }
-
- public void testArrangeContactsByPinnedPosition_NoPinned_RemoveDemoted() {
- ArrayList<ContactEntry> toArrange = Lists.newArrayList(getTestContactEntry(0),
- getTestContactEntry(-1, PinnedPositions.DEMOTED), getTestContactEntry(1));
- mAdapter.arrangeContactsByPinnedPosition(toArrange);
-
- assertContactEntryListPositionsMatchId(toArrange, 2);
- }
-
- public void testArrangeContactsByPinnedPosition_OnePinned_Beginning() {
- ArrayList<ContactEntry> toArrange = Lists.newArrayList(getTestContactEntry(1),
- getTestContactEntry(0, 1), getTestContactEntry(2));
- mAdapter.arrangeContactsByPinnedPosition(toArrange);
-
- assertContactEntryListPositionsMatchId(toArrange, 3);
- }
-
- public void testArrangeContactsByPinnedPosition_OnePinned_Middle() {
- ArrayList<ContactEntry> toArrange = Lists.newArrayList(getTestContactEntry(0),
- getTestContactEntry(1, 2), getTestContactEntry(2));
- mAdapter.arrangeContactsByPinnedPosition(toArrange);
-
- assertContactEntryListPositionsMatchId(toArrange, 3);
- }
-
- public void testArrangeContactsByPinnedPosition_OnePinned_End() {
- ArrayList<ContactEntry> toArrange = Lists.newArrayList(getTestContactEntry(0),
- getTestContactEntry(2, 3), getTestContactEntry(1));
- mAdapter.arrangeContactsByPinnedPosition(toArrange);
-
- assertContactEntryListPositionsMatchId(toArrange, 3);
- }
-
- public void testArrangeContactsByPinnedPosition_OnePinned_Outside() {
- ArrayList<ContactEntry> toArrange = Lists.newArrayList(getTestContactEntry(0),
- getTestContactEntry(2, 5), getTestContactEntry(1));
- mAdapter.arrangeContactsByPinnedPosition(toArrange);
-
- assertContactEntryListPositionsMatchId(toArrange, 3);
- }
-
- public void testArrangeContactsByPinnedPosition_OnePinned_RemoveDemoted() {
- ArrayList<ContactEntry> toArrange = Lists.newArrayList(getTestContactEntry(1, 2),
- getTestContactEntry(-1, PinnedPositions.DEMOTED), getTestContactEntry(0));
- mAdapter.arrangeContactsByPinnedPosition(toArrange);
-
- assertContactEntryListPositionsMatchId(toArrange, 2);
- }
-
- public void testArrangeContactsByPinnedPosition_TwoPinned_Split() {
- ArrayList<ContactEntry> toArrange = Lists.newArrayList(getTestContactEntry(0, 1),
- getTestContactEntry(1), getTestContactEntry(2, 3));
- mAdapter.arrangeContactsByPinnedPosition(toArrange);
-
- assertContactEntryListPositionsMatchId(toArrange, 3);
- }
-
- public void testArrangeContactsByPinnedPosition_TwoPinned_Adjacent() {
- ArrayList<ContactEntry> toArrange = Lists.newArrayList(getTestContactEntry(1, 2),
- getTestContactEntry(0), getTestContactEntry(2, 3));
- mAdapter.arrangeContactsByPinnedPosition(toArrange);
-
- assertContactEntryListPositionsMatchId(toArrange, 3);
- }
-
- public void testArrangeContactsByPinnedPosition_TwoPinned_Conflict_UnpinnedBefore() {
- ArrayList<ContactEntry> toArrange = Lists.newArrayList(getTestContactEntry(1, 2),
- getTestContactEntry(0), getTestContactEntry(2, 2));
- mAdapter.arrangeContactsByPinnedPosition(toArrange);
-
- assertContactEntryListPositionsMatchId(toArrange, 3);
- }
-
- public void testArrangeContactsByPinnedPosition_TwoPinned_Conflict_UnpinnedAfter() {
- ArrayList<ContactEntry> toArrange = Lists.newArrayList(getTestContactEntry(0, 1),
- getTestContactEntry(2), getTestContactEntry(1, 1));
- mAdapter.arrangeContactsByPinnedPosition(toArrange);
-
- assertContactEntryListPositionsMatchId(toArrange, 3);
- }
-
- public void testArrangeContactsByPinnedPosition_TwoPinned_Conflict_RemoveDemoted() {
- ArrayList<ContactEntry> toArrange = Lists.newArrayList(getTestContactEntry(1, 2),
- getTestContactEntry(-1, PinnedPositions.DEMOTED), getTestContactEntry(0, 2));
- mAdapter.arrangeContactsByPinnedPosition(toArrange);
-
- assertContactEntryListPositionsMatchId(toArrange, 2);
- }
-
- public void testArrangeContactsByPinnedPosition_AllPinned() {
- ArrayList<ContactEntry> toArrange = Lists.newArrayList(getTestContactEntry(1, 2),
- getTestContactEntry(0, 1), getTestContactEntry(2, 3));
- mAdapter.arrangeContactsByPinnedPosition(toArrange);
-
- assertContactEntryListPositionsMatchId(toArrange, 3);
- }
-
- public void testArrangeContactsByPinnedPosition_AllPinned_TwoConflicts_ConflictsFirst() {
- ArrayList<ContactEntry> toArrange = Lists.newArrayList(getTestContactEntry(1, 2),
- getTestContactEntry(0, 2), getTestContactEntry(2, 3));
- mAdapter.arrangeContactsByPinnedPosition(toArrange);
-
- assertContactEntryListPositionsMatchId(toArrange, 3);
- }
-
- public void testArrangeContactsByPinnedPosition_AllPinned_TwoConflicts_ConflictsLast() {
- ArrayList<ContactEntry> toArrange = Lists.newArrayList(getTestContactEntry(0, 2),
- getTestContactEntry(1, 3), getTestContactEntry(2, 3));
- mAdapter.arrangeContactsByPinnedPosition(toArrange);
-
- assertContactEntryListPositionsMatchId(toArrange, 3);
- }
-
- public void testArrangeContactsByPinnedPosition_AllPinned_AllConflicts() {
- ArrayList<ContactEntry> toArrange = Lists.newArrayList(getTestContactEntry(2, 3),
- getTestContactEntry(1, 3), getTestContactEntry(0, 3));
- mAdapter.arrangeContactsByPinnedPosition(toArrange);
-
- assertContactEntryListPositionsMatchId(toArrange, 3);
- }
-
- public void testArrangeContactsByPinnedPosition_All_Pinned_AllConflicts_SortNameAlternative() {
- Context context = getContext();
- context.getSharedPreferences(context.getPackageName(), Context.MODE_PRIVATE).edit()
- .putInt(ContactsPreferences.SORT_ORDER_KEY,
- ContactsPreferences.SORT_ORDER_ALTERNATIVE)
- .commit();
- ArrayList<ContactEntry> actual = Lists.newArrayList(
- getTestContactEntry(1, 3, "2", "1"),
- getTestContactEntry(2, 3, "0", "2"),
- getTestContactEntry(0, 3, "1", "0")
- );
- mAdapter.arrangeContactsByPinnedPosition(actual);
-
- assertContactEntryListPositionsMatchId(actual, 3);
- }
-
- /**
- * TODO: Add tests
- *
- * This method assumes that contacts have already been reordered by
- * arrangeContactsByPinnedPosition, so we can test it with a less expansive set of test data.
- *
- * Test cases:
- * Pin a single contact at the start, middle and end of a completely unpinned list
- * Pin a single contact at the start, middle and end of a list with various numbers of
- * pinned contacts
- * Pin a single contact at the start, middle and end of a list where all contacts are pinned
- * such that contacts are forced to the left as necessary.
- */
- public void testGetReflowedPinnedPositions() {
-
- }
-
- public void testSetContactCursor_DisplayNameOrder_Primary() {
- setNameDisplayOrder(getContext(), ContactsPreferences.DISPLAY_ORDER_PRIMARY);
- Cursor testCursor = getCursorForTest(1, 0);
- mAdapter.setContactCursor(testCursor);
- Assert.assertEquals(1, mAdapter.mContactEntries.size());
- Assert.assertEquals(ContactsPreferences.DISPLAY_ORDER_PRIMARY,
- mAdapter.mContactEntries.get(0).nameDisplayOrder);
- }
-
- public void testSetContactCursor_DisplayNameOrder_Alternative() {
- setNameDisplayOrder(getContext(), ContactsPreferences.DISPLAY_ORDER_ALTERNATIVE);
- Cursor testCursor = getCursorForTest(1, 0);
- mAdapter.setContactCursor(testCursor);
- Assert.assertEquals(1, mAdapter.mContactEntries.size());
- Assert.assertEquals(ContactsPreferences.DISPLAY_ORDER_ALTERNATIVE,
- mAdapter.mContactEntries.get(0).nameDisplayOrder);
- }
-
- public void testSetContactCursor_DisplayNameOrder_Changed() {
- setNameDisplayOrder(getContext(), ContactsPreferences.DISPLAY_ORDER_PRIMARY);
- Cursor testCursor = getCursorForTest(1, 0);
- mAdapter.setContactCursor(testCursor);
- Assert.assertEquals(1, mAdapter.mContactEntries.size());
- Assert.assertEquals(ContactsPreferences.DISPLAY_ORDER_PRIMARY,
- mAdapter.mContactEntries.get(0).nameDisplayOrder);
-
- setNameDisplayOrder(getContext(), ContactsPreferences.DISPLAY_ORDER_ALTERNATIVE);
- mAdapter.refreshContactsPreferences();
- mAdapter.setContactCursor(testCursor);
- Assert.assertEquals(1, mAdapter.mContactEntries.size());
- Assert.assertEquals(ContactsPreferences.DISPLAY_ORDER_ALTERNATIVE,
- mAdapter.mContactEntries.get(0).nameDisplayOrder);
- }
-
- private void setNameDisplayOrder(Context context, int displayOrder) {
- context.getSharedPreferences(context.getPackageName(), Context.MODE_PRIVATE).edit().putInt(
- ContactsPreferences.DISPLAY_ORDER_KEY, displayOrder).commit();
- }
-
- /**
- * Returns a cursor containing starred and frequent contacts for test purposes.
- *
- * @param numStarred Number of starred contacts in the cursor. Cannot be a negative number.
- * @param numFrequents Number of frequent contacts in the cursor. Cannot be a negative number.
- * @return Cursor containing the required number of rows, each representing one ContactEntry
- */
- private Cursor getCursorForTest(int numStarred, int numFrequents) {
- assertTrue(numStarred >= 0);
- assertTrue(numFrequents >= 0);
- final MatrixCursor c = new MatrixCursor(ContactTileLoaderFactory.COLUMNS_PHONE_ONLY);
- int countId = 0;
-
- // Add starred contact entries. These entries have the starred field set to 1 (true).
- // The only field that really matters for testing is the contact id.
- for (int i = 0; i < numStarred; i++) {
- c.addRow(new Object[] {countId, null, 1, null, null, 0, 0, null, 0,
- PinnedPositions.UNPINNED, countId, null});
- countId++;
- }
-
- // Add frequent contact entries. These entries have the starred field set to 0 (false).
- for (int i = 0; i < numFrequents; i++) {
- c.addRow(new Object[] {countId, null, 0, null, null, 0, 0, null, 0,
- PinnedPositions.UNPINNED, countId, null});
- countId++;
- }
- return c;
- }
-
- private ContactEntry getTestContactEntry(int id) {
- return getTestContactEntry(id, PinnedPositions.UNPINNED);
- }
-
- private ContactEntry getTestContactEntry(int id, int pinned) {
- return getTestContactEntry(id, pinned, String.valueOf(id), String.valueOf(id));
- }
-
- private ContactEntry getTestContactEntry(int id, int pinned, String namePrimaryAppend,
- String nameAlternativeAppend) {
- ContactEntry contactEntry = new ContactEntry();
- contactEntry.id = id;
- contactEntry.pinned = pinned;
- contactEntry.namePrimary = namePrimaryAppend;
- contactEntry.nameAlternative = nameAlternativeAppend;
- return contactEntry;
- }
-
- private void assertContactEntryListPositionsMatchId(ArrayList<ContactEntry> contactEntries,
- int expectedSize) {
- Assert.assertEquals(expectedSize, contactEntries.size());
- for (int i = 0; i < expectedSize; ++i) {
- Assert.assertEquals(i, contactEntries.get(i).id);
- }
- }
-}
diff --git a/tests/src/com/android/dialer/tests/calllog/FillCallLogTestActivity.java b/tests/src/com/android/dialer/tests/calllog/FillCallLogTestActivity.java
deleted file mode 100644
index da41dfce4..000000000
--- a/tests/src/com/android/dialer/tests/calllog/FillCallLogTestActivity.java
+++ /dev/null
@@ -1,658 +0,0 @@
-/*
- * 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.tests.calllog;
-
-import android.app.Activity;
-import android.app.DatePickerDialog;
-import android.app.Dialog;
-import android.app.DialogFragment;
-import android.app.LoaderManager;
-import android.app.TimePickerDialog;
-import android.content.ContentProviderClient;
-import android.content.ContentResolver;
-import android.content.ContentValues;
-import android.content.Context;
-import android.content.CursorLoader;
-import android.content.Loader;
-import android.database.Cursor;
-import android.net.Uri;
-import android.os.AsyncTask;
-import android.os.Bundle;
-import android.os.RemoteException;
-import android.provider.CallLog.Calls;
-import android.provider.VoicemailContract;
-import android.provider.VoicemailContract.Status;
-import android.provider.VoicemailContract.Voicemails;
-import android.telecom.PhoneAccount;
-import android.telecom.PhoneAccountHandle;
-import android.text.Editable;
-import android.text.TextWatcher;
-import android.text.format.DateFormat;
-import android.util.Log;
-import android.view.MotionEvent;
-import android.view.View;
-import android.widget.Button;
-import android.widget.CheckBox;
-import android.widget.DatePicker;
-import android.widget.EditText;
-import android.widget.ProgressBar;
-import android.widget.RadioButton;
-import android.widget.TextView;
-import android.widget.TimePicker;
-import android.widget.Toast;
-
-import com.android.contacts.common.compat.telecom.TelecomManagerCompat;
-import com.android.dialer.tests.R;
-import com.android.dialer.util.AppCompatConstants;
-import com.android.dialer.util.TelecomUtil;
-
-import java.util.Calendar;
-import java.util.List;
-import java.util.Random;
-
-/**
- * Activity to add entries to the call log for testing.
- */
-public class FillCallLogTestActivity extends Activity {
- private static final String TAG = "FillCallLogTestActivity";
- /** Identifier of the loader for querying the call log. */
- private static final int CALLLOG_LOADER_ID = 1;
-
- private static final Random RNG = new Random();
- private static final int[] CALL_TYPES = new int[] {
- AppCompatConstants.CALLS_INCOMING_TYPE,
- AppCompatConstants.CALLS_OUTGOING_TYPE,
- AppCompatConstants.CALLS_MISSED_TYPE
- };
-
- private TextView mNumberTextView;
- private Button mAddButton;
- private ProgressBar mProgressBar;
- private CheckBox mUseRandomNumbers;
- private RadioButton mCallTypeIncoming;
- private RadioButton mCallTypeMissed;
- private RadioButton mCallTypeOutgoing;
- private RadioButton mCallTypeVoicemail;
- private RadioButton mCallTypeCustom;
- private EditText mCustomCallTypeTextView;
- private CheckBox mCallTypeVideo;
- private RadioButton mPresentationAllowed;
- private RadioButton mPresentationRestricted;
- private RadioButton mPresentationUnknown;
- private RadioButton mPresentationPayphone;
- private TextView mCallDate;
- private TextView mCallTime;
- private TextView mPhoneNumber;
- private EditText mOffset;
-
- private int mCallTimeHour;
- private int mCallTimeMinute;
- private int mCallDateYear;
- private int mCallDateMonth;
- private int mCallDateDay;
- private RadioButton mAccount0;
- private RadioButton mAccount1;
-
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.fill_call_log_test);
- mNumberTextView = (TextView) findViewById(R.id.number);
- mAddButton = (Button) findViewById(R.id.add);
- mProgressBar = (ProgressBar) findViewById(R.id.progress);
- mUseRandomNumbers = (CheckBox) findViewById(R.id.use_random_numbers);
-
- mAddButton.setOnClickListener(new View.OnClickListener(){
- @Override
- public void onClick(View v) {
- int count;
- try {
- count = Integer.parseInt(mNumberTextView.getText().toString());
- if (count > 100) {
- throw new RuntimeException("Number too large. Max=100");
- }
- } catch (RuntimeException e) {
- Toast.makeText(FillCallLogTestActivity.this, e.toString(), Toast.LENGTH_LONG)
- .show();
- return;
- }
- addEntriesToCallLog(count, mUseRandomNumbers.isChecked());
- mNumberTextView.setEnabled(false);
- mAddButton.setEnabled(false);
- mProgressBar.setProgress(0);
- mProgressBar.setMax(count);
- mProgressBar.setVisibility(View.VISIBLE);
- }
- });
-
- mCallTypeIncoming = (RadioButton) findViewById(R.id.call_type_incoming);
- mCallTypeMissed = (RadioButton) findViewById(R.id.call_type_missed);
- mCallTypeOutgoing = (RadioButton) findViewById(R.id.call_type_outgoing);
- mCallTypeVoicemail = (RadioButton) findViewById(R.id.call_type_voicemail);
- mCallTypeCustom = (RadioButton) findViewById(R.id.call_type_custom);
- mCustomCallTypeTextView = (EditText) findViewById(R.id.call_type_custom_text);
- mCallTypeVideo = (CheckBox) findViewById(R.id.call_type_video);
- mPresentationAllowed = (RadioButton) findViewById(R.id.presentation_allowed);
- mPresentationPayphone = (RadioButton) findViewById(R.id.presentation_payphone);
- mPresentationUnknown = (RadioButton) findViewById(R.id.presentation_unknown);
- mPresentationRestricted = (RadioButton) findViewById(R.id.presentation_restricted);
- mCallTime = (TextView) findViewById(R.id.call_time);
- mCallDate = (TextView) findViewById(R.id.call_date);
- mPhoneNumber = (TextView) findViewById(R.id.phone_number);
- mOffset = (EditText) findViewById(R.id.delta_after_add);
- mAccount0 = (RadioButton) findViewById(R.id.account0);
- mAccount1 = (RadioButton) findViewById(R.id.account1);
-
- mCustomCallTypeTextView.addTextChangedListener(new TextWatcher() {
- @Override
- public void beforeTextChanged(CharSequence s, int start, int count, int after) {
- // Do nothing.
- }
-
- @Override
- public void onTextChanged(CharSequence s, int start, int before, int count) {
- // Toggle the custom call type radio button if the text is changed/focused.
- mCallTypeCustom.toggle();
- }
-
- @Override
- public void afterTextChanged(Editable s) {
- // Do nothing.
- }
- });
-
- // Use the current time as the default values for the picker
- final Calendar c = Calendar.getInstance();
- mCallTimeHour = c.get(Calendar.HOUR_OF_DAY);
- mCallTimeMinute = c.get(Calendar.MINUTE);
- mCallDateYear = c.get(Calendar.YEAR);
- mCallDateMonth = c.get(Calendar.MONTH);
- mCallDateDay = c.get(Calendar.DAY_OF_MONTH);
- setDisplayDate();
- setDisplayTime();
- }
-
- /**
- * Adds a number of entries to the call log. The content of the entries is based on existing
- * entries.
- *
- * @param count the number of entries to add
- */
- private void addEntriesToCallLog(final int count, boolean useRandomNumbers) {
- if (useRandomNumbers) {
- addRandomNumbers(count);
- } else {
- getLoaderManager().initLoader(CALLLOG_LOADER_ID, null,
- new CallLogLoaderListener(count));
- }
- }
-
- /**
- * Calls when the insertion has completed.
- *
- * @param message the message to show in a toast to the user
- */
- private void insertCompleted(String message) {
- // Hide the progress bar.
- mProgressBar.setVisibility(View.GONE);
- // Re-enable the add button.
- mNumberTextView.setEnabled(true);
- mAddButton.setEnabled(true);
- mNumberTextView.setText("");
- Toast.makeText(this, message, Toast.LENGTH_LONG).show();
- }
-
-
- /**
- * Creates a {@link ContentValues} object containing values corresponding to the given cursor.
- *
- * @param cursor the cursor from which to get the values
- * @return a newly created content values object
- */
- private ContentValues createContentValuesFromCursor(Cursor cursor) {
- ContentValues values = new ContentValues();
- for (int column = 0; column < cursor.getColumnCount();
- ++column) {
- String name = cursor.getColumnName(column);
- switch (cursor.getType(column)) {
- case Cursor.FIELD_TYPE_STRING:
- values.put(name, cursor.getString(column));
- break;
- case Cursor.FIELD_TYPE_INTEGER:
- values.put(name, cursor.getLong(column));
- break;
- case Cursor.FIELD_TYPE_FLOAT:
- values.put(name, cursor.getDouble(column));
- break;
- case Cursor.FIELD_TYPE_BLOB:
- values.put(name, cursor.getBlob(column));
- break;
- case Cursor.FIELD_TYPE_NULL:
- values.putNull(name);
- break;
- default:
- Log.d(TAG, "Invalid value in cursor: " + cursor.getType(column));
- break;
- }
- }
- return values;
- }
-
- private void addRandomNumbers(int count) {
- ContentValues[] values = new ContentValues[count];
- for (int i = 0; i < count; i++) {
- values[i] = new ContentValues();
- values[i].put(Calls.NUMBER, generateRandomNumber());
- values[i].put(Calls.NUMBER_PRESENTATION, Calls.PRESENTATION_ALLOWED);
- values[i].put(Calls.DATE, System.currentTimeMillis()); // Will be randomized later
- values[i].put(Calls.DURATION, 1); // Will be overwritten later
- }
- new AsyncCallLogInserter(values).execute(new Void[0]);
- }
-
- private static String generateRandomNumber() {
- return String.format("5%09d", RNG.nextInt(1000000000));
- }
-
- /** Invokes {@link AsyncCallLogInserter} when the call log has loaded. */
- private final class CallLogLoaderListener implements LoaderManager.LoaderCallbacks<Cursor> {
- /** The number of items to insert when done. */
- private final int mCount;
-
- private CallLogLoaderListener(int count) {
- mCount = count;
- }
-
- @Override
- public Loader<Cursor> onCreateLoader(int id, Bundle args) {
- Log.d(TAG, "onCreateLoader");
- return new CursorLoader(FillCallLogTestActivity.this, Calls.CONTENT_URI,
- null, null, null, null);
- }
-
- @Override
- public void onLoadFinished(Loader<Cursor> loader, Cursor data) {
- try {
- Log.d(TAG, "onLoadFinished");
-
- if (data.getCount() == 0) {
- // If there are no entries in the call log, we cannot generate new ones.
- insertCompleted(getString(R.string.noLogEntriesToast));
- return;
- }
-
- data.moveToPosition(-1);
-
- ContentValues[] values = new ContentValues[mCount];
- for (int index = 0; index < mCount; ++index) {
- if (!data.moveToNext()) {
- data.moveToFirst();
- }
- values[index] = createContentValuesFromCursor(data);
- }
- new AsyncCallLogInserter(values).execute(new Void[0]);
- } finally {
- // This is a one shot loader.
- getLoaderManager().destroyLoader(CALLLOG_LOADER_ID);
- }
- }
-
- @Override
- public void onLoaderReset(Loader<Cursor> loader) {}
- }
-
- /** Inserts a given number of entries in the call log based on the values given. */
- private final class AsyncCallLogInserter extends AsyncTask<Void, Integer, Integer> {
- /** The number of items to insert. */
- private final ContentValues[] mValues;
-
- public AsyncCallLogInserter(ContentValues[] values) {
- mValues = values;
- }
-
- @Override
- protected Integer doInBackground(Void... params) {
- Log.d(TAG, "doInBackground");
- return insertIntoCallLog();
- }
-
- @Override
- protected void onProgressUpdate(Integer... values) {
- Log.d(TAG, "onProgressUpdate");
- updateCount(values[0]);
- }
-
- @Override
- protected void onPostExecute(Integer count) {
- Log.d(TAG, "onPostExecute");
- insertCompleted(getString(R.string.addedLogEntriesToast, count));
- }
-
- /**
- * Inserts a number of entries in the call log based on the given templates.
- *
- * @return the number of inserted entries
- */
- private Integer insertIntoCallLog() {
- int inserted = 0;
-
- for (int index = 0; index < mValues.length; ++index) {
- ContentValues values = mValues[index];
- // These should not be set.
- values.putNull(Calls._ID);
- // Add some randomness to the date. For each new entry being added, add an extra
- // day to the maximum possible offset from the original.
- values.put(Calls.DATE,
- values.getAsLong(Calls.DATE)
- - RNG.nextInt(24 * 60 * 60 * (index + 1)) * 1000L);
- // Add some randomness to the duration.
- if (values.getAsLong(Calls.DURATION) > 0) {
- values.put(Calls.DURATION, RNG.nextInt(30 * 60 * 60 * 1000));
- }
-
- // Overwrite type.
- values.put(Calls.TYPE, CALL_TYPES[RNG.nextInt(CALL_TYPES.length)]);
-
- // Clear cached columns.
- values.putNull(Calls.CACHED_FORMATTED_NUMBER);
- values.putNull(Calls.CACHED_LOOKUP_URI);
- values.putNull(Calls.CACHED_MATCHED_NUMBER);
- values.putNull(Calls.CACHED_NAME);
- values.putNull(Calls.CACHED_NORMALIZED_NUMBER);
- values.putNull(Calls.CACHED_NUMBER_LABEL);
- values.putNull(Calls.CACHED_NUMBER_TYPE);
- values.putNull(Calls.CACHED_PHOTO_ID);
-
- // Insert into the call log the newly generated entry.
- ContentProviderClient contentProvider =
- getContentResolver().acquireContentProviderClient(
- Calls.CONTENT_URI);
- try {
- Log.d(TAG, "adding entry to call log");
- contentProvider.insert(Calls.CONTENT_URI, values);
- ++inserted;
- this.publishProgress(inserted);
- } catch (RemoteException e) {
- Log.d(TAG, "insert failed", e);
- }
- }
- return inserted;
- }
- }
-
- /**
- * Updates the count shown to the user corresponding to the number of entries added.
- *
- * @param count the number of entries inserted so far
- */
- public void updateCount(Integer count) {
- mProgressBar.setProgress(count);
- }
-
- /**
- * Determines the call type for a manually entered call.
- *
- * @return Call type.
- */
- private int getManualCallType() {
- if (mCallTypeIncoming.isChecked()) {
- return AppCompatConstants.CALLS_INCOMING_TYPE;
- } else if (mCallTypeOutgoing.isChecked()) {
- return AppCompatConstants.CALLS_OUTGOING_TYPE;
- } else if (mCallTypeVoicemail.isChecked()) {
- return AppCompatConstants.CALLS_VOICEMAIL_TYPE;
- } else if (mCallTypeCustom.isChecked()) {
- return Integer.parseInt(mCustomCallTypeTextView.getText().toString());
- } else {
- return AppCompatConstants.CALLS_MISSED_TYPE;
- }
- }
-
- /**
- * Determines the presentation for a manually entered call.
- *
- * @return Presentation.
- */
- private int getManualPresentation() {
- if (mPresentationAllowed.isChecked()) {
- return Calls.PRESENTATION_ALLOWED;
- } else if (mPresentationPayphone.isChecked()) {
- return Calls.PRESENTATION_PAYPHONE;
- } else if (mPresentationRestricted.isChecked()) {
- return Calls.PRESENTATION_RESTRICTED;
- } else {
- return Calls.PRESENTATION_UNKNOWN;
- }
- }
-
- private PhoneAccountHandle getManualAccount() {
- List <PhoneAccountHandle> accountHandles = TelecomUtil.getCallCapablePhoneAccounts(this);
- //TODO: hide the corresponding radio buttons if no accounts are available.
- if (mAccount0.isChecked()) {
- return accountHandles.get(0);
- } else if (mAccount1.isChecked()){
- return accountHandles.get(1);
- } else {
- return null;
- }
- }
-
- /**
- * Shows a time picker dialog, storing the results in the time field.
- */
- public void showTimePickerDialog(View v) {
- DialogFragment newFragment = new TimePickerFragment();
- newFragment.show(getFragmentManager(),"timePicker");
- }
-
- /**
- * Helper class to display time picker and store the hour/minute.
- */
- public class TimePickerFragment extends DialogFragment
- implements TimePickerDialog.OnTimeSetListener {
-
- @Override
- public Dialog onCreateDialog(Bundle savedInstanceState) {
- // Create a new instance of TimePickerDialog and return it
- return new TimePickerDialog(getActivity(), this, mCallTimeHour, mCallTimeMinute,
- DateFormat.is24HourFormat(getActivity()));
- }
-
- public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
- mCallTimeHour = hourOfDay;
- mCallTimeMinute = minute;
- setDisplayTime();
- }
- }
-
- /**
- * Sets the call time TextView to the current selected time.
- */
- private void setDisplayTime() {
- mCallTime.setText(String.format("%02d:%02d", mCallTimeHour, mCallTimeMinute));
- }
-
- /**
- * Sets the call date Textview to the current selected date
- */
- private void setDisplayDate() {
- mCallDate.setText(String.format("%04d-%02d-%02d", mCallDateYear, mCallDateMonth,
- mCallDateDay));
- }
-
- /**
- * Shows a date picker dialog.
- */
- public void showDatePickerDialog(View v) {
- DialogFragment newFragment = new DatePickerFragment();
- newFragment.show(getFragmentManager(),"datePicker");
- }
-
- /**
- * Helper class to show a date picker.
- */
- public class DatePickerFragment extends DialogFragment
- implements DatePickerDialog.OnDateSetListener {
-
- @Override
- public Dialog onCreateDialog(Bundle savedInstanceState) {
- // Create a new instance of DatePickerDialog and return it
- return new DatePickerDialog(getActivity(), this, mCallDateYear, mCallDateMonth,
- mCallDateDay);
- }
-
- public void onDateSet(DatePicker view, int year, int month, int day) {
- mCallDateYear = year;
- mCallDateMonth = month;
- mCallDateDay = day;
- setDisplayDate();
- }
- }
-
- /**
- * OnClick handler for the button that adds a manual call log entry to the call log.
- *
- * @param v Calling view.
- */
- public void addManualEntry(View v) {
- Calendar dateTime = Calendar.getInstance();
- dateTime.set(mCallDateYear, mCallDateMonth, mCallDateDay, mCallTimeHour, mCallTimeMinute);
-
- int features = mCallTypeVideo.isChecked() ? Calls.FEATURES_VIDEO : 0;
- Long dataUsage = null;
- if (mCallTypeVideo.isChecked()) {
- // Some random data usage up to 50MB.
- dataUsage = (long) RNG.nextInt(52428800);
- }
-
- if (getManualCallType() == AppCompatConstants.CALLS_VOICEMAIL_TYPE) {
- addManualVoicemail(dateTime.getTimeInMillis());
- } else {
- addCall(mPhoneNumber.getText().toString(), getManualPresentation(),
- getManualCallType(), features, getManualAccount(),
- dateTime.getTimeInMillis(), RNG.nextInt(60 * 60), dataUsage);
- }
-
- // Subtract offset from the call date/time and store as new date/time
- int offset = Integer.parseInt(mOffset.getText().toString());
-
- dateTime.add(Calendar.MINUTE, offset);
- mCallDateYear = dateTime.get(Calendar.YEAR);
- mCallDateMonth = dateTime.get(Calendar.MONTH);
- mCallDateDay = dateTime.get(Calendar.DAY_OF_MONTH);
- mCallTimeHour = dateTime.get(Calendar.HOUR_OF_DAY);
- mCallTimeMinute = dateTime.get(Calendar.MINUTE);
- setDisplayDate();
- setDisplayTime();
- }
-
- // Copied and modified to compile unbundled from android.provider.CallLog
- public Uri addCall(String number,
- int presentation, int callType, int features, PhoneAccountHandle accountHandle,
- long start, int duration, Long dataUsage) {
- final ContentResolver resolver = getContentResolver();
- int numberPresentation = Calls.PRESENTATION_ALLOWED;
-
- String accountAddress = null;
- if (accountHandle != null) {
- PhoneAccount account = TelecomUtil.getPhoneAccount(this, accountHandle);
- if (account != null) {
- Uri address = account.getSubscriptionAddress();
- if (address != null) {
- accountAddress = address.getSchemeSpecificPart();
- }
- }
- }
-
- if (numberPresentation != Calls.PRESENTATION_ALLOWED) {
- number = "";
- }
-
- // accountHandle information
- String accountComponentString = null;
- String accountId = null;
- if (accountHandle != null) {
- accountComponentString = accountHandle.getComponentName().flattenToString();
- accountId = accountHandle.getId();
- }
-
- ContentValues values = new ContentValues(6);
-
- values.put(Calls.NUMBER, number);
- values.put(Calls.NUMBER_PRESENTATION, Integer.valueOf(numberPresentation));
- values.put(Calls.TYPE, Integer.valueOf(callType));
- values.put(Calls.FEATURES, features);
- values.put(Calls.DATE, Long.valueOf(start));
- values.put(Calls.DURATION, Long.valueOf(duration));
- if (dataUsage != null) {
- values.put(Calls.DATA_USAGE, dataUsage);
- }
- values.put(Calls.PHONE_ACCOUNT_COMPONENT_NAME, accountComponentString);
- values.put(Calls.PHONE_ACCOUNT_ID, accountId);
- // Calls.PHONE_ACCOUNT_ADDRESS
- values.put("phone_account_address", accountAddress);
- values.put(Calls.NEW, Integer.valueOf(1));
-
- if (callType == AppCompatConstants.CALLS_MISSED_TYPE) {
- values.put(Calls.IS_READ, 0);
- }
-
- return addEntryAndRemoveExpiredEntries(this, Calls.CONTENT_URI, values);
- }
-
- // Copied from android.provider.CallLog
- private static Uri addEntryAndRemoveExpiredEntries(Context context, Uri uri,
- ContentValues values) {
- final ContentResolver resolver = context.getContentResolver();
- Uri result = resolver.insert(uri, values);
- resolver.delete(uri, "_id IN " +
- "(SELECT _id FROM calls ORDER BY " + Calls.DEFAULT_SORT_ORDER
- + " LIMIT -1 OFFSET 500)", null);
- return result;
- }
-
- private void addManualVoicemail(Long time) {
- final ContentValues contentValues = new ContentValues();
- contentValues.put(Voicemails.DATE, time);
- contentValues.put(Voicemails.NUMBER, mPhoneNumber.getText().toString());
- contentValues.put(Voicemails.DURATION, 5000);
- contentValues.put(Voicemails.SOURCE_PACKAGE, getPackageName());
- contentValues.put(Voicemails.SOURCE_DATA, 500);
- contentValues.put(Voicemails.IS_READ, 0);
-
- getContentResolver().insert(VoicemailContract.Voicemails.buildSourceUri(getPackageName()),
- contentValues);
-
- updateVoicemailStatus();
- }
-
- private void updateVoicemailStatus() {
- ContentResolver contentResolver = getContentResolver();
- Uri statusUri = VoicemailContract.Status.buildSourceUri(getPackageName());
- final PhoneAccountHandle accountHandle = getManualAccount();
-
- ContentValues values = new ContentValues();
- values.put(Status.PHONE_ACCOUNT_COMPONENT_NAME, getPackageName());
- values.put(Status.PHONE_ACCOUNT_ID, "ACCOUNT_ID");
- values.put(Status.CONFIGURATION_STATE, VoicemailContract.Status.CONFIGURATION_STATE_OK);
- values.put(Status.DATA_CHANNEL_STATE, VoicemailContract.Status.DATA_CHANNEL_STATE_OK);
- values.put(Status.NOTIFICATION_CHANNEL_STATE,
- VoicemailContract.Status.NOTIFICATION_CHANNEL_STATE_OK);
-
- contentResolver.insert(statusUri, values);
- }
-}
diff --git a/tests/src/com/android/dialer/util/DialerUtilsTest.java b/tests/src/com/android/dialer/util/DialerUtilsTest.java
deleted file mode 100644
index ccd6dfdd5..000000000
--- a/tests/src/com/android/dialer/util/DialerUtilsTest.java
+++ /dev/null
@@ -1,78 +0,0 @@
-/*
- * Copyright (C) 2014 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.util;
-
-import com.android.dialer.calllog.PhoneCallDetailsHelper;
-import com.google.common.collect.Lists;
-
-import android.content.Context;
-import android.content.res.Resources;
-import android.test.AndroidTestCase;
-import android.test.suitebuilder.annotation.SmallTest;
-
-import java.util.ArrayList;
-
-/**
- * Performs tests of the DialerUtils class.
- */
-@SmallTest
-public class DialerUtilsTest extends AndroidTestCase {
-
- private Resources mResources;
-
- /**
- * List of items to be concatenated together for CharSequence join tests.
- */
- private ArrayList<CharSequence> mItems = Lists.newArrayList();
-
- @Override
- protected void setUp() throws Exception {
- super.setUp();
- Context context = getContext();
- mResources = context.getResources();
- }
-
- /**
- * Tests joining an empty list of {@link CharSequence}.
- */
- public void testJoinEmpty() {
- mItems.clear();
- CharSequence joined = DialerUtils.join(mResources, mItems);
- assertEquals("", joined);
- }
-
- /**
- * Tests joining a list of {@link CharSequence} with a single entry.
- */
- public void testJoinOne() {
- mItems.clear();
- mItems.add("Hello");
- CharSequence joined = DialerUtils.join(mResources, mItems);
- assertEquals("Hello", joined);
- }
-
- /**
- * Tests joining a list of {@link CharSequence} with a multiple entries.
- */
- public void testJoinTwo() {
- mItems.clear();
- mItems.add("Hello");
- mItems.add("there");
- CharSequence joined = DialerUtils.join(mResources, mItems);
- assertEquals("Hello, there", joined);
- }
-}
diff --git a/tests/src/com/android/dialer/util/ExpirableCacheTest.java b/tests/src/com/android/dialer/util/ExpirableCacheTest.java
deleted file mode 100644
index b81ad754f..000000000
--- a/tests/src/com/android/dialer/util/ExpirableCacheTest.java
+++ /dev/null
@@ -1,125 +0,0 @@
-/*
- * 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.util;
-
-import android.test.AndroidTestCase;
-import android.test.suitebuilder.annotation.SmallTest;
-import android.util.LruCache;
-
-import com.android.dialer.util.ExpirableCache.CachedValue;
-
-/**
- * Unit tests for {@link ExpirableCache}.
- */
-@SmallTest
-public class ExpirableCacheTest extends AndroidTestCase {
- /** The object under test. */
- private ExpirableCache<String, Integer> mCache;
-
- @Override
- protected void setUp() throws Exception {
- super.setUp();
- LruCache<String, CachedValue<Integer>> lruCache =
- new LruCache<String, ExpirableCache.CachedValue<Integer>>(20);
- mCache = ExpirableCache.create(lruCache);
- }
-
- @Override
- protected void tearDown() throws Exception {
- mCache = null;
- super.tearDown();
- }
-
- public void testPut() {
- mCache.put("a", 1);
- mCache.put("b", 2);
- assertEquals(1, mCache.getPossiblyExpired("a").intValue());
- assertEquals(2, mCache.getPossiblyExpired("b").intValue());
- mCache.put("a", 3);
- assertEquals(3, mCache.getPossiblyExpired("a").intValue());
- }
-
- public void testGet_NotExisting() {
- assertNull(mCache.getPossiblyExpired("a"));
- mCache.put("b", 1);
- assertNull(mCache.getPossiblyExpired("a"));
- }
-
- public void testGet_Expired() {
- mCache.put("a", 1);
- assertEquals(1, mCache.getPossiblyExpired("a").intValue());
- mCache.expireAll();
- assertEquals(1, mCache.getPossiblyExpired("a").intValue());
- }
-
- public void testGetNotExpired_NotExisting() {
- assertNull(mCache.get("a"));
- mCache.put("b", 1);
- assertNull(mCache.get("a"));
- }
-
- public void testGetNotExpired_Expired() {
- mCache.put("a", 1);
- assertEquals(1, mCache.get("a").intValue());
- mCache.expireAll();
- assertNull(mCache.get("a"));
- }
-
- public void testGetCachedValue_NotExisting() {
- assertNull(mCache.getCachedValue("a"));
- mCache.put("b", 1);
- assertNull(mCache.getCachedValue("a"));
- }
-
- public void testGetCachedValue_Expired() {
- mCache.put("a", 1);
- assertFalse("Should not be expired", mCache.getCachedValue("a").isExpired());
- mCache.expireAll();
- assertTrue("Should be expired", mCache.getCachedValue("a").isExpired());
- }
-
- public void testGetChangedValue_PutAfterExpired() {
- mCache.put("a", 1);
- mCache.expireAll();
- mCache.put("a", 1);
- assertFalse("Should not be expired", mCache.getCachedValue("a").isExpired());
- }
-
- public void testComputingCache() {
- // Creates a cache in which all unknown values default to zero.
- mCache = ExpirableCache.create(
- new LruCache<String, ExpirableCache.CachedValue<Integer>>(10) {
- @Override
- protected CachedValue<Integer> create(String key) {
- return mCache.newCachedValue(0);
- }
- });
-
- // The first time we request a new value, we add it to the cache.
- CachedValue<Integer> cachedValue = mCache.getCachedValue("a");
- assertNotNull("Should have been created implicitly", cachedValue);
- assertEquals(0, cachedValue.getValue().intValue());
- assertFalse("Should not be expired", cachedValue.isExpired());
-
- // If we expire all the values, the implicitly created value will also be marked as expired.
- mCache.expireAll();
- CachedValue<Integer> expiredCachedValue = mCache.getCachedValue("a");
- assertNotNull("Should have been created implicitly", expiredCachedValue);
- assertEquals(0, expiredCachedValue.getValue().intValue());
- assertTrue("Should be expired", expiredCachedValue.isExpired());
- }
-}
diff --git a/tests/src/com/android/dialer/util/FakeAsyncTaskExecutor.java b/tests/src/com/android/dialer/util/FakeAsyncTaskExecutor.java
deleted file mode 100644
index 52cdf7e77..000000000
--- a/tests/src/com/android/dialer/util/FakeAsyncTaskExecutor.java
+++ /dev/null
@@ -1,231 +0,0 @@
-/*
- * 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.util;
-
-import android.app.Instrumentation;
-import android.os.AsyncTask;
-
-import com.google.common.collect.Lists;
-
-import junit.framework.Assert;
-
-import java.util.Iterator;
-import java.util.List;
-import java.util.concurrent.CountDownLatch;
-import java.util.concurrent.Executor;
-import java.util.concurrent.TimeUnit;
-
-import javax.annotation.concurrent.GuardedBy;
-import javax.annotation.concurrent.ThreadSafe;
-
-/**
- * Test implementation of AsyncTaskExecutor.
- * <p>
- * This class is thread-safe. As per the contract of the AsyncTaskExecutor, the submit methods must
- * be called from the main ui thread, however the other public methods may be called from any thread
- * (most commonly the test thread).
- * <p>
- * Tasks submitted to this executor will not be run immediately. Rather they will be stored in a
- * list of submitted tasks, where they can be examined. They can also be run on-demand using the run
- * methods, so that different ordering of AsyncTask execution can be simulated.
- * <p>
- * The onPreExecute method of the submitted AsyncTask will be called synchronously during the
- * call to {@link #submit(Object, AsyncTask, Object...)}.
- */
-@ThreadSafe
-public class FakeAsyncTaskExecutor implements AsyncTaskExecutor {
- private static final long DEFAULT_TIMEOUT_MS = 10000;
-
- /** The maximum length of time in ms to wait for tasks to execute during tests. */
- private final long mTimeoutMs = DEFAULT_TIMEOUT_MS;
-
- private final Object mLock = new Object();
- @GuardedBy("mLock") private final List<SubmittedTask> mSubmittedTasks = Lists.newArrayList();
-
- private final DelayedExecutor mBlockingExecutor = new DelayedExecutor();
- private final Instrumentation mInstrumentation;
-
- /** Create a fake AsyncTaskExecutor for use in unit tests. */
- public FakeAsyncTaskExecutor(Instrumentation instrumentation) {
- Assert.assertNotNull(instrumentation);
- mInstrumentation = instrumentation;
- }
-
- /** Encapsulates an async task with the params and identifier it was submitted with. */
- public interface SubmittedTask {
- Runnable getRunnable();
- Object getIdentifier();
- AsyncTask<?, ?, ?> getAsyncTask();
- }
-
- private static final class SubmittedTaskImpl implements SubmittedTask {
- private final Object mIdentifier;
- private final Runnable mRunnable;
- private final AsyncTask<?, ?, ?> mAsyncTask;
-
- public SubmittedTaskImpl(Object identifier, Runnable runnable,
- AsyncTask<?, ?, ?> asyncTask) {
- mIdentifier = identifier;
- mRunnable = runnable;
- mAsyncTask = asyncTask;
- }
-
- @Override
- public Object getIdentifier() {
- return mIdentifier;
- }
-
- @Override
- public Runnable getRunnable() {
- return mRunnable;
- }
-
- @Override
- public AsyncTask<?, ?, ?> getAsyncTask() {
- return mAsyncTask;
- }
-
- @Override
- public String toString() {
- return "SubmittedTaskImpl [mIdentifier=" + mIdentifier + "]";
- }
- }
-
- private class DelayedExecutor implements Executor {
- private final Object mNextLock = new Object();
- @GuardedBy("mNextLock") private Object mNextIdentifier;
- @GuardedBy("mNextLock") private AsyncTask<?, ?, ?> mNextTask;
-
- @Override
- public void execute(Runnable command) {
- synchronized (mNextLock) {
- Assert.assertNotNull(mNextTask);
- mSubmittedTasks.add(new SubmittedTaskImpl(mNextIdentifier,
- command, mNextTask));
- mNextIdentifier = null;
- mNextTask = null;
- }
- }
-
- public <T> AsyncTask<T, ?, ?> submit(Object identifier,
- AsyncTask<T, ?, ?> task, T... params) {
- synchronized (mNextLock) {
- Assert.assertNull(mNextIdentifier);
- Assert.assertNull(mNextTask);
- mNextIdentifier = identifier;
- Assert.assertNotNull("Already had a valid task.\n"
- + "Are you calling AsyncTaskExecutor.submit(...) from within the "
- + "onPreExecute() method of another task being submitted?\n"
- + "Sorry! Not that's not supported.", task);
- mNextTask = task;
- }
- return task.executeOnExecutor(this, params);
- }
- }
-
- @Override
- public <T> AsyncTask<T, ?, ?> submit(Object identifier, AsyncTask<T, ?, ?> task, T... params) {
- AsyncTaskExecutors.checkCalledFromUiThread();
- return mBlockingExecutor.submit(identifier, task, params);
- }
-
- /**
- * Runs a single task matching the given identifier.
- * <p>
- * Removes the matching task from the list of submitted tasks, then runs it. The executor used
- * to execute this async task will be a same-thread executor.
- * <p>
- * Fails if there was not exactly one task matching the given identifier.
- * <p>
- * This method blocks until the AsyncTask has completely finished executing.
- */
- public void runTask(Object identifier) throws InterruptedException {
- List<SubmittedTask> tasks = getSubmittedTasksByIdentifier(identifier, true);
- Assert.assertEquals("Expected one task " + identifier + ", got " + tasks, 1, tasks.size());
- runTask(tasks.get(0));
- }
-
- /**
- * Runs all tasks whose identifier matches the given identifier.
- * <p>
- * Removes all matching tasks from the list of submitted tasks, and runs them. The executor used
- * to execute these async tasks will be a same-thread executor.
- * <p>
- * Fails if there were no tasks matching the given identifier.
- * <p>
- * This method blocks until the AsyncTask objects have completely finished executing.
- */
- public void runAllTasks(Object identifier) throws InterruptedException {
- List<SubmittedTask> tasks = getSubmittedTasksByIdentifier(identifier, true);
- Assert.assertTrue("There were no tasks with identifier " + identifier, tasks.size() > 0);
- for (SubmittedTask task : tasks) {
- runTask(task);
- }
- }
-
- /**
- * Executes a single {@link SubmittedTask}.
- * <p>
- * Blocks until the task has completed running.
- */
- private <T> void runTask(final SubmittedTask submittedTask) throws InterruptedException {
- submittedTask.getRunnable().run();
- // Block until the onPostExecute or onCancelled has finished.
- // Unfortunately we can't be sure when the AsyncTask will have posted its result handling
- // code to the main ui thread, the best we can do is wait for the Status to be FINISHED.
- final CountDownLatch latch = new CountDownLatch(1);
- class AsyncTaskHasFinishedRunnable implements Runnable {
- @Override
- public void run() {
- if (submittedTask.getAsyncTask().getStatus() == AsyncTask.Status.FINISHED) {
- latch.countDown();
- } else {
- mInstrumentation.waitForIdle(this);
- }
- }
- }
- mInstrumentation.waitForIdle(new AsyncTaskHasFinishedRunnable());
- Assert.assertTrue(latch.await(mTimeoutMs, TimeUnit.MILLISECONDS));
- }
-
- private List<SubmittedTask> getSubmittedTasksByIdentifier(
- Object identifier, boolean remove) {
- Assert.assertNotNull(identifier);
- List<SubmittedTask> results = Lists.newArrayList();
- synchronized (mLock) {
- Iterator<SubmittedTask> iter = mSubmittedTasks.iterator();
- while (iter.hasNext()) {
- SubmittedTask task = iter.next();
- if (identifier.equals(task.getIdentifier())) {
- results.add(task);
- iter.remove();
- }
- }
- }
- return results;
- }
-
- /** Get a factory that will return this instance - useful for testing. */
- public AsyncTaskExecutors.AsyncTaskExecutorFactory getFactory() {
- return new AsyncTaskExecutors.AsyncTaskExecutorFactory() {
- @Override
- public AsyncTaskExecutor createAsyncTaskExeuctor() {
- return FakeAsyncTaskExecutor.this;
- }
- };
- }
-}
diff --git a/tests/src/com/android/dialer/util/LocaleTestUtils.java b/tests/src/com/android/dialer/util/LocaleTestUtils.java
deleted file mode 100644
index b893ccb76..000000000
--- a/tests/src/com/android/dialer/util/LocaleTestUtils.java
+++ /dev/null
@@ -1,119 +0,0 @@
-/*
- * 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.util;
-
-import android.content.Context;
-import android.content.res.Configuration;
-import android.content.res.Resources;
-
-import java.util.Locale;
-
-/**
- * Utility class to save and restore the locale of the system.
- * <p>
- * This can be used for tests that assume to be run in a certain locale, e.g., because they
- * check against strings in a particular language or require an assumption on how the system
- * will behave in a specific locale.
- * <p>
- * In your test, you can change the locale with the following code:
- * <pre>
- * public class CanadaFrenchTest extends AndroidTestCase {
- * private LocaleTestUtils mLocaleTestUtils;
- *
- * &#64;Override
- * public void setUp() throws Exception {
- * super.setUp();
- * mLocaleTestUtils = new LocaleTestUtils(getContext());
- * mLocaleTestUtils.setLocale(Locale.CANADA_FRENCH);
- * }
- *
- * &#64;Override
- * public void tearDown() throws Exception {
- * mLocaleTestUtils.restoreLocale();
- * mLocaleTestUtils = null;
- * super.tearDown();
- * }
- *
- * ...
- * }
- * </pre>
- * Note that one should not call {@link #setLocale(Locale)} more than once without calling
- * {@link #restoreLocale()} first.
- * <p>
- * This class is not thread-safe. Usually its methods should be invoked only from the test thread.
- */
-public class LocaleTestUtils {
- private final Context mContext;
- private boolean mSaved;
- private Locale mSavedContextLocale;
- private Locale mSavedSystemLocale;
-
- /**
- * Create a new instance that can be used to set and reset the locale for the given context.
- *
- * @param context the context on which to alter the locale
- */
- public LocaleTestUtils(Context context) {
- mContext = context;
- mSaved = false;
- }
-
- /**
- * Set the locale to the given value and saves the previous value.
- *
- * @param locale the value to which the locale should be set
- * @throws IllegalStateException if the locale was already set
- */
- public void setLocale(Locale locale) {
- if (mSaved) {
- throw new IllegalStateException(
- "call restoreLocale() before calling setLocale() again");
- }
- mSavedContextLocale = setResourcesLocale(mContext.getResources(), locale);
- mSavedSystemLocale = setResourcesLocale(Resources.getSystem(), locale);
- mSaved = true;
- }
-
- /**
- * Restores the previously set locale.
- *
- * @throws IllegalStateException if the locale was not set using {@link #setLocale(Locale)}
- */
- public void restoreLocale() {
- if (!mSaved) {
- throw new IllegalStateException("call setLocale() before calling restoreLocale()");
- }
- setResourcesLocale(mContext.getResources(), mSavedContextLocale);
- setResourcesLocale(Resources.getSystem(), mSavedSystemLocale);
- mSaved = false;
- }
-
- /**
- * Sets the locale for the given resources and returns the previous locale.
- *
- * @param resources the resources on which to set the locale
- * @param locale the value to which to set the locale
- * @return the previous value of the locale for the resources
- */
- private Locale setResourcesLocale(Resources resources, Locale locale) {
- Configuration contextConfiguration = new Configuration(resources.getConfiguration());
- Locale savedLocale = contextConfiguration.locale;
- contextConfiguration.locale = locale;
- resources.updateConfiguration(contextConfiguration, null);
- return savedLocale;
- }
-}
diff --git a/tests/src/com/android/dialer/util/TestConstants.java b/tests/src/com/android/dialer/util/TestConstants.java
deleted file mode 100644
index a3dd05166..000000000
--- a/tests/src/com/android/dialer/util/TestConstants.java
+++ /dev/null
@@ -1,5 +0,0 @@
-package com.android.dialer.util;
-
-public class TestConstants {
- public static final String CALL_INTENT_ACTION = IntentUtil.CALL_ACTION;
-}
diff --git a/tests/src/com/android/dialer/voicemail/VoicemailActivityInstrumentationTestCase2.java b/tests/src/com/android/dialer/voicemail/VoicemailActivityInstrumentationTestCase2.java
deleted file mode 100644
index cabaf6732..000000000
--- a/tests/src/com/android/dialer/voicemail/VoicemailActivityInstrumentationTestCase2.java
+++ /dev/null
@@ -1,227 +0,0 @@
-/*
- * Copyright (C) 2016 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.voicemail;
-
-import android.app.Activity;
-import android.content.ContentResolver;
-import android.content.ContentUris;
-import android.content.ContentValues;
-import android.content.res.AssetManager;
-import android.net.Uri;
-import android.provider.VoicemailContract;
-import android.test.ActivityInstrumentationTestCase2;
-import android.test.suitebuilder.annotation.Suppress;
-import android.view.View;
-
-import com.android.dialer.R;
-import com.android.dialer.util.AsyncTaskExecutors;
-import com.android.dialer.util.FakeAsyncTaskExecutor;
-import com.android.dialer.util.LocaleTestUtils;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.util.Locale;
-
-import static com.android.dialer.voicemail.VoicemailPlaybackPresenter.Tasks.CHECK_FOR_CONTENT;
-
-/**
- * Common methods and attributes between {@link VoicemailArchiveTest} and
- * {@link VoicemailPlaybackTest}.
- */
-public class VoicemailActivityInstrumentationTestCase2<T extends Activity>
- extends ActivityInstrumentationTestCase2<T> {
- protected static final String TEST_ASSET_NAME = "quick_test_recording.mp3";
- protected static final String MIME_TYPE = "audio/mp3";
- protected static final String CONTACT_NUMBER = "+1412555555";
- protected static final String VOICEMAIL_FILE_LOCATION = "/sdcard/sadlfj893w4j23o9sfu.mp3";
-
- private T mActivity;
- protected VoicemailPlaybackPresenter mPresenter;
- private VoicemailPlaybackLayout mLayout;
-
- protected Uri mVoicemailUri;
- private LocaleTestUtils mLocaleTestUtils;
- protected FakeAsyncTaskExecutor mFakeAsyncTaskExecutor;
-
- public VoicemailActivityInstrumentationTestCase2(Class<T> activityClass) {
- super(activityClass);
- }
-
- @Override
- public void setUp() throws Exception {
- super.setUp();
-
- mFakeAsyncTaskExecutor = new FakeAsyncTaskExecutor(getInstrumentation());
- AsyncTaskExecutors.setFactoryForTest(mFakeAsyncTaskExecutor.getFactory());
-
- // Some of the tests rely on the text - safest to force a specific locale.
- mLocaleTestUtils = new LocaleTestUtils(getInstrumentation().getTargetContext());
- mLocaleTestUtils.setLocale(Locale.US);
-
- mActivity = getActivity();
- mLayout = new VoicemailPlaybackLayout(mActivity);
- mLayout.onFinishInflate();
- }
-
- @Override
- protected void tearDown() throws Exception {
- cleanUpVoicemailUri();
-
- mLocaleTestUtils.restoreLocale();
- mLocaleTestUtils = null;
-
- mPresenter.clearInstance();
- AsyncTaskExecutors.setFactoryForTest(null);
-
- mActivity = null;
- mPresenter = null;
- mLayout = null;
-
- super.tearDown();
- }
-
- @Suppress
- public void testFetchingVoicemail() throws Throwable {
- setUriForUnfetchedVoicemailEntry();
- setPlaybackViewForPresenter();
-
- getInstrumentation().runOnMainSync(new Runnable() {
- @Override
- public void run() {
- mPresenter.resumePlayback();
- assertStateTextContains("Loading voicemail");
- }
- });
- }
-
- @Suppress
- public void testInvalidVoicemailShowsErrorMessage() throws Throwable {
- setUriForInvalidVoicemailEntry();
- setPlaybackViewForPresenter();
-
- getInstrumentation().runOnMainSync(new Runnable() {
- @Override
- public void run() {
- mPresenter.resumePlayback();
- }
- });
- mFakeAsyncTaskExecutor.runTask(CHECK_FOR_CONTENT);
- getInstrumentation().waitForIdleSync();
-
- // The media player will have thrown an IOException since the file doesn't exist.
- // This should have put a failed to play message on screen, buffering is gone.
- assertStateTextContains("Couldn't play voicemail");
- assertStateTextNotContains("Buffering");
- }
-
- public void testClickingSpeakerphoneButton() throws Throwable {
- setUriForRealFileVoicemailEntry();
- setPlaybackViewForPresenter();
-
- // Check that the speakerphone is false to start.
- assertFalse(mPresenter.isSpeakerphoneOn());
-
- View speakerphoneButton = mLayout.findViewById(R.id.playback_speakerphone);
- speakerphoneButton.performClick();
- assertTrue(mPresenter.isSpeakerphoneOn());
- }
-
- protected void cleanUpVoicemailUri() {
- if (mVoicemailUri != null) {
- getContentResolver().delete(VoicemailContract.Voicemails.CONTENT_URI,
- "_ID = ?", new String[] { String.valueOf(ContentUris.parseId(mVoicemailUri)) });
- mVoicemailUri = null;
- }
- }
-
- protected void setUriForRealFileVoicemailEntry() throws IOException {
- assertNull(mVoicemailUri);
- ContentValues values = new ContentValues();
- values.put(VoicemailContract.Voicemails.DATE, String.valueOf(System.currentTimeMillis()));
- values.put(VoicemailContract.Voicemails.NUMBER, CONTACT_NUMBER);
- values.put(VoicemailContract.Voicemails.MIME_TYPE, MIME_TYPE);
- values.put(VoicemailContract.Voicemails.HAS_CONTENT, 1);
- String packageName = getInstrumentation().getTargetContext().getPackageName();
- mVoicemailUri = getContentResolver().insert(
- VoicemailContract.Voicemails.buildSourceUri(packageName), values);
- AssetManager assets = getAssets();
- try (InputStream inputStream = assets.open(TEST_ASSET_NAME);
- OutputStream outputStream = getContentResolver().openOutputStream(mVoicemailUri)) {
- copyBetweenStreams(inputStream, outputStream);
- }
- }
-
- protected void setUriForUnfetchedVoicemailEntry() {
- assertNull(mVoicemailUri);
- ContentValues values = new ContentValues();
- values.put(VoicemailContract.Voicemails.DATE, String.valueOf(System.currentTimeMillis()));
- values.put(VoicemailContract.Voicemails.NUMBER, CONTACT_NUMBER);
- values.put(VoicemailContract.Voicemails.MIME_TYPE, MIME_TYPE);
- values.put(VoicemailContract.Voicemails.HAS_CONTENT, 0);
- String packageName = getInstrumentation().getTargetContext().getPackageName();
- mVoicemailUri = getContentResolver().insert(
- VoicemailContract.Voicemails.buildSourceUri(packageName), values);
- }
-
- protected void setUriForInvalidVoicemailEntry() {
- assertNull(mVoicemailUri);
- ContentResolver contentResolver = getContentResolver();
- ContentValues values = new ContentValues();
- values.put(VoicemailContract.Voicemails.NUMBER, CONTACT_NUMBER);
- values.put(VoicemailContract.Voicemails.HAS_CONTENT, 1);
- // VoicemailContract.Voicemails._DATA
- values.put("_data", VOICEMAIL_FILE_LOCATION);
- mVoicemailUri = contentResolver.insert(VoicemailContract.Voicemails.CONTENT_URI, values);
- }
-
- protected void setPlaybackViewForPresenter() {
- getInstrumentation().runOnMainSync(new Runnable() {
- @Override
- public void run() {
- mPresenter.setPlaybackView(mLayout, mVoicemailUri, false);
- }
- });
- }
-
- protected void copyBetweenStreams(InputStream in, OutputStream out) throws IOException {
- byte[] buffer = new byte[1024];
- int bytesRead;
- while ((bytesRead = in.read(buffer)) > 0) {
- out.write(buffer, 0, bytesRead);
- }
- }
-
- protected void assertStateTextContains(String text) {
- assertNotNull(mLayout);
- assertTrue(mLayout.getStateText().contains(text));
- }
-
- protected void assertStateTextNotContains(String text) {
- assertNotNull(mLayout);
- assertFalse(mLayout.getStateText().contains(text));
- }
-
- protected ContentResolver getContentResolver() {
- return getInstrumentation().getTargetContext().getContentResolver();
- }
-
- protected AssetManager getAssets() {
- return getInstrumentation().getContext().getAssets();
- }
-
-}
diff --git a/tests/src/com/android/dialer/voicemail/VoicemailArchiveTest.java b/tests/src/com/android/dialer/voicemail/VoicemailArchiveTest.java
deleted file mode 100644
index bbd5edc48..000000000
--- a/tests/src/com/android/dialer/voicemail/VoicemailArchiveTest.java
+++ /dev/null
@@ -1,116 +0,0 @@
-/*
- * Copyright (C) 2016 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.voicemail;
-
-import android.content.ContentUris;
-import android.content.ContentValues;
-import android.content.res.AssetManager;
-
-import com.android.dialer.database.VoicemailArchiveContract.VoicemailArchive;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-
-/**
- * Unit tests for {@link VoicemailArchiveActivity} and {@link VoicemailArchivePlaybackPresenter}.
- */
-public class VoicemailArchiveTest
- extends VoicemailActivityInstrumentationTestCase2<VoicemailArchiveActivity> {
-
- public VoicemailArchiveTest() {
- super(VoicemailArchiveActivity.class);
- }
-
- @Override
- public void setUp() throws Exception {
- super.setUp();
- mPresenter = VoicemailArchivePlaybackPresenter.getInstance(getActivity(), null);
- }
-
- @Override
- public void testFetchingVoicemail() throws Throwable {
- setUriForRealFileVoicemailEntry();
- setPlaybackViewForPresenter();
- getInstrumentation().runOnMainSync(new Runnable() {
- @Override
- public void run() {
- mPresenter.checkForContent(
- new VoicemailPlaybackPresenter.OnContentCheckedListener() {
- @Override
- public void onContentChecked(boolean hasContent) {
- mPresenter.resumePlayback();
- assertEquals(true, mPresenter.isPlaying());
- }
- });
- }
- });
- }
-
- @Override
- public void testInvalidVoicemailShowsErrorMessage() throws Throwable {
- setUriForInvalidVoicemailEntry();
- getInstrumentation().runOnMainSync(new Runnable() {
- @Override
- public void run() {
- mPresenter.checkForContent(
- new VoicemailPlaybackPresenter.OnContentCheckedListener() {
- @Override
- public void onContentChecked(boolean hasContent) {
- assertStateTextContains("Couldn't play voicemail");
- }
- });
- }
- });
- }
-
- @Override
- protected void setUriForInvalidVoicemailEntry() {
- assertNull(mVoicemailUri);
- ContentValues values = new ContentValues();
- values.put(VoicemailArchive.NUMBER, CONTACT_NUMBER);
- values.put(VoicemailArchive.DATE, String.valueOf(System.currentTimeMillis()));
- values.put(VoicemailArchive.MIME_TYPE, MIME_TYPE);
- values.put(VoicemailArchive._DATA, VOICEMAIL_FILE_LOCATION);
- mVoicemailUri = getContentResolver().insert(VoicemailArchive.CONTENT_URI, values);
- }
-
- @Override
- protected void setUriForRealFileVoicemailEntry() throws IOException {
- assertNull(mVoicemailUri);
- ContentValues values = new ContentValues();
- values.put(VoicemailArchive.DATE, String.valueOf(System.currentTimeMillis()));
- values.put(VoicemailArchive.NUMBER, CONTACT_NUMBER);
- values.put(VoicemailArchive.MIME_TYPE, MIME_TYPE);
- values.put(VoicemailArchive.DURATION, 0);
- mVoicemailUri = getContentResolver().insert(VoicemailArchive.CONTENT_URI, values);
- AssetManager assets = getAssets();
- try (InputStream inputStream = assets.open(TEST_ASSET_NAME);
- OutputStream outputStream = getContentResolver().openOutputStream(mVoicemailUri)) {
- copyBetweenStreams(inputStream, outputStream);
- }
- }
-
- @Override
- protected void cleanUpVoicemailUri() {
- if (mVoicemailUri != null) {
- getContentResolver().delete(VoicemailArchive.CONTENT_URI,
- "_ID = ?", new String[] { String.valueOf(ContentUris.parseId(mVoicemailUri)) });
- mVoicemailUri = null;
- }
- }
-}
diff --git a/tests/src/com/android/dialer/voicemail/VoicemailAsyncTaskUtilTest.java b/tests/src/com/android/dialer/voicemail/VoicemailAsyncTaskUtilTest.java
deleted file mode 100644
index d98d9fa59..000000000
--- a/tests/src/com/android/dialer/voicemail/VoicemailAsyncTaskUtilTest.java
+++ /dev/null
@@ -1,388 +0,0 @@
-/*
- * Copyright (C) 2016 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.voicemail;
-
-import android.content.ContentUris;
-import android.content.ContentValues;
-import android.content.res.AssetFileDescriptor;
-import android.net.Uri;
-import android.os.Bundle;
-import android.os.ParcelFileDescriptor;
-import android.provider.CallLog;
-import android.provider.VoicemailContract;
-import android.test.InstrumentationTestCase;
-import android.test.mock.MockContentResolver;
-
-import com.android.contacts.common.test.mocks.MockContentProvider;
-import com.android.contacts.common.test.mocks.MockContentProvider.Query;
-import com.android.dialer.calllog.CallLogQuery;
-import com.android.dialer.database.VoicemailArchiveContract;
-import com.android.dialer.util.AsyncTaskExecutors;
-import com.android.dialer.util.FakeAsyncTaskExecutor;
-import com.android.dialer.voicemail.VoicemailAsyncTaskUtil.OnGetArchivedVoicemailFilePathListener;
-import com.android.dialer.voicemail.VoicemailAsyncTaskUtil.OnArchiveVoicemailListener;
-import com.android.dialer.voicemail.VoicemailAsyncTaskUtil.OnSetVoicemailArchiveStatusListener;
-
-import org.junit.Rule;
-import org.junit.rules.TemporaryFolder;
-import static org.mockito.Mockito.*;
-
-import java.io.FileNotFoundException;
-import java.io.IOException;
-
-public class VoicemailAsyncTaskUtilTest extends InstrumentationTestCase {
- private static final String TEST_MIME_TYPE = "audio/mp3";
- private static final String TEST_NUMBER = "+1412555555";
- private static final String TEST_FILE_PATH = "TEST_PATH";
- private static final String TEST_TRANSCRIPTION = "TEST_TRANSCRIPTION";
- private static final long TEST_DATE = 0;
- private static final long TEST_DURATION = 0;
- private static final int TEST_SERVER_ID = 1;
- private static final int TEST_ID = 2;
- private static final Uri ARCHIVED_VOICEMAIL_URI =
- VoicemailArchiveContract.VoicemailArchive.buildWithId(TEST_ID);
- private static final Uri VOICEMAIL_URI = VoicemailContract.Voicemails.CONTENT_URI
- .buildUpon().appendPath(Integer.toString(TEST_SERVER_ID)).build();
- private static final String[] CALLLOG_QUERY_PROJECTION = new String[] {
- CallLog.Calls._ID,
- CallLog.Calls.NUMBER,
- CallLog.Calls.DATE,
- CallLog.Calls.DURATION,
- CallLog.Calls.TYPE,
- CallLog.Calls.COUNTRY_ISO,
- CallLog.Calls.VOICEMAIL_URI,
- CallLog.Calls.GEOCODED_LOCATION,
- CallLog.Calls.CACHED_NAME,
- CallLog.Calls.CACHED_NUMBER_TYPE,
- CallLog.Calls.CACHED_NUMBER_LABEL,
- CallLog.Calls.CACHED_LOOKUP_URI,
- CallLog.Calls.CACHED_MATCHED_NUMBER,
- CallLog.Calls.CACHED_NORMALIZED_NUMBER,
- CallLog.Calls.CACHED_PHOTO_ID,
- CallLog.Calls.CACHED_FORMATTED_NUMBER,
- CallLog.Calls.IS_READ,
- CallLog.Calls.NUMBER_PRESENTATION,
- CallLog.Calls.PHONE_ACCOUNT_COMPONENT_NAME,
- CallLog.Calls.PHONE_ACCOUNT_ID,
- CallLog.Calls.FEATURES,
- CallLog.Calls.DATA_USAGE,
- CallLog.Calls.TRANSCRIPTION,
- CallLog.Calls.CACHED_PHOTO_URI
- };
- private static final String[] VOICEMAIL_PROJECTION = new String[] {
- VoicemailContract.Voicemails._ID,
- VoicemailContract.Voicemails.NUMBER,
- VoicemailContract.Voicemails.DATE,
- VoicemailContract.Voicemails.DURATION,
- VoicemailContract.Voicemails.MIME_TYPE,
- VoicemailContract.Voicemails.TRANSCRIPTION,
- };
-
- private final MockContentResolver mContentResolver = new MockContentResolver();
- private final MockContentProvider mArchiveContentProvider = new TestVoicemailContentProvider();
- private final MockContentProvider mVoicemailContentProvider =
- new TestVoicemailContentProvider();
- private final MockContentProvider mCallLogContentProvider = new MockContentProvider();
- @Rule
- private final TemporaryFolder mTemporaryFolder = new TemporaryFolder();
-
- private VoicemailAsyncTaskUtil mVoicemailAsyncTaskUtil;
- private FakeAsyncTaskExecutor mFakeAsyncTaskExecutor;
-
- @Override
- protected void setUp() throws Exception {
- super.setUp();
- mFakeAsyncTaskExecutor = new FakeAsyncTaskExecutor(getInstrumentation());
- AsyncTaskExecutors.setFactoryForTest(mFakeAsyncTaskExecutor.getFactory());
- mContentResolver.addProvider(VoicemailArchiveContract.AUTHORITY, mArchiveContentProvider);
- mContentResolver.addProvider(VoicemailContract.AUTHORITY, mVoicemailContentProvider);
- mContentResolver.addProvider(CallLog.AUTHORITY, mCallLogContentProvider);
- mVoicemailAsyncTaskUtil = new VoicemailAsyncTaskUtil(mContentResolver);
- }
-
- @Override
- protected void tearDown() throws Exception {
- AsyncTaskExecutors.setFactoryForTest(null);
- super.tearDown();
- }
-
- public void testGetVoicemailFilePath_VoicemailExists() throws Throwable {
- newVoicemailArchiveQuery().withAnyProjection()
- .returnRow(getCombinedContentValuesWithData());
- final OnGetArchivedVoicemailFilePathListener listener =
- mock(OnGetArchivedVoicemailFilePathListener.class);
- runTestOnUiThread(new Runnable() {
- @Override
- public void run() {
- mVoicemailAsyncTaskUtil.getVoicemailFilePath(listener, ARCHIVED_VOICEMAIL_URI);
- }
- });
- mFakeAsyncTaskExecutor.runTask(VoicemailAsyncTaskUtil.Tasks.GET_VOICEMAIL_FILE_PATH);
- verify(listener).onGetArchivedVoicemailFilePath(TEST_FILE_PATH);
- verifyQueries();
- }
-
- public void testGetVoicemailFilePath_VoicemailNotExists() throws Throwable {
- newVoicemailArchiveFakeQuery().withAnyProjection().returnEmptyCursor();
- final OnGetArchivedVoicemailFilePathListener listener =
- mock(OnGetArchivedVoicemailFilePathListener.class);
- runTestOnUiThread(new Runnable() {
- @Override
- public void run() {
- mVoicemailAsyncTaskUtil.getVoicemailFilePath(listener, getFakeVoicemailUri());
- }
- });
- mFakeAsyncTaskExecutor.runTask(VoicemailAsyncTaskUtil.Tasks.GET_VOICEMAIL_FILE_PATH);
- verify(listener).onGetArchivedVoicemailFilePath(null);
- verifyQueries();
- }
-
- public void testSetVoicemailArchiveStatus_VoicemailNotExists() throws Throwable {
- newVoicemailArchiveNotExistsUpdateQuery(true);
- final OnSetVoicemailArchiveStatusListener listener =
- mock(OnSetVoicemailArchiveStatusListener.class);
- runTestOnUiThread(new Runnable() {
- @Override
- public void run() {
- mVoicemailAsyncTaskUtil.setVoicemailArchiveStatus(listener,
- getFakeVoicemailUri(), true);
- }
- });
- mFakeAsyncTaskExecutor.runTask(VoicemailAsyncTaskUtil.Tasks.SET_VOICEMAIL_ARCHIVE_STATUS);
- verify(listener).onSetVoicemailArchiveStatus(false);
- verifyQueries();
- }
-
- public void testSetVoicemailArchiveStatus_VoicemailExists() throws Throwable {
- newVoicemailArchiveExistsUpdateQuery(true);
- final OnSetVoicemailArchiveStatusListener listener =
- mock(OnSetVoicemailArchiveStatusListener.class);
- runTestOnUiThread(new Runnable() {
- @Override
- public void run() {
- mVoicemailAsyncTaskUtil.setVoicemailArchiveStatus(listener,
- ARCHIVED_VOICEMAIL_URI, true);
- }
- });
- mFakeAsyncTaskExecutor.runTask(VoicemailAsyncTaskUtil.Tasks.SET_VOICEMAIL_ARCHIVE_STATUS);
- verify(listener).onSetVoicemailArchiveStatus(true);
- verifyQueries();
- }
-
- public void testArchiveVoicemailContent_ArchiveNotExists() throws Throwable {
- newVoicemailArchiveExistsQuery().returnEmptyCursor();
- newQueryCallLogInfo().returnRow(getCallLogContentValues());
- newVoicemailQuery().returnRow(getVoicemailContentValues());
- newVoicemailArchiveInsert();
- final OnArchiveVoicemailListener listener = mock(OnArchiveVoicemailListener.class);
- runTestOnUiThread(new Runnable() {
- @Override
- public void run() {
- mVoicemailAsyncTaskUtil.archiveVoicemailContent(listener, VOICEMAIL_URI);
- }
- });
- mFakeAsyncTaskExecutor.runTask(VoicemailAsyncTaskUtil.Tasks.ARCHIVE_VOICEMAIL_CONTENT);
- verify(listener).onArchiveVoicemail(ARCHIVED_VOICEMAIL_URI);
- verifyQueries();
- }
-
- public void testArchiveVoicemailContent_ArchiveExists() throws Throwable {
- newVoicemailArchiveExistsQuery().returnRow(getCombinedValuesWithId());
- final OnArchiveVoicemailListener listener = mock(OnArchiveVoicemailListener.class);
- runTestOnUiThread(new Runnable() {
- @Override
- public void run() {
- mVoicemailAsyncTaskUtil.archiveVoicemailContent(listener, VOICEMAIL_URI);
- }
- });
- mFakeAsyncTaskExecutor.runTask(VoicemailAsyncTaskUtil.Tasks.ARCHIVE_VOICEMAIL_CONTENT);
- verify(listener).onArchiveVoicemail(ARCHIVED_VOICEMAIL_URI);
- verifyQueries();
- }
-
- public void testArchiveVoicemailContent_CallLogInfoNotExists() throws Throwable {
- newVoicemailArchiveExistsQuery().returnEmptyCursor();
- newQueryCallLogInfo().returnEmptyCursor();
- newVoicemailQuery().returnEmptyCursor();
- final OnArchiveVoicemailListener listener = mock(OnArchiveVoicemailListener.class);
- runTestOnUiThread(new Runnable() {
- @Override
- public void run() {
- mVoicemailAsyncTaskUtil.archiveVoicemailContent(listener, VOICEMAIL_URI);
- }
- });
- mFakeAsyncTaskExecutor.runTask(VoicemailAsyncTaskUtil.Tasks.ARCHIVE_VOICEMAIL_CONTENT);
- verify(listener).onArchiveVoicemail(null);
- verifyQueries();
- }
-
- private Query newVoicemailArchiveQuery() {
- return mArchiveContentProvider.expectQuery(ARCHIVED_VOICEMAIL_URI);
- }
-
- private Query newVoicemailArchiveFakeQuery() {
- return mArchiveContentProvider.expectQuery(getFakeVoicemailUri());
- }
-
- private Query newQueryCallLogInfo() {
- return mCallLogContentProvider.expectQuery(ContentUris.withAppendedId(
- CallLog.Calls.CONTENT_URI_WITH_VOICEMAIL, ContentUris.parseId(VOICEMAIL_URI)))
- .withProjection(CALLLOG_QUERY_PROJECTION);
- }
-
- private Query newVoicemailQuery() {
- return mVoicemailContentProvider.expectQuery(VOICEMAIL_URI).withAnySelection()
- .withProjection(VOICEMAIL_PROJECTION);
- }
-
- private Query newVoicemailArchiveExistsQuery() {
- return mArchiveContentProvider.expectQuery(
- VoicemailArchiveContract.VoicemailArchive.CONTENT_URI)
- .withSelection(VoicemailArchiveContract.VoicemailArchive.SERVER_ID + "="
- + ContentUris.parseId(VOICEMAIL_URI), (String[]) null)
- .withProjection(VoicemailArchiveContract.VoicemailArchive._ID);
- }
-
- private void newVoicemailArchiveInsert() {
- mArchiveContentProvider.expectInsert(
- VoicemailArchiveContract.VoicemailArchive.CONTENT_URI, getCombinedContentValues(),
- ARCHIVED_VOICEMAIL_URI);
- }
-
- private void newVoicemailArchiveNotExistsUpdateQuery(boolean status) {
- mArchiveContentProvider.expectUpdate(getFakeVoicemailUri(),
- getArchiveStatusUpdateValues(status), null, null).returnRowsAffected(0);
- }
-
- private void newVoicemailArchiveExistsUpdateQuery(boolean status) {
- mArchiveContentProvider.expectUpdate(ARCHIVED_VOICEMAIL_URI,
- getArchiveStatusUpdateValues(status), null, null).returnRowsAffected(1);
- }
-
- private static ContentValues getCallLogContentValues() {
- ContentValues values = new ContentValues();
- values.put(CALLLOG_QUERY_PROJECTION[CallLogQuery.GEOCODED_LOCATION], "");
- values.put(CALLLOG_QUERY_PROJECTION[CallLogQuery.CACHED_NAME], "");
- values.put(CALLLOG_QUERY_PROJECTION[CallLogQuery.COUNTRY_ISO], "");
- values.put(CALLLOG_QUERY_PROJECTION[CallLogQuery.CACHED_NUMBER_TYPE], 0);
- values.put(CALLLOG_QUERY_PROJECTION[CallLogQuery.CACHED_NUMBER_LABEL], "");
- values.put(CALLLOG_QUERY_PROJECTION[CallLogQuery.CACHED_LOOKUP_URI], "");
- values.put(CALLLOG_QUERY_PROJECTION[CallLogQuery.CACHED_MATCHED_NUMBER], "");
- values.put(CALLLOG_QUERY_PROJECTION[CallLogQuery.CACHED_NORMALIZED_NUMBER], "");
- values.put(CALLLOG_QUERY_PROJECTION[CallLogQuery.CACHED_FORMATTED_NUMBER], "");
- values.put(CALLLOG_QUERY_PROJECTION[CallLogQuery.NUMBER_PRESENTATION], 0);
- values.put(CALLLOG_QUERY_PROJECTION[CallLogQuery.ACCOUNT_COMPONENT_NAME], "");
- values.put(CALLLOG_QUERY_PROJECTION[CallLogQuery.ACCOUNT_ID], "");
- values.put(CALLLOG_QUERY_PROJECTION[CallLogQuery.FEATURES], 0);
- values.put(CALLLOG_QUERY_PROJECTION[23], "");
- return values;
- }
-
- private static ContentValues getVoicemailContentValues() {
- ContentValues values = new ContentValues();
- values.put(VoicemailContract.Voicemails.NUMBER, TEST_NUMBER);
- values.put(VoicemailContract.Voicemails.DATE, TEST_DATE);
- values.put(VoicemailContract.Voicemails.DURATION, TEST_DURATION);
- values.put(VoicemailContract.Voicemails.MIME_TYPE, TEST_MIME_TYPE);
- values.put(VoicemailContract.Voicemails._ID, TEST_SERVER_ID);
- values.put(VoicemailContract.Voicemails.TRANSCRIPTION, TEST_TRANSCRIPTION);
- values.put("_data", TEST_FILE_PATH); // VoicemailContract.Voicemails._DATA
- return values;
- }
-
- private static ContentValues getCombinedContentValues() {
- ContentValues values = new ContentValues();
- // Call log info
- values.put(VoicemailArchiveContract.VoicemailArchive.GEOCODED_LOCATION, "");
- values.put(VoicemailArchiveContract.VoicemailArchive.CACHED_NAME, "");
- values.put(VoicemailArchiveContract.VoicemailArchive.CACHED_NUMBER_TYPE, 0);
- values.put(VoicemailArchiveContract.VoicemailArchive.CACHED_NUMBER_LABEL, "");
- values.put(VoicemailArchiveContract.VoicemailArchive.CACHED_LOOKUP_URI, "");
- values.put(VoicemailArchiveContract.VoicemailArchive.CACHED_MATCHED_NUMBER, "");
- values.put(VoicemailArchiveContract.VoicemailArchive.CACHED_NORMALIZED_NUMBER, "");
- values.put(VoicemailArchiveContract.VoicemailArchive.CACHED_FORMATTED_NUMBER, "");
- values.put(VoicemailArchiveContract.VoicemailArchive.NUMBER_PRESENTATION, 0);
- values.put(VoicemailArchiveContract.VoicemailArchive.ACCOUNT_COMPONENT_NAME, "");
- values.put(VoicemailArchiveContract.VoicemailArchive.ACCOUNT_ID, "");
- values.put(VoicemailArchiveContract.VoicemailArchive.FEATURES, 0);
- values.put(VoicemailArchiveContract.VoicemailArchive.CACHED_PHOTO_URI, "");
- values.put(VoicemailArchiveContract.VoicemailArchive.COUNTRY_ISO, "");
-
- // Voicemail content info
- values.put(VoicemailArchiveContract.VoicemailArchive.NUMBER, TEST_NUMBER);
- values.put(VoicemailArchiveContract.VoicemailArchive.DATE, TEST_DATE);
- values.put(VoicemailArchiveContract.VoicemailArchive.DURATION, TEST_DURATION);
- values.put(VoicemailArchiveContract.VoicemailArchive.MIME_TYPE, TEST_MIME_TYPE);
- values.put(VoicemailArchiveContract.VoicemailArchive.SERVER_ID, TEST_SERVER_ID);
- values.put(VoicemailArchiveContract.VoicemailArchive.TRANSCRIPTION, TEST_TRANSCRIPTION);
-
- // Custom fields
- values.put(VoicemailArchiveContract.VoicemailArchive.ARCHIVED, false);
- return values;
- }
-
- private static ContentValues getCombinedContentValuesWithData() {
- ContentValues values = getCombinedContentValues();
- values.put(VoicemailArchiveContract.VoicemailArchive._DATA, TEST_FILE_PATH);
- return values;
- }
-
- private static ContentValues getCombinedValuesWithId() {
- ContentValues values = getCombinedContentValuesWithData();
- values.put(VoicemailArchiveContract.VoicemailArchive._ID, TEST_ID);
- return values;
- }
-
- private static ContentValues getArchiveStatusUpdateValues(boolean status) {
- ContentValues values = new ContentValues();
- values.put(VoicemailArchiveContract.VoicemailArchive.ARCHIVED, status);
- return values;
- }
-
- private static Uri getFakeVoicemailUri() {
- return VoicemailArchiveContract.VoicemailArchive.buildWithId(0);
- }
-
- private void verifyQueries() {
- mArchiveContentProvider.verify();
- mCallLogContentProvider.verify();
- mVoicemailContentProvider.verify();
- }
-
- private class TestVoicemailContentProvider extends MockContentProvider {
- @Override
- public ParcelFileDescriptor openFile(Uri uri, String mode) throws FileNotFoundException {
- int modeBits = ParcelFileDescriptor.parseMode(mode);
- try {
- return ParcelFileDescriptor.open(mTemporaryFolder.newFile(), modeBits);
- } catch (IOException e) {
- return null;
- }
- }
-
- @Override
- public AssetFileDescriptor openTypedAssetFile(Uri uri, String mimeTypeFilter, Bundle opts) {
- try {
- return new AssetFileDescriptor(openFile(uri, "r"), 0,
- AssetFileDescriptor.UNKNOWN_LENGTH);
- } catch (FileNotFoundException e) {
- return null;
- }
- }
- }
-}
-
diff --git a/tests/src/com/android/dialer/voicemail/VoicemailPlaybackTest.java b/tests/src/com/android/dialer/voicemail/VoicemailPlaybackTest.java
deleted file mode 100644
index be9905edd..000000000
--- a/tests/src/com/android/dialer/voicemail/VoicemailPlaybackTest.java
+++ /dev/null
@@ -1,145 +0,0 @@
-/*
- * Copyright (C) 2016 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.voicemail;
-
-import android.content.ContentUris;
-import android.database.Cursor;
-import android.net.Uri;
-import android.test.suitebuilder.annotation.Suppress;
-
-import com.android.dialer.calllog.CallLogActivity;
-import com.android.dialer.database.VoicemailArchiveContract;
-import static com.android.dialer.voicemail.VoicemailAsyncTaskUtil.Tasks.ARCHIVE_VOICEMAIL_CONTENT;
-import static com.android.dialer.voicemail.VoicemailPlaybackPresenter.Tasks.CHECK_FOR_CONTENT;
-
-/**
- * Unit tests for {@link VoicemailPlaybackPresenter} and {@link VoicemailPlaybackLayout}.
- */
-public class VoicemailPlaybackTest
- extends VoicemailActivityInstrumentationTestCase2<CallLogActivity> {
-
- public VoicemailPlaybackTest() {
- super(CallLogActivity.class);
- }
-
- @Override
- public void setUp() throws Exception {
- super.setUp();
- mPresenter = VoicemailPlaybackPresenter.getInstance(getActivity(), null);
- }
-
- @Override
- public void tearDown() throws Exception {
- cleanUpArchivedVoicemailUri();
- super.tearDown();
- }
-
- @Suppress
- public void testWhenCheckForContentCompletes() throws Throwable {
- setUriForRealFileVoicemailEntry();
- setPlaybackViewForPresenter();
-
- getInstrumentation().runOnMainSync(new Runnable() {
- @Override
- public void run() {
- mPresenter.resumePlayback();
- }
- });
- mFakeAsyncTaskExecutor.runTask(CHECK_FOR_CONTENT);
- getInstrumentation().waitForIdleSync();
-
- assertStateTextContains("Loading voicemail");
- }
-
- public void testArchiveContent() throws Throwable {
- setUriForRealFileVoicemailEntry();
- setPlaybackViewForPresenter();
- mFakeAsyncTaskExecutor.runTask(CHECK_FOR_CONTENT);
-
- getInstrumentation().runOnMainSync(new Runnable() {
- @Override
- public void run() {
- mPresenter.archiveContent(mVoicemailUri, true);
- }
- });
- mFakeAsyncTaskExecutor.runTask(CHECK_FOR_CONTENT);
- mFakeAsyncTaskExecutor.runTask(ARCHIVE_VOICEMAIL_CONTENT);
- getInstrumentation().waitForIdleSync();
- assertVoicemailArchived();
- }
-
- public void testShareContent() throws Throwable {
- setUriForRealFileVoicemailEntry();
- setPlaybackViewForPresenter();
- mFakeAsyncTaskExecutor.runTask(CHECK_FOR_CONTENT);
-
- getInstrumentation().runOnMainSync(new Runnable() {
- @Override
- public void run() {
- mPresenter.archiveContent(mVoicemailUri, false);
- }
- });
- mFakeAsyncTaskExecutor.runTask(CHECK_FOR_CONTENT);
- mFakeAsyncTaskExecutor.runTask(ARCHIVE_VOICEMAIL_CONTENT);
- getInstrumentation().waitForIdleSync();
- assertVoicemailArchived();
- }
-
- private void assertVoicemailArchived() {
- try (Cursor cursor = getArchivedVoicemailCursor()) {
- assertTrue(hasContent(cursor));
- assertEquals(ContentUris.parseId(mVoicemailUri), getRowServerId(cursor));
- } catch (Exception e) {
- fail("Voicemail was not archived: " + e.toString());
- }
- }
-
- private void cleanUpArchivedVoicemailUri() {
- try (Cursor cursor = getArchivedVoicemailCursor()) {
- if (hasContent(cursor)) {
- getContentResolver().delete(getRowUri(cursor), null, null);
- }
- }
- }
-
- private Cursor getArchivedVoicemailCursor() {
- return getContentResolver().query(
- VoicemailArchiveContract.VoicemailArchive.CONTENT_URI,
- new String[] {
- VoicemailArchiveContract.VoicemailArchive._ID,
- VoicemailArchiveContract.VoicemailArchive.SERVER_ID
- },
- VoicemailArchiveContract.VoicemailArchive.SERVER_ID + "="
- + ContentUris.parseId(mVoicemailUri),
- null,
- null);
- }
-
- private int getRowServerId(Cursor cursor) {
- return cursor
- .getInt(cursor.getColumnIndex(VoicemailArchiveContract.VoicemailArchive.SERVER_ID));
- }
-
- private Uri getRowUri(Cursor cursor) {
- return VoicemailArchiveContract.VoicemailArchive.buildWithId(cursor.getInt(
- cursor.getColumnIndex(VoicemailArchiveContract.VoicemailArchive._ID)));
- }
-
- private boolean hasContent(Cursor cursor) {
- return cursor != null && cursor.moveToFirst();
- }
-} \ No newline at end of file
diff --git a/tests/src/com/android/dialer/voicemail/VoicemailStatusHelperImplTest.java b/tests/src/com/android/dialer/voicemail/VoicemailStatusHelperImplTest.java
deleted file mode 100644
index 03776440f..000000000
--- a/tests/src/com/android/dialer/voicemail/VoicemailStatusHelperImplTest.java
+++ /dev/null
@@ -1,274 +0,0 @@
-/*
- * 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.voicemail;
-
-import static android.provider.VoicemailContract.Status.CONFIGURATION_STATE;
-import static android.provider.VoicemailContract.Status.CONFIGURATION_STATE_CAN_BE_CONFIGURED;
-import static android.provider.VoicemailContract.Status.CONFIGURATION_STATE_NOT_CONFIGURED;
-import static android.provider.VoicemailContract.Status.DATA_CHANNEL_STATE;
-import static android.provider.VoicemailContract.Status.DATA_CHANNEL_STATE_NO_CONNECTION;
-import static android.provider.VoicemailContract.Status.DATA_CHANNEL_STATE_OK;
-import static android.provider.VoicemailContract.Status.NOTIFICATION_CHANNEL_STATE;
-import static android.provider.VoicemailContract.Status.NOTIFICATION_CHANNEL_STATE_MESSAGE_WAITING;
-import static android.provider.VoicemailContract.Status.NOTIFICATION_CHANNEL_STATE_NO_CONNECTION;
-import static android.provider.VoicemailContract.Status.NOTIFICATION_CHANNEL_STATE_OK;
-
-import android.content.ContentResolver;
-import android.content.ContentValues;
-import android.database.Cursor;
-import android.net.Uri;
-import android.provider.VoicemailContract.Status;
-import android.test.AndroidTestCase;
-
-import com.android.dialer.R;
-import com.android.dialer.voicemail.VoicemailStatusHelper.StatusMessage;
-
-import java.util.List;
-
-/**
- * Unit tests for {@link VoicemailStatusHelperImpl}.
- */
-public class VoicemailStatusHelperImplTest extends AndroidTestCase {
- private static final String[] TEST_PACKAGES = new String[] {
- "com.test.package1",
- "com.test.package2"
- };
-
- private static final Uri TEST_SETTINGS_URI = Uri.parse("http://www.visual.voicemail.setup");
- private static final Uri TEST_VOICEMAIL_URI = Uri.parse("tel:901");
-
- private static final int ACTION_MSG_CALL_VOICEMAIL =
- R.string.voicemail_status_action_call_server;
- private static final int ACTION_MSG_CONFIGURE = R.string.voicemail_status_action_configure;
-
- private static final int STATUS_MSG_NONE = -1;
- private static final int STATUS_MSG_VOICEMAIL_NOT_AVAILABLE =
- R.string.voicemail_status_voicemail_not_available;
- private static final int STATUS_MSG_AUDIO_NOT_AVAIALABLE =
- R.string.voicemail_status_audio_not_available;
- private static final int STATUS_MSG_MESSAGE_WAITING = R.string.voicemail_status_messages_waiting;
- private static final int STATUS_MSG_INVITE_FOR_CONFIGURATION =
- R.string.voicemail_status_configure_voicemail;
-
- // Object under test.
- private VoicemailStatusHelper mStatusHelper;
-
- @Override
- protected void setUp() throws Exception {
- super.setUp();
- mStatusHelper = new VoicemailStatusHelperImpl();
- }
-
- @Override
- protected void tearDown() throws Exception {
- for (String sourcePackage : TEST_PACKAGES) {
- deleteEntryForPackage(sourcePackage);
- }
- // Set member variables to null so that they are garbage collected across different runs
- // of the tests.
- mStatusHelper = null;
- super.tearDown();
- }
-
-
- public void testNoStatusEntries() {
- assertEquals(0, getStatusMessages().size());
- }
-
- public void testAllOK() {
- insertEntryForPackage(TEST_PACKAGES[0], getAllOkStatusValues());
- insertEntryForPackage(TEST_PACKAGES[1], getAllOkStatusValues());
- assertEquals(0, getStatusMessages().size());
- }
-
- public void testNotAllOKForOnePackage() {
- insertEntryForPackage(TEST_PACKAGES[0], getAllOkStatusValues());
- insertEntryForPackage(TEST_PACKAGES[1], getAllOkStatusValues());
-
- ContentValues values = new ContentValues();
- // Good data channel + no notification
- // action: call voicemail
- // msg: voicemail not available in call log page & none in call details page.
- values.put(NOTIFICATION_CHANNEL_STATE, NOTIFICATION_CHANNEL_STATE_NO_CONNECTION);
- values.put(DATA_CHANNEL_STATE, DATA_CHANNEL_STATE_OK);
- updateEntryForPackage(TEST_PACKAGES[1], values);
- checkExpectedMessage(TEST_PACKAGES[1], values, STATUS_MSG_VOICEMAIL_NOT_AVAILABLE,
- STATUS_MSG_NONE, ACTION_MSG_CALL_VOICEMAIL);
-
- // Message waiting + good data channel - no action.
- values.put(NOTIFICATION_CHANNEL_STATE, NOTIFICATION_CHANNEL_STATE_MESSAGE_WAITING);
- values.put(DATA_CHANNEL_STATE, DATA_CHANNEL_STATE_OK);
- updateEntryForPackage(TEST_PACKAGES[1], values);
- checkNoMessages(TEST_PACKAGES[1], values);
-
- // No data channel + no notification
- // action: call voicemail
- // msg: voicemail not available in call log page & audio not available in call details page.
- values.put(NOTIFICATION_CHANNEL_STATE, NOTIFICATION_CHANNEL_STATE_OK);
- values.put(DATA_CHANNEL_STATE, DATA_CHANNEL_STATE_NO_CONNECTION);
- updateEntryForPackage(TEST_PACKAGES[1], values);
- checkExpectedMessage(TEST_PACKAGES[1], values, STATUS_MSG_VOICEMAIL_NOT_AVAILABLE,
- STATUS_MSG_AUDIO_NOT_AVAIALABLE, ACTION_MSG_CALL_VOICEMAIL);
-
- // No data channel + Notification OK
- // action: call voicemail
- // msg: voicemail not available in call log page & audio not available in call details page.
- values.put(NOTIFICATION_CHANNEL_STATE, NOTIFICATION_CHANNEL_STATE_NO_CONNECTION);
- values.put(DATA_CHANNEL_STATE, DATA_CHANNEL_STATE_NO_CONNECTION);
- updateEntryForPackage(TEST_PACKAGES[1], values);
- checkExpectedMessage(TEST_PACKAGES[1], values, STATUS_MSG_VOICEMAIL_NOT_AVAILABLE,
- STATUS_MSG_AUDIO_NOT_AVAIALABLE, ACTION_MSG_CALL_VOICEMAIL);
-
- // No data channel + Notification OK
- // action: call voicemail
- // msg: message waiting in call log page & audio not available in call details page.
- values.put(NOTIFICATION_CHANNEL_STATE, NOTIFICATION_CHANNEL_STATE_MESSAGE_WAITING);
- values.put(DATA_CHANNEL_STATE, DATA_CHANNEL_STATE_NO_CONNECTION);
- updateEntryForPackage(TEST_PACKAGES[1], values);
- checkExpectedMessage(TEST_PACKAGES[1], values, STATUS_MSG_MESSAGE_WAITING,
- STATUS_MSG_AUDIO_NOT_AVAIALABLE, ACTION_MSG_CALL_VOICEMAIL);
-
- // Not configured. No user action, so no message.
- values.put(CONFIGURATION_STATE, CONFIGURATION_STATE_NOT_CONFIGURED);
- updateEntryForPackage(TEST_PACKAGES[1], values);
- checkNoMessages(TEST_PACKAGES[1], values);
-
- // Can be configured - invite user for configure voicemail.
- values.put(CONFIGURATION_STATE, CONFIGURATION_STATE_CAN_BE_CONFIGURED);
- updateEntryForPackage(TEST_PACKAGES[1], values);
- checkExpectedMessage(TEST_PACKAGES[1], values, STATUS_MSG_INVITE_FOR_CONFIGURATION,
- STATUS_MSG_NONE, ACTION_MSG_CONFIGURE, TEST_SETTINGS_URI);
- }
-
- // Test that priority of messages are handled well.
- public void testMessageOrdering() {
- insertEntryForPackage(TEST_PACKAGES[0], getAllOkStatusValues());
- insertEntryForPackage(TEST_PACKAGES[1], getAllOkStatusValues());
-
- final ContentValues valuesNoNotificationGoodDataChannel = new ContentValues();
- valuesNoNotificationGoodDataChannel.put(NOTIFICATION_CHANNEL_STATE,
- NOTIFICATION_CHANNEL_STATE_NO_CONNECTION);
- valuesNoNotificationGoodDataChannel.put(DATA_CHANNEL_STATE, DATA_CHANNEL_STATE_OK);
-
- final ContentValues valuesNoNotificationNoDataChannel = new ContentValues();
- valuesNoNotificationNoDataChannel.put(NOTIFICATION_CHANNEL_STATE,
- NOTIFICATION_CHANNEL_STATE_NO_CONNECTION);
- valuesNoNotificationNoDataChannel.put(DATA_CHANNEL_STATE, DATA_CHANNEL_STATE_NO_CONNECTION);
-
- // Package1 with valuesNoNotificationGoodDataChannel and
- // package2 with valuesNoNotificationNoDataChannel. Package2 should be above.
- updateEntryForPackage(TEST_PACKAGES[0], valuesNoNotificationGoodDataChannel);
- updateEntryForPackage(TEST_PACKAGES[1], valuesNoNotificationNoDataChannel);
- List<StatusMessage> messages = getStatusMessages();
- assertEquals(2, messages.size());
- assertEquals(TEST_PACKAGES[0], messages.get(1).sourcePackage);
- assertEquals(TEST_PACKAGES[1], messages.get(0).sourcePackage);
-
- // Now reverse the values - ordering should be reversed as well.
- updateEntryForPackage(TEST_PACKAGES[0], valuesNoNotificationNoDataChannel);
- updateEntryForPackage(TEST_PACKAGES[1], valuesNoNotificationGoodDataChannel);
- messages = getStatusMessages();
- assertEquals(2, messages.size());
- assertEquals(TEST_PACKAGES[0], messages.get(0).sourcePackage);
- assertEquals(TEST_PACKAGES[1], messages.get(1).sourcePackage);
- }
-
- /** Checks that the expected source status message is returned by VoicemailStatusHelper. */
- private void checkExpectedMessage(String sourcePackage, ContentValues values,
- int expectedCallLogMsg, int expectedCallDetailsMsg, int expectedActionMsg,
- Uri expectedUri) {
- List<StatusMessage> messages = getStatusMessages();
- assertEquals(1, messages.size());
- checkMessageMatches(messages.get(0), sourcePackage, expectedCallLogMsg,
- expectedCallDetailsMsg, expectedActionMsg, expectedUri);
- }
-
- private void checkExpectedMessage(String sourcePackage, ContentValues values,
- int expectedCallLogMsg, int expectedCallDetailsMessage, int expectedActionMsg) {
- checkExpectedMessage(sourcePackage, values, expectedCallLogMsg, expectedCallDetailsMessage,
- expectedActionMsg, TEST_VOICEMAIL_URI);
- }
-
- private void checkMessageMatches(StatusMessage message, String expectedSourcePackage,
- int expectedCallLogMsg, int expectedCallDetailsMsg, int expectedActionMsg,
- Uri expectedUri) {
- assertEquals(expectedSourcePackage, message.sourcePackage);
- assertEquals(expectedCallLogMsg, message.callLogMessageId);
- assertEquals(expectedCallDetailsMsg, message.callDetailsMessageId);
- assertEquals(expectedActionMsg, message.actionMessageId);
- if (expectedUri == null) {
- assertNull(message.actionUri);
- } else {
- assertEquals(expectedUri, message.actionUri);
- }
- }
-
- private void checkNoMessages(String sourcePackage, ContentValues values) {
- assertEquals(1, updateEntryForPackage(sourcePackage, values));
- List<StatusMessage> messages = getStatusMessages();
- assertEquals(0, messages.size());
- }
-
- private ContentValues getAllOkStatusValues() {
- ContentValues values = new ContentValues();
- values.put(Status.SETTINGS_URI, TEST_SETTINGS_URI.toString());
- values.put(Status.VOICEMAIL_ACCESS_URI, TEST_VOICEMAIL_URI.toString());
- values.put(Status.CONFIGURATION_STATE, Status.CONFIGURATION_STATE_OK);
- values.put(Status.DATA_CHANNEL_STATE, Status.DATA_CHANNEL_STATE_OK);
- values.put(Status.NOTIFICATION_CHANNEL_STATE, Status.NOTIFICATION_CHANNEL_STATE_OK);
- return values;
- }
-
- private void insertEntryForPackage(String sourcePackage, ContentValues values) {
- // If insertion fails then try update as the record might already exist.
- if (getContentResolver().insert(Status.buildSourceUri(sourcePackage), values) == null) {
- updateEntryForPackage(sourcePackage, values);
- }
- }
-
- private void deleteEntryForPackage(String sourcePackage) {
- getContentResolver().delete(Status.buildSourceUri(sourcePackage), null, null);
- }
-
- private int updateEntryForPackage(String sourcePackage, ContentValues values) {
- return getContentResolver().update(
- Status.buildSourceUri(sourcePackage), values, null, null);
- }
-
- private List<StatusMessage> getStatusMessages() {
- // Restrict the cursor to only the the test packages to eliminate any side effects if there
- // are other status messages already stored on the device.
- Cursor cursor = getContentResolver().query(Status.CONTENT_URI,
- VoicemailStatusHelperImpl.PROJECTION, getTestPackageSelection(), null, null);
- return mStatusHelper.getStatusMessages(cursor);
- }
-
- private String getTestPackageSelection() {
- StringBuilder sb = new StringBuilder();
- for (String sourcePackage : TEST_PACKAGES) {
- if (sb.length() > 0) {
- sb.append(" OR ");
- }
- sb.append(String.format("(source_package='%s')", sourcePackage));
- }
- return sb.toString();
- }
-
- private ContentResolver getContentResolver() {
- return getContext().getContentResolver();
- }
-}
diff --git a/tests/src/com/android/dialer/widget/ActionBarControllerTest.java b/tests/src/com/android/dialer/widget/ActionBarControllerTest.java
deleted file mode 100644
index 316c15537..000000000
--- a/tests/src/com/android/dialer/widget/ActionBarControllerTest.java
+++ /dev/null
@@ -1,181 +0,0 @@
-/*
- * Copyright (C) 2014 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.widget;
-
-import android.content.Context;
-import android.test.InstrumentationTestCase;
-import android.test.suitebuilder.annotation.SmallTest;
-
-import com.android.dialer.widget.ActionBarController.ActivityUi;
-
-@SmallTest
-public class ActionBarControllerTest extends InstrumentationTestCase {
-
- private static final int ACTION_BAR_HEIGHT = 100;
- private ActionBarController mActionBarController;
- private SearchEditTextLayout mSearchBox;
- private MockActivityUi mActivityUi;
-
- private class MockActivityUi implements ActivityUi {
- boolean isInSearchUi;
- boolean hasSearchQuery;
- boolean shouldShowActionBar;
- int actionBarHideOffset;
-
- @Override
- public boolean isInSearchUi() {
- return isInSearchUi;
- }
-
- @Override
- public boolean hasSearchQuery() {
- return hasSearchQuery;
- }
-
- @Override
- public boolean shouldShowActionBar() {
- return shouldShowActionBar;
- }
-
- @Override
- public int getActionBarHeight() {
- return ACTION_BAR_HEIGHT;
- }
-
- @Override
- public int getActionBarHideOffset() {
- return actionBarHideOffset;
- }
-
- @Override
- public void setActionBarHideOffset(int offset) {
- actionBarHideOffset = offset;
- }
- }
-
- /**
- * Mock version of the searchbox, that updates its state immediately instead of animating
- */
- private class MockSearchBox extends SearchEditTextLayout {
-
- public MockSearchBox(Context context) {
- super(context, null);
- }
-
- @Override
- public void expand(boolean animate, boolean requestFocus) {
- mIsExpanded = true;
- }
-
- @Override
- public void collapse(boolean animate) {
- mIsExpanded = false;
- }
- }
-
- @Override
- protected void setUp() {
- mActivityUi = new MockActivityUi();
- mSearchBox = new MockSearchBox(this.getInstrumentation().getContext());
- mActionBarController = new ActionBarController(mActivityUi, mSearchBox);
- }
-
- // Tapping the search box should only do something when the activity is not in the search UI
- public void testSearchBoxTapped() {
- mSearchBox.collapse(false);
- mActivityUi.isInSearchUi = false;
- mActionBarController.onSearchBoxTapped();
- assertActionBarState(true, false, false);
-
- // Collapse the search box manually again. This time tapping on the search box should not
- // expand the search box because isInSearchUi is not true.
- mSearchBox.collapse(false);
- mActivityUi.isInSearchUi = true;
- mActionBarController.onSearchBoxTapped();
- assertActionBarState(false, false, false);
- }
-
- // The search box should always end up being faded in and collapsed. If necessary, it should
- // be slid down or up depending on what the state of the action bar was before that.
- public void testOnSearchUiExited() {
- // ActionBar shown previously before entering searchUI
- mSearchBox.expand(true, false);
- mSearchBox.setVisible(false);
- mActivityUi.shouldShowActionBar = true;
- mActionBarController.onSearchUiExited();
- assertActionBarState(false, false, false);
-
- // ActionBar slid up previously before entering searchUI
- mSearchBox.collapse(false);
- mSearchBox.setVisible(false);
- mActivityUi.shouldShowActionBar = false;
- mActionBarController.onSearchUiExited();
- assertActionBarState(false, false, true);
- }
-
- // Depending on what state the UI was in previously, sliding the dialpad down can mean either
- // displaying the expanded search box by sliding it down, displaying the unexpanded search box,
- // or nothing at all.
- public void testOnDialpadDown() {
- // No search query typed in the dialpad and action bar was showing before
- mActivityUi.shouldShowActionBar = true;
- mActivityUi.isInSearchUi = true;
- mSearchBox.setVisible(false);
- mActionBarController.onDialpadDown();
- assertActionBarState(false, false, false);
-
- // No search query typed in the dialpad, but action bar was not showing before
- mActionBarController.slideActionBar(true /* slideUp */, false /* animate */);
- mActivityUi.shouldShowActionBar = false;
- mSearchBox.setVisible(false);
- mActionBarController.onDialpadDown();
- assertActionBarState(false, false, true);
-
- // Something typed in the dialpad - so remain in search UI and slide the expanded search
- // box down
- mActionBarController.slideActionBar(true /* slideUp */, false /* animate */);
- mActivityUi.shouldShowActionBar = true;
- mActivityUi.hasSearchQuery= true;
- mSearchBox.setVisible(false);
- mSearchBox.expand(false, false);
- mActionBarController.onDialpadDown();
- assertActionBarState(true, false, false);
- }
-
- // Sliding the dialpad up should fade out the search box if we weren't already in search, or
- // slide up the search box otherwise
- public void testOnDialpadUp() {
- mActivityUi.isInSearchUi = false;
- mActionBarController.onDialpadUp();
- assertActionBarState(false, true, false);
-
- // In Search UI, with expanded search box and something currently typed in the search box
- mActivityUi.isInSearchUi = true;
- mActivityUi.hasSearchQuery = true;
- mSearchBox.expand(true, false);
- mSearchBox.setVisible(true);
- mActionBarController.slideActionBar(true /* slideUp */, false /* animate */);
- mActionBarController.onDialpadUp();
- assertActionBarState(true, false, true);
- }
-
- private void assertActionBarState(boolean isExpanded, boolean isFadedOut, boolean isSlidUp) {
- assertEquals(isExpanded, mSearchBox.isExpanded());
- assertEquals(isFadedOut, mSearchBox.isFadedOut());
- assertEquals(isSlidUp, mActionBarController.getIsActionBarSlidUp());
- }
-}