diff options
Diffstat (limited to 'tests/src/com/android/dialer/calllog/CallLogGroupBuilderTest.java')
-rw-r--r-- | tests/src/com/android/dialer/calllog/CallLogGroupBuilderTest.java | 470 |
1 files changed, 0 insertions, 470 deletions
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 - } - } -} |