spec/util_iterators_spec.lua
author Matthew Wild <mwild1@gmail.com>
Mon, 20 Feb 2023 18:10:15 +0000
branch0.12
changeset 12898 0598d822614f
parent 9331 a9592107021b
child 12748 e894677359e5
permissions -rw-r--r--
mod_websocket: Fire pre-session-close event (fixes #1800) This event was added in a7c183bb4e64 and is required to make mod_smacks know that a session was intentionally closed and shouldn't be hibernated (see fcea4d9e7502). Because this was missing from mod_websocket's session.close(), mod_smacks would always attempt to hibernate websocket sessions even if they closed cleanly. That mod_websocket has its own copy of session.close() is something to fix another day (probably not in the stable branch). So for now this commit makes the minimal change to get things working again. Thanks to Damian and the Jitsi team for reporting.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
8805
befffddf1b25 Fix wrong tests committed with 7b621a4a2e8d
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
     1
local iter = require "util.iterators";
befffddf1b25 Fix wrong tests committed with 7b621a4a2e8d
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
     2
befffddf1b25 Fix wrong tests committed with 7b621a4a2e8d
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
     3
describe("util.iterators", function ()
befffddf1b25 Fix wrong tests committed with 7b621a4a2e8d
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
     4
	describe("join", function ()
befffddf1b25 Fix wrong tests committed with 7b621a4a2e8d
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
     5
		it("should produce a joined iterator", function ()
befffddf1b25 Fix wrong tests committed with 7b621a4a2e8d
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
     6
			local expect = { "a", "b", "c", 1, 2, 3 };
befffddf1b25 Fix wrong tests committed with 7b621a4a2e8d
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
     7
			local output = {};
befffddf1b25 Fix wrong tests committed with 7b621a4a2e8d
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
     8
			for x in iter.join(iter.values({"a", "b", "c"})):append(iter.values({1, 2, 3})) do
befffddf1b25 Fix wrong tests committed with 7b621a4a2e8d
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
     9
				table.insert(output, x);
befffddf1b25 Fix wrong tests committed with 7b621a4a2e8d
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    10
			end
befffddf1b25 Fix wrong tests committed with 7b621a4a2e8d
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    11
			assert.same(output, expect);
befffddf1b25 Fix wrong tests committed with 7b621a4a2e8d
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    12
		end);
befffddf1b25 Fix wrong tests committed with 7b621a4a2e8d
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    13
	end);
9330
f6f1dec164b5 util.iterators: Add sorted_pairs() method
Matthew Wild <mwild1@gmail.com>
parents: 8808
diff changeset
    14
f6f1dec164b5 util.iterators: Add sorted_pairs() method
Matthew Wild <mwild1@gmail.com>
parents: 8808
diff changeset
    15
	describe("sorted_pairs", function ()
f6f1dec164b5 util.iterators: Add sorted_pairs() method
Matthew Wild <mwild1@gmail.com>
parents: 8808
diff changeset
    16
		it("should produce sorted pairs", function ()
f6f1dec164b5 util.iterators: Add sorted_pairs() method
Matthew Wild <mwild1@gmail.com>
parents: 8808
diff changeset
    17
			local orig = { b = 1, c = 2, a = "foo", d = false };
f6f1dec164b5 util.iterators: Add sorted_pairs() method
Matthew Wild <mwild1@gmail.com>
parents: 8808
diff changeset
    18
			local n, last_key = 0, nil;
f6f1dec164b5 util.iterators: Add sorted_pairs() method
Matthew Wild <mwild1@gmail.com>
parents: 8808
diff changeset
    19
			for k, v in iter.sorted_pairs(orig) do
f6f1dec164b5 util.iterators: Add sorted_pairs() method
Matthew Wild <mwild1@gmail.com>
parents: 8808
diff changeset
    20
				n = n + 1;
f6f1dec164b5 util.iterators: Add sorted_pairs() method
Matthew Wild <mwild1@gmail.com>
parents: 8808
diff changeset
    21
				if last_key then
f6f1dec164b5 util.iterators: Add sorted_pairs() method
Matthew Wild <mwild1@gmail.com>
parents: 8808
diff changeset
    22
					assert(k > last_key, "Expected "..k.." > "..last_key)
f6f1dec164b5 util.iterators: Add sorted_pairs() method
Matthew Wild <mwild1@gmail.com>
parents: 8808
diff changeset
    23
				end
9331
a9592107021b util.iterators tests: Check value matches expected [luacheck]
Matthew Wild <mwild1@gmail.com>
parents: 9330
diff changeset
    24
				assert.equal(orig[k], v);
9330
f6f1dec164b5 util.iterators: Add sorted_pairs() method
Matthew Wild <mwild1@gmail.com>
parents: 8808
diff changeset
    25
				last_key = k;
f6f1dec164b5 util.iterators: Add sorted_pairs() method
Matthew Wild <mwild1@gmail.com>
parents: 8808
diff changeset
    26
			end
f6f1dec164b5 util.iterators: Add sorted_pairs() method
Matthew Wild <mwild1@gmail.com>
parents: 8808
diff changeset
    27
			assert.equal("d", last_key);
f6f1dec164b5 util.iterators: Add sorted_pairs() method
Matthew Wild <mwild1@gmail.com>
parents: 8808
diff changeset
    28
			assert.equal(4, n);
f6f1dec164b5 util.iterators: Add sorted_pairs() method
Matthew Wild <mwild1@gmail.com>
parents: 8808
diff changeset
    29
		end);
f6f1dec164b5 util.iterators: Add sorted_pairs() method
Matthew Wild <mwild1@gmail.com>
parents: 8808
diff changeset
    30
f6f1dec164b5 util.iterators: Add sorted_pairs() method
Matthew Wild <mwild1@gmail.com>
parents: 8808
diff changeset
    31
		it("should allow a custom sort function", function ()
f6f1dec164b5 util.iterators: Add sorted_pairs() method
Matthew Wild <mwild1@gmail.com>
parents: 8808
diff changeset
    32
			local orig = { b = 1, c = 2, a = "foo", d = false };
f6f1dec164b5 util.iterators: Add sorted_pairs() method
Matthew Wild <mwild1@gmail.com>
parents: 8808
diff changeset
    33
			local n, last_key = 0, nil;
f6f1dec164b5 util.iterators: Add sorted_pairs() method
Matthew Wild <mwild1@gmail.com>
parents: 8808
diff changeset
    34
			for k, v in iter.sorted_pairs(orig, function (a, b) return a > b end) do
f6f1dec164b5 util.iterators: Add sorted_pairs() method
Matthew Wild <mwild1@gmail.com>
parents: 8808
diff changeset
    35
				n = n + 1;
f6f1dec164b5 util.iterators: Add sorted_pairs() method
Matthew Wild <mwild1@gmail.com>
parents: 8808
diff changeset
    36
				if last_key then
f6f1dec164b5 util.iterators: Add sorted_pairs() method
Matthew Wild <mwild1@gmail.com>
parents: 8808
diff changeset
    37
					assert(k < last_key, "Expected "..k.." > "..last_key)
f6f1dec164b5 util.iterators: Add sorted_pairs() method
Matthew Wild <mwild1@gmail.com>
parents: 8808
diff changeset
    38
				end
9331
a9592107021b util.iterators tests: Check value matches expected [luacheck]
Matthew Wild <mwild1@gmail.com>
parents: 9330
diff changeset
    39
				assert.equal(orig[k], v);
9330
f6f1dec164b5 util.iterators: Add sorted_pairs() method
Matthew Wild <mwild1@gmail.com>
parents: 8808
diff changeset
    40
				last_key = k;
f6f1dec164b5 util.iterators: Add sorted_pairs() method
Matthew Wild <mwild1@gmail.com>
parents: 8808
diff changeset
    41
			end
f6f1dec164b5 util.iterators: Add sorted_pairs() method
Matthew Wild <mwild1@gmail.com>
parents: 8808
diff changeset
    42
			assert.equal("a", last_key);
f6f1dec164b5 util.iterators: Add sorted_pairs() method
Matthew Wild <mwild1@gmail.com>
parents: 8808
diff changeset
    43
			assert.equal(4, n);
f6f1dec164b5 util.iterators: Add sorted_pairs() method
Matthew Wild <mwild1@gmail.com>
parents: 8808
diff changeset
    44
		end);
f6f1dec164b5 util.iterators: Add sorted_pairs() method
Matthew Wild <mwild1@gmail.com>
parents: 8808
diff changeset
    45
	end);
8805
befffddf1b25 Fix wrong tests committed with 7b621a4a2e8d
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    46
end);