33 using namespace std::chrono_literals;
44 Cache c(
"test", 1, 1s, clock, journal);
48 BEAST_EXPECT(c.getCacheSize() == 0);
49 BEAST_EXPECT(c.getTrackSize() == 0);
50 BEAST_EXPECT(!c.insert(1,
"one"));
51 BEAST_EXPECT(c.getCacheSize() == 1);
52 BEAST_EXPECT(c.getTrackSize() == 1);
56 BEAST_EXPECT(c.retrieve(1, s));
57 BEAST_EXPECT(s ==
"one");
62 BEAST_EXPECT(c.getCacheSize() == 0);
63 BEAST_EXPECT(c.getTrackSize() == 0);
69 BEAST_EXPECT(!c.insert(2,
"two"));
70 BEAST_EXPECT(c.getCacheSize() == 1);
71 BEAST_EXPECT(c.getTrackSize() == 1);
75 BEAST_EXPECT(p !=
nullptr);
78 BEAST_EXPECT(c.getCacheSize() == 0);
79 BEAST_EXPECT(c.getTrackSize() == 1);
85 BEAST_EXPECT(c.getCacheSize() == 0);
86 BEAST_EXPECT(c.getTrackSize() == 0);
91 BEAST_EXPECT(!c.insert(3,
"three"));
94 auto const p1 = c.fetch(3);
96 c.canonicalizeReplaceClient(3, p2);
97 BEAST_EXPECT(p1.get() == p2.get());
101 BEAST_EXPECT(c.getCacheSize() == 0);
102 BEAST_EXPECT(c.getTrackSize() == 0);
110 BEAST_EXPECT(!c.insert(4,
"four"));
111 BEAST_EXPECT(c.getCacheSize() == 1);
112 BEAST_EXPECT(c.getTrackSize() == 1);
116 auto const p1 = c.fetch(4);
117 BEAST_EXPECT(p1 !=
nullptr);
118 BEAST_EXPECT(c.getCacheSize() == 1);
119 BEAST_EXPECT(c.getTrackSize() == 1);
123 BEAST_EXPECT(c.getCacheSize() == 0);
124 BEAST_EXPECT(c.getTrackSize() == 1);
127 BEAST_EXPECT(c.canonicalizeReplaceClient(4, p2));
128 BEAST_EXPECT(c.getCacheSize() == 1);
129 BEAST_EXPECT(c.getTrackSize() == 1);
131 BEAST_EXPECT(p1.get() == p2.get());
136 BEAST_EXPECT(c.getCacheSize() == 0);
137 BEAST_EXPECT(c.getTrackSize() == 0);
140 BEAST_EXPECT(!c.insert(5,
"five"));
141 BEAST_EXPECT(c.getCacheSize() == 1);
142 BEAST_EXPECT(c.size() == 1);
145 auto const p1 = c.fetch(5);
146 BEAST_EXPECT(p1 !=
nullptr);
147 BEAST_EXPECT(c.getCacheSize() == 1);
148 BEAST_EXPECT(c.size() == 1);
153 BEAST_EXPECT(c.getCacheSize() == 0);
154 BEAST_EXPECT(c.size() == 1);
157 BEAST_EXPECT(c.canonicalizeReplaceCache(5, p2));
158 BEAST_EXPECT(c.getCacheSize() == 1);
159 BEAST_EXPECT(c.size() == 1);
161 BEAST_EXPECT(p1.get() != p2.get());
162 BEAST_EXPECT(*p2 ==
"five_2");
164 auto const p3 = c.fetch(5);
165 BEAST_EXPECT(p3 !=
nullptr);
166 BEAST_EXPECT(p3.get() == p2.get());
167 BEAST_EXPECT(p3.get() != p1.get());
172 BEAST_EXPECT(c.getCacheSize() == 0);
173 BEAST_EXPECT(c.size() == 0);
185 partialDestructor() {};
187 MyRefCountObject() =
default;
188 explicit MyRefCountObject(
std::string data) : data(std::move(data))
195 return data == other;
206 IntrPtrCache intrPtrCache(
"IntrPtrTest", 1, 1s, clock, journal);
209 BEAST_EXPECT(intrPtrCache.getCacheSize() == 1);
210 BEAST_EXPECT(intrPtrCache.size() == 1);
214 intrPtrCache.canonicalizeReplaceCache(
217 auto p = intrPtrCache.fetch(1);
218 BEAST_EXPECT(*p ==
"one_replaced");
222 intrPtrCache.sweep();
223 BEAST_EXPECT(intrPtrCache.getCacheSize() == 0);
224 BEAST_EXPECT(intrPtrCache.size() == 1);
226 intrPtrCache.canonicalizeReplaceCache(
229 auto p2 = intrPtrCache.fetch(1);
230 BEAST_EXPECT(*p2 ==
"one_replaced_2");
232 intrPtrCache.del(1,
true);
235 intrPtrCache.canonicalizeReplaceCache(
237 auto p3 = intrPtrCache.fetch(1);
238 BEAST_EXPECT(*p3 ==
"one_replaced_3");
242 intrPtrCache.sweep();
243 BEAST_EXPECT(intrPtrCache.getCacheSize() == 0);
244 BEAST_EXPECT(intrPtrCache.size() == 0);