author | Matthew Wild <mwild1@gmail.com> |
Sun, 17 Mar 2024 10:10:24 +0000 | |
changeset 13464 | a688947fab1e |
parent 11312 | 5d4d90d1eabb |
permissions | -rw-r--r-- |
9741
3d6f5b20cca6
spec: Stub tests for util.interpolation
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
1 |
local template = [[ |
10354 | 2 |
{greet!?Hi}, {name?world}! |
9741
3d6f5b20cca6
spec: Stub tests for util.interpolation
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
3 |
]]; |
3d6f5b20cca6
spec: Stub tests for util.interpolation
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
4 |
local expect1 = [[ |
3d6f5b20cca6
spec: Stub tests for util.interpolation
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
5 |
Hello, WORLD! |
3d6f5b20cca6
spec: Stub tests for util.interpolation
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
6 |
]]; |
3d6f5b20cca6
spec: Stub tests for util.interpolation
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
7 |
local expect2 = [[ |
3d6f5b20cca6
spec: Stub tests for util.interpolation
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
8 |
Hello, world! |
3d6f5b20cca6
spec: Stub tests for util.interpolation
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
9 |
]]; |
10354 | 10 |
local expect3 = [[ |
11 |
Hi, YOU! |
|
12 |
]]; |
|
10355
72b23c5f74fb
util.interpolation: Test array syntax
Kim Alvefur <zash@zash.se>
parents:
10354
diff
changeset
|
13 |
local template_array = [[ |
72b23c5f74fb
util.interpolation: Test array syntax
Kim Alvefur <zash@zash.se>
parents:
10354
diff
changeset
|
14 |
{foo#{idx}. {item} |
72b23c5f74fb
util.interpolation: Test array syntax
Kim Alvefur <zash@zash.se>
parents:
10354
diff
changeset
|
15 |
}]] |
72b23c5f74fb
util.interpolation: Test array syntax
Kim Alvefur <zash@zash.se>
parents:
10354
diff
changeset
|
16 |
local expect_array = [[ |
72b23c5f74fb
util.interpolation: Test array syntax
Kim Alvefur <zash@zash.se>
parents:
10354
diff
changeset
|
17 |
1. HELLO |
72b23c5f74fb
util.interpolation: Test array syntax
Kim Alvefur <zash@zash.se>
parents:
10354
diff
changeset
|
18 |
2. WORLD |
72b23c5f74fb
util.interpolation: Test array syntax
Kim Alvefur <zash@zash.se>
parents:
10354
diff
changeset
|
19 |
]] |
10416
b788b5257945
util.interpolation: Test template filters
Kim Alvefur <zash@zash.se>
parents:
10356
diff
changeset
|
20 |
local template_func_pipe = [[ |
b788b5257945
util.interpolation: Test template filters
Kim Alvefur <zash@zash.se>
parents:
10356
diff
changeset
|
21 |
{foo|sort#{idx}. {item} |
b788b5257945
util.interpolation: Test template filters
Kim Alvefur <zash@zash.se>
parents:
10356
diff
changeset
|
22 |
}]] |
b788b5257945
util.interpolation: Test template filters
Kim Alvefur <zash@zash.se>
parents:
10356
diff
changeset
|
23 |
local expect_func_pipe = [[ |
b788b5257945
util.interpolation: Test template filters
Kim Alvefur <zash@zash.se>
parents:
10356
diff
changeset
|
24 |
1. A |
b788b5257945
util.interpolation: Test template filters
Kim Alvefur <zash@zash.se>
parents:
10356
diff
changeset
|
25 |
2. B |
b788b5257945
util.interpolation: Test template filters
Kim Alvefur <zash@zash.se>
parents:
10356
diff
changeset
|
26 |
3. C |
b788b5257945
util.interpolation: Test template filters
Kim Alvefur <zash@zash.se>
parents:
10356
diff
changeset
|
27 |
4. D |
b788b5257945
util.interpolation: Test template filters
Kim Alvefur <zash@zash.se>
parents:
10356
diff
changeset
|
28 |
]] |
10356
dc1e6c2fb50a
util.interpolation: Test map syntax
Kim Alvefur <zash@zash.se>
parents:
10355
diff
changeset
|
29 |
local template_map = [[ |
dc1e6c2fb50a
util.interpolation: Test map syntax
Kim Alvefur <zash@zash.se>
parents:
10355
diff
changeset
|
30 |
{foo%{idx}: {item!} |
dc1e6c2fb50a
util.interpolation: Test map syntax
Kim Alvefur <zash@zash.se>
parents:
10355
diff
changeset
|
31 |
}]] |
dc1e6c2fb50a
util.interpolation: Test map syntax
Kim Alvefur <zash@zash.se>
parents:
10355
diff
changeset
|
32 |
local expect_map = [[ |
dc1e6c2fb50a
util.interpolation: Test map syntax
Kim Alvefur <zash@zash.se>
parents:
10355
diff
changeset
|
33 |
FOO: bar |
dc1e6c2fb50a
util.interpolation: Test map syntax
Kim Alvefur <zash@zash.se>
parents:
10355
diff
changeset
|
34 |
]] |
11068
af1e3b7d9ea3
util.interpolation: Add '~' as the opposite of '&' (render sub-block if falsy)
Matthew Wild <mwild1@gmail.com>
parents:
10417
diff
changeset
|
35 |
local template_not = [[ |
11069
95eb1a981ef6
util.interpolation: Add test for ~ when value is false (not just nil)
Matthew Wild <mwild1@gmail.com>
parents:
11068
diff
changeset
|
36 |
{thing~Thing is falsy}{thing&Thing is truthy} |
11068
af1e3b7d9ea3
util.interpolation: Add '~' as the opposite of '&' (render sub-block if falsy)
Matthew Wild <mwild1@gmail.com>
parents:
10417
diff
changeset
|
37 |
]] |
af1e3b7d9ea3
util.interpolation: Add '~' as the opposite of '&' (render sub-block if falsy)
Matthew Wild <mwild1@gmail.com>
parents:
10417
diff
changeset
|
38 |
local expect_not_true = [[ |
11069
95eb1a981ef6
util.interpolation: Add test for ~ when value is false (not just nil)
Matthew Wild <mwild1@gmail.com>
parents:
11068
diff
changeset
|
39 |
Thing is truthy |
11068
af1e3b7d9ea3
util.interpolation: Add '~' as the opposite of '&' (render sub-block if falsy)
Matthew Wild <mwild1@gmail.com>
parents:
10417
diff
changeset
|
40 |
]] |
af1e3b7d9ea3
util.interpolation: Add '~' as the opposite of '&' (render sub-block if falsy)
Matthew Wild <mwild1@gmail.com>
parents:
10417
diff
changeset
|
41 |
local expect_not_nil = [[ |
11069
95eb1a981ef6
util.interpolation: Add test for ~ when value is false (not just nil)
Matthew Wild <mwild1@gmail.com>
parents:
11068
diff
changeset
|
42 |
Thing is falsy |
95eb1a981ef6
util.interpolation: Add test for ~ when value is false (not just nil)
Matthew Wild <mwild1@gmail.com>
parents:
11068
diff
changeset
|
43 |
]] |
95eb1a981ef6
util.interpolation: Add test for ~ when value is false (not just nil)
Matthew Wild <mwild1@gmail.com>
parents:
11068
diff
changeset
|
44 |
local expect_not_false = [[ |
95eb1a981ef6
util.interpolation: Add test for ~ when value is false (not just nil)
Matthew Wild <mwild1@gmail.com>
parents:
11068
diff
changeset
|
45 |
Thing is falsy |
11068
af1e3b7d9ea3
util.interpolation: Add '~' as the opposite of '&' (render sub-block if falsy)
Matthew Wild <mwild1@gmail.com>
parents:
10417
diff
changeset
|
46 |
]] |
9741
3d6f5b20cca6
spec: Stub tests for util.interpolation
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
47 |
describe("util.interpolation", function () |
3d6f5b20cca6
spec: Stub tests for util.interpolation
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
48 |
it("renders", function () |
10416
b788b5257945
util.interpolation: Test template filters
Kim Alvefur <zash@zash.se>
parents:
10356
diff
changeset
|
49 |
local render = require "util.interpolation".new("%b{}", string.upper, { sort = function (t) table.sort(t) return t end }); |
9741
3d6f5b20cca6
spec: Stub tests for util.interpolation
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
50 |
assert.equal(expect1, render(template, { greet = "Hello", name = "world" })); |
3d6f5b20cca6
spec: Stub tests for util.interpolation
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
51 |
assert.equal(expect2, render(template, { greet = "Hello" })); |
10354 | 52 |
assert.equal(expect3, render(template, { name = "you" })); |
10355
72b23c5f74fb
util.interpolation: Test array syntax
Kim Alvefur <zash@zash.se>
parents:
10354
diff
changeset
|
53 |
assert.equal(expect_array, render(template_array, { foo = { "Hello", "World" } })); |
10416
b788b5257945
util.interpolation: Test template filters
Kim Alvefur <zash@zash.se>
parents:
10356
diff
changeset
|
54 |
assert.equal(expect_func_pipe, render(template_func_pipe, { foo = { "c", "a", "d", "b", } })); |
10417
604096ce2f82
util.interpolation: Add commented test case for passing nil to filter
Kim Alvefur <zash@zash.se>
parents:
10416
diff
changeset
|
55 |
-- assert.equal("", render(template_func_pipe, { foo = nil })); -- FIXME |
10356
dc1e6c2fb50a
util.interpolation: Test map syntax
Kim Alvefur <zash@zash.se>
parents:
10355
diff
changeset
|
56 |
assert.equal(expect_map, render(template_map, { foo = { foo = "bar" } })); |
11068
af1e3b7d9ea3
util.interpolation: Add '~' as the opposite of '&' (render sub-block if falsy)
Matthew Wild <mwild1@gmail.com>
parents:
10417
diff
changeset
|
57 |
assert.equal(expect_not_true, render(template_not, { thing = true })); |
af1e3b7d9ea3
util.interpolation: Add '~' as the opposite of '&' (render sub-block if falsy)
Matthew Wild <mwild1@gmail.com>
parents:
10417
diff
changeset
|
58 |
assert.equal(expect_not_nil, render(template_not, { thing = nil })); |
11069
95eb1a981ef6
util.interpolation: Add test for ~ when value is false (not just nil)
Matthew Wild <mwild1@gmail.com>
parents:
11068
diff
changeset
|
59 |
assert.equal(expect_not_false, render(template_not, { thing = false })); |
9741
3d6f5b20cca6
spec: Stub tests for util.interpolation
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
60 |
end); |
11312
5d4d90d1eabb
util.interpolation: Add test for #1623
Kim Alvefur <zash@zash.se>
parents:
11069
diff
changeset
|
61 |
it("fixes #1623", function () |
5d4d90d1eabb
util.interpolation: Add test for #1623
Kim Alvefur <zash@zash.se>
parents:
11069
diff
changeset
|
62 |
local render = require "util.interpolation".new("%b{}", string.upper, { x = string.lower }); |
5d4d90d1eabb
util.interpolation: Add test for #1623
Kim Alvefur <zash@zash.se>
parents:
11069
diff
changeset
|
63 |
assert.equal("", render("{foo?}", { })) |
5d4d90d1eabb
util.interpolation: Add test for #1623
Kim Alvefur <zash@zash.se>
parents:
11069
diff
changeset
|
64 |
assert.equal("", render("{foo|x?}", { })) |
5d4d90d1eabb
util.interpolation: Add test for #1623
Kim Alvefur <zash@zash.se>
parents:
11069
diff
changeset
|
65 |
end); |
9741
3d6f5b20cca6
spec: Stub tests for util.interpolation
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
66 |
end); |