@Test
public void shouldNotifyFineGrainedEventsWithDiffWithMoveDetection() {

  final List<String> oldData = asList("A:1", "B:2", "C:3", "D:0");
  final List<String> newData = asList("B:2", "D:0", "A:4", "C:5");
  final DiffingLogic diffingLogic = new DiffingLogic(oldData, newData);
  final RepositoryPresenter<List<String>> diffingPresenter =
      repositoryPresenterOf(String.class)
          .layout(LAYOUT_ID)
          .bindCollectionWith(Binders.<List<String>, View>nullBinder()) // restricts to collection
          .diffWith(diffingLogic, true)                            // to test compiling this line.
          .forCollection(Functions.<List<String>>identityFunction());
  final boolean fineGrained = diffingPresenter.getUpdates(oldData, newData, listUpdateCallback);
  assertThat(fineGrained, is(true));
  DiffUtil.calculateDiff(diffingLogic, true).dispatchUpdatesTo(
      verifyingWrapper(listUpdateCallback));
  verifyNoMoreInteractions(listUpdateCallback);
}