File

spec/util_indexedbheap_spec.lua @ 11682:7843f1ca3b33

mod_s2s: Vary log level by remote stream error Increases log level for stream conditions that could indicate a problem on our end, especially programming errors like invalid XML, or the remote server saying that our certificate is invalid, since these should be investigated. Non-issues like closing of idle streams are lowered to debug since it's mostly noise. Other issues left at info are mostly about changes to the remote server, e.g. complete or partial shutdown.
author Kim Alvefur <zash@zash.se>
date Wed, 14 Jul 2021 02:41:15 +0200
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);