| Index: chrome/android/junit/src/org/chromium/chrome/browser/suggestions/TileTest.java
|
| diff --git a/chrome/android/junit/src/org/chromium/chrome/browser/suggestions/TileTest.java b/chrome/android/junit/src/org/chromium/chrome/browser/suggestions/TileTest.java
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..08ce230936a10b6ce96dacade9f5460a6dd9a4bc
|
| --- /dev/null
|
| +++ b/chrome/android/junit/src/org/chromium/chrome/browser/suggestions/TileTest.java
|
| @@ -0,0 +1,114 @@
|
| +// Copyright 2017 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.suggestions;
|
| +
|
| +import static org.hamcrest.CoreMatchers.equalTo;
|
| +import static org.junit.Assert.assertFalse;
|
| +import static org.junit.Assert.assertThat;
|
| +import static org.junit.Assert.assertTrue;
|
| +
|
| +import android.graphics.drawable.Drawable;
|
| +import android.graphics.drawable.GradientDrawable;
|
| +
|
| +import org.junit.Before;
|
| +import org.junit.Test;
|
| +import org.junit.runner.RunWith;
|
| +import org.mockito.MockitoAnnotations;
|
| +import org.robolectric.annotation.Config;
|
| +
|
| +import org.chromium.chrome.browser.ntp.MostVisitedTileType;
|
| +import org.chromium.chrome.browser.ntp.NTPTileSource;
|
| +import org.chromium.testing.local.LocalRobolectricTestRunner;
|
| +
|
| +/**
|
| + * Unit tests for {@link Tile}.
|
| + */
|
| +@RunWith(LocalRobolectricTestRunner.class)
|
| +@Config(manifest = Config.NONE)
|
| +public class TileTest {
|
| + private static final String[] URLS = {"https://www.google.com", "https://tellmedadjokes.com"};
|
| +
|
| + @Before
|
| + public void setUp() {
|
| + MockitoAnnotations.initMocks(this);
|
| + }
|
| +
|
| + @Test
|
| + public void testImportDataWithNewTitle() {
|
| + Tile tile = new Tile("title", URLS[0], "", 0, NTPTileSource.TOP_SITES);
|
| + Tile oldTile = new Tile("oldTitle", URLS[0], "", 0, NTPTileSource.TOP_SITES);
|
| +
|
| + // importData should report the change, and the new tile should keep its own data.
|
| + assertTrue(tile.importData(oldTile));
|
| + assertThat(tile.getTitle(), equalTo("title"));
|
| + }
|
| +
|
| + @Test(expected = AssertionError.class)
|
| + public void testImportDataWithNewUrl() {
|
| + Tile tile = new Tile("title", URLS[0], "", 0, NTPTileSource.TOP_SITES);
|
| + Tile oldTile = new Tile("title", URLS[1], "", 0, NTPTileSource.TOP_SITES);
|
| +
|
| + // Importing from a tile associated to a different URL should crash, as bug detection
|
| + // measure.
|
| + tile.importData(oldTile);
|
| + }
|
| +
|
| + @Test
|
| + public void testImportDataWithNewWhitelistIconPath() {
|
| + Tile tile = new Tile("title", URLS[0], "", 0, NTPTileSource.TOP_SITES);
|
| + Tile oldTile = new Tile("title", URLS[0], "foobar", 0, NTPTileSource.TOP_SITES);
|
| +
|
| + // importData should report the change, and the new tile should keep its own data.
|
| + assertTrue(tile.importData(oldTile));
|
| + assertThat(tile.getWhitelistIconPath(), equalTo(""));
|
| + }
|
| +
|
| + @Test
|
| + public void testImportDataWithNewIndex() {
|
| + Tile tile = new Tile("title", URLS[0], "", 0, NTPTileSource.TOP_SITES);
|
| + Tile oldTile = new Tile("title", URLS[0], "", 1, NTPTileSource.TOP_SITES);
|
| +
|
| + // importData should report the change, and the new tile should keep its own data.
|
| + assertTrue(tile.importData(oldTile));
|
| + assertThat(tile.getIndex(), equalTo(0));
|
| + }
|
| +
|
| + @Test
|
| + public void testImportDataWithNewSource() {
|
| + Tile tile = new Tile("title", URLS[0], "", 0, NTPTileSource.TOP_SITES);
|
| + Tile oldTile = new Tile("title", URLS[0], "", 0, NTPTileSource.POPULAR);
|
| +
|
| + // importData should not report the change since it has no visible impact. The new tile
|
| + // still keeps its own data.
|
| + assertFalse(tile.importData(oldTile));
|
| + assertThat(tile.getSource(), equalTo(NTPTileSource.TOP_SITES));
|
| + }
|
| +
|
| + @Test
|
| + public void testTileImportWithSameData() {
|
| + Tile tile = new Tile("title", URLS[0], "", 0, NTPTileSource.TOP_SITES);
|
| + Tile oldTile = new Tile("title", URLS[0], "", 0, NTPTileSource.TOP_SITES);
|
| +
|
| + // No change should be reported
|
| + assertFalse(tile.importData(oldTile));
|
| + }
|
| +
|
| + @Test
|
| + public void testTileImportWithTransientData() {
|
| + Tile tile = new Tile("title", URLS[0], "", 0, NTPTileSource.TOP_SITES);
|
| +
|
| + Drawable dummyDrawable = new GradientDrawable();
|
| + Tile oldTile = new Tile("title", URLS[0], "", 0, NTPTileSource.TOP_SITES);
|
| + oldTile.setOfflinePageOfflineId(42L);
|
| + oldTile.setIcon(dummyDrawable);
|
| + oldTile.setType(MostVisitedTileType.ICON_REAL);
|
| +
|
| + // Old transient data should be copied over to the new tile without flagging the change.
|
| + assertFalse(tile.importData(oldTile));
|
| + assertThat(tile.getOfflinePageOfflineId(), equalTo(42L));
|
| + assertThat(tile.getIcon(), equalTo(dummyDrawable));
|
| + assertThat(tile.getType(), equalTo(MostVisitedTileType.ICON_REAL));
|
| + }
|
| +}
|
|
|