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);