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

Side by Side Diff: chrome/android/junit/src/org/chromium/chrome/browser/suggestions/TileGroupTest.java

Issue 2824863002: Revert of (Reland) Expose resources in Robolectric/JUnit tests. (Closed)
Patch Set: Created 3 years, 8 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 unified diff | Download patch
« no previous file with comments | « chrome/android/BUILD.gn ('k') | testing/android/OWNERS » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2017 The Chromium Authors. All rights reserved. 1 // Copyright 2017 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 package org.chromium.chrome.browser.suggestions; 5 package org.chromium.chrome.browser.suggestions;
6 6
7 import static org.hamcrest.CoreMatchers.is; 7 import static org.hamcrest.CoreMatchers.is;
8 import static org.junit.Assert.assertNotNull; 8 import static org.junit.Assert.assertNotNull;
9 import static org.junit.Assert.assertThat; 9 import static org.junit.Assert.assertThat;
10 import static org.junit.Assert.fail;
10 import static org.mockito.ArgumentMatchers.any; 11 import static org.mockito.ArgumentMatchers.any;
11 import static org.mockito.ArgumentMatchers.anyBoolean; 12 import static org.mockito.ArgumentMatchers.anyBoolean;
12 import static org.mockito.ArgumentMatchers.anyInt; 13 import static org.mockito.ArgumentMatchers.anyInt;
13 import static org.mockito.Mockito.doAnswer; 14 import static org.mockito.Mockito.doAnswer;
14 import static org.mockito.Mockito.mock; 15 import static org.mockito.Mockito.mock;
15 import static org.mockito.Mockito.never; 16 import static org.mockito.Mockito.never;
16 import static org.mockito.Mockito.reset; 17 import static org.mockito.Mockito.reset;
17 import static org.mockito.Mockito.verify; 18 import static org.mockito.Mockito.verify;
18 import static org.mockito.Mockito.verifyNoMoreInteractions; 19 import static org.mockito.Mockito.verifyNoMoreInteractions;
19 import static org.mockito.Mockito.when; 20 import static org.mockito.Mockito.when;
20 21
22 import android.content.Context;
23 import android.content.res.Resources;
21 import android.graphics.Bitmap; 24 import android.graphics.Bitmap;
22 import android.graphics.Color; 25 import android.graphics.Color;
26 import android.support.annotation.ColorRes;
27 import android.support.annotation.DimenRes;
28 import android.support.annotation.LayoutRes;
29 import android.view.LayoutInflater;
23 import android.view.View; 30 import android.view.View;
24 import android.view.ViewGroup; 31 import android.view.ViewGroup;
25 import android.widget.FrameLayout; 32 import android.widget.FrameLayout;
26 33
27 import org.hamcrest.CoreMatchers; 34 import org.hamcrest.CoreMatchers;
28 import org.junit.Before; 35 import org.junit.Before;
29 import org.junit.Rule; 36 import org.junit.Rule;
30 import org.junit.Test; 37 import org.junit.Test;
31 import org.junit.runner.RunWith; 38 import org.junit.runner.RunWith;
32 import org.mockito.ArgumentCaptor; 39 import org.mockito.ArgumentCaptor;
33 import org.mockito.Mock; 40 import org.mockito.Mock;
34 import org.mockito.MockitoAnnotations; 41 import org.mockito.MockitoAnnotations;
35 import org.mockito.invocation.InvocationOnMock; 42 import org.mockito.invocation.InvocationOnMock;
36 import org.mockito.stubbing.Answer; 43 import org.mockito.stubbing.Answer;
37 import org.robolectric.RuntimeEnvironment; 44 import org.robolectric.RuntimeEnvironment;
38 import org.robolectric.annotation.Config; 45 import org.robolectric.annotation.Config;
46 import org.robolectric.annotation.Implementation;
47 import org.robolectric.annotation.Implements;
48 import org.robolectric.shadows.ShadowResources;
39 49
40 import org.chromium.base.Callback; 50 import org.chromium.base.Callback;
51 import org.chromium.chrome.R;
41 import org.chromium.chrome.browser.ChromeFeatureList; 52 import org.chromium.chrome.browser.ChromeFeatureList;
42 import org.chromium.chrome.browser.Features; 53 import org.chromium.chrome.browser.Features;
43 import org.chromium.chrome.browser.favicon.LargeIconBridge.LargeIconCallback; 54 import org.chromium.chrome.browser.favicon.LargeIconBridge.LargeIconCallback;
44 import org.chromium.chrome.browser.ntp.ContextMenuManager; 55 import org.chromium.chrome.browser.ntp.ContextMenuManager;
45 import org.chromium.chrome.browser.offlinepages.OfflinePageBridge; 56 import org.chromium.chrome.browser.offlinepages.OfflinePageBridge;
46 import org.chromium.testing.local.LocalRobolectricTestRunner; 57 import org.chromium.testing.local.LocalRobolectricTestRunner;
47 58
48 /** 59 /**
49 * Unit tests for {@link TileGroup}. 60 * Unit tests for {@link TileGroup}.
50 */ 61 */
51 @RunWith(LocalRobolectricTestRunner.class) 62 @RunWith(LocalRobolectricTestRunner.class)
52 @Config(manifest = Config.NONE) 63 @Config(manifest = Config.NONE, sdk = 21,
64 shadows = {TileGroupTest.TileShadowResources.class,
65 TileGroupTest.ShadowLayoutInflater.class})
53 @Features(@Features.Register(ChromeFeatureList.NTP_OFFLINE_PAGES_FEATURE_NAME)) 66 @Features(@Features.Register(ChromeFeatureList.NTP_OFFLINE_PAGES_FEATURE_NAME))
54 public class TileGroupTest { 67 public class TileGroupTest {
55 private static final int MAX_TILES_TO_FETCH = 4; 68 private static final int MAX_TILES_TO_FETCH = 4;
56 private static final int TILE_TITLE_LINES = 1; 69 private static final int TILE_TITLE_LINES = 1;
57 private static final String[] URLS = {"https://www.google.com", "https://tel lmedadjokes.com"}; 70 private static final String[] URLS = {"https://www.google.com", "https://tel lmedadjokes.com"};
58 71
59 @Rule 72 @Rule
60 public Features.Processor mFeaturesProcessor = new Features.Processor(); 73 public Features.Processor mFeaturesProcessor = new Features.Processor();
61 74
62 @Mock 75 @Mock
(...skipping 347 matching lines...) Expand 10 before | Expand all | Expand 10 after
410 MostVisitedSites.Observer observer, int maxResults) { 423 MostVisitedSites.Observer observer, int maxResults) {
411 mObserver = observer; 424 mObserver = observer;
412 } 425 }
413 426
414 @Override 427 @Override
415 public void onLoadingComplete(Tile[] tiles) {} 428 public void onLoadingComplete(Tile[] tiles) {}
416 429
417 @Override 430 @Override
418 public void destroy() {} 431 public void destroy() {}
419 } 432 }
433
434 /**
435 * Replacement for the {@link Resources} to allow loading resources used by {@link TileGroup} in
436 * unit tests.
437 * TODO(https://crbug.com/693573): Needed until unit tests can pick up resou rces themselves.
438 */
439 @Implements(Resources.class)
440 public static class TileShadowResources extends ShadowResources {
441 @Implementation
442 public int getDimensionPixelSize(@DimenRes int id) {
443 if (id == R.dimen.tile_view_icon_size) return 48;
444
445 throw new IllegalArgumentException();
446 }
447
448 @Implementation
449 public int getColor(@ColorRes int id) {
450 if (id == R.color.default_favicon_background_color) return Color.BLA CK;
451
452 throw new IllegalArgumentException();
453 }
454 }
455
456 /** Intercepts calls to inflate views to replace them with mocks. */
457 @Implements(LayoutInflater.class)
458 public static class ShadowLayoutInflater {
459 @Implementation
460 public static LayoutInflater from(Context context) {
461 LayoutInflater layoutInflater = mock(LayoutInflater.class);
462 when(layoutInflater.inflate(anyInt(), any(ViewGroup.class), anyBoole an()))
463 .thenAnswer(new Answer<View>() {
464 @Override
465 public View answer(InvocationOnMock invocation) throws T hrowable {
466 @LayoutRes
467 int layoutId = invocation.getArgument(0);
468 if (layoutId != R.layout.tile_view) fail("Unexpected resource id.");
469 return createMockTileView();
470 }
471 });
472 return layoutInflater;
473 }
474 }
420 } 475 }
OLDNEW
« no previous file with comments | « chrome/android/BUILD.gn ('k') | testing/android/OWNERS » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698