annotate spec/util_human_io_spec.lua @ 14229:ce31fdde0ad1 default tip

net.unbound: Simplify conditional
author Kim Alvefur <zash@zash.se>
date Sat, 13 Jun 2026 11:35:18 +0200
parents 7eb0e47418ab
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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