1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
|
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);
|