blob: 8e80ebb2a91b6a21243b4392986869fddbc9f13d [file] [log] [blame]
// Copyright 2018 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
package org.chromium.chrome.browser.media.router.caf;
import static org.mockito.Mockito.anyInt;
import static org.mockito.Mockito.doAnswer;
import static org.mockito.Mockito.doReturn;
import android.support.v7.media.MediaRouter;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import org.mockito.invocation.InvocationOnMock;
import org.mockito.stubbing.Answer;
import java.util.ArrayList;
import java.util.List;
/** Test helper for MediaRouter-related functionalities. */
public class MediaRouterTestHelper {
@Mock
private ShadowMediaRouter.ShadowImplementation mShadowMediaRouter;
@Mock
private MediaRouter.RouteInfo mDefaultRoute;
@Mock
private MediaRouter.RouteInfo mCastRoute;
@Mock
private MediaRouter.RouteInfo mOtherCastRoute;
public MediaRouterTestHelper() {
MockitoAnnotations.initMocks(this);
setUpRoutes();
ShadowMediaRouter.setImplementation(mShadowMediaRouter);
doAnswer(new Answer<Void>() {
@Override
public Void answer(InvocationOnMock invocation) {
selectRoute(getDefaultRoute());
return null;
}
})
.when(mShadowMediaRouter)
.unselect(anyInt());
doReturn(mDefaultRoute).when(mShadowMediaRouter).getDefaultRoute();
List<MediaRouter.RouteInfo> allRoutes = new ArrayList<>();
allRoutes.add(mDefaultRoute);
allRoutes.add(mCastRoute);
allRoutes.add(mOtherCastRoute);
doReturn(allRoutes).when(mShadowMediaRouter).getRoutes();
}
public ShadowMediaRouter.ShadowImplementation getShadowImpl() {
return mShadowMediaRouter;
}
public MediaRouter.RouteInfo getDefaultRoute() {
return mDefaultRoute;
}
public MediaRouter.RouteInfo getCastRoute() {
return mCastRoute;
}
public MediaRouter.RouteInfo getOtherCastRoute() {
return mOtherCastRoute;
}
private void setUpRoutes() {
selectRoute(mDefaultRoute);
setUpRouteStubs(mDefaultRoute);
setUpRouteStubs(mCastRoute);
setUpRouteStubs(mOtherCastRoute);
doReturn("default-route").when(mDefaultRoute).getId();
doReturn("cast-route").when(mCastRoute).getId();
doReturn("other-cast-route").when(mOtherCastRoute).getId();
}
public void selectRoute(MediaRouter.RouteInfo routeInfo) {
doReturn(false).when(mDefaultRoute).isSelected();
doReturn(false).when(mCastRoute).isSelected();
doReturn(false).when(mOtherCastRoute).isSelected();
doReturn(true).when(routeInfo).isSelected();
}
private void setUpRouteStubs(MediaRouter.RouteInfo routeInfo) {
doAnswer(new Answer<Void>() {
@Override
public Void answer(InvocationOnMock invocation) {
selectRoute(routeInfo);
return null;
}
})
.when(routeInfo)
.select();
}
}