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

Unified Diff: chrome/android/junit/src/org/chromium/chrome/browser/snackbar/SnackbarCollectionUnitTest.java

Issue 1649543002: Add Unit Tests to SnackbarCollection (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@snackbar_notification
Patch Set: nit 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
« no previous file with comments | « chrome/android/java/src/org/chromium/chrome/browser/snackbar/SnackbarManager.java ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/android/junit/src/org/chromium/chrome/browser/snackbar/SnackbarCollectionUnitTest.java
diff --git a/chrome/android/junit/src/org/chromium/chrome/browser/snackbar/SnackbarCollectionUnitTest.java b/chrome/android/junit/src/org/chromium/chrome/browser/snackbar/SnackbarCollectionUnitTest.java
new file mode 100644
index 0000000000000000000000000000000000000000..1a5a8974ea89c69a5c43f69c513ac26d502efd74
--- /dev/null
+++ b/chrome/android/junit/src/org/chromium/chrome/browser/snackbar/SnackbarCollectionUnitTest.java
@@ -0,0 +1,164 @@
+// 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.snackbar;
+
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.times;
+import static org.mockito.Mockito.verify;
+
+import org.chromium.base.test.util.Feature;
+import org.chromium.chrome.browser.snackbar.SnackbarManager.SnackbarController;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.BlockJUnit4ClassRunner;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+
+/**
+ * Tests for {@link SnackbarCollection}.
+ */
+@RunWith(BlockJUnit4ClassRunner.class)
+public class SnackbarCollectionUnitTest {
+ private static final String ACTION_TITLE = "stack";
+ private static final String NOTIFICATION_TITLE = "queue";
+
+ @Mock private SnackbarController mMockController;
+
+ @Before
+ public void setUp() {
+ MockitoAnnotations.initMocks(this);
+ }
+
+ @Test
+ @Feature({"Browser", "Snackbar"})
+ public void testActionCoversNotification() throws Exception {
+ SnackbarCollection collection = new SnackbarCollection();
+ assertTrue(collection.isEmpty());
+
+ Snackbar notiBar = makeNotificationSnackbar();
+ collection.add(notiBar);
+ assertFalse(collection.isEmpty());
+ assertEquals(notiBar, collection.getCurrent());
+
+ Snackbar actionBar = makeActionSnackbar();
+ collection.add(actionBar);
+ verify(mMockController, times(1)).onDismissNoAction(null);
+ assertFalse(collection.isEmpty());
+ assertEquals("Notification snackbar should not cover action snackbar!", actionBar,
+ collection.getCurrent());
+
+ collection.removeCurrentDueToAction();
+ verify(mMockController, times(1)).onAction(null);
+ assertTrue(collection.isEmpty());
+ }
+
+ @Test
+ @Feature({"Browser", "Snackbar"})
+ public void testNotificationGoesUnderAction() throws Exception {
+ SnackbarCollection collection = new SnackbarCollection();
+ assertTrue(collection.isEmpty());
+
+ Snackbar actionBar = makeActionSnackbar();
+ collection.add(actionBar);
+ assertFalse(collection.isEmpty());
+ assertEquals(actionBar, collection.getCurrent());
+
+ Snackbar notiBar = makeNotificationSnackbar();
+ collection.add(notiBar);
+ verify(mMockController, times(0)).onDismissNoAction(null);
+ assertFalse(collection.isEmpty());
+ assertEquals("Action snackbar should not be covered by notification snackbars!", actionBar,
+ collection.getCurrent());
+
+ collection.removeCurrentDueToAction();
+ verify(mMockController, times(1)).onAction(null);
+ assertFalse(collection.isEmpty());
+ assertEquals(notiBar, collection.getCurrent());
+
+ collection.removeCurrentDueToAction();
+ verify(mMockController, times(2)).onAction(null);
+ assertTrue(collection.isEmpty());
+ }
+
+ @Test
+ @Feature({"Browser", "Snackbar"})
+ public void testClear() throws Exception {
+ SnackbarCollection collection = new SnackbarCollection();
+ for (int i = 0; i < 3; i++) {
+ collection.add(makeActionSnackbar());
+ collection.add(makeNotificationSnackbar());
+ }
+ assertFalse(collection.isEmpty());
+
+ collection.clear();
+ assertTrue(collection.isEmpty());
+ }
+
+ @Test
+ @Feature({"Browser", "Snackbar"})
+ public void testRemoveMatchingSnackbars() throws Exception {
+ SnackbarCollection collection = new SnackbarCollection();
+ for (int i = 0; i < 3; i++) {
+ collection.add(makeActionSnackbar());
+ collection.add(makeNotificationSnackbar());
+ }
+ SnackbarController anotherController = mock(SnackbarController.class);
+ for (int i = 0; i < 3; i++) {
+ collection.add(makeActionSnackbar(anotherController));
+ collection.add(makeNotificationSnackbar(anotherController));
+ }
+
+ collection.removeMatchingSnackbars(mMockController);
+ while (!collection.isEmpty()) {
+ Snackbar removed = collection.removeCurrentDueToAction();
+ assertEquals(anotherController, removed.getController());
+ }
+ }
+
+ @Test
+ @Feature({"Browser", "Snackbar"})
+ public void testRemoveMatchingSnackbarsWithData() throws Exception {
+ SnackbarCollection collection = new SnackbarCollection();
+ for (int i = 0; i < 3; i++) {
+ collection.add(makeActionSnackbar().setAction(ACTION_TITLE, i));
+ collection.add(makeNotificationSnackbar().setAction(NOTIFICATION_TITLE, i));
+ }
+ SnackbarController anotherController = mock(SnackbarController.class);
+ for (int i = 0; i < 3; i++) {
+ collection.add(makeActionSnackbar(anotherController).setAction(ACTION_TITLE, i));
+ collection.add(
+ makeNotificationSnackbar(anotherController).setAction(NOTIFICATION_TITLE, i));
+ }
+
+ final Integer dataToRemove = 0;
+ collection.removeMatchingSnackbars(mMockController, dataToRemove);
+ while (!collection.isEmpty()) {
+ Snackbar removed = collection.removeCurrentDueToAction();
+ assertFalse(this == removed.getController()
+ && dataToRemove.equals(removed.getActionData()));
+ }
+ }
+
+ private Snackbar makeActionSnackbar(SnackbarController controller) {
+ return Snackbar.make(ACTION_TITLE, controller, Snackbar.TYPE_ACTION);
+ }
+
+ private Snackbar makeNotificationSnackbar(SnackbarController controller) {
+ return Snackbar.make(NOTIFICATION_TITLE, controller, Snackbar.TYPE_NOTIFICATION);
+ }
+
+ private Snackbar makeActionSnackbar() {
+ return makeActionSnackbar(mMockController);
+ }
+
+ private Snackbar makeNotificationSnackbar() {
+ return makeNotificationSnackbar(mMockController);
+ }
+}
« no previous file with comments | « chrome/android/java/src/org/chromium/chrome/browser/snackbar/SnackbarManager.java ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698