public MainAdapter() { this.changesDetector = new ChangesDetector<>(new SimpleDetector<MainPresenter.AdapterItem>()); }
@Override public void call(@Nonnull ImmutableList<MainPresenter.AdapterItem> items) { this.items = items; changesDetector.newData(this, items, false); }
final int indexOf = indexOf(list, secondListPosition, first); if (indexOf >= 0) { int itemsInserted = indexOf - secondListPosition; counter = notify(adapter, counter, toRemove, itemsInserted); toRemove = 0; secondListPosition = indexOf + 1; notify(adapter, counter, toRemove, itemsInserted); mItems = list;
@Before public void setUp() throws Exception { mDetector = new ChangesDetector<>(new ChangesDetector.Detector<Cat, Cat>() { @Nonnull @Override public Cat apply(@Nonnull Cat item) { return item; } @Override public boolean matches(@Nonnull Cat item, @Nonnull Cat newOne) { return item.mId == newOne.mId; } @Override public boolean same(@Nonnull Cat item, @Nonnull Cat newOne) { return item.mId == newOne.mId && Objects.equal(item.mName, newOne.mName); } }); mAdapter = mock(ChangesDetector.ChangesAdapter.class); }
@Test public void testForce2() throws Exception { mDetector.newData(mAdapter, ImmutableList.of(new Cat(1, "one")), false); reset(mAdapter); mDetector.newData(mAdapter, ImmutableList.of(new Cat(1, "one"), new Cat(2, "two")), true); verify(mAdapter).notifyItemRangeChanged(0, 1); verify(mAdapter).notifyItemRangeInserted(1, 1); }
@Test public void testStart() throws Exception { mDetector.newData(mAdapter, ImmutableList.of(new Cat(1, "one")), false); verify(mAdapter).notifyItemRangeInserted(0, 1); }
@Test public void testItemChanged() throws Exception { mDetector.newData(mAdapter, ImmutableList.of(new Cat(1, "one"), new Cat(3, "tree")), false); reset(mAdapter); mDetector.newData(mAdapter, ImmutableList.of(new Cat(1, "one1"), new Cat(3, "tree")), false); verify(mAdapter).notifyItemRangeChanged(0, 1); }
@Test public void testItemSwapped() throws Exception { mDetector.newData(mAdapter, ImmutableList.of(new Cat(1, "one"), new Cat(3, "tree")), false); reset(mAdapter); mDetector.newData(mAdapter, ImmutableList.of(new Cat(2, "two"), new Cat(3, "tree")), false); verify(mAdapter).notifyItemRangeChanged(0, 1); }
@Test public void testItemDeleted2() throws Exception { mDetector.newData(mAdapter, ImmutableList.of(new Cat(1, "one"), new Cat(2, "two"), new Cat(3, "tree")), false); reset(mAdapter); mDetector.newData(mAdapter, ImmutableList.of(new Cat(1, "one"), new Cat(3, "tree")), false); verify(mAdapter).notifyItemRangeRemoved(1, 1); }
@Test public void testItemRemovedAndAdded() throws Exception { mDetector.newData(mAdapter, ImmutableList.of(new Cat(1, "one"), new Cat(4, "four")), false); reset(mAdapter); mDetector.newData(mAdapter, ImmutableList.of(new Cat(2, "two"), new Cat(3, "tree"), new Cat(4, "four")), false); verify(mAdapter).notifyItemRangeChanged(0, 1); verify(mAdapter).notifyItemRangeInserted(1, 1); } }
@Test public void testItemDeleted3() throws Exception { mDetector.newData(mAdapter, ImmutableList.of(new Cat(1, "one"), new Cat(2, "two"), new Cat(3, "tree")), false); reset(mAdapter); mDetector.newData(mAdapter, ImmutableList.of(new Cat(1, "one"), new Cat(2, "two")), false); verify(mAdapter).notifyItemRangeRemoved(2, 1); }
@Test public void testAddItemInTheMiddle() throws Exception { mDetector.newData(mAdapter, ImmutableList.of(new Cat(1, "one"), new Cat(3, "tree")), false); reset(mAdapter); mDetector.newData(mAdapter, ImmutableList.of(new Cat(1, "one"), new Cat(2, "two"), new Cat(3, "tree")), false); verify(mAdapter).notifyItemRangeInserted(1, 1); }
@Test public void testItemDeleted1() throws Exception { mDetector.newData(mAdapter, ImmutableList.of(new Cat(1, "one"), new Cat(2, "two"), new Cat(3, "tree")), false); reset(mAdapter); mDetector.newData(mAdapter, ImmutableList.of(new Cat(2, "two"), new Cat(3, "tree")), false); verify(mAdapter).notifyItemRangeRemoved(0, 1); }