Software /
code /
prosody
Comparison
spec/util_cache_spec.lua @ 12771:e9fcc69ea508
util.cache: Add some missing test cases
Found via mutation testing.
author | Matthew Wild <mwild1@gmail.com> |
---|---|
date | Thu, 13 Oct 2022 09:55:36 +0100 |
parent | 12571:c4337ff4f1c4 |
child | 13174:8ec7b7d6556f |
comparison
equal
deleted
inserted
replaced
12770:249bf1a53866 | 12771:e9fcc69ea508 |
---|---|
2 local cache = require "util.cache"; | 2 local cache = require "util.cache"; |
3 | 3 |
4 describe("util.cache", function() | 4 describe("util.cache", function() |
5 describe("#new()", function() | 5 describe("#new()", function() |
6 it("should work", function() | 6 it("should work", function() |
7 do | |
8 local c = cache.new(1); | |
9 assert.is_not_nil(c); | |
10 | |
11 assert.has_error(function () | |
12 cache.new(0); | |
13 end); | |
14 assert.has_error(function () | |
15 cache.new(-1); | |
16 end); | |
17 assert.has_error(function () | |
18 cache.new("foo"); | |
19 end); | |
20 end | |
7 | 21 |
8 local c = cache.new(5); | 22 local c = cache.new(5); |
9 | 23 |
10 local function expect_kv(key, value, actual_key, actual_value) | 24 local function expect_kv(key, value, actual_key, actual_value) |
11 assert.are.equal(key, actual_key, "key incorrect"); | 25 assert.are.equal(key, actual_key, "key incorrect"); |
334 assert.spy(i).was_called(); | 348 assert.spy(i).was_called(); |
335 assert.spy(i).was_called_with("b", "2"); | 349 assert.spy(i).was_called_with("b", "2"); |
336 assert.spy(i).was_called_with("c", "3"); | 350 assert.spy(i).was_called_with("c", "3"); |
337 assert.spy(i).was_called_with("d", "4"); | 351 assert.spy(i).was_called_with("d", "4"); |
338 end); | 352 end); |
353 | |
354 local function vs(t) | |
355 local vs_ = {}; | |
356 for v in t:values() do | |
357 vs_[#vs_+1] = v; | |
358 end | |
359 return vs_; | |
360 end | |
361 | |
362 it(":values works", function () | |
363 local t = cache.new(3); | |
364 t:set("k1", "v1"); | |
365 t:set("k2", "v2"); | |
366 assert.same({"v2", "v1"}, vs(t)); | |
367 t:set("k3", "v3"); | |
368 assert.same({"v3", "v2", "v1"}, vs(t)); | |
369 t:set("k4", "v4"); | |
370 assert.same({"v4", "v3", "v2"}, vs(t)); | |
371 end); | |
372 | |
373 it(":resize works", function () | |
374 local c = cache.new(5); | |
375 for i = 1, 5 do | |
376 c:set(("k%d"):format(i), ("v%d"):format(i)); | |
377 end | |
378 assert.same({"v5", "v4", "v3", "v2", "v1"}, vs(c)); | |
379 assert.has_error(function () | |
380 c:resize(-1); | |
381 end); | |
382 assert.has_error(function () | |
383 c:resize(0); | |
384 end); | |
385 assert.has_error(function () | |
386 c:resize("foo"); | |
387 end); | |
388 c:resize(3); | |
389 assert.same({"v5", "v4", "v3"}, vs(c)); | |
390 end); | |
339 end); | 391 end); |
340 end); | 392 end); |