File

spec/util_table_spec.lua @ 13616:2f38f3275a74

mod_cloud_notify: Merge from prosody-modules@fc521fb5ffa0 Many thanks to Thilo Molitor and Kim Alvefur for their work on this module while it was in the community repository. It has been stable for some time, is widely used, and provides a feature that is important to most deployments.
author Matthew Wild <mwild1@gmail.com>
date Thu, 09 Jan 2025 16:49:27 +0000
parent 12942:54756e3a54b9
line wrap: on
line source

local u_table = require "util.table";
describe("util.table", function ()
	describe("create()", function ()
		it("works", function ()
			-- Can't test the allocated sizes of the table, so what you gonna do?
			assert.is.table(u_table.create(1,1));
		end);
	end);

	describe("pack()", function ()
		it("works", function ()
			assert.same({ "lorem", "ipsum", "dolor", "sit", "amet", n = 5 }, u_table.pack("lorem", "ipsum", "dolor", "sit", "amet"));
		end);
	end);

	describe("move()", function ()
		it("works", function ()
			local t1 = { "apple", "banana", "carrot" };
			local t2 = { "cat", "donkey", "elephant" };
			local t3 = {};
			u_table.move(t1, 1, 3, 1, t3);
			u_table.move(t2, 1, 3, 3, t3);
			assert.same({ "apple", "banana", "cat", "donkey", "elephant" }, t3);
		end);
		it("supports overlapping regions", function ()
			do
				local t1 = { "apple", "banana", "carrot", "date", "endive", "fig", "grapefruit" };
				u_table.move(t1, 1, 3, 3);
				assert.same({ "apple", "banana", "apple", "banana", "carrot", "fig", "grapefruit" }, t1);
			end

			do
				local t1 = { "apple", "banana", "carrot", "date", "endive", "fig", "grapefruit" };
				u_table.move(t1, 1, 3, 2);
				assert.same({ "apple", "apple", "banana", "carrot", "endive", "fig", "grapefruit" }, t1);
			end

			do
				local t1 = { "apple", "banana", "carrot", "date", "endive", "fig", "grapefruit" };
				u_table.move(t1, 3, 5, 2);
				assert.same({ "apple", "carrot", "date", "endive", "endive", "fig", "grapefruit" }, t1);
			end

			do
				local t1 = { "apple", "banana", "carrot", "date", "endive", "fig", "grapefruit" };
				u_table.move(t1, 3, 5, 6);
				assert.same({ "apple", "banana", "carrot", "date", "endive", "carrot", "date", "endive" }, t1);
			end

			do
				local t1 = { "apple", "banana", "carrot", "date", "endive", "fig", "grapefruit" };
				u_table.move(t1, 3, 1, 3);
				assert.same({ "apple", "banana", "carrot", "date", "endive", "fig", "grapefruit" }, t1);
			end
		end);
	end);
end);