author | Matthew Wild <mwild1@gmail.com> |
Thu, 30 Nov 2023 13:42:44 +0000 | |
changeset 13371 | 82513890a1d8 |
parent 13202 | 313c49c7566a |
permissions | -rw-r--r-- |
10982
4d3247a1f6b3
util.human.io: Add brief test of table generation
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
1 |
describe("util.human.io", function () |
4d3247a1f6b3
util.human.io: Add brief test of table generation
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
2 |
local human_io |
4d3247a1f6b3
util.human.io: Add brief test of table generation
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
3 |
setup(function () |
4d3247a1f6b3
util.human.io: Add brief test of table generation
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
4 |
human_io = require "util.human.io"; |
4d3247a1f6b3
util.human.io: Add brief test of table generation
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
5 |
end); |
4d3247a1f6b3
util.human.io: Add brief test of table generation
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
6 |
describe("table", function () |
4d3247a1f6b3
util.human.io: Add brief test of table generation
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
7 |
|
4d3247a1f6b3
util.human.io: Add brief test of table generation
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
8 |
it("alignment works", function () |
4d3247a1f6b3
util.human.io: Add brief test of table generation
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
9 |
local row = human_io.table({ |
4d3247a1f6b3
util.human.io: Add brief test of table generation
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
10 |
{ |
4d3247a1f6b3
util.human.io: Add brief test of table generation
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
11 |
width = 3, |
4d3247a1f6b3
util.human.io: Add brief test of table generation
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
12 |
align = "right" |
4d3247a1f6b3
util.human.io: Add brief test of table generation
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
13 |
}, |
4d3247a1f6b3
util.human.io: Add brief test of table generation
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
14 |
{ |
4d3247a1f6b3
util.human.io: Add brief test of table generation
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
15 |
width = 3, |
4d3247a1f6b3
util.human.io: Add brief test of table generation
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
16 |
}, |
4d3247a1f6b3
util.human.io: Add brief test of table generation
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
17 |
}); |
4d3247a1f6b3
util.human.io: Add brief test of table generation
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
18 |
|
4d3247a1f6b3
util.human.io: Add brief test of table generation
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
19 |
assert.equal(" 1 | . ", row({ 1, "." })); |
4d3247a1f6b3
util.human.io: Add brief test of table generation
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
20 |
assert.equal(" 10 | .. ", row({ 10, ".." })); |
4d3247a1f6b3
util.human.io: Add brief test of table generation
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
21 |
assert.equal("100 | ...", row({ 100, "..." })); |
4d3247a1f6b3
util.human.io: Add brief test of table generation
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
22 |
assert.equal("10… | ..…", row({ 1000, "...." })); |
4d3247a1f6b3
util.human.io: Add brief test of table generation
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
23 |
|
4d3247a1f6b3
util.human.io: Add brief test of table generation
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
24 |
end); |
4d3247a1f6b3
util.human.io: Add brief test of table generation
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
25 |
end); |
11900
93e9f7ae2f9b
util.human.io: Fix cutting of UTF-8 into pieces
Kim Alvefur <zash@zash.se>
parents:
10982
diff
changeset
|
26 |
|
93e9f7ae2f9b
util.human.io: Fix cutting of UTF-8 into pieces
Kim Alvefur <zash@zash.se>
parents:
10982
diff
changeset
|
27 |
describe("ellipsis", function() |
93e9f7ae2f9b
util.human.io: Fix cutting of UTF-8 into pieces
Kim Alvefur <zash@zash.se>
parents:
10982
diff
changeset
|
28 |
it("works", function() |
93e9f7ae2f9b
util.human.io: Fix cutting of UTF-8 into pieces
Kim Alvefur <zash@zash.se>
parents:
10982
diff
changeset
|
29 |
assert.equal("…", human_io.ellipsis("abc", 1)); |
93e9f7ae2f9b
util.human.io: Fix cutting of UTF-8 into pieces
Kim Alvefur <zash@zash.se>
parents:
10982
diff
changeset
|
30 |
assert.equal("a…", human_io.ellipsis("abc", 2)); |
93e9f7ae2f9b
util.human.io: Fix cutting of UTF-8 into pieces
Kim Alvefur <zash@zash.se>
parents:
10982
diff
changeset
|
31 |
assert.equal("abc", human_io.ellipsis("abc", 3)); |
93e9f7ae2f9b
util.human.io: Fix cutting of UTF-8 into pieces
Kim Alvefur <zash@zash.se>
parents:
10982
diff
changeset
|
32 |
|
93e9f7ae2f9b
util.human.io: Fix cutting of UTF-8 into pieces
Kim Alvefur <zash@zash.se>
parents:
10982
diff
changeset
|
33 |
assert.equal("…", human_io.ellipsis("räksmörgås", 1)); |
93e9f7ae2f9b
util.human.io: Fix cutting of UTF-8 into pieces
Kim Alvefur <zash@zash.se>
parents:
10982
diff
changeset
|
34 |
assert.equal("r…", human_io.ellipsis("räksmörgås", 2)); |
93e9f7ae2f9b
util.human.io: Fix cutting of UTF-8 into pieces
Kim Alvefur <zash@zash.se>
parents:
10982
diff
changeset
|
35 |
assert.equal("rä…", human_io.ellipsis("räksmörgås", 3)); |
93e9f7ae2f9b
util.human.io: Fix cutting of UTF-8 into pieces
Kim Alvefur <zash@zash.se>
parents:
10982
diff
changeset
|
36 |
assert.equal("räk…", human_io.ellipsis("räksmörgås", 4)); |
93e9f7ae2f9b
util.human.io: Fix cutting of UTF-8 into pieces
Kim Alvefur <zash@zash.se>
parents:
10982
diff
changeset
|
37 |
assert.equal("räks…", human_io.ellipsis("räksmörgås", 5)); |
93e9f7ae2f9b
util.human.io: Fix cutting of UTF-8 into pieces
Kim Alvefur <zash@zash.se>
parents:
10982
diff
changeset
|
38 |
assert.equal("räksm…", human_io.ellipsis("räksmörgås", 6)); |
93e9f7ae2f9b
util.human.io: Fix cutting of UTF-8 into pieces
Kim Alvefur <zash@zash.se>
parents:
10982
diff
changeset
|
39 |
assert.equal("räksmö…", human_io.ellipsis("räksmörgås", 7)); |
93e9f7ae2f9b
util.human.io: Fix cutting of UTF-8 into pieces
Kim Alvefur <zash@zash.se>
parents:
10982
diff
changeset
|
40 |
assert.equal("räksmör…", human_io.ellipsis("räksmörgås", 8)); |
93e9f7ae2f9b
util.human.io: Fix cutting of UTF-8 into pieces
Kim Alvefur <zash@zash.se>
parents:
10982
diff
changeset
|
41 |
assert.equal("räksmörg…", human_io.ellipsis("räksmörgås", 9)); |
93e9f7ae2f9b
util.human.io: Fix cutting of UTF-8 into pieces
Kim Alvefur <zash@zash.se>
parents:
10982
diff
changeset
|
42 |
assert.equal("räksmörgås", human_io.ellipsis("räksmörgås", 10)); |
93e9f7ae2f9b
util.human.io: Fix cutting of UTF-8 into pieces
Kim Alvefur <zash@zash.se>
parents:
10982
diff
changeset
|
43 |
end); |
93e9f7ae2f9b
util.human.io: Fix cutting of UTF-8 into pieces
Kim Alvefur <zash@zash.se>
parents:
10982
diff
changeset
|
44 |
end); |
13058
f4d7fe919969
util.human.io: Add parse_duration() method to parse a duration string
Matthew Wild <mwild1@gmail.com>
parents:
11900
diff
changeset
|
45 |
|
f4d7fe919969
util.human.io: Add parse_duration() method to parse a duration string
Matthew Wild <mwild1@gmail.com>
parents:
11900
diff
changeset
|
46 |
describe("parse_duration", function () |
f4d7fe919969
util.human.io: Add parse_duration() method to parse a duration string
Matthew Wild <mwild1@gmail.com>
parents:
11900
diff
changeset
|
47 |
local function test(expected, duration) |
13201
6beec4de8e63
util.human.io: Include relevant arguments in test messages
Kim Alvefur <zash@zash.se>
parents:
13200
diff
changeset
|
48 |
return assert.equal(expected, human_io.parse_duration(duration), ("%q -> %d"):format(duration, expected)); |
13058
f4d7fe919969
util.human.io: Add parse_duration() method to parse a duration string
Matthew Wild <mwild1@gmail.com>
parents:
11900
diff
changeset
|
49 |
end |
13371
82513890a1d8
util.human.io: Don't accept ambiguous durations by default
Matthew Wild <mwild1@gmail.com>
parents:
13202
diff
changeset
|
50 |
local function should_fail(duration) |
82513890a1d8
util.human.io: Don't accept ambiguous durations by default
Matthew Wild <mwild1@gmail.com>
parents:
13202
diff
changeset
|
51 |
assert.is_nil(human_io.parse_duration(duration), "invalid duration should fail: %q"); |
82513890a1d8
util.human.io: Don't accept ambiguous durations by default
Matthew Wild <mwild1@gmail.com>
parents:
13202
diff
changeset
|
52 |
end |
82513890a1d8
util.human.io: Don't accept ambiguous durations by default
Matthew Wild <mwild1@gmail.com>
parents:
13202
diff
changeset
|
53 |
it("works", function () |
82513890a1d8
util.human.io: Don't accept ambiguous durations by default
Matthew Wild <mwild1@gmail.com>
parents:
13202
diff
changeset
|
54 |
test(1, "1s"); |
82513890a1d8
util.human.io: Don't accept ambiguous durations by default
Matthew Wild <mwild1@gmail.com>
parents:
13202
diff
changeset
|
55 |
test(60, "1min"); |
82513890a1d8
util.human.io: Don't accept ambiguous durations by default
Matthew Wild <mwild1@gmail.com>
parents:
13202
diff
changeset
|
56 |
test(60, "1 min"); |
82513890a1d8
util.human.io: Don't accept ambiguous durations by default
Matthew Wild <mwild1@gmail.com>
parents:
13202
diff
changeset
|
57 |
test(60, "1 minute"); |
82513890a1d8
util.human.io: Don't accept ambiguous durations by default
Matthew Wild <mwild1@gmail.com>
parents:
13202
diff
changeset
|
58 |
test(120, "2min"); |
82513890a1d8
util.human.io: Don't accept ambiguous durations by default
Matthew Wild <mwild1@gmail.com>
parents:
13202
diff
changeset
|
59 |
test(7200, "2h"); |
82513890a1d8
util.human.io: Don't accept ambiguous durations by default
Matthew Wild <mwild1@gmail.com>
parents:
13202
diff
changeset
|
60 |
test(7200, "2 hours"); |
82513890a1d8
util.human.io: Don't accept ambiguous durations by default
Matthew Wild <mwild1@gmail.com>
parents:
13202
diff
changeset
|
61 |
test(86400, "1d"); |
82513890a1d8
util.human.io: Don't accept ambiguous durations by default
Matthew Wild <mwild1@gmail.com>
parents:
13202
diff
changeset
|
62 |
test(604800, "1w"); |
82513890a1d8
util.human.io: Don't accept ambiguous durations by default
Matthew Wild <mwild1@gmail.com>
parents:
13202
diff
changeset
|
63 |
test(604800, "1week"); |
82513890a1d8
util.human.io: Don't accept ambiguous durations by default
Matthew Wild <mwild1@gmail.com>
parents:
13202
diff
changeset
|
64 |
test(1814400, "3 weeks"); |
82513890a1d8
util.human.io: Don't accept ambiguous durations by default
Matthew Wild <mwild1@gmail.com>
parents:
13202
diff
changeset
|
65 |
test(2678400, "1month"); |
82513890a1d8
util.human.io: Don't accept ambiguous durations by default
Matthew Wild <mwild1@gmail.com>
parents:
13202
diff
changeset
|
66 |
test(2678400, "1 month"); |
82513890a1d8
util.human.io: Don't accept ambiguous durations by default
Matthew Wild <mwild1@gmail.com>
parents:
13202
diff
changeset
|
67 |
test(31536000, "365 days"); |
82513890a1d8
util.human.io: Don't accept ambiguous durations by default
Matthew Wild <mwild1@gmail.com>
parents:
13202
diff
changeset
|
68 |
test(31556952, "1 year"); |
82513890a1d8
util.human.io: Don't accept ambiguous durations by default
Matthew Wild <mwild1@gmail.com>
parents:
13202
diff
changeset
|
69 |
|
82513890a1d8
util.human.io: Don't accept ambiguous durations by default
Matthew Wild <mwild1@gmail.com>
parents:
13202
diff
changeset
|
70 |
should_fail("two weeks"); |
82513890a1d8
util.human.io: Don't accept ambiguous durations by default
Matthew Wild <mwild1@gmail.com>
parents:
13202
diff
changeset
|
71 |
should_fail("1m"); |
82513890a1d8
util.human.io: Don't accept ambiguous durations by default
Matthew Wild <mwild1@gmail.com>
parents:
13202
diff
changeset
|
72 |
should_fail("1mi"); |
82513890a1d8
util.human.io: Don't accept ambiguous durations by default
Matthew Wild <mwild1@gmail.com>
parents:
13202
diff
changeset
|
73 |
should_fail("1mo"); |
82513890a1d8
util.human.io: Don't accept ambiguous durations by default
Matthew Wild <mwild1@gmail.com>
parents:
13202
diff
changeset
|
74 |
end); |
82513890a1d8
util.human.io: Don't accept ambiguous durations by default
Matthew Wild <mwild1@gmail.com>
parents:
13202
diff
changeset
|
75 |
end); |
82513890a1d8
util.human.io: Don't accept ambiguous durations by default
Matthew Wild <mwild1@gmail.com>
parents:
13202
diff
changeset
|
76 |
|
82513890a1d8
util.human.io: Don't accept ambiguous durations by default
Matthew Wild <mwild1@gmail.com>
parents:
13202
diff
changeset
|
77 |
describe("parse_duration_lax", function () |
82513890a1d8
util.human.io: Don't accept ambiguous durations by default
Matthew Wild <mwild1@gmail.com>
parents:
13202
diff
changeset
|
78 |
local function test(expected, duration) |
82513890a1d8
util.human.io: Don't accept ambiguous durations by default
Matthew Wild <mwild1@gmail.com>
parents:
13202
diff
changeset
|
79 |
return assert.equal(expected, human_io.parse_duration_lax(duration), ("%q -> %d"):format(duration, expected)); |
82513890a1d8
util.human.io: Don't accept ambiguous durations by default
Matthew Wild <mwild1@gmail.com>
parents:
13202
diff
changeset
|
80 |
end |
13058
f4d7fe919969
util.human.io: Add parse_duration() method to parse a duration string
Matthew Wild <mwild1@gmail.com>
parents:
11900
diff
changeset
|
81 |
it("works", function () |
f4d7fe919969
util.human.io: Add parse_duration() method to parse a duration string
Matthew Wild <mwild1@gmail.com>
parents:
11900
diff
changeset
|
82 |
test(1, "1s"); |
f4d7fe919969
util.human.io: Add parse_duration() method to parse a duration string
Matthew Wild <mwild1@gmail.com>
parents:
11900
diff
changeset
|
83 |
test(60, "1mi"); |
f4d7fe919969
util.human.io: Add parse_duration() method to parse a duration string
Matthew Wild <mwild1@gmail.com>
parents:
11900
diff
changeset
|
84 |
test(60, "1min"); |
f4d7fe919969
util.human.io: Add parse_duration() method to parse a duration string
Matthew Wild <mwild1@gmail.com>
parents:
11900
diff
changeset
|
85 |
test(60, "1 min"); |
f4d7fe919969
util.human.io: Add parse_duration() method to parse a duration string
Matthew Wild <mwild1@gmail.com>
parents:
11900
diff
changeset
|
86 |
test(60, "1 minute"); |
f4d7fe919969
util.human.io: Add parse_duration() method to parse a duration string
Matthew Wild <mwild1@gmail.com>
parents:
11900
diff
changeset
|
87 |
test(120, "2min"); |
13202
313c49c7566a
util.human.io: Add tests for parse_duration() (some failing)
Kim Alvefur <zash@zash.se>
parents:
13201
diff
changeset
|
88 |
test(7200, "2h"); |
313c49c7566a
util.human.io: Add tests for parse_duration() (some failing)
Kim Alvefur <zash@zash.se>
parents:
13201
diff
changeset
|
89 |
test(7200, "2 hours"); |
13058
f4d7fe919969
util.human.io: Add parse_duration() method to parse a duration string
Matthew Wild <mwild1@gmail.com>
parents:
11900
diff
changeset
|
90 |
test(86400, "1d"); |
13202
313c49c7566a
util.human.io: Add tests for parse_duration() (some failing)
Kim Alvefur <zash@zash.se>
parents:
13201
diff
changeset
|
91 |
test(604800, "1w"); |
313c49c7566a
util.human.io: Add tests for parse_duration() (some failing)
Kim Alvefur <zash@zash.se>
parents:
13201
diff
changeset
|
92 |
test(604800, "1week"); |
313c49c7566a
util.human.io: Add tests for parse_duration() (some failing)
Kim Alvefur <zash@zash.se>
parents:
13201
diff
changeset
|
93 |
test(1814400, "3 weeks"); |
13058
f4d7fe919969
util.human.io: Add parse_duration() method to parse a duration string
Matthew Wild <mwild1@gmail.com>
parents:
11900
diff
changeset
|
94 |
test(2678400, "1m"); |
13202
313c49c7566a
util.human.io: Add tests for parse_duration() (some failing)
Kim Alvefur <zash@zash.se>
parents:
13201
diff
changeset
|
95 |
test(2678400, "1mo"); |
13058
f4d7fe919969
util.human.io: Add parse_duration() method to parse a duration string
Matthew Wild <mwild1@gmail.com>
parents:
11900
diff
changeset
|
96 |
test(2678400, "1month"); |
f4d7fe919969
util.human.io: Add parse_duration() method to parse a duration string
Matthew Wild <mwild1@gmail.com>
parents:
11900
diff
changeset
|
97 |
test(2678400, "1 month"); |
13202
313c49c7566a
util.human.io: Add tests for parse_duration() (some failing)
Kim Alvefur <zash@zash.se>
parents:
13201
diff
changeset
|
98 |
test(31536000, "365 days"); |
313c49c7566a
util.human.io: Add tests for parse_duration() (some failing)
Kim Alvefur <zash@zash.se>
parents:
13201
diff
changeset
|
99 |
test(31556952, "1 year"); |
13371
82513890a1d8
util.human.io: Don't accept ambiguous durations by default
Matthew Wild <mwild1@gmail.com>
parents:
13202
diff
changeset
|
100 |
return assert.is_nil(human_io.parse_duration_lax("two weeks"), "\"2 weeks\" -> nil"); |
13058
f4d7fe919969
util.human.io: Add parse_duration() method to parse a duration string
Matthew Wild <mwild1@gmail.com>
parents:
11900
diff
changeset
|
101 |
end); |
f4d7fe919969
util.human.io: Add parse_duration() method to parse a duration string
Matthew Wild <mwild1@gmail.com>
parents:
11900
diff
changeset
|
102 |
end); |
10982
4d3247a1f6b3
util.human.io: Add brief test of table generation
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
103 |
end); |
4d3247a1f6b3
util.human.io: Add brief test of table generation
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
104 |
|
4d3247a1f6b3
util.human.io: Add brief test of table generation
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
105 |
|
4d3247a1f6b3
util.human.io: Add brief test of table generation
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
106 |