OLD | NEW |
(Empty) | |
| 1 // Copyright 2016 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. |
| 4 |
| 5 package org.chromium.chrome.browser.ntp.cards; |
| 6 |
| 7 import static org.hamcrest.CoreMatchers.is; |
| 8 import static org.junit.Assert.assertThat; |
| 9 import static org.mockito.Mockito.mock; |
| 10 import static org.mockito.Mockito.verify; |
| 11 import static org.mockito.Mockito.when; |
| 12 |
| 13 import org.junit.Before; |
| 14 import org.junit.Test; |
| 15 import org.junit.runner.RunWith; |
| 16 import org.mockito.Mock; |
| 17 import org.mockito.MockitoAnnotations; |
| 18 import org.robolectric.annotation.Config; |
| 19 |
| 20 import org.chromium.chrome.browser.ntp.snippets.SnippetArticle; |
| 21 import org.chromium.testing.local.LocalRobolectricTestRunner; |
| 22 |
| 23 import java.util.Arrays; |
| 24 import java.util.List; |
| 25 |
| 26 /** |
| 27 * JUnit tests for {@link InnerNode}. |
| 28 */ |
| 29 @RunWith(LocalRobolectricTestRunner.class) |
| 30 @Config(manifest = Config.NONE) |
| 31 public class InnerNodeTest { |
| 32 |
| 33 private static final int[] ITEM_COUNTS = {1, 2, 3, 0, 3, 2, 1}; |
| 34 private final List<TreeNode> mChildren = Arrays.asList(new TreeNode[ITEM_COU
NTS.length]); |
| 35 @Mock private NodeParent mParent; |
| 36 private InnerNode mInnerNode; |
| 37 |
| 38 @Before |
| 39 public void setUp() { |
| 40 MockitoAnnotations.initMocks(this); |
| 41 |
| 42 for (int i = 0; i < ITEM_COUNTS.length; i++) { |
| 43 TreeNode child = mock(TreeNode.class); |
| 44 when(child.getItemCount()).thenReturn(ITEM_COUNTS[i]); |
| 45 mChildren.set(i, child); |
| 46 } |
| 47 mInnerNode = new InnerNode(mParent) { |
| 48 @Override |
| 49 protected List<TreeNode> getChildren() { |
| 50 return mChildren; |
| 51 } |
| 52 }; |
| 53 } |
| 54 |
| 55 @Test |
| 56 public void testItemCount() { |
| 57 assertThat(mInnerNode.getItemCount(), is(12)); |
| 58 } |
| 59 |
| 60 @Test |
| 61 public void testGetItemViewType() { |
| 62 when(mChildren.get(0).getItemViewType(0)).thenReturn(42); |
| 63 when(mChildren.get(2).getItemViewType(2)).thenReturn(23); |
| 64 when(mChildren.get(4).getItemViewType(0)).thenReturn(4711); |
| 65 when(mChildren.get(6).getItemViewType(0)).thenReturn(1729); |
| 66 |
| 67 assertThat(mInnerNode.getItemViewType(0), is(42)); |
| 68 assertThat(mInnerNode.getItemViewType(5), is(23)); |
| 69 assertThat(mInnerNode.getItemViewType(6), is(4711)); |
| 70 assertThat(mInnerNode.getItemViewType(11), is(1729)); |
| 71 } |
| 72 |
| 73 @Test |
| 74 public void testBindViewHolder() { |
| 75 NewTabPageViewHolder holder = mock(NewTabPageViewHolder.class); |
| 76 mInnerNode.onBindViewHolder(holder, 0); |
| 77 mInnerNode.onBindViewHolder(holder, 5); |
| 78 mInnerNode.onBindViewHolder(holder, 6); |
| 79 mInnerNode.onBindViewHolder(holder, 11); |
| 80 |
| 81 verify(mChildren.get(0)).onBindViewHolder(holder, 0); |
| 82 verify(mChildren.get(2)).onBindViewHolder(holder, 2); |
| 83 verify(mChildren.get(4)).onBindViewHolder(holder, 0); |
| 84 verify(mChildren.get(6)).onBindViewHolder(holder, 0); |
| 85 } |
| 86 |
| 87 @Test |
| 88 public void testGetSuggestion() { |
| 89 SnippetArticle article1 = mock(SnippetArticle.class); |
| 90 SnippetArticle article2 = mock(SnippetArticle.class); |
| 91 SnippetArticle article3 = mock(SnippetArticle.class); |
| 92 SnippetArticle article4 = mock(SnippetArticle.class); |
| 93 |
| 94 when(mChildren.get(0).getSuggestionAt(0)).thenReturn(article1); |
| 95 when(mChildren.get(2).getSuggestionAt(2)).thenReturn(article2); |
| 96 when(mChildren.get(4).getSuggestionAt(0)).thenReturn(article3); |
| 97 when(mChildren.get(6).getSuggestionAt(0)).thenReturn(article4); |
| 98 |
| 99 assertThat(mInnerNode.getSuggestionAt(0), is(article1)); |
| 100 assertThat(mInnerNode.getSuggestionAt(5), is(article2)); |
| 101 assertThat(mInnerNode.getSuggestionAt(6), is(article3)); |
| 102 assertThat(mInnerNode.getSuggestionAt(11), is(article4)); |
| 103 } |
| 104 |
| 105 @Test |
| 106 public void testNotifications() { |
| 107 mInnerNode.onItemRangeInserted(mChildren.get(0), 0, 23); |
| 108 mInnerNode.onItemRangeChanged(mChildren.get(2), 2, 9000); |
| 109 mInnerNode.onItemRangeChanged(mChildren.get(4), 0, 6502); |
| 110 mInnerNode.onItemRangeRemoved(mChildren.get(6), 0, 8086); |
| 111 |
| 112 verify(mParent).onItemRangeInserted(mInnerNode, 0, 23); |
| 113 verify(mParent).onItemRangeChanged(mInnerNode, 5, 9000); |
| 114 verify(mParent).onItemRangeChanged(mInnerNode, 6, 6502); |
| 115 verify(mParent).onItemRangeRemoved(mInnerNode, 11, 8086); |
| 116 } |
| 117 } |
| 118 |
OLD | NEW |