Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(4462)

Unified Diff: chrome/android/junit/src/org/chromium/chrome/browser/media/router/cast/DiscoveryCallbackTest.java

Issue 1593313011: Adding unittests for media casting sink observation and route handling (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: addressed avayvod@'s comments Created 4 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/android/junit/src/org/chromium/chrome/browser/media/router/cast/DiscoveryCallbackTest.java
diff --git a/chrome/android/junit/src/org/chromium/chrome/browser/media/router/cast/DiscoveryCallbackTest.java b/chrome/android/junit/src/org/chromium/chrome/browser/media/router/cast/DiscoveryCallbackTest.java
new file mode 100644
index 0000000000000000000000000000000000000000..dd469534d3c71048c403d666ececc2b4fa680c76
--- /dev/null
+++ b/chrome/android/junit/src/org/chromium/chrome/browser/media/router/cast/DiscoveryCallbackTest.java
@@ -0,0 +1,197 @@
+// 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.cast;
+
+import static org.chromium.chrome.browser.media.router.cast.TestUtils.createMockRouteInfo;
+import static org.junit.Assert.assertNotNull;
+import static org.mockito.Matchers.eq;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.never;
+import static org.mockito.Mockito.times;
+import static org.mockito.Mockito.verify;
+
+import org.chromium.base.test.util.Feature;
+import org.chromium.chrome.browser.media.router.ChromeMediaRouterTestBase;
+import org.chromium.chrome.browser.media.router.DiscoveryDelegate;
+import org.chromium.testing.local.LocalRobolectricTestRunner;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.robolectric.annotation.Config;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Robolectric tests for DiscoveryCallback.
+ */
+@RunWith(LocalRobolectricTestRunner.class)
+@Config(manifest = Config.NONE,
+ shadows = { ChromeMediaRouterTestBase.FakeActivityManager.class })
+public class DiscoveryCallbackTest extends ChromeMediaRouterTestBase {
+ protected DiscoveryDelegate mDiscoveryDelegate;
+
+ @Before
+ public void setUp() {
+ super.setUp();
+ mDiscoveryDelegate = mock(DiscoveryDelegate.class);
+ assertNotNull(mDiscoveryDelegate);
+ }
+
+ @Test
+ @Feature({"MediaRouter"})
+ public void testInitCallbackWithEmptyKnownSinks() {
+ List<MediaSink> knownSinks = new ArrayList<MediaSink>();
+ DiscoveryCallback callback = new DiscoveryCallback(
+ SOURCE_ID1, knownSinks, mDiscoveryDelegate);
+
+ verify(mDiscoveryDelegate).onSinksReceived(eq(SOURCE_ID1), eq(knownSinks));
+ }
+
+ @Test
+ @Feature({"MediaRouter"})
+ public void testInitCallbackWithNonemptyKnownSinks() {
+ List<MediaSink> knownSinks = new ArrayList<MediaSink>();
+ MediaSink sink = new MediaSink(SINK_ID1, SINK_NAME1, null);
+ DiscoveryCallback callback = new DiscoveryCallback(
+ SOURCE_ID1, knownSinks, mDiscoveryDelegate);
+
+ verify(mDiscoveryDelegate).onSinksReceived(eq(SOURCE_ID1), eq(knownSinks));
+ }
+
+ @Test
+ @Feature({"MediaRouter"})
+ public void testCallbackAddOneSink() {
+ List<MediaSink> knownSinks = new ArrayList<MediaSink>();
+ DiscoveryCallback callback = new DiscoveryCallback(
+ SOURCE_ID1, knownSinks, mDiscoveryDelegate);
+
+ callback.onRouteAdded(null, createMockRouteInfo(SINK_ID1, SINK_NAME1));
+ List<MediaSink> expectedSinks = new ArrayList<MediaSink>();
+ expectedSinks.add(new MediaSink(SINK_ID1, SINK_NAME1, null));
+ verify(mDiscoveryDelegate).onSinksReceived(eq(SOURCE_ID1), eq(expectedSinks));
+ }
+
+ @Test
+ @Feature({"MediaRouter"})
+ public void testCallbackAddTwoSinks() {
+ List<MediaSink> knownSinks = new ArrayList<MediaSink>();
+ DiscoveryCallback callback = new DiscoveryCallback(
+ SOURCE_ID1, knownSinks, mDiscoveryDelegate);
+
+ callback.onRouteAdded(null, createMockRouteInfo(SINK_ID1, SINK_NAME1));
+ callback.onRouteAdded(null, createMockRouteInfo(SINK_ID2, SINK_NAME2));
+ List<MediaSink> expectedSinks = new ArrayList<MediaSink>();
+ expectedSinks.add(new MediaSink(SINK_ID1, SINK_NAME1, null));
+ expectedSinks.add(new MediaSink(SINK_ID2, SINK_NAME2, null));
+ verify(mDiscoveryDelegate).onSinksReceived(eq(SOURCE_ID1), eq(expectedSinks));
+ }
+
+ @Test
+ @Feature({"MediaRouter"})
+ public void testCallbackAddDuplicateSink() {
+ List<MediaSink> knownSinks = new ArrayList<MediaSink>();
+ DiscoveryCallback callback = new DiscoveryCallback(
+ SOURCE_ID1, knownSinks, mDiscoveryDelegate);
+
+ callback.onRouteAdded(null, createMockRouteInfo(SINK_ID1, SINK_NAME1));
+ callback.onRouteAdded(null, createMockRouteInfo(SINK_ID1, SINK_NAME1));
+ List<MediaSink> expectedSinks = new ArrayList<MediaSink>();
+ expectedSinks.add(new MediaSink(SINK_ID1, SINK_NAME1, null));
+ // Only expect one time. The duplicate add will not be notified.
+ verify(mDiscoveryDelegate).onSinksReceived(eq(SOURCE_ID1), eq(expectedSinks));
+ }
+
+ @Test
+ @Feature({"MediaRouter"})
+ public void testCallbackRemoveSink() {
+ List<MediaSink> knownSinks = new ArrayList<MediaSink>();
+ DiscoveryCallback callback = new DiscoveryCallback(
+ SOURCE_ID1, knownSinks, mDiscoveryDelegate);
+
+ callback.onRouteAdded(null, createMockRouteInfo(SINK_ID1, SINK_NAME1));
+ callback.onRouteRemoved(null, createMockRouteInfo(SINK_ID1, SINK_NAME1));
+
+ List<MediaSink> expectedSinks = new ArrayList<MediaSink>();
+ // One time for init, one time for remove.
+ verify(mDiscoveryDelegate, times(2)).onSinksReceived(eq(SOURCE_ID1), eq(expectedSinks));
+ }
+
+ @Test
+ @Feature({"MediaRouter"})
+ public void testCallbackRemoveNonexistingSink() {
+ List<MediaSink> knownSinks = new ArrayList<MediaSink>();
+ DiscoveryCallback callback = new DiscoveryCallback(
+ SOURCE_ID1, knownSinks, mDiscoveryDelegate);
+
+ callback.onRouteAdded(null, createMockRouteInfo(SINK_ID1, SINK_NAME1));
+ callback.onRouteRemoved(null, createMockRouteInfo(SINK_ID2, SINK_NAME2));
+
+ List<MediaSink> expectedSinks = new ArrayList<MediaSink>();
+ // Only one time for init.
+ verify(mDiscoveryDelegate, times(1)).onSinksReceived(eq(SOURCE_ID1), eq(expectedSinks));
+ }
+
+ @Test
+ @Feature({"MediaRouter"})
+ public void testCallbackAddSourceUrn() {
+ List<MediaSink> knownSinks = new ArrayList<MediaSink>();
+ DiscoveryCallback callback = new DiscoveryCallback(
+ SOURCE_ID1, knownSinks, mDiscoveryDelegate);
+
+ callback.onRouteAdded(null, createMockRouteInfo(SINK_ID1, SINK_NAME1));
+ callback.addSourceUrn(SOURCE_ID2);
+
+ List<MediaSink> expectedSinks = new ArrayList<MediaSink>();
+ expectedSinks.add(new MediaSink(SINK_ID1, SINK_NAME1, null));
+ verify(mDiscoveryDelegate).onSinksReceived(eq(SOURCE_ID2), eq(expectedSinks));
+ }
+
+ @Test
+ @Feature({"MediaRouter"})
+ public void testCallbackAddDuplicateSourceUrn() {
+ List<MediaSink> knownSinks = new ArrayList<MediaSink>();
+ DiscoveryCallback callback = new DiscoveryCallback(
+ SOURCE_ID1, knownSinks, mDiscoveryDelegate);
+
+ callback.onRouteAdded(null, createMockRouteInfo(SINK_ID1, SINK_NAME1));
+ callback.addSourceUrn(SOURCE_ID1);
+
+ List<MediaSink> expectedSinks = new ArrayList<MediaSink>();
+ expectedSinks.add(new MediaSink(SINK_ID1, SINK_NAME1, null));
+ // Only the one time after onRouteAdded().
+ verify(mDiscoveryDelegate).onSinksReceived(eq(SOURCE_ID1), eq(expectedSinks));
+ }
+
+ @Test
+ @Feature({"MediaRouter"})
+ public void testCallbackRemoveSourceUrn() {
+ List<MediaSink> knownSinks = new ArrayList<MediaSink>();
+ DiscoveryCallback callback = new DiscoveryCallback(
+ SOURCE_ID1, knownSinks, mDiscoveryDelegate);
+
+ callback.onRouteAdded(null, createMockRouteInfo(SINK_ID1, SINK_NAME1));
+ callback.removeSourceUrn(SOURCE_ID1);
+
+ List<MediaSink> expectedSinks = new ArrayList<MediaSink>();
+ // Only the one time for init.
+ verify(mDiscoveryDelegate).onSinksReceived(eq(SOURCE_ID1), eq(expectedSinks));
+ }
+
+ @Test
+ @Feature({"MediaRouter"})
+ public void testCallbackRemoveNonexistingSourceUrn() {
+ List<MediaSink> knownSinks = new ArrayList<MediaSink>();
+ DiscoveryCallback callback = new DiscoveryCallback(
+ SOURCE_ID1, knownSinks, mDiscoveryDelegate);
+
+ callback.onRouteAdded(null, createMockRouteInfo(SINK_ID1, SINK_NAME1));
+ callback.removeSourceUrn(SOURCE_ID2);
+
+ List<MediaSink> expectedSinks = new ArrayList<MediaSink>();
+ // Only the one time for init.
+ verify(mDiscoveryDelegate, never()).onSinksReceived(eq(SOURCE_ID2), eq(expectedSinks));
+ }
+}

Powered by Google App Engine
This is Rietveld 408576698