1*635a8641SAndroid Build Coastguard Worker // Copyright (c) 2011 The Chromium Authors. All rights reserved. 2*635a8641SAndroid Build Coastguard Worker // Use of this source code is governed by a BSD-style license that can be 3*635a8641SAndroid Build Coastguard Worker // found in the LICENSE file. 4*635a8641SAndroid Build Coastguard Worker 5*635a8641SAndroid Build Coastguard Worker #include "crypto/nss_util.h" 6*635a8641SAndroid Build Coastguard Worker 7*635a8641SAndroid Build Coastguard Worker #include <prtime.h> 8*635a8641SAndroid Build Coastguard Worker 9*635a8641SAndroid Build Coastguard Worker #include "base/time/time.h" 10*635a8641SAndroid Build Coastguard Worker #include "testing/gtest/include/gtest/gtest.h" 11*635a8641SAndroid Build Coastguard Worker 12*635a8641SAndroid Build Coastguard Worker namespace crypto { 13*635a8641SAndroid Build Coastguard Worker TEST(NSSUtilTest,PRTimeConversion)14*635a8641SAndroid Build Coastguard WorkerTEST(NSSUtilTest, PRTimeConversion) { 15*635a8641SAndroid Build Coastguard Worker EXPECT_EQ(base::Time::UnixEpoch(), PRTimeToBaseTime(0)); 16*635a8641SAndroid Build Coastguard Worker EXPECT_EQ(0, BaseTimeToPRTime(base::Time::UnixEpoch())); 17*635a8641SAndroid Build Coastguard Worker 18*635a8641SAndroid Build Coastguard Worker PRExplodedTime prxtime; 19*635a8641SAndroid Build Coastguard Worker prxtime.tm_params.tp_gmt_offset = 0; 20*635a8641SAndroid Build Coastguard Worker prxtime.tm_params.tp_dst_offset = 0; 21*635a8641SAndroid Build Coastguard Worker base::Time::Exploded exploded; 22*635a8641SAndroid Build Coastguard Worker exploded.year = prxtime.tm_year = 2011; 23*635a8641SAndroid Build Coastguard Worker exploded.month = 12; 24*635a8641SAndroid Build Coastguard Worker prxtime.tm_month = 11; 25*635a8641SAndroid Build Coastguard Worker // PRExplodedTime::tm_wday is a smaller type than Exploded::day_of_week, so 26*635a8641SAndroid Build Coastguard Worker // assigning the two in this order instead of the reverse avoids potential 27*635a8641SAndroid Build Coastguard Worker // warnings about type downcasting. 28*635a8641SAndroid Build Coastguard Worker exploded.day_of_week = prxtime.tm_wday = 0; // Should be unused. 29*635a8641SAndroid Build Coastguard Worker exploded.day_of_month = prxtime.tm_mday = 10; 30*635a8641SAndroid Build Coastguard Worker exploded.hour = prxtime.tm_hour = 2; 31*635a8641SAndroid Build Coastguard Worker exploded.minute = prxtime.tm_min = 52; 32*635a8641SAndroid Build Coastguard Worker exploded.second = prxtime.tm_sec = 19; 33*635a8641SAndroid Build Coastguard Worker exploded.millisecond = 342; 34*635a8641SAndroid Build Coastguard Worker prxtime.tm_usec = 342000; 35*635a8641SAndroid Build Coastguard Worker 36*635a8641SAndroid Build Coastguard Worker PRTime pr_time = PR_ImplodeTime(&prxtime); 37*635a8641SAndroid Build Coastguard Worker base::Time base_time; 38*635a8641SAndroid Build Coastguard Worker EXPECT_TRUE(base::Time::FromUTCExploded(exploded, &base_time)); 39*635a8641SAndroid Build Coastguard Worker 40*635a8641SAndroid Build Coastguard Worker EXPECT_EQ(base_time, PRTimeToBaseTime(pr_time)); 41*635a8641SAndroid Build Coastguard Worker EXPECT_EQ(pr_time, BaseTimeToPRTime(base_time)); 42*635a8641SAndroid Build Coastguard Worker } 43*635a8641SAndroid Build Coastguard Worker 44*635a8641SAndroid Build Coastguard Worker } // namespace crypto 45