### Question:
Listener4SpeedAssistExtend implements Listener4Assist.AssistExtend,
        ListenerModelHandler.ModelCreator<Listener4SpeedAssistExtend.Listener4SpeedModel> { @Override public boolean dispatchFetchProgress(@NonNull DownloadTask task, int blockIndex, long increaseBytes, @NonNull Listener4Assist.Listener4Model model) { final Listener4SpeedModel speedModel = (Listener4SpeedModel) model; speedModel.blockSpeeds.get(blockIndex).downloading(increaseBytes); speedModel.taskSpeed.downloading(increaseBytes); if (callback != null) { callback.progressBlock(task, blockIndex, model.blockCurrentOffsetMap.get(blockIndex), speedModel.getBlockSpeed(blockIndex)); callback.progress(task, model.currentOffset, speedModel.taskSpeed); } return true; }  void setCallback(Listener4SpeedCallback callback); @Override boolean dispatchInfoReady(DownloadTask task, @NonNull BreakpointInfo info,
                                               boolean fromBreakpoint,
                                               @NonNull Listener4Assist.Listener4Model model); @Override boolean dispatchFetchProgress(@NonNull DownloadTask task, int blockIndex,
                                                   long increaseBytes,
                                                   @NonNull Listener4Assist.Listener4Model model); @Override boolean dispatchBlockEnd(DownloadTask task, int blockIndex,
                                              Listener4Assist.Listener4Model model); @Override boolean dispatchTaskEnd(DownloadTask task, EndCause cause, @Nullable Exception realCause,
                                   @NonNull Listener4Assist.Listener4Model model); @Override Listener4SpeedModel create(int id);  }### Answer:
@Test public void dispatchFetchProgress() { final boolean result = assistExtend.dispatchFetchProgress(task, 0, 1L, model); assertThat(result).isTrue(); verify(model.blockSpeeds.get(0)).downloading(eq(1L)); verify(model.blockSpeeds.get(1), never()).downloading(eq(1L)); verify(model.blockSpeeds.get(2), never()).downloading(eq(1L)); verify(model.taskSpeed).downloading(eq(1L)); verify(callback).progressBlock(eq(task), eq(0), eq(model.blockCurrentOffsetMap.get(0)), eq(model.getBlockSpeed(0))); }