Skip to content

Commit f4e255b

Browse files
committed
Fix local_time test
1 parent 7ac97cb commit f4e255b

1 file changed

Lines changed: 9 additions & 17 deletions

File tree

test/chrono-test.cc

Lines changed: 9 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -351,11 +351,11 @@ TEST(chrono_test, system_clock_time_point) {
351351
}
352352

353353
TEST(chrono_test, local_time) {
354-
auto t =
354+
auto time =
355355
fmt::local_time<std::chrono::seconds>(std::chrono::seconds(290088000));
356-
EXPECT_EQ(fmt::format("{:%Y-%m-%d %H:%M:%S}", t), "1979-03-12 12:00:00");
357-
EXPECT_EQ(fmt::format("{}", t), "1979-03-12 12:00:00");
358-
EXPECT_EQ(fmt::format("{:}", t), "1979-03-12 12:00:00");
356+
EXPECT_EQ(fmt::format("{:%Y-%m-%d %H:%M:%S}", time), "1979-03-12 12:00:00");
357+
EXPECT_EQ(fmt::format("{}", time), "1979-03-12 12:00:00");
358+
EXPECT_EQ(fmt::format("{:}", time), "1979-03-12 12:00:00");
359359

360360
std::vector<std::string> specs = {
361361
"%%", "%n", "%t", "%Y", "%EY", "%y", "%Oy", "%Ey", "%C",
@@ -375,38 +375,30 @@ TEST(chrono_test, local_time) {
375375
#endif
376376
specs.push_back("%Y-%m-%d %H:%M:%S");
377377

378-
#if FMT_USE_LOCAL_TIME
379378
# ifdef _WIN32
380379
return; // Not supported on Windows.
381380
# endif
382381

383382
for (const auto& spec : specs) {
384-
auto sys_time = std::chrono::system_clock::to_time_t(
385-
std::chrono::current_zone()->to_sys(t));
386-
auto tm = *std::localtime(&sys_time);
387-
383+
auto tm = fmt::gmtime(time.time_since_epoch().count());
388384
auto sys_output = system_strftime(spec, &tm);
389385

390386
auto fmt_spec = fmt::format("{{:{}}}", spec);
391-
EXPECT_EQ(sys_output, fmt::format(fmt::runtime(fmt_spec), t));
387+
EXPECT_EQ(sys_output, fmt::format(fmt::runtime(fmt_spec), time)) << fmt_spec;
392388
EXPECT_EQ(sys_output, fmt::format(fmt::runtime(fmt_spec), tm));
393389
}
394390

395391
if (std::find(specs.cbegin(), specs.cend(), "%z") != specs.cend()) {
396-
auto sys_time = std::chrono::system_clock::to_time_t(
397-
std::chrono::current_zone()->to_sys(t));
398-
auto tm = *std::localtime(&sys_time);
399-
392+
auto tm = fmt::gmtime(t.time_since_epoch().count());
400393
auto sys_output = system_strftime("%z", &tm);
401394
sys_output.insert(sys_output.end() - 2, 1, ':');
402395

403-
EXPECT_EQ(sys_output, fmt::format("{:%Ez}", t));
396+
EXPECT_EQ(sys_output, fmt::format("{:%Ez}", time));
404397
EXPECT_EQ(sys_output, fmt::format("{:%Ez}", tm));
405398

406-
EXPECT_EQ(sys_output, fmt::format("{:%Oz}", t));
399+
EXPECT_EQ(sys_output, fmt::format("{:%Oz}", time));
407400
EXPECT_EQ(sys_output, fmt::format("{:%Oz}", tm));
408401
}
409-
#endif // FMT_USE_LOCAL_TIME
410402
}
411403

412404
TEST(chrono_test, daylight_savings_time_end) {

0 commit comments

Comments
 (0)