author | Kim Alvefur <zash@zash.se> |
Sat, 11 Dec 2021 13:39:58 +0100 | |
changeset 12037 | 161f8268c4b3 |
parent 12036 | 3db09eb4c43b |
child 12038 | ee94ac51b2dd |
permissions | -rw-r--r-- |
8386 | 1 |
local format = require "util.format".format; |
2 |
||
3 |
describe("util.format", function() |
|
4 |
describe("#format()", function() |
|
5 |
it("should work", function() |
|
8622
b96b0141cb61
util.format: Fix tests to have expected value first
Kim Alvefur <zash@zash.se>
parents:
8386
diff
changeset
|
6 |
assert.equal("hello", format("%s", "hello")); |
11648
fc1b8fe94d04
util.format: Change formatting of nil values to avoid looking like XML
Kim Alvefur <zash@zash.se>
parents:
11642
diff
changeset
|
7 |
assert.equal("(nil)", format("%s")); |
fc1b8fe94d04
util.format: Change formatting of nil values to avoid looking like XML
Kim Alvefur <zash@zash.se>
parents:
11642
diff
changeset
|
8 |
assert.equal("(nil)", format("%d")); |
fc1b8fe94d04
util.format: Change formatting of nil values to avoid looking like XML
Kim Alvefur <zash@zash.se>
parents:
11642
diff
changeset
|
9 |
assert.equal("(nil)", format("%q")); |
fc1b8fe94d04
util.format: Change formatting of nil values to avoid looking like XML
Kim Alvefur <zash@zash.se>
parents:
11642
diff
changeset
|
10 |
assert.equal(" [(nil)]", format("", nil)); |
8622
b96b0141cb61
util.format: Fix tests to have expected value first
Kim Alvefur <zash@zash.se>
parents:
8386
diff
changeset
|
11 |
assert.equal("true", format("%s", true)); |
b96b0141cb61
util.format: Fix tests to have expected value first
Kim Alvefur <zash@zash.se>
parents:
8386
diff
changeset
|
12 |
assert.equal("[true]", format("%d", true)); |
b96b0141cb61
util.format: Fix tests to have expected value first
Kim Alvefur <zash@zash.se>
parents:
8386
diff
changeset
|
13 |
assert.equal("% [true]", format("%%", true)); |
9697
6ed0d6224d64
util.format: Serialize values for the %q format
Kim Alvefur <zash@zash.se>
parents:
9660
diff
changeset
|
14 |
assert.equal("{ }", format("%q", { })); |
10038
4fca92d60040
util.format: Handle formats expecting an integer in Lua 5.3+ (fixes #1371)
Kim Alvefur <zash@zash.se>
parents:
9697
diff
changeset
|
15 |
assert.equal("[1.5]", format("%d", 1.5)); |
10039
386f085820e6
util.format: Handle integer formats the same way on Lua versions without integer support
Kim Alvefur <zash@zash.se>
parents:
10038
diff
changeset
|
16 |
assert.equal("[7.3786976294838e+19]", format("%d", 73786976294838206464)); |
8386 | 17 |
end); |
11642
5f4a657136bc
util.format: Escape ASCII control characters in output
Kim Alvefur <zash@zash.se>
parents:
10039
diff
changeset
|
18 |
|
5f4a657136bc
util.format: Escape ASCII control characters in output
Kim Alvefur <zash@zash.se>
parents:
10039
diff
changeset
|
19 |
it("escapes ascii control stuff", function () |
5f4a657136bc
util.format: Escape ASCII control characters in output
Kim Alvefur <zash@zash.se>
parents:
10039
diff
changeset
|
20 |
assert.equal("␁", format("%s", "\1")); |
12036
3db09eb4c43b
util.format: Ensure sanitation of strings passed to wrong format
Kim Alvefur <zash@zash.se>
parents:
12035
diff
changeset
|
21 |
assert.equal("[␁]", format("%d", "\1")); |
11642
5f4a657136bc
util.format: Escape ASCII control characters in output
Kim Alvefur <zash@zash.se>
parents:
10039
diff
changeset
|
22 |
end); |
5f4a657136bc
util.format: Escape ASCII control characters in output
Kim Alvefur <zash@zash.se>
parents:
10039
diff
changeset
|
23 |
|
12035
87bc26f23d9b
util.format: Escape invalid UTF-8 by passing trough serialization
Kim Alvefur <zash@zash.se>
parents:
11648
diff
changeset
|
24 |
it("escapes invalid UTF-8", function () |
87bc26f23d9b
util.format: Escape invalid UTF-8 by passing trough serialization
Kim Alvefur <zash@zash.se>
parents:
11648
diff
changeset
|
25 |
assert.equal("\"Hello w\\195rld\"", format("%s", "Hello w\195rld")); |
87bc26f23d9b
util.format: Escape invalid UTF-8 by passing trough serialization
Kim Alvefur <zash@zash.se>
parents:
11648
diff
changeset
|
26 |
end); |
87bc26f23d9b
util.format: Escape invalid UTF-8 by passing trough serialization
Kim Alvefur <zash@zash.se>
parents:
11648
diff
changeset
|
27 |
|
12037
161f8268c4b3
util.format: Also handle the %p format added in Lua 5.4
Kim Alvefur <zash@zash.se>
parents:
12036
diff
changeset
|
28 |
if _VERSION >= "Lua 5.4" then |
161f8268c4b3
util.format: Also handle the %p format added in Lua 5.4
Kim Alvefur <zash@zash.se>
parents:
12036
diff
changeset
|
29 |
it("handles %p formats", function () |
161f8268c4b3
util.format: Also handle the %p format added in Lua 5.4
Kim Alvefur <zash@zash.se>
parents:
12036
diff
changeset
|
30 |
assert.matches("a 0x%x+ b", format("%s %p %s", "a", {}, "b")); |
161f8268c4b3
util.format: Also handle the %p format added in Lua 5.4
Kim Alvefur <zash@zash.se>
parents:
12036
diff
changeset
|
31 |
end) |
161f8268c4b3
util.format: Also handle the %p format added in Lua 5.4
Kim Alvefur <zash@zash.se>
parents:
12036
diff
changeset
|
32 |
else |
161f8268c4b3
util.format: Also handle the %p format added in Lua 5.4
Kim Alvefur <zash@zash.se>
parents:
12036
diff
changeset
|
33 |
it("does something with %p formats", function () |
161f8268c4b3
util.format: Also handle the %p format added in Lua 5.4
Kim Alvefur <zash@zash.se>
parents:
12036
diff
changeset
|
34 |
assert.string(format("%p", {})); |
161f8268c4b3
util.format: Also handle the %p format added in Lua 5.4
Kim Alvefur <zash@zash.se>
parents:
12036
diff
changeset
|
35 |
end) |
161f8268c4b3
util.format: Also handle the %p format added in Lua 5.4
Kim Alvefur <zash@zash.se>
parents:
12036
diff
changeset
|
36 |
end |
8386 | 37 |
end); |
38 |
end); |