view spec/util_time_spec.lua @ 13903:4af7d00a2966

MUC: occupant: refactor to allow storing more than just presence for a session Previously a "session" (i.e. a full JID joined to a MUC) was stored as simply a mapping of full JIDs->presence, contained within occupant objects (an occupant object groups all sessions behind a certain nick in the MUC). To enable developing GC3 and other features, it would be helpful if we can store additional metadata when a client joins a room, for example, whether it has opted out of receiving presence stanzas (a GC3 feature). This changes the internal data structure, which shouldn't be used outside this module, it adds a new :get_session() method, and modifies the :each_session() iterator to return the session as an additional result (which should be backwards compatible with code that just consumes the existing two results).
author Matthew Wild <mwild1@gmail.com>
date Mon, 11 Nov 2024 12:47:01 +0000
parents aba99b6539f5
children
line wrap: on
line source

describe("util.time", function ()
	local time;
	setup(function ()
		time = require "util.time";
	end);
	describe("now()", function ()
		it("exists", function ()
			assert.is_function(time.now);
		end);
		it("returns a number", function ()
			assert.is_number(time.now());
		end);
	end);
	describe("monotonic()", function ()
		it("exists", function ()
			assert.is_function(time.monotonic);
		end);
		it("returns a number", function ()
			assert.is_number(time.monotonic());
		end);
		it("time goes in one direction", function ()
			local a = time.monotonic();
			local b	= time.monotonic();
			assert.truthy(a <= b);
		end);
	end);
end);