spec/util_iterators_spec.lua
author Kim Alvefur <zash@zash.se>
Fri, 03 Sep 2021 17:35:34 +0200
changeset 11766 54530085dffe
parent 9331 a9592107021b
child 12748 e894677359e5
permissions -rw-r--r--
net.server: Fall back to default backend from libevent instead of always select Fixes that selecting libevent when unavaibalbe would fall back to select instead of epoll, even if that's available. This way, we only have to update it in once place when choosing a new default.
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);