summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorlouiz’ <louiz@louiz.org>2016-08-31 01:17:45 +0200
committerlouiz’ <louiz@louiz.org>2016-08-31 01:17:45 +0200
commit2a4905df0153c47656555a21f3d57bbad6f3ffe1 (patch)
treeb2b0608e1a809056c580b1bd4ca9531a11b42c6d
parent9727f4cf00e85e90f89c9b5443ec035c44d4c3f6 (diff)
downloadbiboumi-2a4905df0153c47656555a21f3d57bbad6f3ffe1.tar.gz
biboumi-2a4905df0153c47656555a21f3d57bbad6f3ffe1.tar.bz2
biboumi-2a4905df0153c47656555a21f3d57bbad6f3ffe1.tar.xz
biboumi-2a4905df0153c47656555a21f3d57bbad6f3ffe1.zip
Fix to_string(time_t) and write a unit test for it
-rw-r--r--louloulibs/utils/time.cpp9
-rw-r--r--tests/utils.cpp10
2 files changed, 15 insertions, 4 deletions
diff --git a/louloulibs/utils/time.cpp b/louloulibs/utils/time.cpp
index e23def4..b85d764 100644
--- a/louloulibs/utils/time.cpp
+++ b/louloulibs/utils/time.cpp
@@ -4,9 +4,10 @@ namespace utils
{
std::string to_string(const std::time_t& timestamp)
{
- constexpr std::size_t stamp_size = 20;
- char date_buf[stamp_size];
- std::strftime(date_buf, stamp_size, "%FT%TZ", std::gmtime(&timestamp));
- return {std::begin(date_buf), std::end(date_buf)};
+ constexpr std::size_t stamp_size = 21;
+ char date_buf[stamp_size];
+ if (std::strftime(date_buf, stamp_size, "%FT%TZ", std::gmtime(&timestamp)) != stamp_size - 1)
+ return "";
+ return {std::begin(date_buf), std::end(date_buf) - 1};
}
} \ No newline at end of file
diff --git a/tests/utils.cpp b/tests/utils.cpp
index e7ba415..abe7ef7 100644
--- a/tests/utils.cpp
+++ b/tests/utils.cpp
@@ -7,6 +7,7 @@
#include <utils/xdg.hpp>
#include <utils/empty_if_fixed_server.hpp>
#include <utils/get_first_non_empty.hpp>
+#include <utils/time.hpp>
using namespace std::string_literals;
@@ -111,3 +112,12 @@ TEST_CASE("first non-empty string")
CHECK(get_first_non_empty("first"s) == "first"s);
CHECK(get_first_non_empty(0, 1, 2, 3) == 1);
}
+
+TEST_CASE("time_to_string")
+{
+ const std::time_t stamp = 1472480968;
+ const std::string result = "2016-08-29T14:29:28Z";
+ CHECK(utils::to_string(stamp) == result);
+ CHECK(utils::to_string(stamp).size() == result.size());
+ CHECK(utils::to_string(0) == "1970-01-01T00:00:00Z");
+}