1 package com.atlassian.vcache.internal.test;
2
3 import java.time.Duration;
4
5 import com.atlassian.vcache.JvmCache;
6 import com.atlassian.vcache.JvmCacheSettings;
7 import com.atlassian.vcache.JvmCacheSettingsBuilder;
8 import com.atlassian.vcache.VCache;
9
10 import org.junit.Test;
11
12 import static org.hamcrest.Matchers.containsInAnyOrder;
13 import static org.hamcrest.Matchers.is;
14 import static org.junit.Assert.assertThat;
15
16
17
18
19 public abstract class AbstractJvmCacheTest extends AbstractLocalCacheOperationsTest
20 {
21 protected abstract JvmCache<String, String> createCache(String name, JvmCacheSettings settings);
22
23 @Override
24 protected final JvmCache<String, String> createCache(String name)
25 {
26 final JvmCacheSettings settings = new JvmCacheSettingsBuilder().maxEntries(3).defaultTtl(Duration.ofSeconds(10)).build();
27 return createCache(name, settings);
28 }
29
30 @Test
31 public void testGetName() throws Exception
32 {
33 final VCache namedCache = createCache("jvmcache");
34 assertThat(namedCache.getName(), is("jvmcache"));
35 }
36
37 @SuppressWarnings("unchecked")
38 @Test
39 public void testKeys()
40 {
41 final JvmCache<String, String> mycache = createCache("ignored");
42
43 assertThat(mycache.getKeys(), containsInAnyOrder());
44
45 mycache.put("k1", "v1");
46
47 assertThat(mycache.getKeys(), containsInAnyOrder("k1"));
48
49 mycache.put("k2", "v2");
50
51 assertThat(mycache.getKeys(), containsInAnyOrder("k1", "k2"));
52 }
53
54 @Test
55 public void testSize()
56 {
57 final JvmCache<String, String> mycache = createCache("ignored");
58
59 assertThat(mycache.getKeys().size(), is(0));
60
61 mycache.put("k1", "v1");
62
63 assertThat(mycache.getKeys().size(), is(1));
64
65 mycache.put("k2", "v2");
66
67 assertThat(mycache.getKeys().size(), is(2));
68
69 mycache.put("k3", "v3");
70
71 assertThat(mycache.getKeys().size(), is(3));
72
73 mycache.put("k4", "v4");
74
75 assertThat(mycache.getKeys().size(), is(3));
76
77 mycache.remove("k1", "k2", "k3", "k4");
78
79 assertThat(mycache.getKeys().size(), is(0));
80 }
81 }