Index: chrome/android/junit/src/org/chromium/chrome/browser/ntp/cards/InnerNodeTest.java |
diff --git a/chrome/android/junit/src/org/chromium/chrome/browser/ntp/cards/InnerNodeTest.java b/chrome/android/junit/src/org/chromium/chrome/browser/ntp/cards/InnerNodeTest.java |
new file mode 100644 |
index 0000000000000000000000000000000000000000..0a5faae63f6b1f2fb47f75af3033234a8a572ab1 |
--- /dev/null |
+++ b/chrome/android/junit/src/org/chromium/chrome/browser/ntp/cards/InnerNodeTest.java |
@@ -0,0 +1,118 @@ |
+// 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.ntp.cards; |
+ |
+import static org.hamcrest.CoreMatchers.is; |
+import static org.junit.Assert.assertThat; |
+import static org.mockito.Mockito.mock; |
+import static org.mockito.Mockito.verify; |
+import static org.mockito.Mockito.when; |
+ |
+import org.junit.Before; |
+import org.junit.Test; |
+import org.junit.runner.RunWith; |
+import org.mockito.Mock; |
+import org.mockito.MockitoAnnotations; |
+import org.robolectric.annotation.Config; |
+ |
+import org.chromium.chrome.browser.ntp.snippets.SnippetArticle; |
+import org.chromium.testing.local.LocalRobolectricTestRunner; |
+ |
+import java.util.Arrays; |
+import java.util.List; |
+ |
+/** |
+ * JUnit tests for {@link InnerNode}. |
+ */ |
+@RunWith(LocalRobolectricTestRunner.class) |
+@Config(manifest = Config.NONE) |
+public class InnerNodeTest { |
+ |
+ private static final int[] ITEM_COUNTS = {1, 2, 3, 0, 3, 2, 1}; |
+ private final List<TreeNode> mChildren = Arrays.asList(new TreeNode[ITEM_COUNTS.length]); |
+ @Mock private NodeParent mParent; |
+ private InnerNode mInnerNode; |
+ |
+ @Before |
+ public void setUp() { |
+ MockitoAnnotations.initMocks(this); |
+ |
+ for (int i = 0; i < ITEM_COUNTS.length; i++) { |
+ TreeNode child = mock(TreeNode.class); |
+ when(child.getItemCount()).thenReturn(ITEM_COUNTS[i]); |
+ mChildren.set(i, child); |
+ } |
+ mInnerNode = new InnerNode(mParent) { |
+ @Override |
+ protected List<TreeNode> getChildren() { |
+ return mChildren; |
+ } |
+ }; |
+ } |
+ |
+ @Test |
+ public void testItemCount() { |
+ assertThat(mInnerNode.getItemCount(), is(12)); |
+ } |
+ |
+ @Test |
+ public void testGetItemViewType() { |
+ when(mChildren.get(0).getItemViewType(0)).thenReturn(42); |
+ when(mChildren.get(2).getItemViewType(2)).thenReturn(23); |
+ when(mChildren.get(4).getItemViewType(0)).thenReturn(4711); |
+ when(mChildren.get(6).getItemViewType(0)).thenReturn(1729); |
+ |
+ assertThat(mInnerNode.getItemViewType(0), is(42)); |
+ assertThat(mInnerNode.getItemViewType(5), is(23)); |
+ assertThat(mInnerNode.getItemViewType(6), is(4711)); |
+ assertThat(mInnerNode.getItemViewType(11), is(1729)); |
+ } |
+ |
+ @Test |
+ public void testBindViewHolder() { |
+ NewTabPageViewHolder holder = mock(NewTabPageViewHolder.class); |
+ mInnerNode.onBindViewHolder(holder, 0); |
+ mInnerNode.onBindViewHolder(holder, 5); |
+ mInnerNode.onBindViewHolder(holder, 6); |
+ mInnerNode.onBindViewHolder(holder, 11); |
+ |
+ verify(mChildren.get(0)).onBindViewHolder(holder, 0); |
+ verify(mChildren.get(2)).onBindViewHolder(holder, 2); |
+ verify(mChildren.get(4)).onBindViewHolder(holder, 0); |
+ verify(mChildren.get(6)).onBindViewHolder(holder, 0); |
+ } |
+ |
+ @Test |
+ public void testGetSuggestion() { |
+ SnippetArticle article1 = mock(SnippetArticle.class); |
+ SnippetArticle article2 = mock(SnippetArticle.class); |
+ SnippetArticle article3 = mock(SnippetArticle.class); |
+ SnippetArticle article4 = mock(SnippetArticle.class); |
+ |
+ when(mChildren.get(0).getSuggestionAt(0)).thenReturn(article1); |
+ when(mChildren.get(2).getSuggestionAt(2)).thenReturn(article2); |
+ when(mChildren.get(4).getSuggestionAt(0)).thenReturn(article3); |
+ when(mChildren.get(6).getSuggestionAt(0)).thenReturn(article4); |
+ |
+ assertThat(mInnerNode.getSuggestionAt(0), is(article1)); |
+ assertThat(mInnerNode.getSuggestionAt(5), is(article2)); |
+ assertThat(mInnerNode.getSuggestionAt(6), is(article3)); |
+ assertThat(mInnerNode.getSuggestionAt(11), is(article4)); |
+ } |
+ |
+ @Test |
+ public void testNotifications() { |
+ mInnerNode.onItemRangeInserted(mChildren.get(0), 0, 23); |
+ mInnerNode.onItemRangeChanged(mChildren.get(2), 2, 9000); |
+ mInnerNode.onItemRangeChanged(mChildren.get(4), 0, 6502); |
+ mInnerNode.onItemRangeRemoved(mChildren.get(6), 0, 8086); |
+ |
+ verify(mParent).onItemRangeInserted(mInnerNode, 0, 23); |
+ verify(mParent).onItemRangeChanged(mInnerNode, 5, 9000); |
+ verify(mParent).onItemRangeChanged(mInnerNode, 6, 6502); |
+ verify(mParent).onItemRangeRemoved(mInnerNode, 11, 8086); |
+ } |
+} |
+ |