summaryrefslogtreecommitdiffstats
path: root/src/seastar/fmt/test/time-test.cc
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-27 18:24:20 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-27 18:24:20 +0000
commit483eb2f56657e8e7f419ab1a4fab8dce9ade8609 (patch)
treee5d88d25d870d5dedacb6bbdbe2a966086a0a5cf /src/seastar/fmt/test/time-test.cc
parentInitial commit. (diff)
downloadceph-483eb2f56657e8e7f419ab1a4fab8dce9ade8609.tar.xz
ceph-483eb2f56657e8e7f419ab1a4fab8dce9ade8609.zip
Adding upstream version 14.2.21.upstream/14.2.21upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'src/seastar/fmt/test/time-test.cc')
-rw-r--r--src/seastar/fmt/test/time-test.cc68
1 files changed, 68 insertions, 0 deletions
diff --git a/src/seastar/fmt/test/time-test.cc b/src/seastar/fmt/test/time-test.cc
new file mode 100644
index 00000000..686d3870
--- /dev/null
+++ b/src/seastar/fmt/test/time-test.cc
@@ -0,0 +1,68 @@
+// Formatting library for C++ - time formatting tests
+//
+// Copyright (c) 2012 - present, Victor Zverovich
+// All rights reserved.
+//
+// For the license information refer to format.h.
+
+#ifdef WIN32
+#define _CRT_SECURE_NO_WARNINGS
+#endif
+
+#include "gmock.h"
+#include "fmt/locale.h"
+#include "fmt/time.h"
+
+TEST(TimeTest, Format) {
+ std::tm tm = std::tm();
+ tm.tm_year = 116;
+ tm.tm_mon = 3;
+ tm.tm_mday = 25;
+ EXPECT_EQ("The date is 2016-04-25.",
+ fmt::format("The date is {:%Y-%m-%d}.", tm));
+}
+
+TEST(TimeTest, GrowBuffer) {
+ std::string s = "{:";
+ for (int i = 0; i < 30; ++i)
+ s += "%c";
+ s += "}\n";
+ std::time_t t = std::time(FMT_NULL);
+ fmt::format(s, *std::localtime(&t));
+}
+
+TEST(TimeTest, FormatToEmptyContainer) {
+ std::string s;
+ auto time = std::tm();
+ time.tm_sec = 42;
+ fmt::format_to(std::back_inserter(s), "{:%S}", time);
+ EXPECT_EQ(s, "42");
+}
+
+TEST(TimeTest, EmptyResult) {
+ EXPECT_EQ("", fmt::format("{}", std::tm()));
+}
+
+static bool EqualTime(const std::tm &lhs, const std::tm &rhs) {
+ return lhs.tm_sec == rhs.tm_sec &&
+ lhs.tm_min == rhs.tm_min &&
+ lhs.tm_hour == rhs.tm_hour &&
+ lhs.tm_mday == rhs.tm_mday &&
+ lhs.tm_mon == rhs.tm_mon &&
+ lhs.tm_year == rhs.tm_year &&
+ lhs.tm_wday == rhs.tm_wday &&
+ lhs.tm_yday == rhs.tm_yday &&
+ lhs.tm_isdst == rhs.tm_isdst;
+}
+
+TEST(TimeTest, LocalTime) {
+ std::time_t t = std::time(FMT_NULL);
+ std::tm tm = *std::localtime(&t);
+ EXPECT_TRUE(EqualTime(tm, fmt::localtime(t)));
+}
+
+TEST(TimeTest, GMTime) {
+ std::time_t t = std::time(FMT_NULL);
+ std::tm tm = *std::gmtime(&t);
+ EXPECT_TRUE(EqualTime(tm, fmt::gmtime(t)));
+}