11a23f9c274071a91edde9fc28895c45940d4e90dVictor Zverovich/* 21a23f9c274071a91edde9fc28895c45940d4e90dVictor Zverovich Time formatting tests 31a23f9c274071a91edde9fc28895c45940d4e90dVictor Zverovich 41a23f9c274071a91edde9fc28895c45940d4e90dVictor Zverovich Copyright (c) 2012 - 2016, Victor Zverovich 51a23f9c274071a91edde9fc28895c45940d4e90dVictor Zverovich All rights reserved. 61a23f9c274071a91edde9fc28895c45940d4e90dVictor Zverovich 71a23f9c274071a91edde9fc28895c45940d4e90dVictor Zverovich For the license information refer to format.h. 81a23f9c274071a91edde9fc28895c45940d4e90dVictor Zverovich */ 91a23f9c274071a91edde9fc28895c45940d4e90dVictor Zverovich 101a23f9c274071a91edde9fc28895c45940d4e90dVictor Zverovich#include "gmock/gmock.h" 111a23f9c274071a91edde9fc28895c45940d4e90dVictor Zverovich#include "fmt/time.h" 121a23f9c274071a91edde9fc28895c45940d4e90dVictor Zverovich 131a23f9c274071a91edde9fc28895c45940d4e90dVictor ZverovichTEST(TimeTest, Format) { 141a23f9c274071a91edde9fc28895c45940d4e90dVictor Zverovich std::tm tm = std::tm(); 151a23f9c274071a91edde9fc28895c45940d4e90dVictor Zverovich tm.tm_year = 116; 161a23f9c274071a91edde9fc28895c45940d4e90dVictor Zverovich tm.tm_mon = 3; 171a23f9c274071a91edde9fc28895c45940d4e90dVictor Zverovich tm.tm_mday = 25; 181a23f9c274071a91edde9fc28895c45940d4e90dVictor Zverovich EXPECT_EQ("The date is 2016-04-25.", 191a23f9c274071a91edde9fc28895c45940d4e90dVictor Zverovich fmt::format("The date is {:%Y-%m-%d}.", tm)); 201a23f9c274071a91edde9fc28895c45940d4e90dVictor Zverovich} 211a23f9c274071a91edde9fc28895c45940d4e90dVictor Zverovich 221a23f9c274071a91edde9fc28895c45940d4e90dVictor ZverovichTEST(TimeTest, GrowBuffer) { 231a23f9c274071a91edde9fc28895c45940d4e90dVictor Zverovich std::string s = "{:"; 241a23f9c274071a91edde9fc28895c45940d4e90dVictor Zverovich for (int i = 0; i < 30; ++i) 251a23f9c274071a91edde9fc28895c45940d4e90dVictor Zverovich s += "%c"; 261a23f9c274071a91edde9fc28895c45940d4e90dVictor Zverovich s += "}\n"; 271a23f9c274071a91edde9fc28895c45940d4e90dVictor Zverovich std::time_t t = std::time(0); 281a23f9c274071a91edde9fc28895c45940d4e90dVictor Zverovich fmt::format(s, *std::localtime(&t)); 291a23f9c274071a91edde9fc28895c45940d4e90dVictor Zverovich} 30a5d0adf3953f0ae3e698d5b5702d1e5a7bf3d87eVictor Zverovich 31a5d0adf3953f0ae3e698d5b5702d1e5a7bf3d87eVictor ZverovichTEST(TimeTest, EmptyResult) { 32a5d0adf3953f0ae3e698d5b5702d1e5a7bf3d87eVictor Zverovich EXPECT_EQ("", fmt::format("{}", std::tm())); 33a5d0adf3953f0ae3e698d5b5702d1e5a7bf3d87eVictor Zverovich} 341e018e65cb74785d6b500bbf8fce82d3e807bf36codicodi 351e018e65cb74785d6b500bbf8fce82d3e807bf36codicodibool EqualTime(const std::tm &lhs, const std::tm &rhs) { 361e018e65cb74785d6b500bbf8fce82d3e807bf36codicodi return lhs.tm_sec == rhs.tm_sec && 371e018e65cb74785d6b500bbf8fce82d3e807bf36codicodi lhs.tm_min == rhs.tm_min && 381e018e65cb74785d6b500bbf8fce82d3e807bf36codicodi lhs.tm_hour == rhs.tm_hour && 391e018e65cb74785d6b500bbf8fce82d3e807bf36codicodi lhs.tm_mday == rhs.tm_mday && 401e018e65cb74785d6b500bbf8fce82d3e807bf36codicodi lhs.tm_mon == rhs.tm_mon && 411e018e65cb74785d6b500bbf8fce82d3e807bf36codicodi lhs.tm_year == rhs.tm_year && 421e018e65cb74785d6b500bbf8fce82d3e807bf36codicodi lhs.tm_wday == rhs.tm_wday && 431e018e65cb74785d6b500bbf8fce82d3e807bf36codicodi lhs.tm_yday == rhs.tm_yday && 441e018e65cb74785d6b500bbf8fce82d3e807bf36codicodi lhs.tm_isdst == rhs.tm_isdst; 451e018e65cb74785d6b500bbf8fce82d3e807bf36codicodi} 461e018e65cb74785d6b500bbf8fce82d3e807bf36codicodi 471e018e65cb74785d6b500bbf8fce82d3e807bf36codicodiTEST(TimeTest, LocalTime) { 481e018e65cb74785d6b500bbf8fce82d3e807bf36codicodi std::time_t t = std::time(0); 491e018e65cb74785d6b500bbf8fce82d3e807bf36codicodi std::tm tm = *std::localtime(&t); 501e018e65cb74785d6b500bbf8fce82d3e807bf36codicodi EXPECT_TRUE(EqualTime(tm, fmt::localtime(t))); 511e018e65cb74785d6b500bbf8fce82d3e807bf36codicodi} 521e018e65cb74785d6b500bbf8fce82d3e807bf36codicodi 531e018e65cb74785d6b500bbf8fce82d3e807bf36codicodiTEST(TimeTest, GMTime) { 541e018e65cb74785d6b500bbf8fce82d3e807bf36codicodi std::time_t t = std::time(0); 551e018e65cb74785d6b500bbf8fce82d3e807bf36codicodi std::tm tm = *std::gmtime(&t); 561e018e65cb74785d6b500bbf8fce82d3e807bf36codicodi EXPECT_TRUE(EqualTime(tm, fmt::gmtime(t))); 571e018e65cb74785d6b500bbf8fce82d3e807bf36codicodi} 58