1 package com.atlassian.util.concurrent;
2
3 import static java.util.concurrent.TimeUnit.NANOSECONDS;
4 import static org.junit.Assert.assertFalse;
5 import static org.junit.Assert.assertTrue;
6
7 import org.junit.Test;
8
9 import com.google.common.base.Predicate;
10
11 import java.util.concurrent.TimeUnit;
12
13 public class TimeToIdleTest {
14 @Test
15 public void timesOut() {
16 final MockTimeSupplier supplier = new MockTimeSupplier(2, TimeUnit.NANOSECONDS);
17 final Predicate<Void> ttl = new Lazy.TimeToIdle(Timeout.timeoutFactory(2, NANOSECONDS, supplier));
18 assertTrue(ttl.apply(null));
19 assertTrue(ttl.apply(null));
20
21 supplier.currentTime();
22 for (int i = 0; i < 1000; i++) {
23 assertFalse(String.valueOf(i), ttl.apply(null));
24 }
25 }
26
27 @Test
28 public void resetsAfterSuccess() {
29 final MockTimeSupplier supplier = new MockTimeSupplier(2, TimeUnit.NANOSECONDS);
30 final Predicate<Void> ttl = new Lazy.TimeToIdle(Timeout.timeoutFactory(2, NANOSECONDS, supplier));
31 for (int i = 0; i < 1000; i++) {
32 assertTrue(String.valueOf(i), ttl.apply(null));
33 }
34 }
35 }