1 package com.atlassian.vcache.internal.core.metrics;
2
3 import org.junit.Test;
4 import org.junit.runner.RunWith;
5 import org.mockito.Mock;
6 import org.mockito.runners.MockitoJUnitRunner;
7
8 import java.util.Optional;
9 import java.util.function.Consumer;
10 import java.util.function.Supplier;
11
12 import static org.mockito.Matchers.any;
13 import static org.mockito.Mockito.verify;
14 import static org.mockito.Mockito.verifyNoMoreInteractions;
15
16 @RunWith(MockitoJUnitRunner.class)
17 public class TimedSupplierTest {
18 @Mock
19 private Consumer<Optional<Long>> handler;
20
21 @Mock
22 private Supplier<String> delegate;
23
24 @Test
25 public void all_quiet() {
26 final TimedSupplier<String> timed = new TimedSupplier<>(delegate, handler);
27
28 verifyNoMoreInteractions(delegate, handler);
29 }
30
31 @Test
32 public void not_called() {
33 final TimedSupplier<String> timed = new TimedSupplier<>(delegate, handler);
34
35 timed.close();
36
37 verify(handler).accept(Optional.<Long>empty());
38 verifyNoMoreInteractions(delegate, handler);
39 }
40
41 @Test
42 public void called() {
43 final TimedSupplier<String> timed = new TimedSupplier<>(delegate, handler);
44
45 timed.get();
46 timed.close();
47
48 verify(handler).accept(any());
49 verify(delegate).get();
50 verifyNoMoreInteractions(delegate, handler);
51 }
52 }