blob: 0f0215dba277ea3351f0f0664fe84535f5b04d1f [file] [log] [blame]
// Copyright 2016 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;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.robolectric.annotation.Config;
import org.chromium.base.BaseSwitches;
import org.chromium.base.CommandLine;
import org.chromium.base.SysUtils;
import org.chromium.base.test.BaseRobolectricTestRunner;
import org.chromium.base.test.util.Feature;
import java.util.ArrayList;
import java.util.List;
/**
* Sink observation tests for ChromeMediaRouter.
*/
@RunWith(BaseRobolectricTestRunner.class)
@Config(manifest = Config.NONE)
public class ChromeMediaRouterSinkObservationTest extends ChromeMediaRouterTestBase {
@Test
@Feature({"MediaRouter"})
public void testRouterOnSinksReceived() {
mChromeMediaRouter.onSinksReceived(SOURCE_ID1, mRouteProvider, new ArrayList<MediaSink>());
assertEquals(1, mChromeMediaRouter.getSinksPerSourcePerProviderForTest().size());
assertEquals(
1, mChromeMediaRouter.getSinksPerSourcePerProviderForTest().get(SOURCE_ID1).size());
assertEquals(0,
mChromeMediaRouter.getSinksPerSourcePerProviderForTest()
.get(SOURCE_ID1)
.get(mRouteProvider)
.size());
assertEquals(1, mChromeMediaRouter.getSinksPerSourceForTest().size());
assertEquals(0, mChromeMediaRouter.getSinksPerSourceForTest().get(SOURCE_ID1).size());
}
@Test
@Feature({"MediaRouter"})
public void testRouterOnSinksReceivedTwiceForOneSource() {
mChromeMediaRouter.onSinksReceived(SOURCE_ID1, mRouteProvider, new ArrayList<MediaSink>());
List<MediaSink> sinkList = new ArrayList<MediaSink>();
MediaSink sink = new MediaSink(SINK_ID1, SINK_NAME1, null);
sinkList.add(sink);
mChromeMediaRouter.onSinksReceived(SOURCE_ID1, mRouteProvider, sinkList);
assertEquals(1, mChromeMediaRouter.getSinksPerSourcePerProviderForTest().size());
assertEquals(
1, mChromeMediaRouter.getSinksPerSourcePerProviderForTest().get(SOURCE_ID1).size());
assertEquals(1,
mChromeMediaRouter.getSinksPerSourcePerProviderForTest()
.get(SOURCE_ID1)
.get(mRouteProvider)
.size());
assertTrue(mChromeMediaRouter.getSinksPerSourcePerProviderForTest()
.get(SOURCE_ID1)
.get(mRouteProvider)
.contains(sink));
assertEquals(1, mChromeMediaRouter.getSinksPerSourceForTest().size());
assertEquals(1, mChromeMediaRouter.getSinksPerSourceForTest().get(SOURCE_ID1).size());
assertTrue(mChromeMediaRouter.getSinksPerSourceForTest().get(SOURCE_ID1).contains(sink));
}
@Test
@Feature({"MediaRouter"})
public void testRouterOnSinksReceivedForTwoSources() {
mChromeMediaRouter.onSinksReceived(SOURCE_ID1, mRouteProvider, new ArrayList<MediaSink>());
List<MediaSink> sinkList = new ArrayList<MediaSink>();
MediaSink sink = new MediaSink(SINK_ID1, SINK_NAME1, null);
sinkList.add(sink);
mChromeMediaRouter.onSinksReceived(SOURCE_ID2, mRouteProvider, sinkList);
assertEquals(2, mChromeMediaRouter.getSinksPerSourcePerProviderForTest().size());
assertEquals(
1, mChromeMediaRouter.getSinksPerSourcePerProviderForTest().get(SOURCE_ID1).size());
assertEquals(0,
mChromeMediaRouter.getSinksPerSourcePerProviderForTest()
.get(SOURCE_ID1)
.get(mRouteProvider)
.size());
assertEquals(
1, mChromeMediaRouter.getSinksPerSourcePerProviderForTest().get(SOURCE_ID2).size());
assertEquals(1,
mChromeMediaRouter.getSinksPerSourcePerProviderForTest()
.get(SOURCE_ID2)
.get(mRouteProvider)
.size());
assertTrue(mChromeMediaRouter.getSinksPerSourcePerProviderForTest()
.get(SOURCE_ID2)
.get(mRouteProvider)
.contains(sink));
assertEquals(2, mChromeMediaRouter.getSinksPerSourceForTest().size());
assertEquals(0, mChromeMediaRouter.getSinksPerSourceForTest().get(SOURCE_ID1).size());
assertEquals(1, mChromeMediaRouter.getSinksPerSourceForTest().get(SOURCE_ID2).size());
assertTrue(mChromeMediaRouter.getSinksPerSourceForTest().get(SOURCE_ID2).contains(sink));
}
@Test
@Feature({"MediaRouter"})
public void testNotLowRamDevice() throws Exception {
SysUtils.resetForTesting();
CommandLine.getInstance().appendSwitch(BaseSwitches.DISABLE_LOW_END_DEVICE_MODE);
assertTrue(mChromeMediaRouter.startObservingMediaSinks(SOURCE_ID1));
}
@Test
@Feature({"MediaRouter"})
public void testIsLowRamDevice() throws Exception {
SysUtils.resetForTesting();
CommandLine.getInstance().appendSwitch(BaseSwitches.ENABLE_LOW_END_DEVICE_MODE);
assertEquals(false, mChromeMediaRouter.startObservingMediaSinks(SOURCE_ID1));
}
}