author | Matthew Wild <mwild1@gmail.com> |
Mon, 20 Feb 2023 18:10:15 +0000 | |
branch | 0.12 |
changeset 12898 | 0598d822614f |
parent 9331 | a9592107021b |
child 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); |
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); |