1/* 2 Time formatting tests 3 4 Copyright (c) 2012 - 2016, Victor Zverovich 5 All rights reserved. 6 7 For the license information refer to format.h. 8 */ 9 10#include "gmock/gmock.h" 11#include "fmt/time.h" 12 13TEST(TimeTest, Format) { 14 std::tm tm = std::tm(); 15 tm.tm_year = 116; 16 tm.tm_mon = 3; 17 tm.tm_mday = 25; 18 EXPECT_EQ("The date is 2016-04-25.", 19 fmt::format("The date is {:%Y-%m-%d}.", tm)); 20} 21 22TEST(TimeTest, GrowBuffer) { 23 std::string s = "{:"; 24 for (int i = 0; i < 30; ++i) 25 s += "%c"; 26 s += "}\n"; 27 std::time_t t = std::time(0); 28 fmt::format(s, *std::localtime(&t)); 29} 30 31TEST(TimeTest, EmptyResult) { 32 EXPECT_EQ("", fmt::format("{}", std::tm())); 33} 34 35bool EqualTime(const std::tm &lhs, const std::tm &rhs) { 36 return lhs.tm_sec == rhs.tm_sec && 37 lhs.tm_min == rhs.tm_min && 38 lhs.tm_hour == rhs.tm_hour && 39 lhs.tm_mday == rhs.tm_mday && 40 lhs.tm_mon == rhs.tm_mon && 41 lhs.tm_year == rhs.tm_year && 42 lhs.tm_wday == rhs.tm_wday && 43 lhs.tm_yday == rhs.tm_yday && 44 lhs.tm_isdst == rhs.tm_isdst; 45} 46 47TEST(TimeTest, LocalTime) { 48 std::time_t t = std::time(0); 49 std::tm tm = *std::localtime(&t); 50 EXPECT_TRUE(EqualTime(tm, fmt::localtime(t))); 51} 52 53TEST(TimeTest, GMTime) { 54 std::time_t t = std::time(0); 55 std::tm tm = *std::gmtime(&t); 56 EXPECT_TRUE(EqualTime(tm, fmt::gmtime(t))); 57} 58