Skip to content

Commit 2046612

Browse files
committed
Improve local_time test
1 parent e1ab383 commit 2046612

1 file changed

Lines changed: 56 additions & 27 deletions

File tree

test/chrono-test.cc

Lines changed: 56 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -353,37 +353,66 @@ TEST(chrono_test, system_clock_time_point) {
353353
TEST(chrono_test, local_time) {
354354
auto time =
355355
fmt::local_time<std::chrono::seconds>(std::chrono::seconds(290088000));
356-
EXPECT_EQ(fmt::format("{:%Y-%m-%d %H:%M:%S}", time), "1979-03-12 12:00:00");
356+
357357
EXPECT_EQ(fmt::format("{}", time), "1979-03-12 12:00:00");
358358
EXPECT_EQ(fmt::format("{:}", time), "1979-03-12 12:00:00");
359359

360-
std::vector<std::string> specs = {
361-
"%%", "%n", "%t", "%Y", "%EY", "%y", "%Oy", "%Ey", "%C",
362-
"%EC", "%G", "%g", "%b", "%h", "%B", "%m", "%Om", "%U",
363-
"%OU", "%W", "%OW", "%V", "%OV", "%j", "%d", "%Od", "%e",
364-
"%Oe", "%a", "%A", "%w", "%Ow", "%u", "%Ou", "%H", "%OH",
365-
"%I", "%OI", "%M", "%OM", "%S", "%OS", "%x", "%Ex", "%X",
366-
"%EX", "%D", "%F", "%R", "%T", "%p"};
367-
#ifndef _WIN32
368-
// Disabled on Windows because these formats are not consistent among
369-
// platforms.
370-
specs.insert(specs.end(), {"%c", "%Ec", "%r"});
371-
#elif !FMT_HAS_C99_STRFTIME
372-
// Only C89 conversion specifiers when using MSVCRT instead of UCRT
373-
specs = {"%%", "%Y", "%y", "%b", "%B", "%m", "%U", "%W", "%j", "%d", "%a",
374-
"%A", "%w", "%H", "%I", "%M", "%S", "%x", "%X", "%p"};
375-
#endif
376-
specs.push_back("%Y-%m-%d %H:%M:%S");
377-
378-
for (const auto& spec : specs) {
379-
auto tm = fmt::gmtime(time.time_since_epoch().count());
380-
auto sys_output = system_strftime(spec, &tm);
360+
EXPECT_EQ(fmt::format("{:%%}", time), "%");
361+
EXPECT_EQ(fmt::format("{:%n}", time), "\n");
362+
EXPECT_EQ(fmt::format("{:%t}", time), "\t");
363+
EXPECT_EQ(fmt::format("{:%Y}", time), "1979");
364+
EXPECT_EQ(fmt::format("{:%EY}", time), "1979");
365+
EXPECT_EQ(fmt::format("{:%y}", time), "79");
366+
EXPECT_EQ(fmt::format("{:%Oy}", time), "79");
367+
EXPECT_EQ(fmt::format("{:%Ey}", time), "79");
368+
EXPECT_EQ(fmt::format("{:%C}", time), "19");
369+
EXPECT_EQ(fmt::format("{:%EC}", time), "19");
370+
EXPECT_EQ(fmt::format("{:%G}", time), "1979");
371+
EXPECT_EQ(fmt::format("{:%g}", time), "79");
372+
EXPECT_EQ(fmt::format("{:%b}", time), "Mar");
373+
EXPECT_EQ(fmt::format("{:%h}", time), "Mar");
374+
EXPECT_EQ(fmt::format("{:%B}", time), "March");
375+
EXPECT_EQ(fmt::format("{:%m}", time), "03");
376+
EXPECT_EQ(fmt::format("{:%Om}", time), "03");
377+
EXPECT_EQ(fmt::format("{:%U}", time), "10");
378+
EXPECT_EQ(fmt::format("{:%OU}", time), "10");
379+
EXPECT_EQ(fmt::format("{:%W}", time), "11");
380+
EXPECT_EQ(fmt::format("{:%OW}", time), "11");
381+
EXPECT_EQ(fmt::format("{:%V}", time), "11");
382+
EXPECT_EQ(fmt::format("{:%OV}", time), "11");
383+
EXPECT_EQ(fmt::format("{:%j}", time), "071");
384+
EXPECT_EQ(fmt::format("{:%d}", time), "12");
385+
EXPECT_EQ(fmt::format("{:%Od}", time), "12");
386+
EXPECT_EQ(fmt::format("{:%e}", time), "12");
387+
EXPECT_EQ(fmt::format("{:%Oe}", time), "12");
388+
EXPECT_EQ(fmt::format("{:%a}", time), "Mon");
389+
EXPECT_EQ(fmt::format("{:%A}", time), "Monday");
390+
EXPECT_EQ(fmt::format("{:%w}", time), "1");
391+
EXPECT_EQ(fmt::format("{:%Ow}", time), "1");
392+
EXPECT_EQ(fmt::format("{:%u}", time), "1");
393+
EXPECT_EQ(fmt::format("{:%Ou}", time), "1");
394+
EXPECT_EQ(fmt::format("{:%H}", time), "12");
395+
EXPECT_EQ(fmt::format("{:%OH}", time), "12");
396+
EXPECT_EQ(fmt::format("{:%I}", time), "12");
397+
EXPECT_EQ(fmt::format("{:%OI}", time), "12");
398+
EXPECT_EQ(fmt::format("{:%M}", time), "00");
399+
EXPECT_EQ(fmt::format("{:%OM}", time), "00");
400+
EXPECT_EQ(fmt::format("{:%S}", time), "00");
401+
EXPECT_EQ(fmt::format("{:%OS}", time), "00");
402+
EXPECT_EQ(fmt::format("{:%x}", time), "03/12/79");
403+
EXPECT_EQ(fmt::format("{:%Ex}", time), "03/12/79");
404+
EXPECT_EQ(fmt::format("{:%X}", time), "12:00:00");
405+
EXPECT_EQ(fmt::format("{:%EX}", time), "12:00:00");
406+
EXPECT_EQ(fmt::format("{:%D}", time), "03/12/79");
407+
EXPECT_EQ(fmt::format("{:%F}", time), "1979-03-12");
408+
EXPECT_EQ(fmt::format("{:%R}", time), "12:00");
409+
EXPECT_EQ(fmt::format("{:%T}", time), "12:00:00");
410+
EXPECT_EQ(fmt::format("{:%p}", time), "PM");
411+
EXPECT_EQ(fmt::format("{:%c}", time), "Mon Mar 12 12:00:00 1979");
412+
EXPECT_EQ(fmt::format("{:%Ec}", time), "Mon Mar 12 12:00:00 1979");
413+
EXPECT_EQ(fmt::format("{:%r}", time), "12:00:00 PM");
381414

382-
auto fmt_spec = fmt::format("{{:{}}}", spec);
383-
EXPECT_EQ(sys_output, fmt::format(fmt::runtime(fmt_spec), time))
384-
<< fmt_spec;
385-
EXPECT_EQ(sys_output, fmt::format(fmt::runtime(fmt_spec), tm));
386-
}
415+
EXPECT_EQ(fmt::format("{:%Y-%m-%d %H:%M:%S}", time), "1979-03-12 12:00:00");
387416

388417
EXPECT_THROW_MSG((void)fmt::format(fmt::runtime("{:%z}"), time),
389418
fmt::format_error, "no timezone");

0 commit comments

Comments
 (0)