xref: /llvm-project/llvm/unittests/Support/UTCTimeTest.cpp (revision 1c9035d1b5a9af89fccf06fa0c45f0096b063983)
1*1c9035d1SYusra Syeda //===- unittests/Support/UTCTimeTest.cpp ----------------- ----------------===//
2*1c9035d1SYusra Syeda //
3*1c9035d1SYusra Syeda // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4*1c9035d1SYusra Syeda // See https://llvm.org/LICENSE.txt for license information.
5*1c9035d1SYusra Syeda // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6*1c9035d1SYusra Syeda //
7*1c9035d1SYusra Syeda //===----------------------------------------------------------------------===//
8*1c9035d1SYusra Syeda 
9*1c9035d1SYusra Syeda #include "llvm/Support/Chrono.h"
10*1c9035d1SYusra Syeda #include "gtest/gtest.h"
11*1c9035d1SYusra Syeda #include "llvm/Support/CommandLine.h"
12*1c9035d1SYusra Syeda #include "llvm/Support/FormatProviders.h"
13*1c9035d1SYusra Syeda #include "llvm/Support/FormatVariadic.h"
14*1c9035d1SYusra Syeda 
15*1c9035d1SYusra Syeda namespace llvm {
16*1c9035d1SYusra Syeda namespace sys {
17*1c9035d1SYusra Syeda namespace {
18*1c9035d1SYusra Syeda 
TEST(UTCTime,convertutc)19*1c9035d1SYusra Syeda TEST(UTCTime, convertutc) {
20*1c9035d1SYusra Syeda   // Get the current time.
21*1c9035d1SYusra Syeda   time_t currentTime;
22*1c9035d1SYusra Syeda   time(&currentTime);
23*1c9035d1SYusra Syeda 
24*1c9035d1SYusra Syeda   // Convert with toUtcTime.
25*1c9035d1SYusra Syeda   SmallString<15> customResultString;
26*1c9035d1SYusra Syeda   raw_svector_ostream T(customResultString);
27*1c9035d1SYusra Syeda   T << formatv("{0:%Y-%m-%d %H:%M:%S}", llvm::sys::toUtcTime(currentTime));
28*1c9035d1SYusra Syeda 
29*1c9035d1SYusra Syeda   // Convert with gmtime.
30*1c9035d1SYusra Syeda   char gmtimeResultString[20];
31*1c9035d1SYusra Syeda   std::tm *gmtimeResult = std::gmtime(&currentTime);
32*1c9035d1SYusra Syeda   assert(gmtimeResult != NULL);
33*1c9035d1SYusra Syeda   std::strftime(gmtimeResultString, 20, "%Y-%m-%d %H:%M:%S", gmtimeResult);
34*1c9035d1SYusra Syeda 
35*1c9035d1SYusra Syeda   // Compare the formatted strings.
36*1c9035d1SYusra Syeda   EXPECT_EQ(customResultString, StringRef(gmtimeResultString, 19));
37*1c9035d1SYusra Syeda 
38*1c9035d1SYusra Syeda }
39*1c9035d1SYusra Syeda } // namespace
40*1c9035d1SYusra Syeda } // namespace sys
41*1c9035d1SYusra Syeda } // namespace llvm
42