/* * 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(); } }