File

spec/util_indexedbheap_spec.lua @ 12686:5f182bccf33f

mod_component: Require 'from' attribute on stanzas by default The old behaviour of falling back to the component domain when it is missing has been merged into the logic for the existing "validate_from_addresses" option (which is strict by default). ejabberd already rejects component stanzas with no 'from' (as the XEP requires), and this has led to compatibility issues for components that were seemingly working fine with Prosody.
author Matthew Wild <mwild1@gmail.com>
date Sun, 28 Aug 2022 07:51:50 +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);