xref: /aosp_15_r20/external/libchrome/crypto/nss_util_unittest.cc (revision 635a864187cb8b6c713ff48b7e790a6b21769273)
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 Worker TEST(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