[Output Switcher] Increase test coverage

Test: atest MediaOutputAdapterTest MediaOutputControllerTest MediaOutputDialogTest
Bug: 246562850
Change-Id: I12d66559f15bda620d4f5ce1ae317a664a1eec10
This commit is contained in:
shaoweishen
2022-09-12 07:03:06 +00:00
parent 131fb1ff89
commit e6037696f7
4 changed files with 438 additions and 2 deletions

View File

@@ -125,13 +125,16 @@ public class MediaOutputController implements LocalMediaManager.DeviceCallback,
private final NearbyMediaDevicesManager mNearbyMediaDevicesManager;
private final Map<String, Integer> mNearbyDeviceInfoMap = new ConcurrentHashMap<>();
private boolean mIsRefreshing = false;
private boolean mNeedRefresh = false;
@VisibleForTesting
boolean mIsRefreshing = false;
@VisibleForTesting
boolean mNeedRefresh = false;
private MediaController mMediaController;
@VisibleForTesting
Callback mCallback;
@VisibleForTesting
LocalMediaManager mLocalMediaManager;
@VisibleForTesting
private MediaOutputMetricLogger mMetricLogger;
private int mCurrentState;

View File

@@ -23,6 +23,8 @@ import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
import android.app.WallpaperColors;
import android.graphics.Bitmap;
import android.graphics.drawable.Icon;
import android.testing.AndroidTestingRunner;
import android.view.View;
@@ -101,6 +103,18 @@ public class MediaOutputAdapterTest extends SysuiTestCase {
assertThat(mMediaOutputAdapter.getItemCount()).isEqualTo(mMediaDevices.size() + 1);
}
@Test
public void getItemId_validPosition_returnCorrespondingId() {
assertThat(mMediaOutputAdapter.getItemId(0)).isEqualTo(mMediaDevices.get(
0).getId().hashCode());
}
@Test
public void getItemId_invalidPosition_returnPosition() {
int invalidPosition = mMediaDevices.size() + 1;
assertThat(mMediaOutputAdapter.getItemId(invalidPosition)).isEqualTo(invalidPosition);
}
@Test
public void onBindViewHolder_bindPairNew_verifyView() {
mMediaOutputAdapter.onBindViewHolder(mViewHolder, 2);
@@ -154,6 +168,33 @@ public class MediaOutputAdapterTest extends SysuiTestCase {
assertThat(mViewHolder.mSeekBar.getVisibility()).isEqualTo(View.VISIBLE);
}
@Test
public void onBindViewHolder_bindConnectedDeviceWithMutingExpectedDeviceExist_verifyView() {
when(mMediaOutputController.hasMutingExpectedDevice()).thenReturn(true);
when(mMediaOutputController.isCurrentConnectedDeviceRemote()).thenReturn(false);
mMediaOutputAdapter.onBindViewHolder(mViewHolder, 0);
assertThat(mViewHolder.mTwoLineLayout.getVisibility()).isEqualTo(View.GONE);
assertThat(mViewHolder.mProgressBar.getVisibility()).isEqualTo(View.GONE);
assertThat(mViewHolder.mCheckBox.getVisibility()).isEqualTo(View.GONE);
assertThat(mViewHolder.mTitleText.getVisibility()).isEqualTo(View.VISIBLE);
assertThat(mViewHolder.mTitleText.getText().toString()).isEqualTo(TEST_DEVICE_NAME_1);
}
@Test
public void onBindViewHolder_isMutingExpectedDevice_verifyView() {
when(mMediaDevice1.isMutingExpectedDevice()).thenReturn(true);
when(mMediaOutputController.isCurrentConnectedDeviceRemote()).thenReturn(false);
when(mMediaOutputController.isActiveRemoteDevice(mMediaDevice1)).thenReturn(false);
mMediaOutputAdapter.onBindViewHolder(mViewHolder, 0);
assertThat(mViewHolder.mTwoLineLayout.getVisibility()).isEqualTo(View.GONE);
assertThat(mViewHolder.mProgressBar.getVisibility()).isEqualTo(View.GONE);
assertThat(mViewHolder.mCheckBox.getVisibility()).isEqualTo(View.GONE);
assertThat(mViewHolder.mTitleText.getVisibility()).isEqualTo(View.VISIBLE);
assertThat(mViewHolder.mTitleText.getText().toString()).isEqualTo(TEST_DEVICE_NAME_1);
}
@Test
public void onBindViewHolder_initSeekbar_setsVolume() {
when(mMediaDevice1.getMaxVolume()).thenReturn(TEST_MAX_VOLUME);
@@ -164,6 +205,20 @@ public class MediaOutputAdapterTest extends SysuiTestCase {
assertThat(mViewHolder.mSeekBar.getVolume()).isEqualTo(TEST_CURRENT_VOLUME);
}
@Test
public void onBindViewHolder_bindSelectableDevice_verifyView() {
List<MediaDevice> selectableDevices = new ArrayList<>();
selectableDevices.add(mMediaDevice2);
when(mMediaOutputController.getSelectableMediaDevice()).thenReturn(selectableDevices);
mMediaOutputAdapter.onBindViewHolder(mViewHolder, 1);
assertThat(mViewHolder.mTwoLineLayout.getVisibility()).isEqualTo(View.GONE);
assertThat(mViewHolder.mProgressBar.getVisibility()).isEqualTo(View.GONE);
assertThat(mViewHolder.mCheckBox.getVisibility()).isEqualTo(View.VISIBLE);
assertThat(mViewHolder.mTitleText.getVisibility()).isEqualTo(View.VISIBLE);
assertThat(mViewHolder.mTitleText.getText().toString()).isEqualTo(TEST_DEVICE_NAME_2);
}
@Test
public void onBindViewHolder_bindNonActiveConnectedDevice_verifyView() {
mMediaOutputAdapter.onBindViewHolder(mViewHolder, 1);
@@ -222,6 +277,22 @@ public class MediaOutputAdapterTest extends SysuiTestCase {
assertThat(mViewHolder.mTwoLineLayout.getVisibility()).isEqualTo(View.GONE);
}
@Test
public void onBindViewHolder_bindGroupingDevice_verifyView() {
when(mMediaOutputController.isAnyDeviceTransferring()).thenReturn(false);
when(mMediaDevice1.getState()).thenReturn(
LocalMediaManager.MediaDeviceState.STATE_GROUPING);
mMediaOutputAdapter.onBindViewHolder(mViewHolder, 0);
assertThat(mViewHolder.mTitleText.getVisibility()).isEqualTo(View.VISIBLE);
assertThat(mViewHolder.mTitleText.getText().toString()).isEqualTo(TEST_DEVICE_NAME_1);
assertThat(mViewHolder.mSeekBar.getVisibility()).isEqualTo(View.GONE);
assertThat(mViewHolder.mSubTitleText.getVisibility()).isEqualTo(View.GONE);
assertThat(mViewHolder.mCheckBox.getVisibility()).isEqualTo(View.GONE);
assertThat(mViewHolder.mProgressBar.getVisibility()).isEqualTo(View.VISIBLE);
assertThat(mViewHolder.mTwoLineLayout.getVisibility()).isEqualTo(View.GONE);
}
@Test
public void onBindViewHolder_inTransferring_bindNonTransferringDevice_verifyView() {
when(mMediaOutputController.isAnyDeviceTransferring()).thenReturn(true);
@@ -255,6 +326,31 @@ public class MediaOutputAdapterTest extends SysuiTestCase {
verify(mMediaOutputController).connectDevice(mMediaDevice2);
}
@Test
public void onItemClick_clicksWithMutingExpectedDeviceExist_cancelsMuteAwaitConnection() {
when(mMediaOutputController.isAnyDeviceTransferring()).thenReturn(false);
when(mMediaOutputController.hasMutingExpectedDevice()).thenReturn(true);
when(mMediaOutputController.isCurrentConnectedDeviceRemote()).thenReturn(false);
when(mMediaDevice1.isMutingExpectedDevice()).thenReturn(false);
mMediaOutputAdapter.onBindViewHolder(mViewHolder, 0);
mViewHolder.mContainerLayout.performClick();
verify(mMediaOutputController).cancelMuteAwaitConnection();
}
@Test
public void onItemClick_clicksSelectableDevice_triggerGrouping() {
List<MediaDevice> selectableDevices = new ArrayList<>();
selectableDevices.add(mMediaDevice2);
when(mMediaOutputController.getSelectableMediaDevice()).thenReturn(selectableDevices);
mMediaOutputAdapter.onBindViewHolder(mViewHolder, 1);
mViewHolder.mContainerLayout.performClick();
verify(mMediaOutputController).addDeviceToPlayMedia(mMediaDevice2);
}
@Test
public void onItemClick_onGroupActionTriggered_verifySeekbarDisabled() {
when(mMediaOutputController.getSelectedMediaDevice()).thenReturn(mMediaDevices);
@@ -280,4 +376,14 @@ public class MediaOutputAdapterTest extends SysuiTestCase {
assertThat(mViewHolder.mSeekBar.isEnabled()).isTrue();
}
@Test
public void updateColorScheme_triggerController() {
WallpaperColors wallpaperColors = WallpaperColors.fromBitmap(
Bitmap.createBitmap(10, 10, Bitmap.Config.ARGB_8888));
mMediaOutputAdapter.updateColorScheme(wallpaperColors, true);
verify(mMediaOutputController).setCurrentColorScheme(wallpaperColors, true);
}
}

View File

@@ -35,6 +35,7 @@ import android.app.KeyguardManager;
import android.app.Notification;
import android.content.Context;
import android.graphics.drawable.Icon;
import android.media.AudioDeviceAttributes;
import android.media.AudioManager;
import android.media.MediaDescription;
import android.media.MediaMetadata;
@@ -169,6 +170,15 @@ public class MediaOutputControllerTest extends SysuiTestCase {
verify(mLocalMediaManager).startScan();
}
@Test
public void start_LocalMediaManagerIsNull_verifyNotStartScan() {
mMediaOutputController.mLocalMediaManager = null;
mMediaOutputController.start(mCb);
verify(mLocalMediaManager, never()).registerCallback(mMediaOutputController);
verify(mLocalMediaManager, never()).startScan();
}
@Test
public void stop_verifyLocalMediaManagerDeinit() {
mMediaOutputController.start(mCb);
@@ -278,6 +288,203 @@ public class MediaOutputControllerTest extends SysuiTestCase {
verify(mCb).onDeviceListChanged();
}
@Test
public void onDeviceListUpdate_isRefreshing_updatesNeedRefreshToTrue() {
mMediaOutputController.start(mCb);
reset(mCb);
mMediaOutputController.mIsRefreshing = true;
mMediaOutputController.onDeviceListUpdate(mMediaDevices);
assertThat(mMediaOutputController.mNeedRefresh).isTrue();
}
@Test
public void cancelMuteAwaitConnection_cancelsWithMediaManager() {
when(mAudioManager.getMutingExpectedDevice()).thenReturn(mock(AudioDeviceAttributes.class));
mMediaOutputController.start(mCb);
reset(mCb);
mMediaOutputController.cancelMuteAwaitConnection();
verify(mAudioManager).cancelMuteAwaitConnection(any());
}
@Test
public void cancelMuteAwaitConnection_audioManagerIsNull_noAction() {
when(mAudioManager.getMutingExpectedDevice()).thenReturn(null);
mMediaOutputController.start(mCb);
reset(mCb);
mMediaOutputController.cancelMuteAwaitConnection();
verify(mAudioManager, never()).cancelMuteAwaitConnection(any());
}
@Test
public void getAppSourceName_packageNameIsNull_returnsNull() {
MediaOutputController testMediaOutputController = new MediaOutputController(mSpyContext,
"",
mMediaSessionManager, mLocalBluetoothManager, mStarter,
mNotifCollection, mDialogLaunchAnimator,
Optional.of(mNearbyMediaDevicesManager), mAudioManager, mPowerExemptionManager,
mKeyguardManager);
testMediaOutputController.start(mCb);
reset(mCb);
testMediaOutputController.getAppSourceName();
assertThat(testMediaOutputController.getAppSourceName()).isNull();
}
@Test
public void isActiveItem_deviceNotConnected_returnsFalse() {
when(mLocalMediaManager.getCurrentConnectedDevice()).thenReturn(mMediaDevice2);
assertThat(mMediaOutputController.isActiveItem(mMediaDevice1)).isFalse();
}
@Test
public void getNotificationSmallIcon_packageNameIsNull_returnsNull() {
MediaOutputController testMediaOutputController = new MediaOutputController(mSpyContext,
"",
mMediaSessionManager, mLocalBluetoothManager, mStarter,
mNotifCollection, mDialogLaunchAnimator,
Optional.of(mNearbyMediaDevicesManager), mAudioManager, mPowerExemptionManager,
mKeyguardManager);
testMediaOutputController.start(mCb);
reset(mCb);
testMediaOutputController.getAppSourceName();
assertThat(testMediaOutputController.getNotificationSmallIcon()).isNull();
}
@Test
public void refreshDataSetIfNeeded_needRefreshIsTrue_setsToFalse() {
mMediaOutputController.start(mCb);
reset(mCb);
mMediaOutputController.mNeedRefresh = true;
mMediaOutputController.refreshDataSetIfNeeded();
assertThat(mMediaOutputController.mNeedRefresh).isFalse();
}
@Test
public void isCurrentConnectedDeviceRemote_containsFeatures_returnsTrue() {
when(mMediaDevice1.getFeatures()).thenReturn(
ImmutableList.of(MediaRoute2Info.FEATURE_REMOTE_PLAYBACK));
when(mLocalMediaManager.getCurrentConnectedDevice()).thenReturn(mMediaDevice1);
assertThat(mMediaOutputController.isCurrentConnectedDeviceRemote()).isTrue();
}
@Test
public void addDeviceToPlayMedia_triggersFromLocalMediaManager() {
MediaOutputController testMediaOutputController = new MediaOutputController(mSpyContext,
null,
mMediaSessionManager, mLocalBluetoothManager, mStarter,
mNotifCollection, mDialogLaunchAnimator,
Optional.of(mNearbyMediaDevicesManager), mAudioManager, mPowerExemptionManager,
mKeyguardManager);
LocalMediaManager testLocalMediaManager = spy(testMediaOutputController.mLocalMediaManager);
testMediaOutputController.mLocalMediaManager = testLocalMediaManager;
testMediaOutputController.addDeviceToPlayMedia(mMediaDevice2);
verify(testLocalMediaManager).addDeviceToPlayMedia(mMediaDevice2);
}
@Test
public void removeDeviceFromPlayMedia_triggersFromLocalMediaManager() {
MediaOutputController testMediaOutputController = new MediaOutputController(mSpyContext,
null,
mMediaSessionManager, mLocalBluetoothManager, mStarter,
mNotifCollection, mDialogLaunchAnimator,
Optional.of(mNearbyMediaDevicesManager), mAudioManager, mPowerExemptionManager,
mKeyguardManager);
LocalMediaManager testLocalMediaManager = spy(testMediaOutputController.mLocalMediaManager);
testMediaOutputController.mLocalMediaManager = testLocalMediaManager;
testMediaOutputController.removeDeviceFromPlayMedia(mMediaDevice2);
verify(testLocalMediaManager).removeDeviceFromPlayMedia(mMediaDevice2);
}
@Test
public void getDeselectableMediaDevice_triggersFromLocalMediaManager() {
mMediaOutputController.getDeselectableMediaDevice();
verify(mLocalMediaManager).getDeselectableMediaDevice();
}
@Test
public void adjustSessionVolume_adjustWithoutId_triggersFromLocalMediaManager() {
int testVolume = 10;
mMediaOutputController.adjustSessionVolume(testVolume);
verify(mLocalMediaManager).adjustSessionVolume(testVolume);
}
@Test
public void getSessionVolumeMax_triggersFromLocalMediaManager() {
mMediaOutputController.getSessionVolumeMax();
verify(mLocalMediaManager).getSessionVolumeMax();
}
@Test
public void getSessionVolume_triggersFromLocalMediaManager() {
mMediaOutputController.getSessionVolume();
verify(mLocalMediaManager).getSessionVolume();
}
@Test
public void getSessionName_triggersFromLocalMediaManager() {
mMediaOutputController.getSessionName();
verify(mLocalMediaManager).getSessionName();
}
@Test
public void releaseSession_triggersFromLocalMediaManager() {
mMediaOutputController.releaseSession();
verify(mLocalMediaManager).releaseSession();
}
@Test
public void isAnyDeviceTransferring_noDevicesStateIsConnecting_returnsFalse() {
mMediaOutputController.start(mCb);
reset(mCb);
mMediaOutputController.onDeviceListUpdate(mMediaDevices);
assertThat(mMediaOutputController.isAnyDeviceTransferring()).isFalse();
}
@Test
public void isAnyDeviceTransferring_deviceStateIsConnecting_returnsTrue() {
when(mMediaDevice1.getState()).thenReturn(
LocalMediaManager.MediaDeviceState.STATE_CONNECTING);
mMediaOutputController.start(mCb);
reset(mCb);
mMediaOutputController.onDeviceListUpdate(mMediaDevices);
assertThat(mMediaOutputController.isAnyDeviceTransferring()).isTrue();
}
@Test
public void isPlaying_stateIsNull() {
when(mMediaController.getPlaybackState()).thenReturn(null);
assertThat(mMediaOutputController.isPlaying()).isFalse();
}
@Test
public void onSelectedDeviceStateChanged_verifyCallback() {
when(mLocalMediaManager.getCurrentConnectedDevice()).thenReturn(mMediaDevice2);
@@ -534,6 +741,44 @@ public class MediaOutputControllerTest extends SysuiTestCase {
assertThat(mMediaOutputController.getNotificationIcon()).isNull();
}
@Test
public void getNotificationSmallIcon_withoutSmallIcon_returnsNull() {
final List<NotificationEntry> entryList = new ArrayList<>();
final NotificationEntry entry = mock(NotificationEntry.class);
final StatusBarNotification sbn = mock(StatusBarNotification.class);
final Notification notification = mock(Notification.class);
entryList.add(entry);
when(mNotifCollection.getAllNotifs()).thenReturn(entryList);
when(entry.getSbn()).thenReturn(sbn);
when(sbn.getNotification()).thenReturn(notification);
when(sbn.getPackageName()).thenReturn(TEST_PACKAGE_NAME);
when(notification.isMediaNotification()).thenReturn(true);
when(notification.getSmallIcon()).thenReturn(null);
assertThat(mMediaOutputController.getNotificationSmallIcon()).isNull();
}
@Test
public void getNotificationSmallIcon_withPackageNameAndMediaSession_returnsIconCompat() {
final List<NotificationEntry> entryList = new ArrayList<>();
final NotificationEntry entry = mock(NotificationEntry.class);
final StatusBarNotification sbn = mock(StatusBarNotification.class);
final Notification notification = mock(Notification.class);
final Icon icon = mock(Icon.class);
entryList.add(entry);
when(mNotifCollection.getAllNotifs()).thenReturn(entryList);
when(entry.getSbn()).thenReturn(sbn);
when(sbn.getNotification()).thenReturn(notification);
when(sbn.getPackageName()).thenReturn(TEST_PACKAGE_NAME);
when(notification.isMediaNotification()).thenReturn(true);
when(notification.getSmallIcon()).thenReturn(icon);
assertThat(mMediaOutputController.getNotificationSmallIcon()).isInstanceOf(
IconCompat.class);
}
@Test
public void isVolumeControlEnabled_isCastWithVolumeFixed_returnsFalse() {
when(mMediaDevice1.getDeviceType()).thenReturn(

View File

@@ -25,7 +25,10 @@ import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
import android.app.KeyguardManager;
import android.graphics.Bitmap;
import android.media.AudioManager;
import android.media.MediaDescription;
import android.media.MediaMetadata;
import android.media.MediaRoute2Info;
import android.media.session.MediaController;
import android.media.session.MediaSessionManager;
@@ -43,6 +46,7 @@ import com.android.settingslib.bluetooth.LocalBluetoothManager;
import com.android.settingslib.bluetooth.LocalBluetoothProfileManager;
import com.android.settingslib.media.LocalMediaManager;
import com.android.settingslib.media.MediaDevice;
import com.android.systemui.R;
import com.android.systemui.SysuiTestCase;
import com.android.systemui.animation.DialogLaunchAnimator;
import com.android.systemui.broadcast.BroadcastSender;
@@ -82,6 +86,8 @@ public class MediaOutputDialogTest extends SysuiTestCase {
private final CommonNotifCollection mNotifCollection = mock(CommonNotifCollection.class);
private final UiEventLogger mUiEventLogger = mock(UiEventLogger.class);
private final DialogLaunchAnimator mDialogLaunchAnimator = mock(DialogLaunchAnimator.class);
private final MediaMetadata mMediaMetadata = mock(MediaMetadata.class);
private final MediaDescription mMediaDescription = mock(MediaDescription.class);
private final NearbyMediaDevicesManager mNearbyMediaDevicesManager = mock(
NearbyMediaDevicesManager.class);
private final AudioManager mAudioManager = mock(AudioManager.class);
@@ -100,6 +106,8 @@ public class MediaOutputDialogTest extends SysuiTestCase {
when(mMediaController.getPlaybackState()).thenReturn(mPlaybackState);
when(mPlaybackState.getState()).thenReturn(PlaybackState.STATE_NONE);
when(mMediaController.getPackageName()).thenReturn(TEST_PACKAGE);
when(mMediaController.getMetadata()).thenReturn(mMediaMetadata);
when(mMediaMetadata.getDescription()).thenReturn(mMediaDescription);
mMediaControllers.add(mMediaController);
when(mMediaSessionManager.getActiveSessions(any())).thenReturn(mMediaControllers);
@@ -206,6 +214,80 @@ public class MediaOutputDialogTest extends SysuiTestCase {
assertThat(mMediaOutputDialog.getBroadcastIconVisibility()).isEqualTo(View.GONE);
}
@Test
public void getHeaderIcon_getFromMediaControllerMetaData() {
int testWidth = 10;
int testHeight = 20;
when(mMediaDescription.getIconBitmap())
.thenReturn(Bitmap.createBitmap(testWidth, testHeight, Bitmap.Config.ARGB_8888));
assertThat(mMediaOutputDialog.getHeaderIcon().getBitmap().getHeight()).isEqualTo(
testHeight);
assertThat(mMediaOutputDialog.getHeaderIcon().getBitmap().getWidth()).isEqualTo(testWidth);
}
@Test
public void getHeaderText_getFromMediaControllerMetaData() {
String testTitle = "test title";
when(mMediaDescription.getTitle())
.thenReturn(testTitle);
assertThat(mMediaOutputDialog.getHeaderText().toString()).isEqualTo(testTitle);
}
@Test
public void getHeaderSubtitle_getFromMediaControllerMetaData() {
String testSubtitle = "test title";
when(mMediaDescription.getSubtitle())
.thenReturn(testSubtitle);
assertThat(mMediaOutputDialog.getHeaderSubtitle().toString()).isEqualTo(testSubtitle);
}
@Test
public void getStopButtonText_notSupportsBroadcast_returnsDefaultText() {
String stopText = mContext.getText(R.string.keyboard_key_media_stop).toString();
MediaOutputController mockMediaOutputController = mock(MediaOutputController.class);
when(mockMediaOutputController.isBroadcastSupported()).thenReturn(false);
MediaOutputDialog testDialog = new MediaOutputDialog(mContext, false, mBroadcastSender,
mockMediaOutputController, mUiEventLogger);
testDialog.show();
assertThat(testDialog.getStopButtonText().toString()).isEqualTo(stopText);
}
@Test
public void getStopButtonText_supportsBroadcast_returnsBroadcastText() {
String stopText = mContext.getText(R.string.media_output_broadcast).toString();
MediaDevice mMediaDevice = mock(MediaDevice.class);
MediaOutputController mockMediaOutputController = mock(MediaOutputController.class);
when(mockMediaOutputController.isBroadcastSupported()).thenReturn(true);
when(mockMediaOutputController.getCurrentConnectedMediaDevice()).thenReturn(mMediaDevice);
when(mockMediaOutputController.isBluetoothLeDevice(any())).thenReturn(true);
when(mockMediaOutputController.isPlaying()).thenReturn(true);
when(mockMediaOutputController.isBluetoothLeBroadcastEnabled()).thenReturn(false);
MediaOutputDialog testDialog = new MediaOutputDialog(mContext, false, mBroadcastSender,
mockMediaOutputController, mUiEventLogger);
testDialog.show();
assertThat(testDialog.getStopButtonText().toString()).isEqualTo(stopText);
}
@Test
public void onStopButtonClick_notPlaying_releaseSession() {
MediaOutputController mockMediaOutputController = mock(MediaOutputController.class);
when(mockMediaOutputController.isBroadcastSupported()).thenReturn(false);
when(mockMediaOutputController.getCurrentConnectedMediaDevice()).thenReturn(null);
when(mockMediaOutputController.isPlaying()).thenReturn(false);
MediaOutputDialog testDialog = new MediaOutputDialog(mContext, false, mBroadcastSender,
mockMediaOutputController, mUiEventLogger);
testDialog.show();
testDialog.onStopButtonClick();
verify(mockMediaOutputController).releaseSession();
}
@Test
// Check the visibility metric logging by creating a new MediaOutput dialog,
// and verify if the calling times increases.