});
}
@Test
public void willMakeUpTheRefillWhenTimePassed() throws InterruptedException {
Ticker ticker = mock(Ticker.class);
LeakyBucket bucket =
new LeakyBucket(2, refillDuration, refillTimeUnit,
new LeakyBucket.TimeTracker(ticker));
assertThat(bucket.tryAcquire(), Matchers.is(true));
assertThat(bucket.tryAcquire(), Matchers.is(true));
assertThat(bucket.tryAcquire(), Matchers.is(false));
// after twice of refill duration it should've filled up.
when(ticker.read()).thenReturn(timeOverRefillDuration * 2);
assertThat(bucket.tryAcquire(), Matchers.is(true));
assertThat(bucket.tryAcquire(), Matchers.is(true));
}