15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2011 The Chromium Authors. All rights reserved.
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file.
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "crypto/nss_util.h"
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <prtime.h>
85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
9eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "base/time/time.h"
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "testing/gtest/include/gtest/gtest.h"
115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace crypto {
135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST(NSSUtilTest, PRTimeConversion) {
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_EQ(base::Time::UnixEpoch(), PRTimeToBaseTime(0));
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_EQ(0, BaseTimeToPRTime(base::Time::UnixEpoch()));
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PRExplodedTime prxtime;
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  prxtime.tm_params.tp_gmt_offset = 0;
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  prxtime.tm_params.tp_dst_offset = 0;
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  base::Time::Exploded exploded;
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  prxtime.tm_year = exploded.year = 2011;
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  exploded.month = 12;
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  prxtime.tm_month = 11;
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  prxtime.tm_wday = exploded.day_of_week = 0;  // Should be unusued.
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  prxtime.tm_mday = exploded.day_of_month = 10;
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  prxtime.tm_hour = exploded.hour = 2;
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  prxtime.tm_min = exploded.minute = 52;
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  prxtime.tm_sec = exploded.second = 19;
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  exploded.millisecond = 342;
315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  prxtime.tm_usec = 342000;
325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PRTime pr_time = PR_ImplodeTime(&prxtime);
345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  base::Time base_time = base::Time::FromUTCExploded(exploded);
355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_EQ(base_time, PRTimeToBaseTime(pr_time));
375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_EQ(pr_time, BaseTimeToPRTime(base_time));
385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}  // namespace crypto
41