File

spec/util_indexedbheap_spec.lua @ 11993:aa60f4353001

mod_http_file_share: Merge file expiry loops Not sure what the benefit of two separate loops was, perhaps reduced memory usage by allowing archive query state to be garbage collected before moving on to deleting files. Never measured so probably not so. This simplifies a bit.
author Kim Alvefur <zash@zash.se>
date Tue, 30 Nov 2021 00:53:22 +0100
parent 11116:d334f2bebe55
line wrap: on
line source

local ibh = require"util.indexedbheap";

local function verify_heap_property(priorities)
	for k in ipairs(priorities) do
		local parent = priorities[k];
		local childA = priorities[2*k];
		local childB = priorities[2*k+1];
		-- print("-", parent, childA, childB)
		assert(childA == nil or childA > parent, "heap property violated");
		assert(childB == nil or childB > parent, "heap property violated");
	end
end

local h
setup(function ()
	h = ibh.create();
end)
describe("util.indexedbheap", function ()
	it("item can be moved from end to top", function ()
		verify_heap_property(h);
		h:insert("a", 1);
		verify_heap_property(h);
		h:insert("b", 2);
		verify_heap_property(h);
		h:insert("c", 3);
		verify_heap_property(h);
		local id = h:insert("*", 10);
		verify_heap_property(h);
		h:reprioritize(id, 0);
		verify_heap_property(h);
		assert.same({ 0, "*", id }, { h:pop() });
	end)
end);