01: package junit;
02:
03: import static org.junit.Assert.*;
04:
05: import java.util.*;
06: import javax.cache.Cache;
07: import javax.cache.CacheException;
08: import javax.cache.spi.CacheLoaderException;
09:
10: import ri.cache.BasicCache;
11: import ri.cache.loader.AbstractCacheLoader;
12:
13: public abstract class CacheTestCase {
14:
15: protected Cache<Object, Object> createNewCache()
16: throws CacheException {
17: return new BasicCache<Object, Object>("foo");
18: }
19:
20: public void assertContains(Cache<Object, Object> c, Object key,
21: Object value) {
22: assertTrue(c.containsKey(key));
23: assertTrue(c.containsValue(value));
24: assertTrue(value.equals(c.get(key)));
25: assertTrue(value.equals(c.peek(key)));
26: }
27:
28: public void assertDoesNotContain(Cache<Object, Object> c, Object key) {
29: assertTrue(!c.containsKey(key));
30: assertTrue(c.peek(key) == null);
31: }
32:
33: public void assertInternallyConsistent(Map m) throws Exception {
34:
35: assertTrue((m.size() == 0) == m.isEmpty());
36:
37: Set entries = m.entrySet();
38: Set keys = m.keySet();
39: Collection values = m.values();
40:
41: assertTrue(m.size() == entries.size());
42: assertTrue(m.size() == keys.size());
43: assertTrue(m.size() == values.size());
44:
45: int size = 0;
46: for (Object entry : entries) {
47: size++;
48: Map.Entry e = (Map.Entry) entry;
49: assertTrue(m.containsKey(e.getKey()));
50: assertTrue(m.containsValue(e.getValue()));
51: assertTrue(keys.contains(e.getKey()));
52: assertTrue(values.contains(e.getValue()));
53: }
54:
55: assertTrue(m.size() >= size);
56:
57: }
58:
59: /**
60: * Loader which only knows how to load a single key
61: */
62: protected static class SingleKeyLoader extends AbstractCacheLoader {
63: private final Object key, value;
64:
65: public SingleKeyLoader(Object key, Object value) {
66: this .key = key;
67: this .value = value;
68: }
69:
70: public Object load(Object key) throws CacheLoaderException {
71: if (this .key.equals(key))
72: return this .value;
73: return null;
74: }
75: }
76:
77: /**
78: * Loader which maps all keys to themselves
79: */
80: protected static class IdentityLoader extends AbstractCacheLoader {
81: public Object load(Object key) throws CacheLoaderException {
82: return key;
83: }
84: }
85:
86: }
|