20 #include <ripple/basics/TaggedCache.h>
21 #include <ripple/basics/chrono.h>
22 #include <ripple/beast/clock/manual_clock.h>
23 #include <ripple/beast/unit_test.h>
24 #include <ripple/protocol/Protocol.h>
25 #include <test/unit_test/SuiteJournal.h>
45 using namespace std::chrono_literals;
56 Cache c(
"test", 1, 1s, clock, journal);
60 BEAST_EXPECT(c.getCacheSize() == 0);
61 BEAST_EXPECT(c.getTrackSize() == 0);
62 BEAST_EXPECT(!c.insert(1,
"one"));
63 BEAST_EXPECT(c.getCacheSize() == 1);
64 BEAST_EXPECT(c.getTrackSize() == 1);
68 BEAST_EXPECT(c.retrieve(1, s));
69 BEAST_EXPECT(s ==
"one");
74 BEAST_EXPECT(c.getCacheSize() == 0);
75 BEAST_EXPECT(c.getTrackSize() == 0);
81 BEAST_EXPECT(!c.insert(2,
"two"));
82 BEAST_EXPECT(c.getCacheSize() == 1);
83 BEAST_EXPECT(c.getTrackSize() == 1);
87 BEAST_EXPECT(p !=
nullptr);
90 BEAST_EXPECT(c.getCacheSize() == 0);
91 BEAST_EXPECT(c.getTrackSize() == 1);
97 BEAST_EXPECT(c.getCacheSize() == 0);
98 BEAST_EXPECT(c.getTrackSize() == 0);
103 BEAST_EXPECT(!c.insert(3,
"three"));
106 auto const p1 = c.fetch(3);
107 auto p2 = std::make_shared<Value>(
"three");
108 c.canonicalize_replace_client(3, p2);
109 BEAST_EXPECT(p1.get() == p2.get());
113 BEAST_EXPECT(c.getCacheSize() == 0);
114 BEAST_EXPECT(c.getTrackSize() == 0);
122 BEAST_EXPECT(!c.insert(4,
"four"));
123 BEAST_EXPECT(c.getCacheSize() == 1);
124 BEAST_EXPECT(c.getTrackSize() == 1);
128 auto const p1 = c.fetch(4);
129 BEAST_EXPECT(p1 !=
nullptr);
130 BEAST_EXPECT(c.getCacheSize() == 1);
131 BEAST_EXPECT(c.getTrackSize() == 1);
135 BEAST_EXPECT(c.getCacheSize() == 0);
136 BEAST_EXPECT(c.getTrackSize() == 1);
138 auto p2 = std::make_shared<std::string>(
"four");
139 BEAST_EXPECT(c.canonicalize_replace_client(4, p2));
140 BEAST_EXPECT(c.getCacheSize() == 1);
141 BEAST_EXPECT(c.getTrackSize() == 1);
143 BEAST_EXPECT(p1.get() == p2.get());
148 BEAST_EXPECT(c.getCacheSize() == 0);
149 BEAST_EXPECT(c.getTrackSize() == 0);