Software /
code /
prosody
File
spec/util_human_io_spec.lua @ 13556:d3649ae194ab
mod_s2s: Clone queued outgoing stanzas to prevent changes
This clone call was lost in 902d25cd0557
Affects e.g. presence broadcasts, where the same stanza is sent many
times while mutating the 'to' attribute.
author | Kim Alvefur <zash@zash.se> |
---|---|
date | Sun, 10 Nov 2024 15:10:26 +0100 |
parent | 13367:82513890a1d8 |
line wrap: on
line source
describe("util.human.io", function () local human_io setup(function () human_io = require "util.human.io"; end); describe("table", function () it("alignment works", function () local row = human_io.table({ { width = 3, align = "right" }, { width = 3, }, }); assert.equal(" 1 | . ", row({ 1, "." })); assert.equal(" 10 | .. ", row({ 10, ".." })); assert.equal("100 | ...", row({ 100, "..." })); assert.equal("10… | ..…", row({ 1000, "...." })); end); end); describe("ellipsis", function() it("works", function() assert.equal("…", human_io.ellipsis("abc", 1)); assert.equal("a…", human_io.ellipsis("abc", 2)); assert.equal("abc", human_io.ellipsis("abc", 3)); assert.equal("…", human_io.ellipsis("räksmörgås", 1)); assert.equal("r…", human_io.ellipsis("räksmörgås", 2)); assert.equal("rä…", human_io.ellipsis("räksmörgås", 3)); assert.equal("räk…", human_io.ellipsis("räksmörgås", 4)); assert.equal("räks…", human_io.ellipsis("räksmörgås", 5)); assert.equal("räksm…", human_io.ellipsis("räksmörgås", 6)); assert.equal("räksmö…", human_io.ellipsis("räksmörgås", 7)); assert.equal("räksmör…", human_io.ellipsis("räksmörgås", 8)); assert.equal("räksmörg…", human_io.ellipsis("räksmörgås", 9)); assert.equal("räksmörgås", human_io.ellipsis("räksmörgås", 10)); end); end); describe("parse_duration", function () local function test(expected, duration) return assert.equal(expected, human_io.parse_duration(duration), ("%q -> %d"):format(duration, expected)); end local function should_fail(duration) assert.is_nil(human_io.parse_duration(duration), "invalid duration should fail: %q"); end it("works", function () test(1, "1s"); test(60, "1min"); test(60, "1 min"); test(60, "1 minute"); test(120, "2min"); test(7200, "2h"); test(7200, "2 hours"); test(86400, "1d"); test(604800, "1w"); test(604800, "1week"); test(1814400, "3 weeks"); test(2678400, "1month"); test(2678400, "1 month"); test(31536000, "365 days"); test(31556952, "1 year"); should_fail("two weeks"); should_fail("1m"); should_fail("1mi"); should_fail("1mo"); end); end); describe("parse_duration_lax", function () local function test(expected, duration) return assert.equal(expected, human_io.parse_duration_lax(duration), ("%q -> %d"):format(duration, expected)); end it("works", function () test(1, "1s"); test(60, "1mi"); test(60, "1min"); test(60, "1 min"); test(60, "1 minute"); test(120, "2min"); test(7200, "2h"); test(7200, "2 hours"); test(86400, "1d"); test(604800, "1w"); test(604800, "1week"); test(1814400, "3 weeks"); test(2678400, "1m"); test(2678400, "1mo"); test(2678400, "1month"); test(2678400, "1 month"); test(31536000, "365 days"); test(31556952, "1 year"); return assert.is_nil(human_io.parse_duration_lax("two weeks"), "\"2 weeks\" -> nil"); end); end); end);