@Test
public void shouldNotifySingleItemFineGrainedEventsWithDiff() {

  final Result<String> withA = success("A");
  final Result<String> withB = success("B");
  final Result<String> without = failure();
  final RepositoryPresenter<Result<String>> diffingPresenter =
      dataBindingRepositoryPresenterOf(String.class)
          .layout(LAYOUT_ID)
          .itemId(ITEM_ID)
          .diff()
          .forResult();
  boolean fineGrained = diffingPresenter.getUpdates(withA, withB, listUpdateCallback);
  assertThat(fineGrained, is(true));
  verify(listUpdateCallback).onChanged(0, 1, null);
  verifyNoMoreInteractions(listUpdateCallback);
  fineGrained = diffingPresenter.getUpdates(withA, without, listUpdateCallback);
  assertThat(fineGrained, is(true));
  verify(listUpdateCallback).onRemoved(0, 1);
  verifyNoMoreInteractions(listUpdateCallback);
  fineGrained = diffingPresenter.getUpdates(without, withB, listUpdateCallback);
  assertThat(fineGrained, is(true));
  verify(listUpdateCallback).onInserted(0, 1);
  verifyNoMoreInteractions(listUpdateCallback);
}