Software /
code /
prosody
File
spec/util_interpolation_spec.lua @ 12630:781772c8b6d9
mod_mam: Store archives with sub-second precision timestamps
Changes sub-second part of example timestamp to .5 in order to avoid
floating point issues.
Some clients use timestamps when ordering messages which can lead to
messages having the same timestamp ending up in the wrong order.
It would be better to preserve the order messages are sent in, which is
the order they were stored in.
author | Kim Alvefur <zash@zash.se> |
---|---|
date | Sun, 14 Aug 2022 17:28:31 +0200 |
parent | 11308:5d4d90d1eabb |
line wrap: on
line source
local template = [[ {greet!?Hi}, {name?world}! ]]; local expect1 = [[ Hello, WORLD! ]]; local expect2 = [[ Hello, world! ]]; local expect3 = [[ Hi, YOU! ]]; local template_array = [[ {foo#{idx}. {item} }]] local expect_array = [[ 1. HELLO 2. WORLD ]] local template_func_pipe = [[ {foo|sort#{idx}. {item} }]] local expect_func_pipe = [[ 1. A 2. B 3. C 4. D ]] local template_map = [[ {foo%{idx}: {item!} }]] local expect_map = [[ FOO: bar ]] local template_not = [[ {thing~Thing is falsy}{thing&Thing is truthy} ]] local expect_not_true = [[ Thing is truthy ]] local expect_not_nil = [[ Thing is falsy ]] local expect_not_false = [[ Thing is falsy ]] describe("util.interpolation", function () it("renders", function () local render = require "util.interpolation".new("%b{}", string.upper, { sort = function (t) table.sort(t) return t end }); assert.equal(expect1, render(template, { greet = "Hello", name = "world" })); assert.equal(expect2, render(template, { greet = "Hello" })); assert.equal(expect3, render(template, { name = "you" })); assert.equal(expect_array, render(template_array, { foo = { "Hello", "World" } })); assert.equal(expect_func_pipe, render(template_func_pipe, { foo = { "c", "a", "d", "b", } })); -- assert.equal("", render(template_func_pipe, { foo = nil })); -- FIXME assert.equal(expect_map, render(template_map, { foo = { foo = "bar" } })); assert.equal(expect_not_true, render(template_not, { thing = true })); assert.equal(expect_not_nil, render(template_not, { thing = nil })); assert.equal(expect_not_false, render(template_not, { thing = false })); end); it("fixes #1623", function () local render = require "util.interpolation".new("%b{}", string.upper, { x = string.lower }); assert.equal("", render("{foo?}", { })) assert.equal("", render("{foo|x?}", { })) end); end);