@Test
public void testCopyBytesWithCountShouldThrowOutTheStreamClosureExceptions()
    throws Exception {

  InputStream inputStream = Mockito.mock(InputStream.class);
  OutputStream outputStream = Mockito.mock(OutputStream.class);
  Mockito.doReturn(-1).when(inputStream).read(new byte[4096], 0, 1);
  Mockito.doThrow(new IOException("Exception in closing the stream")).when(
      outputStream).close();
  try {
    IOUtils.copyBytes(inputStream, outputStream, (long) 1, true);
    fail("Should throw out the exception");
  } catch (IOException e) {
    assertEquals("Not throwing the expected exception.",
        "Exception in closing the stream", e.getMessage());
  }
  Mockito.verify(inputStream, Mockito.atLeastOnce()).close();
  Mockito.verify(outputStream, Mockito.atLeastOnce()).close();
}