### Question:
DownloadChain implements Runnable { public long processFetch() throws IOException { if (cache.isInterrupt()) throw InterruptException.SIGNAL; return fetchInterceptorList.get(fetchIndex++).interceptFetch(this); } private  DownloadChain(int blockIndex, @NonNull DownloadTask task, @NonNull BreakpointInfo info,
                          @NonNull DownloadCache cache, @NonNull DownloadStore store); long getResponseContentLength(); void setResponseContentLength(long responseContentLength); void cancel(); @NonNull DownloadTask getTask(); @NonNull BreakpointInfo getInfo(); int getBlockIndex(); synchronized void setConnection(@NonNull DownloadConnection connection); @NonNull DownloadCache getCache(); void setRedirectLocation(String location); MultiPointOutputStream getOutputStream(); @Nullable synchronized DownloadConnection getConnection(); @NonNull synchronized DownloadConnection getConnectionOrCreate(); void increaseCallbackBytes(long increaseBytes); void flushNoCallbackIncreaseBytes(); void resetConnectForRetry(); synchronized void releaseConnection(); DownloadConnection.Connected processConnect(); long processFetch(); long loopFetch(); @NonNull DownloadStore getDownloadStore(); @Override void run();  }### Answer:
@Test public void processFetch() throws IOException { final Interceptor.Fetch fetch = mock(Interceptor.Fetch.class); chain.fetchInterceptorList.add(fetch); chain.fetchIndex = 0; chain.processFetch(); assertThat(chain.fetchIndex).isEqualTo(1); verify(fetch).interceptFetch(chain); }