summaryrefslogtreecommitdiff
path: root/tests/src/com/android/dialer/voicemail/VoicemailStatusHelperImplTest.java
diff options
context:
space:
mode:
Diffstat (limited to 'tests/src/com/android/dialer/voicemail/VoicemailStatusHelperImplTest.java')
-rw-r--r--tests/src/com/android/dialer/voicemail/VoicemailStatusHelperImplTest.java274
1 files changed, 0 insertions, 274 deletions
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();
- }
-}