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); |