### Question:
MultiPointOutputStream { public void inspectComplete(int blockIndex) throws IOException { final BlockInfo blockInfo = info.getBlock(blockIndex); if (!Util.isCorrectFull(blockInfo.getCurrentOffset(), blockInfo.getContentLength())) { throw new IOException("The current offset on block-info isn't update correct, " + blockInfo.getCurrentOffset() + " != " + blockInfo.getContentLength() + " on " + blockIndex); } } MultiPointOutputStream(@NonNull final DownloadTask task,
                           @NonNull BreakpointInfo info,
                           @NonNull DownloadStore store,
                           @Nullable Runnable syncRunnable);  MultiPointOutputStream(@NonNull DownloadTask task,
                                  @NonNull BreakpointInfo info,
                                  @NonNull DownloadStore store); synchronized void write(int blockIndex, byte[] bytes, int length); void cancelAsync(); synchronized void cancel(); void done(int blockIndex); void inspectComplete(int blockIndex); void setRequireStreamBlocks(List<Integer> requireStreamBlocks); void catchBlockConnectException(int blockIndex);  }### Answer:
@Test(expected = IOException.class) public void inspectComplete_notFull() throws IOException { final BlockInfo blockInfo = mock(BlockInfo.class); when(info.getBlock(1)).thenReturn(blockInfo); when(blockInfo.getContentLength()).thenReturn(9L); when(blockInfo.getCurrentOffset()).thenReturn(10L); multiPointOutputStream.inspectComplete(1); }