blob: 07be58bed1664e645a4722749d38688b9a8ae8df [file] [log] [blame]
package com.android.clockwork.mediarouting;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.verifyNoMoreInteractions;
import android.content.Context;
import android.media.AudioManager;
import androidx.test.core.app.ApplicationProvider;
import com.android.server.SystemService;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import org.robolectric.RobolectricTestRunner;
import java.util.concurrent.Executor;
@RunWith(RobolectricTestRunner.class)
public final class WearMediaRoutingServiceTest {
@Mock private WearAudioPlaybackCallback mMockWearAudioPlaybackCallback;
@Mock private WearAudioDeviceCallback mMockWearAudioDeviceCallback;
@Mock private WearAudioServerStateCallback mMockWearAudioServerStateCallback;
@Mock private AudioManager mMockAudioManager;
@Mock private AudioApiProvider mMockAudioApiProvider;
private WearMediaRoutingService mService;
private Context mContext;
@Before
public void setUp() {
MockitoAnnotations.initMocks(this);
mContext = ApplicationProvider.getApplicationContext();
mService =
new WearMediaRoutingService(
mContext,
mMockWearAudioPlaybackCallback,
mMockWearAudioDeviceCallback,
mMockWearAudioServerStateCallback,
mMockAudioManager,
mMockAudioApiProvider);
WearMediaRoutingService.sIsAutoLaunchOutputSwitcherEnabled = true;
}
@Test
public void bootComplete_shouldRegisterAudioPlaybackCallbackListener() {
mService.onBootPhase(SystemService.PHASE_BOOT_COMPLETED);
verify(mMockAudioManager)
.registerAudioPlaybackCallback(mMockWearAudioPlaybackCallback, null);
}
@Test
public void bootComplete_shouldRegisterAudioDeviceCallback() {
mService.onBootPhase(SystemService.PHASE_BOOT_COMPLETED);
verify(mMockAudioManager).registerAudioDeviceCallback(mMockWearAudioDeviceCallback, null);
}
@Test
public void bootComplete_shouldRegisterAudioStateServerCallback() {
mService.onBootPhase(SystemService.PHASE_BOOT_COMPLETED);
verify(mMockAudioManager)
.setAudioServerStateCallback(
any(Executor.class), eq(mMockWearAudioServerStateCallback));
}
@Test
public void bootComplete_autoLaunchDisabled_shouldNotRegisterCallback() {
WearMediaRoutingService.sIsAutoLaunchOutputSwitcherEnabled = false;
mService.onBootPhase(SystemService.PHASE_BOOT_COMPLETED);
verifyNoMoreInteractions(mMockAudioManager);
}
@Test
public void bootComplete_shouldInvokeDisableSpeaker() {
mService.onBootPhase(SystemService.PHASE_BOOT_COMPLETED);
verify(mMockAudioApiProvider).disableSpeaker();
}
@Test
public void bootComplete_autoLaunchDisabled_shouldNotInvokeDisableSpeaker() {
WearMediaRoutingService.sIsAutoLaunchOutputSwitcherEnabled = false;
mService.onBootPhase(SystemService.PHASE_BOOT_COMPLETED);
verifyNoMoreInteractions(mMockAudioApiProvider);
}
}