Mercurial > prosody-hg
annotate spec/util_human_io_spec.lua @ 14217:7eb0e47418ab 13.0
util.human.io: Add simple version comparison
This is a small helper function that compares version string (it can be passed
to table.sort() as a comparator).
Full version sorts (e.g. semver, and natural/alphanumeric sort in general) are
more complex, and I would like to eventually support those. But this is a
stable branch and we don't need it for anything just yet.
Regarding justification for the stable branch:
The function is being committed with extensive tests, and isn't currently used
anywhere. The plan is to use it in an upcoming update of how TLS profiles are
configured, but the inputs in that case will be fixed (meaning that the risk
of breakage is lower than if we were running it against arbitrary data).
| author | Matthew Wild <mwild1@gmail.com> |
|---|---|
| date | Fri, 12 Jun 2026 11:38:39 +0100 |
| parents | 82513890a1d8 |
| children |
| rev | line source |
|---|---|
|
10978
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); |
|
11896
93e9f7ae2f9b
util.human.io: Fix cutting of UTF-8 into pieces
Kim Alvefur <zash@zash.se>
parents:
10978
diff
changeset
|
26 |
|
93e9f7ae2f9b
util.human.io: Fix cutting of UTF-8 into pieces
Kim Alvefur <zash@zash.se>
parents:
10978
diff
changeset
|
27 describe("ellipsis", function() |
|
93e9f7ae2f9b
util.human.io: Fix cutting of UTF-8 into pieces
Kim Alvefur <zash@zash.se>
parents:
10978
diff
changeset
|
28 it("works", function() |
|
93e9f7ae2f9b
util.human.io: Fix cutting of UTF-8 into pieces
Kim Alvefur <zash@zash.se>
parents:
10978
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:
10978
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:
10978
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:
10978
diff
changeset
|
32 |
|
93e9f7ae2f9b
util.human.io: Fix cutting of UTF-8 into pieces
Kim Alvefur <zash@zash.se>
parents:
10978
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:
10978
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:
10978
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:
10978
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:
10978
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:
10978
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:
10978
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:
10978
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:
10978
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:
10978
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:
10978
diff
changeset
|
43 end); |
|
93e9f7ae2f9b
util.human.io: Fix cutting of UTF-8 into pieces
Kim Alvefur <zash@zash.se>
parents:
10978
diff
changeset
|
44 end); |
|
13054
f4d7fe919969
util.human.io: Add parse_duration() method to parse a duration string
Matthew Wild <mwild1@gmail.com>
parents:
11896
diff
changeset
|
45 |
|
f4d7fe919969
util.human.io: Add parse_duration() method to parse a duration string
Matthew Wild <mwild1@gmail.com>
parents:
11896
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:
11896
diff
changeset
|
47 local function test(expected, duration) |
|
13197
6beec4de8e63
util.human.io: Include relevant arguments in test messages
Kim Alvefur <zash@zash.se>
parents:
13196
diff
changeset
|
48 return assert.equal(expected, human_io.parse_duration(duration), ("%q -> %d"):format(duration, expected)); |
|
13054
f4d7fe919969
util.human.io: Add parse_duration() method to parse a duration string
Matthew Wild <mwild1@gmail.com>
parents:
11896
diff
changeset
|
49 end |
|
13367
82513890a1d8
util.human.io: Don't accept ambiguous durations by default
Matthew Wild <mwild1@gmail.com>
parents:
13198
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:
13198
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:
13198
diff
changeset
|
52 end |
|
82513890a1d8
util.human.io: Don't accept ambiguous durations by default
Matthew Wild <mwild1@gmail.com>
parents:
13198
diff
changeset
|
53 it("works", function () |
|
82513890a1d8
util.human.io: Don't accept ambiguous durations by default
Matthew Wild <mwild1@gmail.com>
parents:
13198
diff
changeset
|
54 test(1, "1s"); |
|
82513890a1d8
util.human.io: Don't accept ambiguous durations by default
Matthew Wild <mwild1@gmail.com>
parents:
13198
diff
changeset
|
55 test(60, "1min"); |
|
82513890a1d8
util.human.io: Don't accept ambiguous durations by default
Matthew Wild <mwild1@gmail.com>
parents:
13198
diff
changeset
|
56 test(60, "1 min"); |
|
82513890a1d8
util.human.io: Don't accept ambiguous durations by default
Matthew Wild <mwild1@gmail.com>
parents:
13198
diff
changeset
|
57 test(60, "1 minute"); |
|
82513890a1d8
util.human.io: Don't accept ambiguous durations by default
Matthew Wild <mwild1@gmail.com>
parents:
13198
diff
changeset
|
58 test(120, "2min"); |
|
82513890a1d8
util.human.io: Don't accept ambiguous durations by default
Matthew Wild <mwild1@gmail.com>
parents:
13198
diff
changeset
|
59 test(7200, "2h"); |
|
82513890a1d8
util.human.io: Don't accept ambiguous durations by default
Matthew Wild <mwild1@gmail.com>
parents:
13198
diff
changeset
|
60 test(7200, "2 hours"); |
|
82513890a1d8
util.human.io: Don't accept ambiguous durations by default
Matthew Wild <mwild1@gmail.com>
parents:
13198
diff
changeset
|
61 test(86400, "1d"); |
|
82513890a1d8
util.human.io: Don't accept ambiguous durations by default
Matthew Wild <mwild1@gmail.com>
parents:
13198
diff
changeset
|
62 test(604800, "1w"); |
|
82513890a1d8
util.human.io: Don't accept ambiguous durations by default
Matthew Wild <mwild1@gmail.com>
parents:
13198
diff
changeset
|
63 test(604800, "1week"); |
|
82513890a1d8
util.human.io: Don't accept ambiguous durations by default
Matthew Wild <mwild1@gmail.com>
parents:
13198
diff
changeset
|
64 test(1814400, "3 weeks"); |
|
82513890a1d8
util.human.io: Don't accept ambiguous durations by default
Matthew Wild <mwild1@gmail.com>
parents:
13198
diff
changeset
|
65 test(2678400, "1month"); |
|
82513890a1d8
util.human.io: Don't accept ambiguous durations by default
Matthew Wild <mwild1@gmail.com>
parents:
13198
diff
changeset
|
66 test(2678400, "1 month"); |
|
82513890a1d8
util.human.io: Don't accept ambiguous durations by default
Matthew Wild <mwild1@gmail.com>
parents:
13198
diff
changeset
|
67 test(31536000, "365 days"); |
|
82513890a1d8
util.human.io: Don't accept ambiguous durations by default
Matthew Wild <mwild1@gmail.com>
parents:
13198
diff
changeset
|
68 test(31556952, "1 year"); |
|
82513890a1d8
util.human.io: Don't accept ambiguous durations by default
Matthew Wild <mwild1@gmail.com>
parents:
13198
diff
changeset
|
69 |
|
82513890a1d8
util.human.io: Don't accept ambiguous durations by default
Matthew Wild <mwild1@gmail.com>
parents:
13198
diff
changeset
|
70 should_fail("two weeks"); |
|
82513890a1d8
util.human.io: Don't accept ambiguous durations by default
Matthew Wild <mwild1@gmail.com>
parents:
13198
diff
changeset
|
71 should_fail("1m"); |
|
82513890a1d8
util.human.io: Don't accept ambiguous durations by default
Matthew Wild <mwild1@gmail.com>
parents:
13198
diff
changeset
|
72 should_fail("1mi"); |
|
82513890a1d8
util.human.io: Don't accept ambiguous durations by default
Matthew Wild <mwild1@gmail.com>
parents:
13198
diff
changeset
|
73 should_fail("1mo"); |
|
82513890a1d8
util.human.io: Don't accept ambiguous durations by default
Matthew Wild <mwild1@gmail.com>
parents:
13198
diff
changeset
|
74 end); |
|
82513890a1d8
util.human.io: Don't accept ambiguous durations by default
Matthew Wild <mwild1@gmail.com>
parents:
13198
diff
changeset
|
75 end); |
|
82513890a1d8
util.human.io: Don't accept ambiguous durations by default
Matthew Wild <mwild1@gmail.com>
parents:
13198
diff
changeset
|
76 |
|
82513890a1d8
util.human.io: Don't accept ambiguous durations by default
Matthew Wild <mwild1@gmail.com>
parents:
13198
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:
13198
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:
13198
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:
13198
diff
changeset
|
80 end |
|
13054
f4d7fe919969
util.human.io: Add parse_duration() method to parse a duration string
Matthew Wild <mwild1@gmail.com>
parents:
11896
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:
11896
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:
11896
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:
11896
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:
11896
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:
11896
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:
11896
diff
changeset
|
87 test(120, "2min"); |
|
13198
313c49c7566a
util.human.io: Add tests for parse_duration() (some failing)
Kim Alvefur <zash@zash.se>
parents:
13197
diff
changeset
|
88 test(7200, "2h"); |
|
313c49c7566a
util.human.io: Add tests for parse_duration() (some failing)
Kim Alvefur <zash@zash.se>
parents:
13197
diff
changeset
|
89 test(7200, "2 hours"); |
|
13054
f4d7fe919969
util.human.io: Add parse_duration() method to parse a duration string
Matthew Wild <mwild1@gmail.com>
parents:
11896
diff
changeset
|
90 test(86400, "1d"); |
|
13198
313c49c7566a
util.human.io: Add tests for parse_duration() (some failing)
Kim Alvefur <zash@zash.se>
parents:
13197
diff
changeset
|
91 test(604800, "1w"); |
|
313c49c7566a
util.human.io: Add tests for parse_duration() (some failing)
Kim Alvefur <zash@zash.se>
parents:
13197
diff
changeset
|
92 test(604800, "1week"); |
|
313c49c7566a
util.human.io: Add tests for parse_duration() (some failing)
Kim Alvefur <zash@zash.se>
parents:
13197
diff
changeset
|
93 test(1814400, "3 weeks"); |
|
13054
f4d7fe919969
util.human.io: Add parse_duration() method to parse a duration string
Matthew Wild <mwild1@gmail.com>
parents:
11896
diff
changeset
|
94 test(2678400, "1m"); |
|
13198
313c49c7566a
util.human.io: Add tests for parse_duration() (some failing)
Kim Alvefur <zash@zash.se>
parents:
13197
diff
changeset
|
95 test(2678400, "1mo"); |
|
13054
f4d7fe919969
util.human.io: Add parse_duration() method to parse a duration string
Matthew Wild <mwild1@gmail.com>
parents:
11896
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:
11896
diff
changeset
|
97 test(2678400, "1 month"); |
|
13198
313c49c7566a
util.human.io: Add tests for parse_duration() (some failing)
Kim Alvefur <zash@zash.se>
parents:
13197
diff
changeset
|
98 test(31536000, "365 days"); |
|
313c49c7566a
util.human.io: Add tests for parse_duration() (some failing)
Kim Alvefur <zash@zash.se>
parents:
13197
diff
changeset
|
99 test(31556952, "1 year"); |
|
13367
82513890a1d8
util.human.io: Don't accept ambiguous durations by default
Matthew Wild <mwild1@gmail.com>
parents:
13198
diff
changeset
|
100 return assert.is_nil(human_io.parse_duration_lax("two weeks"), "\"2 weeks\" -> nil"); |
|
13054
f4d7fe919969
util.human.io: Add parse_duration() method to parse a duration string
Matthew Wild <mwild1@gmail.com>
parents:
11896
diff
changeset
|
101 end); |
|
f4d7fe919969
util.human.io: Add parse_duration() method to parse a duration string
Matthew Wild <mwild1@gmail.com>
parents:
11896
diff
changeset
|
102 end); |
|
14217
7eb0e47418ab
util.human.io: Add simple version comparison
Matthew Wild <mwild1@gmail.com>
parents:
13367
diff
changeset
|
103 |
|
7eb0e47418ab
util.human.io: Add simple version comparison
Matthew Wild <mwild1@gmail.com>
parents:
13367
diff
changeset
|
104 describe("simple_version_compare", function () |
|
7eb0e47418ab
util.human.io: Add simple version comparison
Matthew Wild <mwild1@gmail.com>
parents:
13367
diff
changeset
|
105 local version_compare = human_io.simple_version_compare; |
|
7eb0e47418ab
util.human.io: Add simple version comparison
Matthew Wild <mwild1@gmail.com>
parents:
13367
diff
changeset
|
106 |
|
7eb0e47418ab
util.human.io: Add simple version comparison
Matthew Wild <mwild1@gmail.com>
parents:
13367
diff
changeset
|
107 local function cmp_version(a, b, exp) |
|
7eb0e47418ab
util.human.io: Add simple version comparison
Matthew Wild <mwild1@gmail.com>
parents:
13367
diff
changeset
|
108 assert.equal(exp, version_compare(a, b), ("%q < %q"):format(a, b)); |
|
7eb0e47418ab
util.human.io: Add simple version comparison
Matthew Wild <mwild1@gmail.com>
parents:
13367
diff
changeset
|
109 end |
|
7eb0e47418ab
util.human.io: Add simple version comparison
Matthew Wild <mwild1@gmail.com>
parents:
13367
diff
changeset
|
110 |
|
7eb0e47418ab
util.human.io: Add simple version comparison
Matthew Wild <mwild1@gmail.com>
parents:
13367
diff
changeset
|
111 it("orders versions with differing major numbers", function () |
|
7eb0e47418ab
util.human.io: Add simple version comparison
Matthew Wild <mwild1@gmail.com>
parents:
13367
diff
changeset
|
112 cmp_version("1.0", "2.0", true); |
|
7eb0e47418ab
util.human.io: Add simple version comparison
Matthew Wild <mwild1@gmail.com>
parents:
13367
diff
changeset
|
113 cmp_version("2.0", "1.0", false); |
|
7eb0e47418ab
util.human.io: Add simple version comparison
Matthew Wild <mwild1@gmail.com>
parents:
13367
diff
changeset
|
114 end); |
|
7eb0e47418ab
util.human.io: Add simple version comparison
Matthew Wild <mwild1@gmail.com>
parents:
13367
diff
changeset
|
115 |
|
7eb0e47418ab
util.human.io: Add simple version comparison
Matthew Wild <mwild1@gmail.com>
parents:
13367
diff
changeset
|
116 it("orders versions with differing minor numbers", function () |
|
7eb0e47418ab
util.human.io: Add simple version comparison
Matthew Wild <mwild1@gmail.com>
parents:
13367
diff
changeset
|
117 cmp_version("1.0", "1.1", true); |
|
7eb0e47418ab
util.human.io: Add simple version comparison
Matthew Wild <mwild1@gmail.com>
parents:
13367
diff
changeset
|
118 cmp_version("1.1", "1.0", false); |
|
7eb0e47418ab
util.human.io: Add simple version comparison
Matthew Wild <mwild1@gmail.com>
parents:
13367
diff
changeset
|
119 end); |
|
7eb0e47418ab
util.human.io: Add simple version comparison
Matthew Wild <mwild1@gmail.com>
parents:
13367
diff
changeset
|
120 |
|
7eb0e47418ab
util.human.io: Add simple version comparison
Matthew Wild <mwild1@gmail.com>
parents:
13367
diff
changeset
|
121 it("treats a shorter version as less than a longer one sharing the same prefix", function () |
|
7eb0e47418ab
util.human.io: Add simple version comparison
Matthew Wild <mwild1@gmail.com>
parents:
13367
diff
changeset
|
122 cmp_version("1.0", "1.0.1", true); |
|
7eb0e47418ab
util.human.io: Add simple version comparison
Matthew Wild <mwild1@gmail.com>
parents:
13367
diff
changeset
|
123 cmp_version("1.0.1", "1.0", false); |
|
7eb0e47418ab
util.human.io: Add simple version comparison
Matthew Wild <mwild1@gmail.com>
parents:
13367
diff
changeset
|
124 |
|
7eb0e47418ab
util.human.io: Add simple version comparison
Matthew Wild <mwild1@gmail.com>
parents:
13367
diff
changeset
|
125 cmp_version("1", "1.0", true); |
|
7eb0e47418ab
util.human.io: Add simple version comparison
Matthew Wild <mwild1@gmail.com>
parents:
13367
diff
changeset
|
126 cmp_version("1", "1.1", true); |
|
7eb0e47418ab
util.human.io: Add simple version comparison
Matthew Wild <mwild1@gmail.com>
parents:
13367
diff
changeset
|
127 |
|
7eb0e47418ab
util.human.io: Add simple version comparison
Matthew Wild <mwild1@gmail.com>
parents:
13367
diff
changeset
|
128 cmp_version("1.0.0", "1.0.0.1", true); |
|
7eb0e47418ab
util.human.io: Add simple version comparison
Matthew Wild <mwild1@gmail.com>
parents:
13367
diff
changeset
|
129 end); |
|
7eb0e47418ab
util.human.io: Add simple version comparison
Matthew Wild <mwild1@gmail.com>
parents:
13367
diff
changeset
|
130 |
|
7eb0e47418ab
util.human.io: Add simple version comparison
Matthew Wild <mwild1@gmail.com>
parents:
13367
diff
changeset
|
131 it("compares components left-to-right regardless of how many components there are", function () |
|
7eb0e47418ab
util.human.io: Add simple version comparison
Matthew Wild <mwild1@gmail.com>
parents:
13367
diff
changeset
|
132 cmp_version("1.0.1", "1.1", true); |
|
7eb0e47418ab
util.human.io: Add simple version comparison
Matthew Wild <mwild1@gmail.com>
parents:
13367
diff
changeset
|
133 cmp_version("1.1", "1.0.1", false); |
|
7eb0e47418ab
util.human.io: Add simple version comparison
Matthew Wild <mwild1@gmail.com>
parents:
13367
diff
changeset
|
134 |
|
7eb0e47418ab
util.human.io: Add simple version comparison
Matthew Wild <mwild1@gmail.com>
parents:
13367
diff
changeset
|
135 cmp_version("1.0.1", "1.1.0", true); |
|
7eb0e47418ab
util.human.io: Add simple version comparison
Matthew Wild <mwild1@gmail.com>
parents:
13367
diff
changeset
|
136 cmp_version("1.1.0", "1.0.1", false); |
|
7eb0e47418ab
util.human.io: Add simple version comparison
Matthew Wild <mwild1@gmail.com>
parents:
13367
diff
changeset
|
137 |
|
7eb0e47418ab
util.human.io: Add simple version comparison
Matthew Wild <mwild1@gmail.com>
parents:
13367
diff
changeset
|
138 cmp_version("1.0.0.1", "1.0.1", true); |
|
7eb0e47418ab
util.human.io: Add simple version comparison
Matthew Wild <mwild1@gmail.com>
parents:
13367
diff
changeset
|
139 end); |
|
7eb0e47418ab
util.human.io: Add simple version comparison
Matthew Wild <mwild1@gmail.com>
parents:
13367
diff
changeset
|
140 |
|
7eb0e47418ab
util.human.io: Add simple version comparison
Matthew Wild <mwild1@gmail.com>
parents:
13367
diff
changeset
|
141 it("never considers a version less than itself", function () |
|
7eb0e47418ab
util.human.io: Add simple version comparison
Matthew Wild <mwild1@gmail.com>
parents:
13367
diff
changeset
|
142 cmp_version("0", "0", false); |
|
7eb0e47418ab
util.human.io: Add simple version comparison
Matthew Wild <mwild1@gmail.com>
parents:
13367
diff
changeset
|
143 cmp_version("1.0", "1.0", false); |
|
7eb0e47418ab
util.human.io: Add simple version comparison
Matthew Wild <mwild1@gmail.com>
parents:
13367
diff
changeset
|
144 cmp_version("1.2.3", "1.2.3", false); |
|
7eb0e47418ab
util.human.io: Add simple version comparison
Matthew Wild <mwild1@gmail.com>
parents:
13367
diff
changeset
|
145 cmp_version("foo", "foo", false); |
|
7eb0e47418ab
util.human.io: Add simple version comparison
Matthew Wild <mwild1@gmail.com>
parents:
13367
diff
changeset
|
146 end); |
|
7eb0e47418ab
util.human.io: Add simple version comparison
Matthew Wild <mwild1@gmail.com>
parents:
13367
diff
changeset
|
147 |
|
7eb0e47418ab
util.human.io: Add simple version comparison
Matthew Wild <mwild1@gmail.com>
parents:
13367
diff
changeset
|
148 it("compares components numerically", function () |
|
7eb0e47418ab
util.human.io: Add simple version comparison
Matthew Wild <mwild1@gmail.com>
parents:
13367
diff
changeset
|
149 cmp_version("1.9", "1.10", true); |
|
7eb0e47418ab
util.human.io: Add simple version comparison
Matthew Wild <mwild1@gmail.com>
parents:
13367
diff
changeset
|
150 cmp_version("1.10", "1.9", false); |
|
7eb0e47418ab
util.human.io: Add simple version comparison
Matthew Wild <mwild1@gmail.com>
parents:
13367
diff
changeset
|
151 |
|
7eb0e47418ab
util.human.io: Add simple version comparison
Matthew Wild <mwild1@gmail.com>
parents:
13367
diff
changeset
|
152 cmp_version("1.9.9", "1.10.0", true); |
|
7eb0e47418ab
util.human.io: Add simple version comparison
Matthew Wild <mwild1@gmail.com>
parents:
13367
diff
changeset
|
153 |
|
7eb0e47418ab
util.human.io: Add simple version comparison
Matthew Wild <mwild1@gmail.com>
parents:
13367
diff
changeset
|
154 cmp_version("2.0", "10.0", true); |
|
7eb0e47418ab
util.human.io: Add simple version comparison
Matthew Wild <mwild1@gmail.com>
parents:
13367
diff
changeset
|
155 cmp_version("10.0", "2.0", false); |
|
7eb0e47418ab
util.human.io: Add simple version comparison
Matthew Wild <mwild1@gmail.com>
parents:
13367
diff
changeset
|
156 |
|
7eb0e47418ab
util.human.io: Add simple version comparison
Matthew Wild <mwild1@gmail.com>
parents:
13367
diff
changeset
|
157 cmp_version("1.2", "1.10", true); |
|
7eb0e47418ab
util.human.io: Add simple version comparison
Matthew Wild <mwild1@gmail.com>
parents:
13367
diff
changeset
|
158 |
|
7eb0e47418ab
util.human.io: Add simple version comparison
Matthew Wild <mwild1@gmail.com>
parents:
13367
diff
changeset
|
159 cmp_version("1.99", "1.100", true); |
|
7eb0e47418ab
util.human.io: Add simple version comparison
Matthew Wild <mwild1@gmail.com>
parents:
13367
diff
changeset
|
160 cmp_version("1.100", "1.99", false); |
|
7eb0e47418ab
util.human.io: Add simple version comparison
Matthew Wild <mwild1@gmail.com>
parents:
13367
diff
changeset
|
161 end); |
|
7eb0e47418ab
util.human.io: Add simple version comparison
Matthew Wild <mwild1@gmail.com>
parents:
13367
diff
changeset
|
162 |
|
7eb0e47418ab
util.human.io: Add simple version comparison
Matthew Wild <mwild1@gmail.com>
parents:
13367
diff
changeset
|
163 it("handles leading zeros in numeric components", function () |
|
7eb0e47418ab
util.human.io: Add simple version comparison
Matthew Wild <mwild1@gmail.com>
parents:
13367
diff
changeset
|
164 cmp_version("1.02", "1.10", true); |
|
7eb0e47418ab
util.human.io: Add simple version comparison
Matthew Wild <mwild1@gmail.com>
parents:
13367
diff
changeset
|
165 cmp_version("1.10", "1.02", false); |
|
7eb0e47418ab
util.human.io: Add simple version comparison
Matthew Wild <mwild1@gmail.com>
parents:
13367
diff
changeset
|
166 end); |
|
7eb0e47418ab
util.human.io: Add simple version comparison
Matthew Wild <mwild1@gmail.com>
parents:
13367
diff
changeset
|
167 |
|
7eb0e47418ab
util.human.io: Add simple version comparison
Matthew Wild <mwild1@gmail.com>
parents:
13367
diff
changeset
|
168 it("treats an empty or non-numeric string as a version with no components", function () |
|
7eb0e47418ab
util.human.io: Add simple version comparison
Matthew Wild <mwild1@gmail.com>
parents:
13367
diff
changeset
|
169 cmp_version("", "1.0", true); |
|
7eb0e47418ab
util.human.io: Add simple version comparison
Matthew Wild <mwild1@gmail.com>
parents:
13367
diff
changeset
|
170 cmp_version("1.0", "", false); |
|
7eb0e47418ab
util.human.io: Add simple version comparison
Matthew Wild <mwild1@gmail.com>
parents:
13367
diff
changeset
|
171 cmp_version("foo", "1.0", true); |
|
7eb0e47418ab
util.human.io: Add simple version comparison
Matthew Wild <mwild1@gmail.com>
parents:
13367
diff
changeset
|
172 cmp_version("1.0", "foo", false); |
|
7eb0e47418ab
util.human.io: Add simple version comparison
Matthew Wild <mwild1@gmail.com>
parents:
13367
diff
changeset
|
173 cmp_version("", "", false); |
|
7eb0e47418ab
util.human.io: Add simple version comparison
Matthew Wild <mwild1@gmail.com>
parents:
13367
diff
changeset
|
174 end); |
|
7eb0e47418ab
util.human.io: Add simple version comparison
Matthew Wild <mwild1@gmail.com>
parents:
13367
diff
changeset
|
175 end); |
|
10978
4d3247a1f6b3
util.human.io: Add brief test of table generation
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
176 end); |
|
4d3247a1f6b3
util.human.io: Add brief test of table generation
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
177 |
|
4d3247a1f6b3
util.human.io: Add brief test of table generation
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
178 |
|
4d3247a1f6b3
util.human.io: Add brief test of table generation
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
179 |
