1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.apache.ibatis.cache;
17
18 import static org.junit.jupiter.api.Assertions.assertEquals;
19 import static org.junit.jupiter.api.Assertions.assertNotNull;
20 import static org.junit.jupiter.api.Assertions.assertNull;
21
22 import org.apache.ibatis.cache.decorators.FifoCache;
23 import org.apache.ibatis.cache.impl.PerpetualCache;
24 import org.junit.jupiter.api.Test;
25
26 class FifoCacheTest {
27
28 @Test
29 void shouldRemoveFirstItemInBeyondFiveEntries() {
30 FifoCache cache = new FifoCache(new PerpetualCache("default"));
31 cache.setSize(5);
32 for (int i = 0; i < 5; i++) {
33 cache.putObject(i, i);
34 }
35 assertEquals(0, cache.getObject(0));
36 cache.putObject(5, 5);
37 assertNull(cache.getObject(0));
38 assertEquals(5, cache.getSize());
39 }
40
41 @Test
42 void shouldRemoveItemOnDemand() {
43 FifoCache cache = new FifoCache(new PerpetualCache("default"));
44 cache.putObject(0, 0);
45 assertNotNull(cache.getObject(0));
46 cache.removeObject(0);
47 assertNull(cache.getObject(0));
48 }
49
50 @Test
51 void shouldFlushAllItemsOnDemand() {
52 FifoCache cache = new FifoCache(new PerpetualCache("default"));
53 for (int i = 0; i < 5; i++) {
54 cache.putObject(i, i);
55 }
56 assertNotNull(cache.getObject(0));
57 assertNotNull(cache.getObject(4));
58 cache.clear();
59 assertNull(cache.getObject(0));
60 assertNull(cache.getObject(4));
61 }
62
63 @Test
64 void shouldRiseConflictInBeyondFiveEntries() {
65 FifoCache cache = new FifoCache(new PerpetualCache("default"));
66 cache.setSize(5);
67 for (int i = 0; i < 5; i++) {
68 cache.putObject(i, i);
69 }
70 cache.removeObject(1);
71 cache.putObject(1, 1);
72 assertNotNull(cache.getObject(0));
73 }
74
75 }