5 assert_equal(c:count(), 0);
8 assert_equal(c:count(), 1);
13 assert_equal(c:count(), 5);
16 assert_equal(c:count(), 5);
18 assert_equal(c:get("one"), 1);
19 assert_equal(c:get("two"), 2);
20 assert_equal(c:get("three"), 3);
21 assert_equal(c:get("four"), 4);
22 assert_equal(c:get("five"), 5);
24 assert_equal(c:get("foo"), nil);
25 assert_equal(c:get("bar"), nil);
28 assert_equal(c:count(), 5);
30 assert_equal(c:get("one"), nil);
31 assert_equal(c:get("two"), 2);
32 assert_equal(c:get("three"), 3);
33 assert_equal(c:get("four"), 4);
34 assert_equal(c:get("five"), 5);
35 assert_equal(c:get("six"), 6);
38 assert_equal(c:count(), 4);
40 assert_equal(c:get("one"), nil);
41 assert_equal(c:get("two"), 2);
42 assert_equal(c:get("three"), nil);
43 assert_equal(c:get("four"), 4);
44 assert_equal(c:get("five"), 5);
45 assert_equal(c:get("six"), 6);
48 assert_equal(c:count(), 5);
50 assert_equal(c:get("one"), nil);
51 assert_equal(c:get("two"), 2);
52 assert_equal(c:get("three"), nil);
53 assert_equal(c:get("four"), 4);
54 assert_equal(c:get("five"), 5);
55 assert_equal(c:get("six"), 6);
56 assert_equal(c:get("seven"), 7);
59 assert_equal(c:count(), 5);
61 assert_equal(c:get("one"), nil);
62 assert_equal(c:get("two"), nil);
63 assert_equal(c:get("three"), nil);
64 assert_equal(c:get("four"), 4);
65 assert_equal(c:get("five"), 5);
66 assert_equal(c:get("six"), 6);
67 assert_equal(c:get("seven"), 7);
68 assert_equal(c:get("eight"), 8);
71 assert_equal(c:count(), 5);
73 assert_equal(c:get("one"), nil);
74 assert_equal(c:get("two"), nil);
75 assert_equal(c:get("three"), nil);
76 assert_equal(c:get("four"), 4);
77 assert_equal(c:get("five"), 5);
78 assert_equal(c:get("six"), 6);
79 assert_equal(c:get("seven"), 7);
80 assert_equal(c:get("eight"), 8);
83 assert_equal(c:count(), 5);
85 assert_equal(c:get("one"), nil);
86 assert_equal(c:get("two"), nil);
87 assert_equal(c:get("three"), nil);
88 assert_equal(c:get("four"), 4);
89 assert_equal(c:get("five"), nil);
90 assert_equal(c:get("six"), 6);
91 assert_equal(c:get("seven"), 7);
92 assert_equal(c:get("eight"), 8);
93 assert_equal(c:get("nine"), 9);
95 local keys = { "nine", "four", "eight", "seven", "six" };
96 local values = { 9, 4, 8, 7, 6 };
98 for k, v in c:items() do
100 assert_equal(k, keys[i]);
101 assert_equal(v, values[i]);
105 c:set("four", "2+2");
106 assert_equal(c:count(), 5);
108 assert_equal(c:get("one"), nil);
109 assert_equal(c:get("two"), nil);
110 assert_equal(c:get("three"), nil);
111 assert_equal(c:get("four"), "2+2");
112 assert_equal(c:get("five"), nil);
113 assert_equal(c:get("six"), 6);
114 assert_equal(c:get("seven"), 7);
115 assert_equal(c:get("eight"), 8);
116 assert_equal(c:get("nine"), 9);
118 local keys = { "four", "nine", "eight", "seven", "six" };
119 local values = { "2+2", 9, 8, 7, 6 };
121 for k, v in c:items() do
123 assert_equal(k, keys[i]);
124 assert_equal(v, values[i]);
129 assert_equal(c:count(), 5);
131 assert_equal(c:get("one"), nil);
132 assert_equal(c:get("two"), nil);
133 assert_equal(c:get("three"), nil);
134 assert_equal(c:get("four"), "2+2");
135 assert_equal(c:get("five"), nil);
136 assert_equal(c:get("six"), 6);
137 assert_equal(c:get("seven"), 7);
138 assert_equal(c:get("eight"), 8);
139 assert_equal(c:get("nine"), 9);
141 local keys = { "four", "nine", "eight", "seven", "six" };
142 local values = { "2+2", 9, 8, 7, 6 };
144 for k, v in c:items() do
146 assert_equal(k, keys[i]);
147 assert_equal(v, values[i]);
153 assert_equal(c:get("one"), nil);
154 assert_equal(c:get("two"), nil);
155 assert_equal(c:get("three"), nil);
156 assert_equal(c:get("four"), nil);
157 assert_equal(c:get("five"), nil);
158 assert_equal(c:get("six"), 6);
159 assert_equal(c:get("seven"), 7);
160 assert_equal(c:get("eight"), 8);
161 assert_equal(c:get("nine"), 9);
163 local keys = { "nine", "eight", "seven", "six" };
164 local values = { 9, 8, 7, 6 };
166 for k, v in c:items() do
168 assert_equal(k, keys[i]);
169 assert_equal(v, values[i]);
173 local evicted_key, evicted_value;
174 local c = new(3, function (_key, _value)
175 evicted_key, evicted_value = _key, _value;
177 local function set(k, v, should_evict_key, should_evict_value)
178 evicted_key, evicted_value = nil, nil;
180 assert_equal(evicted_key, should_evict_key);
181 assert_equal(evicted_value, should_evict_value);
196 local evicted_key, evicted_value;
197 local c3 = new(1, function (_key, _value, c3)
198 evicted_key, evicted_value = _key, _value;
201 -- Check that the newest key/value was set before on_evict was called
202 assert_equal(c3:get("b"), 2);
203 -- Sanity check for what we're evicting
204 assert_equal(_key, "a");
205 assert_equal(_value, 1);
206 -- Re-insert the evicted key (causes this evict function to run again with "b",2)
208 assert_equal(c3:get(_key), _value)
211 local function set(k, v, should_evict_key, should_evict_value)
212 evicted_key, evicted_value = nil, nil;
214 assert_equal(evicted_key, should_evict_key);
215 assert_equal(evicted_value, should_evict_value);
223 -- The evict handler re-inserts "a"->1, so "b" gets evicted:
225 -- Check the final state is what we expect
226 assert_equal(c3:get("a"), 1);
227 assert_equal(c3:get("b"), nil);
228 assert_equal(c3:count(), 1);