@Test
public void estimateIsolatedDelayTest() {

    long time = ticker.read();
    assertEquals(0, averagingProgressTracker.estimateIsolatedDelay(time));
    // less than half
    time = ticker.read();
    assertTrue(averagingProgressTracker.openTask(time) <= CHECKER);
    assertEquals(0, averagingProgressTracker.estimateIsolatedDelay(time));
    // more than half but less than limit
    time = ticker.read();
    assertTrue(averagingProgressTracker.openTask(time) <= CHECKER);
    assertTrue(averagingProgressTracker.estimateIsolatedDelay(time) < CHECKER);
    // limit reached
    time = ticker.read();
    assertTrue(averagingProgressTracker.openTask(time) >= CHECKER);
    assertEquals(CHECKER, averagingProgressTracker.estimateIsolatedDelay(time));
    // above limit, no higher isolated delays than CHECKER
    time = ticker.read();
    assertTrue(averagingProgressTracker.openTask(time) >= CHECKER);
    assertEquals(CHECKER, averagingProgressTracker.estimateIsolatedDelay(time));
    // close tasks to get under the half
    averagingProgressTracker.closeTask(ticker.read(), 0, 0, 0);
    averagingProgressTracker.closeTask(ticker.read(), 0, 0, 0);
    averagingProgressTracker.closeTask(ticker.read(), 0, 0, 0);
    assertEquals(0, averagingProgressTracker.estimateIsolatedDelay(ticker.read()));
}