| 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
|
| index 0a5faae63f6b1f2fb47f75af3033234a8a572ab1..07e9b5e4621062212d94fc4f472df8c2f853d6fb 100644
|
| --- 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
|
| @@ -8,6 +8,7 @@ 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.verifyNoMoreInteractions;
|
| import static org.mockito.Mockito.when;
|
|
|
| import org.junit.Before;
|
| @@ -20,7 +21,7 @@ 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.ArrayList;
|
| import java.util.List;
|
|
|
| /**
|
| @@ -31,7 +32,7 @@ import java.util.List;
|
| 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]);
|
| + private final List<TreeNode> mChildren = new ArrayList<>();
|
| @Mock private NodeParent mParent;
|
| private InnerNode mInnerNode;
|
|
|
| @@ -42,7 +43,7 @@ public class InnerNodeTest {
|
| 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);
|
| + mChildren.add(child);
|
| }
|
| mInnerNode = new InnerNode(mParent) {
|
| @Override
|
| @@ -53,6 +54,14 @@ public class InnerNodeTest {
|
| }
|
|
|
| @Test
|
| + public void testInit() {
|
| + mInnerNode.init();
|
| + for (TreeNode child : mChildren) {
|
| + verify(child).init();
|
| + }
|
| + }
|
| +
|
| + @Test
|
| public void testItemCount() {
|
| assertThat(mInnerNode.getItemCount(), is(12));
|
| }
|
| @@ -103,6 +112,43 @@ public class InnerNodeTest {
|
| }
|
|
|
| @Test
|
| + public void testDidAddChild() {
|
| + TreeNode child = mock(TreeNode.class);
|
| + when(child.getItemCount()).thenReturn(23);
|
| + mChildren.add(3, child);
|
| + mInnerNode.didAddChild(child);
|
| +
|
| + // The child should have been initialized and the parent notified about the added items.
|
| + verify(child).init();
|
| + verify(mParent).onItemRangeInserted(mInnerNode, 6, 23);
|
| +
|
| + TreeNode child2 = mock(TreeNode.class);
|
| + when(child2.getItemCount()).thenReturn(0);
|
| + mChildren.add(4, child2);
|
| + mInnerNode.didAddChild(child2);
|
| + verify(child2).init();
|
| +
|
| + // The empty child should have been initialized, but there should be no change
|
| + // notifications.
|
| + verifyNoMoreInteractions(mParent);
|
| + }
|
| +
|
| + @Test
|
| + public void testWillRemoveChild() {
|
| + mInnerNode.willRemoveChild(mChildren.get(4));
|
| + mChildren.remove(4);
|
| +
|
| + // The parent should have been notified about the removed items.
|
| + verify(mParent).onItemRangeRemoved(mInnerNode, 6, 3);
|
| +
|
| + mInnerNode.willRemoveChild(mChildren.get(3));
|
| + mChildren.remove(3);
|
| +
|
| + // There should be no change notifications about the empty child.
|
| + verifyNoMoreInteractions(mParent);
|
| + }
|
| +
|
| + @Test
|
| public void testNotifications() {
|
| mInnerNode.onItemRangeInserted(mChildren.get(0), 0, 23);
|
| mInnerNode.onItemRangeChanged(mChildren.get(2), 2, 9000);
|
|
|