1*9880d681SAndroid Build Coastguard Worker //===- llvm/unittest/Support/TimeValueTest.cpp - Time Value tests ---------===// 2*9880d681SAndroid Build Coastguard Worker // 3*9880d681SAndroid Build Coastguard Worker // The LLVM Compiler Infrastructure 4*9880d681SAndroid Build Coastguard Worker // 5*9880d681SAndroid Build Coastguard Worker // This file is distributed under the University of Illinois Open Source 6*9880d681SAndroid Build Coastguard Worker // License. See LICENSE.TXT for details. 7*9880d681SAndroid Build Coastguard Worker // 8*9880d681SAndroid Build Coastguard Worker //===----------------------------------------------------------------------===// 9*9880d681SAndroid Build Coastguard Worker 10*9880d681SAndroid Build Coastguard Worker #include "gtest/gtest.h" 11*9880d681SAndroid Build Coastguard Worker #include "llvm/Support/TimeValue.h" 12*9880d681SAndroid Build Coastguard Worker #include <time.h> 13*9880d681SAndroid Build Coastguard Worker 14*9880d681SAndroid Build Coastguard Worker using namespace llvm; 15*9880d681SAndroid Build Coastguard Worker namespace { 16*9880d681SAndroid Build Coastguard Worker TEST(TimeValue,time_t)17*9880d681SAndroid Build Coastguard WorkerTEST(TimeValue, time_t) { 18*9880d681SAndroid Build Coastguard Worker sys::TimeValue now = sys::TimeValue::now(); 19*9880d681SAndroid Build Coastguard Worker time_t now_t = time(nullptr); 20*9880d681SAndroid Build Coastguard Worker EXPECT_TRUE(std::abs(static_cast<long>(now_t - now.toEpochTime())) < 2); 21*9880d681SAndroid Build Coastguard Worker } 22*9880d681SAndroid Build Coastguard Worker TEST(TimeValue,Win32FILETIME)23*9880d681SAndroid Build Coastguard WorkerTEST(TimeValue, Win32FILETIME) { 24*9880d681SAndroid Build Coastguard Worker uint64_t epoch_as_filetime = 0x19DB1DED53E8000ULL; 25*9880d681SAndroid Build Coastguard Worker uint32_t ns = 765432100; 26*9880d681SAndroid Build Coastguard Worker sys::TimeValue epoch; 27*9880d681SAndroid Build Coastguard Worker 28*9880d681SAndroid Build Coastguard Worker // FILETIME has 100ns of intervals. 29*9880d681SAndroid Build Coastguard Worker uint64_t ft1970 = epoch_as_filetime + ns / 100; 30*9880d681SAndroid Build Coastguard Worker epoch.fromWin32Time(ft1970); 31*9880d681SAndroid Build Coastguard Worker 32*9880d681SAndroid Build Coastguard Worker // The "seconds" part in Posix time may be expected as zero. 33*9880d681SAndroid Build Coastguard Worker EXPECT_EQ(0u, epoch.toEpochTime()); 34*9880d681SAndroid Build Coastguard Worker EXPECT_EQ(ns, static_cast<uint32_t>(epoch.nanoseconds())); 35*9880d681SAndroid Build Coastguard Worker 36*9880d681SAndroid Build Coastguard Worker // Confirm it reversible. 37*9880d681SAndroid Build Coastguard Worker EXPECT_EQ(ft1970, epoch.toWin32Time()); 38*9880d681SAndroid Build Coastguard Worker } 39*9880d681SAndroid Build Coastguard Worker 40*9880d681SAndroid Build Coastguard Worker } 41