aboutsummaryrefslogtreecommitdiffstats
path: root/spec/util_datetime_spec.lua
diff options
context:
space:
mode:
authorKim Alvefur <zash@zash.se>2022-08-14 16:57:31 +0200
committerKim Alvefur <zash@zash.se>2022-08-14 16:57:31 +0200
commitc85c18b03ab627ee81273d4c0f0009e1a5cc2d03 (patch)
tree9add9e2fed946e270cc3fe1736c4e78e5d31e8b3 /spec/util_datetime_spec.lua
parentd79609ddc922ef12032c738fdb8e602818f244e0 (diff)
downloadprosody-c85c18b03ab627ee81273d4c0f0009e1a5cc2d03.tar.gz
prosody-c85c18b03ab627ee81273d4c0f0009e1a5cc2d03.zip
util.datetime: Add support for sub-second precision timestamps
Lua since 5.3 raises a fuss when time functions are handed a number with a fractional part and the underlying C functions are all based on integer seconds without support for more precision.
Diffstat (limited to 'spec/util_datetime_spec.lua')
-rw-r--r--spec/util_datetime_spec.lua13
1 files changed, 13 insertions, 0 deletions
diff --git a/spec/util_datetime_spec.lua b/spec/util_datetime_spec.lua
index aff55c7b..a35a1037 100644
--- a/spec/util_datetime_spec.lua
+++ b/spec/util_datetime_spec.lua
@@ -18,6 +18,9 @@ describe("util.datetime", function ()
it("should work", function ()
assert.equals("2006-01-02", date(1136239445));
end);
+ it("should ignore fractional parts", function ()
+ assert.equals("2006-01-02", date(1136239445.5));
+ end);
end);
describe("#time", function ()
local time = util_datetime.time;
@@ -34,6 +37,9 @@ describe("util.datetime", function ()
it("should work", function ()
assert.equals("22:04:05", time(1136239445));
end);
+ it("should handle precision", function ()
+ assert.equal("14:46:32.158200", time(1660488392.1582))
+ end)
end);
describe("#datetime", function ()
local datetime = util_datetime.datetime;
@@ -50,6 +56,9 @@ describe("util.datetime", function ()
it("should work", function ()
assert.equals("2006-01-02T22:04:05Z", datetime(1136239445));
end);
+ it("should handle precision", function ()
+ assert.equal("2022-08-14T14:46:32.158200Z", datetime(1660488392.1582))
+ end)
end);
describe("#legacy", function ()
local legacy = util_datetime.legacy;
@@ -72,5 +81,9 @@ describe("util.datetime", function ()
-- https://xmpp.org/extensions/xep-0082.html#example-2 and 3
assert.equals(parse("1969-07-21T02:56:15Z"), parse("1969-07-20T21:56:15-05:00"));
end);
+ it("should handle precision", function ()
+ -- floating point comparison is not an exact science
+ assert.truthy(math.abs(1660488392.1582 - parse("2022-08-14T14:46:32.158200Z")) < 0.001)
+ end)
end);
end);