@Test
public void testTryFlush() {

  final Object[][] testParameters = new Object[][] {{new Object[] {new TestFlushable()}, true},
      {new Object[] {new TestFlushable(), new TestFlushable()}, true},
      {new Object[] {new TestFlushable(), new TestFlushable(), new TestFlushable()}, true}};
  for (final Object[] testParameter : testParameters) {
    boolean expected = (Boolean) testParameter[1];
    Object[] flushable = (Object[]) testParameter[0];
    for (int i = 0; i < flushable.length; ++i) {
      if (flushable[i] instanceof Flushable) {
        TestFlushable testFlushable = (TestFlushable) flushable[i];
        assertFalse(testFlushable.isFlushed);
      }
    }
    IoUtils.tryFlush(flushable);
    for (int i = 0; i < flushable.length; ++i) {
      if (flushable[i] instanceof Flushable) {
        TestFlushable testFlushable = (TestFlushable) flushable[i];
        assertEquals(expected, testFlushable.isFlushed);
      }
    }
  }
}