author | Kim Alvefur <zash@zash.se> |
Tue, 23 Apr 2024 20:01:41 +0200 | |
changeset 13486 | 4d697961546d |
parent 12748 | e894677359e5 |
permissions | -rw-r--r-- |
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); |
12748
e894677359e5
util.iterators: join: Work even with only a single iterator in the chain
Matthew Wild <mwild1@gmail.com>
parents:
9331
diff
changeset
|
13 |
it("should work with only a single iterator", function () |
e894677359e5
util.iterators: join: Work even with only a single iterator in the chain
Matthew Wild <mwild1@gmail.com>
parents:
9331
diff
changeset
|
14 |
local expect = { "a", "b", "c" }; |
e894677359e5
util.iterators: join: Work even with only a single iterator in the chain
Matthew Wild <mwild1@gmail.com>
parents:
9331
diff
changeset
|
15 |
local output = {}; |
e894677359e5
util.iterators: join: Work even with only a single iterator in the chain
Matthew Wild <mwild1@gmail.com>
parents:
9331
diff
changeset
|
16 |
for x in iter.join(iter.values({"a", "b", "c"})) do |
e894677359e5
util.iterators: join: Work even with only a single iterator in the chain
Matthew Wild <mwild1@gmail.com>
parents:
9331
diff
changeset
|
17 |
table.insert(output, x); |
e894677359e5
util.iterators: join: Work even with only a single iterator in the chain
Matthew Wild <mwild1@gmail.com>
parents:
9331
diff
changeset
|
18 |
end |
e894677359e5
util.iterators: join: Work even with only a single iterator in the chain
Matthew Wild <mwild1@gmail.com>
parents:
9331
diff
changeset
|
19 |
assert.same(output, expect); |
e894677359e5
util.iterators: join: Work even with only a single iterator in the chain
Matthew Wild <mwild1@gmail.com>
parents:
9331
diff
changeset
|
20 |
end); |
8805
befffddf1b25
Fix wrong tests committed with 7b621a4a2e8d
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
21 |
end); |
9330
f6f1dec164b5
util.iterators: Add sorted_pairs() method
Matthew Wild <mwild1@gmail.com>
parents:
8808
diff
changeset
|
22 |
|
f6f1dec164b5
util.iterators: Add sorted_pairs() method
Matthew Wild <mwild1@gmail.com>
parents:
8808
diff
changeset
|
23 |
describe("sorted_pairs", function () |
f6f1dec164b5
util.iterators: Add sorted_pairs() method
Matthew Wild <mwild1@gmail.com>
parents:
8808
diff
changeset
|
24 |
it("should produce sorted pairs", function () |
f6f1dec164b5
util.iterators: Add sorted_pairs() method
Matthew Wild <mwild1@gmail.com>
parents:
8808
diff
changeset
|
25 |
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
|
26 |
local n, last_key = 0, nil; |
f6f1dec164b5
util.iterators: Add sorted_pairs() method
Matthew Wild <mwild1@gmail.com>
parents:
8808
diff
changeset
|
27 |
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
|
28 |
n = n + 1; |
f6f1dec164b5
util.iterators: Add sorted_pairs() method
Matthew Wild <mwild1@gmail.com>
parents:
8808
diff
changeset
|
29 |
if last_key then |
f6f1dec164b5
util.iterators: Add sorted_pairs() method
Matthew Wild <mwild1@gmail.com>
parents:
8808
diff
changeset
|
30 |
assert(k > last_key, "Expected "..k.." > "..last_key) |
f6f1dec164b5
util.iterators: Add sorted_pairs() method
Matthew Wild <mwild1@gmail.com>
parents:
8808
diff
changeset
|
31 |
end |
9331
a9592107021b
util.iterators tests: Check value matches expected [luacheck]
Matthew Wild <mwild1@gmail.com>
parents:
9330
diff
changeset
|
32 |
assert.equal(orig[k], v); |
9330
f6f1dec164b5
util.iterators: Add sorted_pairs() method
Matthew Wild <mwild1@gmail.com>
parents:
8808
diff
changeset
|
33 |
last_key = k; |
f6f1dec164b5
util.iterators: Add sorted_pairs() method
Matthew Wild <mwild1@gmail.com>
parents:
8808
diff
changeset
|
34 |
end |
f6f1dec164b5
util.iterators: Add sorted_pairs() method
Matthew Wild <mwild1@gmail.com>
parents:
8808
diff
changeset
|
35 |
assert.equal("d", last_key); |
f6f1dec164b5
util.iterators: Add sorted_pairs() method
Matthew Wild <mwild1@gmail.com>
parents:
8808
diff
changeset
|
36 |
assert.equal(4, n); |
f6f1dec164b5
util.iterators: Add sorted_pairs() method
Matthew Wild <mwild1@gmail.com>
parents:
8808
diff
changeset
|
37 |
end); |
f6f1dec164b5
util.iterators: Add sorted_pairs() method
Matthew Wild <mwild1@gmail.com>
parents:
8808
diff
changeset
|
38 |
|
f6f1dec164b5
util.iterators: Add sorted_pairs() method
Matthew Wild <mwild1@gmail.com>
parents:
8808
diff
changeset
|
39 |
it("should allow a custom sort function", function () |
f6f1dec164b5
util.iterators: Add sorted_pairs() method
Matthew Wild <mwild1@gmail.com>
parents:
8808
diff
changeset
|
40 |
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
|
41 |
local n, last_key = 0, nil; |
f6f1dec164b5
util.iterators: Add sorted_pairs() method
Matthew Wild <mwild1@gmail.com>
parents:
8808
diff
changeset
|
42 |
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
|
43 |
n = n + 1; |
f6f1dec164b5
util.iterators: Add sorted_pairs() method
Matthew Wild <mwild1@gmail.com>
parents:
8808
diff
changeset
|
44 |
if last_key then |
f6f1dec164b5
util.iterators: Add sorted_pairs() method
Matthew Wild <mwild1@gmail.com>
parents:
8808
diff
changeset
|
45 |
assert(k < last_key, "Expected "..k.." > "..last_key) |
f6f1dec164b5
util.iterators: Add sorted_pairs() method
Matthew Wild <mwild1@gmail.com>
parents:
8808
diff
changeset
|
46 |
end |
9331
a9592107021b
util.iterators tests: Check value matches expected [luacheck]
Matthew Wild <mwild1@gmail.com>
parents:
9330
diff
changeset
|
47 |
assert.equal(orig[k], v); |
9330
f6f1dec164b5
util.iterators: Add sorted_pairs() method
Matthew Wild <mwild1@gmail.com>
parents:
8808
diff
changeset
|
48 |
last_key = k; |
f6f1dec164b5
util.iterators: Add sorted_pairs() method
Matthew Wild <mwild1@gmail.com>
parents:
8808
diff
changeset
|
49 |
end |
f6f1dec164b5
util.iterators: Add sorted_pairs() method
Matthew Wild <mwild1@gmail.com>
parents:
8808
diff
changeset
|
50 |
assert.equal("a", last_key); |
f6f1dec164b5
util.iterators: Add sorted_pairs() method
Matthew Wild <mwild1@gmail.com>
parents:
8808
diff
changeset
|
51 |
assert.equal(4, n); |
f6f1dec164b5
util.iterators: Add sorted_pairs() method
Matthew Wild <mwild1@gmail.com>
parents:
8808
diff
changeset
|
52 |
end); |
f6f1dec164b5
util.iterators: Add sorted_pairs() method
Matthew Wild <mwild1@gmail.com>
parents:
8808
diff
changeset
|
53 |
end); |
8805
befffddf1b25
Fix wrong tests committed with 7b621a4a2e8d
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
54 |
end); |