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.Collections;
9 import java.util.Map;
10 import java.util.Optional;
11 import java.util.Set;
12 import java.util.function.BiConsumer;
13 import java.util.function.Function;
14
15 import static org.hamcrest.Matchers.is;
16 import static org.junit.Assert.assertThat;
17 import static org.mockito.Matchers.any;
18 import static org.mockito.Matchers.eq;
19 import static org.mockito.Mockito.verify;
20 import static org.mockito.Mockito.verifyNoMoreInteractions;
21
22 @RunWith(MockitoJUnitRunner.class)
23 public class TimedFactoryTest {
24 @Mock
25 private Function<Set<String>, Map<String, String>> delegate;
26
27 @Mock
28 private BiConsumer<Optional<Long>, Long> handler;
29
30 @Test
31 public void all_quiet() throws Exception {
32 final TimedFactory<String, String> timed = new TimedFactory<>(delegate, handler);
33
34 verifyNoMoreInteractions(delegate, handler);
35 assertThat(timed.getNumberOfKeys(), is(0L));
36 }
37
38 @Test
39 public void not_called() throws Exception {
40 final TimedFactory<String, String> timed = new TimedFactory<>(delegate, handler);
41
42 timed.close();
43
44 verify(handler).accept(Optional.<Long>empty(), 0L);
45 verifyNoMoreInteractions(delegate, handler);
46 assertThat(timed.getNumberOfKeys(), is(0L));
47 }
48
49 @Test
50 public void called() throws Exception {
51 final TimedFactory<String, String> timed = new TimedFactory<>(delegate, handler);
52
53 final Set<String> keys = Collections.singleton("madeon");
54 timed.apply(keys);
55 timed.close();
56
57 verify(delegate).apply(keys);
58 verify(handler).accept(any(), eq(1L));
59 verifyNoMoreInteractions(delegate, handler);
60 assertThat(timed.getNumberOfKeys(), is(1L));
61 }
62 }