You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
109 lines
3.8 KiB
109 lines
3.8 KiB
// Copyright 2019 PDFium 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 "fxjs/fx_date_helpers.h"
|
|
|
|
#include "testing/gtest/include/gtest/gtest.h"
|
|
|
|
namespace {
|
|
|
|
constexpr double kMilliSecondsInADay = 1000 * 60 * 60 * 24;
|
|
|
|
} // namespace
|
|
|
|
TEST(FX_DateHelper, GetYearFromTime) {
|
|
static constexpr struct {
|
|
double time_ms;
|
|
int expected_year;
|
|
} kTests[] = {
|
|
{-400 * kMilliSecondsInADay, 1968},
|
|
{-1, 1969},
|
|
{0, 1970},
|
|
{1, 1970},
|
|
{364.9 * kMilliSecondsInADay, 1970},
|
|
{365.0 * kMilliSecondsInADay, 1971},
|
|
{365.1 * kMilliSecondsInADay, 1971},
|
|
{2 * 365.0 * kMilliSecondsInADay, 1972},
|
|
// 1972 is a leap year, so there should be an extra day.
|
|
{3 * 365.0 * kMilliSecondsInADay, 1972},
|
|
{(3 * 365.0 + 1) * kMilliSecondsInADay, 1973},
|
|
};
|
|
|
|
for (const auto& test : kTests) {
|
|
EXPECT_EQ(test.expected_year, FX_GetYearFromTime(test.time_ms))
|
|
<< test.time_ms;
|
|
}
|
|
}
|
|
|
|
TEST(FX_DateHelper, GetMonthFromTime) {
|
|
static constexpr struct {
|
|
double time_ms;
|
|
int expected_month; // Zero-based.
|
|
} kTests[] = {
|
|
{-400 * kMilliSecondsInADay, 10},
|
|
{-1, 11},
|
|
{0, 0},
|
|
{1, 0},
|
|
{364.9 * kMilliSecondsInADay, 11},
|
|
{365.0 * kMilliSecondsInADay, 0},
|
|
{365.1 * kMilliSecondsInADay, 0},
|
|
// 1972 is a leap year, so there should be an extra day.
|
|
{2 * 365.0 * kMilliSecondsInADay, 0},
|
|
{3 * 365.0 * kMilliSecondsInADay, 11},
|
|
{(3 * 365.0 + 1) * kMilliSecondsInADay, 0},
|
|
// Tests boundaries for all months in 1970 not already covered above.
|
|
{30 * kMilliSecondsInADay, 0},
|
|
{31 * kMilliSecondsInADay, 1},
|
|
{58 * kMilliSecondsInADay, 1},
|
|
{59 * kMilliSecondsInADay, 2},
|
|
{89 * kMilliSecondsInADay, 2},
|
|
{90 * kMilliSecondsInADay, 3},
|
|
{119 * kMilliSecondsInADay, 3},
|
|
{120 * kMilliSecondsInADay, 4},
|
|
{150 * kMilliSecondsInADay, 4},
|
|
{151 * kMilliSecondsInADay, 5},
|
|
{180 * kMilliSecondsInADay, 5},
|
|
{181 * kMilliSecondsInADay, 6},
|
|
{211 * kMilliSecondsInADay, 6},
|
|
{212 * kMilliSecondsInADay, 7},
|
|
{242 * kMilliSecondsInADay, 7},
|
|
{243 * kMilliSecondsInADay, 8},
|
|
{272 * kMilliSecondsInADay, 8},
|
|
{273 * kMilliSecondsInADay, 9},
|
|
{303 * kMilliSecondsInADay, 9},
|
|
{304 * kMilliSecondsInADay, 10},
|
|
{333 * kMilliSecondsInADay, 10},
|
|
{334 * kMilliSecondsInADay, 11},
|
|
{364 * kMilliSecondsInADay, 11},
|
|
// Tests boundaries for all months in 1972 not already covered above.
|
|
{(2 * 365.0 + 30) * kMilliSecondsInADay, 0},
|
|
{(2 * 365.0 + 31) * kMilliSecondsInADay, 1},
|
|
{(2 * 365.0 + 59) * kMilliSecondsInADay, 1},
|
|
{(2 * 365.0 + 60) * kMilliSecondsInADay, 2},
|
|
{(2 * 365.0 + 90) * kMilliSecondsInADay, 2},
|
|
{(2 * 365.0 + 91) * kMilliSecondsInADay, 3},
|
|
{(2 * 365.0 + 120) * kMilliSecondsInADay, 3},
|
|
{(2 * 365.0 + 121) * kMilliSecondsInADay, 4},
|
|
{(2 * 365.0 + 151) * kMilliSecondsInADay, 4},
|
|
{(2 * 365.0 + 152) * kMilliSecondsInADay, 5},
|
|
{(2 * 365.0 + 181) * kMilliSecondsInADay, 5},
|
|
{(2 * 365.0 + 182) * kMilliSecondsInADay, 6},
|
|
{(2 * 365.0 + 212) * kMilliSecondsInADay, 6},
|
|
{(2 * 365.0 + 213) * kMilliSecondsInADay, 7},
|
|
{(2 * 365.0 + 243) * kMilliSecondsInADay, 7},
|
|
{(2 * 365.0 + 244) * kMilliSecondsInADay, 8},
|
|
{(2 * 365.0 + 273) * kMilliSecondsInADay, 8},
|
|
{(2 * 365.0 + 274) * kMilliSecondsInADay, 9},
|
|
{(2 * 365.0 + 304) * kMilliSecondsInADay, 9},
|
|
{(2 * 365.0 + 305) * kMilliSecondsInADay, 10},
|
|
{(2 * 365.0 + 334) * kMilliSecondsInADay, 10},
|
|
{(2 * 365.0 + 335) * kMilliSecondsInADay, 11},
|
|
};
|
|
|
|
for (const auto& test : kTests) {
|
|
EXPECT_EQ(test.expected_month, FX_GetMonthFromTime(test.time_ms))
|
|
<< test.time_ms;
|
|
}
|
|
}
|