1 package com.atlassian.cache.impl;
2
3 import com.atlassian.cache.CachedReferenceListener;
4 import org.junit.Test;
5 import org.junit.runner.RunWith;
6 import org.mockito.runners.MockitoJUnitRunner;
7
8 import static com.atlassian.cache.impl.CachedReferenceEventMatcher.event;
9 import static org.mockito.Mockito.mock;
10 import static org.mockito.Mockito.verify;
11 import static org.mockito.Mockito.verifyNoMoreInteractions;
12
13 @RunWith(MockitoJUnitRunner.class)
14 public class DefaultCachedReferenceListenerSupportTest
15 {
16 @Test
17 public void testAdd()
18 {
19 DefaultCachedReferenceListenerSupport<String> listenerSupport = new DefaultCachedReferenceListenerSupport<String>();
20
21 listenerSupport.notifySet("SET");
22
23 CachedReferenceListener<String> listener = mock(CachedReferenceListener.class);
24 listenerSupport.add(listener, true);
25
26 listenerSupport.notifySet("SET");
27
28 verify(listener).onSet(event("SET"));
29 verifyNoMoreInteractions(listener);
30 }
31
32 @Test
33 public void testRemove()
34 {
35 DefaultCachedReferenceListenerSupport<String> listenerSupport = new DefaultCachedReferenceListenerSupport<String>();
36
37 listenerSupport.notifySet("SET");
38
39 CachedReferenceListener<String> listener = mock(CachedReferenceListener.class);
40 listenerSupport.add(listener, true);
41
42 listenerSupport.notifySet("SET");
43
44 listenerSupport.remove(listener);
45
46 listenerSupport.notifySet("SET");
47
48 verify(listener).onSet(event("SET"));
49 verifyNoMoreInteractions(listener);
50 }
51
52 @Test
53 public void testNotifyEvict()
54 {
55 DefaultCachedReferenceListenerSupport<String> listenerSupport = new DefaultCachedReferenceListenerSupport<String>();
56
57 CachedReferenceListener<String> listener = mock(CachedReferenceListener.class);
58 listenerSupport.add(listener, true);
59
60 listenerSupport.notifyEvict("EVICT");
61
62 verify(listener).onEvict(event("EVICT"));
63 verifyNoMoreInteractions(listener);
64 }
65
66 @Test
67 public void testNotifySet()
68 {
69 DefaultCachedReferenceListenerSupport<String> listenerSupport = new DefaultCachedReferenceListenerSupport<String>();
70
71 CachedReferenceListener<String> listener = mock(CachedReferenceListener.class);
72 listenerSupport.add(listener, true);
73
74 listenerSupport.notifySet("SET");
75
76 verify(listener).onSet(event("SET"));
77 verifyNoMoreInteractions(listener);
78 }
79
80 @Test
81 public void testNotifyReset()
82 {
83 DefaultCachedReferenceListenerSupport<String> listenerSupport = new DefaultCachedReferenceListenerSupport<String>();
84
85 CachedReferenceListener<String> listener = mock(CachedReferenceListener.class);
86 listenerSupport.add(listener, true);
87
88 listenerSupport.notifyReset("RESET");
89
90 verify(listener).onReset(event("RESET"));
91 verifyNoMoreInteractions(listener);
92 }
93 }