View Javadoc

1   package com.atlassian.cache.impl;
2   
3   import com.atlassian.cache.CachedReferenceEvent;
4   import org.hamcrest.BaseMatcher;
5   import org.hamcrest.Description;
6   import org.hamcrest.Matcher;
7   
8   import static org.mockito.Matchers.argThat;
9   
10  public class CachedReferenceEventMatcher<V> extends BaseMatcher<CachedReferenceEvent<V>>
11  {
12      private final V value;
13  
14      private CachedReferenceEventMatcher(V value)
15      {
16          this.value = value;
17      }
18  
19      @Override
20      public boolean matches(Object item)
21      {
22          return match(item) == null;
23      }
24  
25      @Override
26      public void describeMismatch(Object item, Description description)
27      {
28          String match = match(item);
29          if(match != null) {
30              description.appendText(match);
31          }
32      }
33  
34      @Override
35      public void describeTo(Description description)
36      {
37          description.appendText(String.format("CachedReferenceEvent(%s)", value));
38      }
39  
40      private String match(Object item)
41      {
42          if(! (item instanceof CachedReferenceEvent))
43          {
44              return String.format("Not instance of CachedReferenceEvent. Was: %s", item.getClass());
45          }
46  
47          CachedReferenceEvent<V> event = (CachedReferenceEvent) item;
48          if(! CacheEntryEventMatcher.equals(value, event.getValue()))
49          {
50              return String.format("Different values expected %s, actual %s", value, event.getValue());
51          }
52  
53          return null;
54      }
55  
56      public static <V> Matcher<CachedReferenceEvent<V>> eventMatcher(V value)
57      {
58          return new CachedReferenceEventMatcher<V>(value);
59      }
60  
61      public static CachedReferenceEvent event(Object value)
62      {
63          return argThat(eventMatcher(value));
64      }
65  }