@Test
public void setSingleDownloadStopReason_doesNotAffectOtherDownloads() throws Throwable {

  DownloadRunner runner1 = new DownloadRunner(uri1);
  DownloadRunner runner2 = new DownloadRunner(uri2);
  DownloadRunner runner3 = new DownloadRunner(uri3);
  runner1.postDownloadRequest().getTask().assertDownloading();
  runner2.postDownloadRequest().postRemoveRequest().getTask().assertRemoving();
  runOnMainThread(() -> downloadManager.setStopReason(runner1.getTask().taskId, APP_STOP_REASON));
  runner1.getTask().assertStopped();
  // Other downloads aren't affected.
  runner2.getDownloader(1).unblock().assertReleased();
  // New download requests can be added and they start.
  runner3.postDownloadRequest().getDownloader(0).assertStarted().unblock();
  downloadManagerListener.blockUntilTasksCompleteAndThrowAnyDownloadError();
}