86 lines
2.4 KiB
C++
86 lines
2.4 KiB
C++
// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights
|
|
// reserved. Use of this source code is governed by a BSD-style license that
|
|
// can be found in the LICENSE file.
|
|
|
|
#include "include/internal/cef_time_wrappers.h"
|
|
#include "tests/gtest/include/gtest/gtest.h"
|
|
|
|
TEST(TimeTest, Now) {
|
|
// Sanity check, what it returns something.
|
|
cef_basetime_t now = cef_basetime_now();
|
|
EXPECT_NE(now.val, 0);
|
|
}
|
|
|
|
TEST(TimeTest, TimeToBaseTime) {
|
|
// Choosing some date which should be always representable on any platform.
|
|
cef_time_t date{};
|
|
date.year = 2001;
|
|
date.month = 2;
|
|
date.day_of_week = 1;
|
|
date.day_of_month = 5;
|
|
date.hour = 6;
|
|
date.minute = 7;
|
|
date.second = 8;
|
|
date.millisecond = 9;
|
|
|
|
cef_basetime_t basetime{};
|
|
|
|
// Null parameter handling.
|
|
ASSERT_FALSE(cef_time_to_basetime(nullptr, nullptr));
|
|
ASSERT_FALSE(cef_time_to_basetime(&date, nullptr));
|
|
ASSERT_FALSE(cef_time_to_basetime(nullptr, &basetime));
|
|
|
|
ASSERT_TRUE(cef_time_to_basetime(&date, &basetime));
|
|
ASSERT_EQ(basetime.val, 12625826828009000);
|
|
}
|
|
|
|
TEST(TimeTest, BaseTimeToTime) {
|
|
cef_basetime_t basetime{12625826828009000};
|
|
|
|
// Choosing some date which should be always representable on any platform.
|
|
cef_time_t date{};
|
|
|
|
ASSERT_TRUE(cef_time_from_basetime(basetime, &date) != 0);
|
|
|
|
EXPECT_EQ(date.year, 2001);
|
|
EXPECT_EQ(date.month, 2);
|
|
EXPECT_EQ(date.day_of_week, 1);
|
|
EXPECT_EQ(date.day_of_month, 5);
|
|
EXPECT_EQ(date.hour, 6);
|
|
EXPECT_EQ(date.minute, 7);
|
|
EXPECT_EQ(date.second, 8);
|
|
EXPECT_EQ(date.millisecond, 9);
|
|
}
|
|
|
|
TEST(TimeTest, InvalidTimeToBaseTime) {
|
|
// Some time which can't be represented
|
|
cef_time_t date{};
|
|
date.year = 90000;
|
|
cef_basetime_t basetime{999999999};
|
|
|
|
ASSERT_FALSE(cef_time_to_basetime(&date, &basetime) != 0);
|
|
ASSERT_EQ(basetime.val, 0); // Output should always be set.
|
|
}
|
|
|
|
// Only run on Windows because POSIX supports a wider range of dates.
|
|
#if defined(OS_WIN)
|
|
TEST(TimeTest, InvalidBaseTimeToTime) {
|
|
// Unrepresentable.
|
|
cef_basetime_t basetime{std::numeric_limits<int64_t>::max()};
|
|
cef_time_t date{};
|
|
date.year = 999999999;
|
|
|
|
ASSERT_FALSE(cef_time_from_basetime(basetime, &date) != 0);
|
|
|
|
// Output should always be set.
|
|
EXPECT_EQ(date.year, 0);
|
|
EXPECT_EQ(date.month, 0);
|
|
EXPECT_EQ(date.day_of_week, 0);
|
|
EXPECT_EQ(date.day_of_month, 0);
|
|
EXPECT_EQ(date.hour, 0);
|
|
EXPECT_EQ(date.minute, 0);
|
|
EXPECT_EQ(date.second, 0);
|
|
EXPECT_EQ(date.millisecond, 0);
|
|
}
|
|
#endif // defined(OS_WIN)
|