@Test public void addAllAtPositionMiddleWithNestedGroupNotifiesAdapterAtCorrectIndex() { final Section nestedSection1 = new Section(Arrays.asList(new DummyItem(), new DummyItem())); final Section nestedSection2 = new Section(Arrays.asList(new DummyItem(), new DummyItem())); final Section section = new Section(Arrays.asList(nestedSection1, nestedSection2)); section.registerGroupDataObserver(groupAdapter); section.addAll(1, Arrays.asList(new DummyItem(), new DummyItem(), new DummyItem())); verify(groupAdapter).onItemRangeInserted(section, 2, 3); }
@Test public void addAllAtPositionWhenNonEmptyNotifiesAdapterAtCorrectIndex() { final Section section = new Section(Arrays.asList(new DummyItem(), new DummyItem())); section.registerGroupDataObserver(groupAdapter); section.addAll(2, Arrays.asList(new DummyItem(), new DummyItem(), new DummyItem())); verify(groupAdapter).onItemRangeInserted(section, 2, 3); }
@Test public void addGroupToNestedSectionNotifiesAtCorrectIndex() throws Exception { final Section rootSection = new Section(); rootSection.registerGroupDataObserver(groupAdapter); groupAdapter.add(rootSection); final Section nestedSection1 = new Section(Arrays.asList(new DummyItem(), new DummyItem(), new DummyItem())); rootSection.add(nestedSection1); final Section nestedSection2 = new Section(Arrays.asList(new DummyItem(), new DummyItem())); reset(groupAdapter); rootSection.add(nestedSection2); verify(groupAdapter).onItemRangeInserted(rootSection, 3, 2); }
@Test public void addGroupToNestedSectionWithHeaderNotifiesAtCorrectIndex() throws Exception { final Section rootSection = new Section(); rootSection.setHeader(new DummyItem()); rootSection.registerGroupDataObserver(groupAdapter); groupAdapter.add(rootSection); final Section nestedSection1 = new Section(Arrays.asList(new DummyItem(), new DummyItem(), new DummyItem())); rootSection.add(nestedSection1); final Section nestedSection2 = new Section(Arrays.asList(new DummyItem(), new DummyItem())); reset(groupAdapter); rootSection.add(nestedSection2); verify(groupAdapter).onItemRangeInserted(rootSection, 4, 2); }
@Test public void removeGroupFromNestedSectionNotifiesAtCorrectIndex() throws Exception { final Section rootSection = new Section(); rootSection.registerGroupDataObserver(groupAdapter); groupAdapter.add(rootSection); final Section nestedSection1 = new Section(Arrays.asList(new DummyItem(), new DummyItem(), new DummyItem())); rootSection.add(nestedSection1); final Section nestedSection2 = new Section(Arrays.asList(new DummyItem(), new DummyItem())); rootSection.add(nestedSection2); reset(groupAdapter); rootSection.remove(nestedSection2); verify(groupAdapter).onItemRangeRemoved(rootSection, 3, 2); }
@Test public void removeAllGroupFromNestedSectionNotifiesAtCorrectIndex() throws Exception { final Section rootSection = new Section(); rootSection.registerGroupDataObserver(groupAdapter); groupAdapter.add(rootSection); final Section nestedSection1 = new Section(Arrays.asList(new DummyItem(), new DummyItem(), new DummyItem())); rootSection.add(nestedSection1); final Section nestedSection2 = new Section(Arrays.asList(new DummyItem(), new DummyItem())); rootSection.add(nestedSection2); reset(groupAdapter); rootSection.removeAll(Collections.singletonList(nestedSection2)); verify(groupAdapter).onItemRangeRemoved(rootSection, 3, 2); }
@Test public void addAllAtPositionFrontWithNestedGroupNotifiesAdapterAtCorrectIndex() { final List<DummyItem> nestedItems = Arrays.asList(new DummyItem(), new DummyItem()); final Section nestedSection = new Section(nestedItems); final Section section = new Section(); section.add(nestedSection); section.registerGroupDataObserver(groupAdapter); section.addAll(0, Arrays.asList(new DummyItem(), new DummyItem(), new DummyItem())); verify(groupAdapter).onItemRangeInserted(section, 0, 3); }
@Test public void addItemToNestedSectionNotifiesAtCorrectIndex() throws Exception { final Section rootSection = new Section(); rootSection.registerGroupDataObserver(groupAdapter); groupAdapter.add(rootSection); final Section nestedSection1 = new Section(Arrays.asList(new DummyItem(), new DummyItem(), new DummyItem())); rootSection.add(nestedSection1); final Section nestedSection2 = new Section(); rootSection.add(nestedSection2); reset(groupAdapter); nestedSection2.add(new DummyItem()); verify(groupAdapter).onItemRangeInserted(rootSection, 3, 1); }
@Test public void addAllAtPositionEndWithNestedGroupNotifiesAdapterAtCorrectIndex() { final List<DummyItem> nestedItems = Arrays.asList(new DummyItem(), new DummyItem()); final Section nestedSection = new Section(nestedItems); final Section section = new Section(); section.add(nestedSection); section.registerGroupDataObserver(groupAdapter); section.addAll(1, Arrays.asList(new DummyItem(), new DummyItem())); verify(groupAdapter).onItemRangeInserted(section, 2, 2); }
@Test public void selfPositionIs0() throws Exception { Item item = new DummyItem(); Assert.assertEquals(0, item.getPosition(item)); }
@Test public void addAllAtPositionWithEmptyNestedGroupNotifiesAdapterAtZeroIndex() { final Section nestedSection = new Section(); final Section section = new Section(); section.add(nestedSection); section.registerGroupDataObserver(groupAdapter); section.addAll(1, Arrays.asList(new DummyItem(), new DummyItem(), new DummyItem())); verify(groupAdapter).onItemRangeInserted(section, 0, 3); }
@Test public void notifyChangeInAnItemCausesParentToNotifyChange() { List<Item> children = new ArrayList<Item>(); Item item = new DummyItem(); children.add(item); Section group = new Section(); group.setHeader(new DummyItem()); group.update(children); group.registerGroupDataObserver(groupAdapter); item.notifyChanged(); verify(groupAdapter).onItemChanged(group, 1); }
@Test public void changeAnItemNotifiesChange() { List<Item> children = new ArrayList<Item>(); Item item = new DummyItem(); children.add(item); UpdatingGroup group = new UpdatingGroup(); group.update(children); group.registerGroupDataObserver(groupAdapter); item.notifyChanged(); verify(groupAdapter).onItemChanged(group, 0); }
@Test public void notifyChangeNotifiesParentObserver() { Item item = new DummyItem(); item.registerGroupDataObserver(groupAdapter); item.notifyChanged(); verify(groupAdapter).onItemChanged(item, 0); } }
@Test public void setPlaceholderOnNonEmptySectionDoesNotAddPlaceholder() { Section section = new Section(); section.setHeader(header); section.setFooter(footer); section.add(new DummyItem()); section.registerGroupDataObserver(groupAdapter); section.setPlaceholder(placeholder); verify(groupAdapter, never()).onItemRangeInserted(any(Section.class), anyInt(), anyInt()); }