File

spec/util_iterators_spec.lua @ 11034:233196135048

mod_component: Reply with a different error when not connected The wait, service-unavailable is overloaded by XEP-0045 to mean that the room has reached the maximum number of users. See #1495. Bouncing errors for components is tricky since there is no way to tell that it comes from the server hosting the component, not from the other end of the component connection.
author Kim Alvefur <zash@zash.se>
date Mon, 13 Apr 2020 02:46:03 +0200
parent 9328:a9592107021b
child 12744:e894677359e5
line wrap: on
line source

local iter = require "util.iterators";

describe("util.iterators", function ()
	describe("join", function ()
		it("should produce a joined iterator", function ()
			local expect = { "a", "b", "c", 1, 2, 3 };
			local output = {};
			for x in iter.join(iter.values({"a", "b", "c"})):append(iter.values({1, 2, 3})) do
				table.insert(output, x);
			end
			assert.same(output, expect);
		end);
	end);

	describe("sorted_pairs", function ()
		it("should produce sorted pairs", function ()
			local orig = { b = 1, c = 2, a = "foo", d = false };
			local n, last_key = 0, nil;
			for k, v in iter.sorted_pairs(orig) do
				n = n + 1;
				if last_key then
					assert(k > last_key, "Expected "..k.." > "..last_key)
				end
				assert.equal(orig[k], v);
				last_key = k;
			end
			assert.equal("d", last_key);
			assert.equal(4, n);
		end);

		it("should allow a custom sort function", function ()
			local orig = { b = 1, c = 2, a = "foo", d = false };
			local n, last_key = 0, nil;
			for k, v in iter.sorted_pairs(orig, function (a, b) return a > b end) do
				n = n + 1;
				if last_key then
					assert(k < last_key, "Expected "..k.." > "..last_key)
				end
				assert.equal(orig[k], v);
				last_key = k;
			end
			assert.equal("a", last_key);
			assert.equal(4, n);
		end);
	end);
end);