blob: 01db202725202563eac88faad9bf0f8118605984 [file] [log] [blame]
/*
* 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.incallui.ringtone;
import android.media.RingtoneManager;
import android.net.Uri;
import android.test.AndroidTestCase;
import android.test.suitebuilder.annotation.SmallTest;
import com.android.contacts.common.compat.CompatUtils;
import com.android.incallui.Call;
import com.android.incallui.Call.State;
import com.android.incallui.CallList;
import org.mockito.Mock;
import org.mockito.Mockito;
import org.mockito.MockitoAnnotations;
@SmallTest
public class DialerRingtoneManagerTest extends AndroidTestCase {
private static final Uri RINGTONE_URI = RingtoneManager
.getDefaultUri(RingtoneManager.TYPE_RINGTONE);
@Mock private InCallTonePlayer mInCallTonePlayer;
@Mock private CallList mCallList;
@Mock private Call mCall;
private DialerRingtoneManager mRingtoneManagerEnabled;
private DialerRingtoneManager mRingtoneManagerDisabled;
@Override
public void setUp() throws Exception {
super.setUp();
MockitoAnnotations.initMocks(this);
mRingtoneManagerEnabled = new DialerRingtoneManager(mInCallTonePlayer, mCallList);
mRingtoneManagerEnabled.setDialerRingingEnabledForTesting(true);
mRingtoneManagerDisabled = new DialerRingtoneManager(mInCallTonePlayer, mCallList);
mRingtoneManagerDisabled.setDialerRingingEnabledForTesting(false);
}
public void testNullInCallTonePlayer() {
try {
new DialerRingtoneManager(null, mCallList);
fail();
} catch (NullPointerException e) {}
}
public void testNullCallList() {
try {
new DialerRingtoneManager(mInCallTonePlayer, null);
fail();
} catch (NullPointerException e) {}
}
public void testShouldPlayRingtone_M() {
if (CompatUtils.isNCompatible()) {
return;
}
assertFalse(mRingtoneManagerEnabled.shouldPlayRingtone(0, RINGTONE_URI));
}
public void testShouldPlayRingtone_N_NullUri() {
if (!CompatUtils.isNCompatible()) {
return;
}
assertFalse(mRingtoneManagerEnabled.shouldPlayRingtone(State.INCOMING, null));
}
public void testShouldPlayRingtone_N_Disabled() {
if (!CompatUtils.isNCompatible()) {
return;
}
assertFalse(mRingtoneManagerDisabled.shouldPlayRingtone(State.INCOMING, RINGTONE_URI));
}
public void testShouldPlayRingtone_N_NotIncoming() {
if (!CompatUtils.isNCompatible()) {
return;
}
assertFalse(mRingtoneManagerEnabled.shouldPlayRingtone(State.ACTIVE, RINGTONE_URI));
}
// Specific case for call waiting since that needs its own sound
public void testShouldPlayRingtone_N_CallWaitingByState() {
if (!CompatUtils.isNCompatible()) {
return;
}
assertFalse(mRingtoneManagerEnabled.shouldPlayRingtone(State.CALL_WAITING, RINGTONE_URI));
}
public void testShouldPlayRingtone_N_CallWaitingByActiveCall() {
if (!CompatUtils.isNCompatible()) {
return;
}
Mockito.when(mCallList.getActiveCall()).thenReturn(mCall);
assertFalse(mRingtoneManagerEnabled.shouldPlayRingtone(State.INCOMING, RINGTONE_URI));
}
public void testShouldPlayRingtone_N() {
if (!CompatUtils.isNCompatible()) {
return;
}
assertTrue(mRingtoneManagerEnabled.shouldPlayRingtone(State.INCOMING, RINGTONE_URI));
}
public void testShouldPlayCallWaitingTone_M() {
if (CompatUtils.isNCompatible()) {
return;
}
assertFalse(mRingtoneManagerEnabled.shouldPlayCallWaitingTone(0));
}
public void testShouldPlayCallWaitingTone_N_Disabled() {
if (!CompatUtils.isNCompatible()) {
return;
}
assertFalse(mRingtoneManagerDisabled.shouldPlayCallWaitingTone(State.CALL_WAITING));
}
public void testShouldPlayCallWaitingTone_N_NotCallWaiting() {
if (!CompatUtils.isNCompatible()) {
return;
}
assertFalse(mRingtoneManagerEnabled.shouldPlayCallWaitingTone(State.ACTIVE));
}
// Specific case for incoming since it plays its own sound
public void testShouldPlayCallWaitingTone_N_Incoming() {
if (!CompatUtils.isNCompatible()) {
return;
}
assertFalse(mRingtoneManagerEnabled.shouldPlayCallWaitingTone(State.INCOMING));
}
public void testShouldPlayCallWaitingTone_N_AlreadyPlaying() {
if (!CompatUtils.isNCompatible()) {
return;
}
Mockito.when(mInCallTonePlayer.isPlayingTone()).thenReturn(true);
assertFalse(mRingtoneManagerEnabled.shouldPlayCallWaitingTone(State.CALL_WAITING));
}
public void testShouldPlayCallWaitingTone_N_ByState() {
if (!CompatUtils.isNCompatible()) {
return;
}
assertTrue(mRingtoneManagerEnabled.shouldPlayCallWaitingTone(State.CALL_WAITING));
}
public void testShouldPlayCallWaitingTone_N_ByActiveCall() {
if (!CompatUtils.isNCompatible()) {
return;
}
Mockito.when(mCallList.getActiveCall()).thenReturn(mCall);
assertTrue(mRingtoneManagerEnabled.shouldPlayCallWaitingTone(State.INCOMING));
}
public void testPlayCallWaitingTone_M() {
if (CompatUtils.isNCompatible()) {
return;
}
mRingtoneManagerEnabled.playCallWaitingTone();
Mockito.verify(mInCallTonePlayer, Mockito.never()).play(Mockito.anyInt());
}
public void testPlayCallWaitingTone_N_NotEnabled() {
if (!CompatUtils.isNCompatible()) {
return;
}
mRingtoneManagerDisabled.playCallWaitingTone();
Mockito.verify(mInCallTonePlayer, Mockito.never()).play(Mockito.anyInt());
}
public void testPlayCallWaitingTone_N() {
if (!CompatUtils.isNCompatible()) {
return;
}
mRingtoneManagerEnabled.playCallWaitingTone();
Mockito.verify(mInCallTonePlayer).play(Mockito.anyInt());
}
public void testStopCallWaitingTone_M() {
if (CompatUtils.isNCompatible()) {
return;
}
mRingtoneManagerEnabled.stopCallWaitingTone();
Mockito.verify(mInCallTonePlayer, Mockito.never()).stop();
}
public void testStopCallWaitingTone_N_NotEnabled() {
if (!CompatUtils.isNCompatible()) {
return;
}
mRingtoneManagerDisabled.stopCallWaitingTone();
Mockito.verify(mInCallTonePlayer, Mockito.never()).stop();
}
public void testStopCallWaitingTone_N() {
if (!CompatUtils.isNCompatible()) {
return;
}
mRingtoneManagerEnabled.stopCallWaitingTone();
Mockito.verify(mInCallTonePlayer).stop();
}
}