1425bb815Sopenharmony_ci/* Copyright JS Foundation and other contributors, http://js.foundation 2425bb815Sopenharmony_ci * 3425bb815Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 4425bb815Sopenharmony_ci * you may not use this file except in compliance with the License. 5425bb815Sopenharmony_ci * You may obtain a copy of the License at 6425bb815Sopenharmony_ci * 7425bb815Sopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 8425bb815Sopenharmony_ci * 9425bb815Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software 10425bb815Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS 11425bb815Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12425bb815Sopenharmony_ci * See the License for the specific language governing permissions and 13425bb815Sopenharmony_ci * limitations under the License. 14425bb815Sopenharmony_ci */ 15425bb815Sopenharmony_ciextern "C" 16425bb815Sopenharmony_ci{ 17425bb815Sopenharmony_ci #include "ecma-builtin-helpers.h" 18425bb815Sopenharmony_ci} 19425bb815Sopenharmony_ci 20425bb815Sopenharmony_ci#include "ecma-globals.h" 21425bb815Sopenharmony_ci#include "ecma-helpers.h" 22425bb815Sopenharmony_ci#include "test-common.h" 23425bb815Sopenharmony_ci#include <gtest/gtest.h> 24425bb815Sopenharmony_ci 25425bb815Sopenharmony_ci#define MS_PER_DAY ((ecma_number_t) 86400000) 26425bb815Sopenharmony_ci#define MS_PER_YEAR ((ecma_number_t) 365 * MS_PER_DAY) 27425bb815Sopenharmony_ci#define START_OF_GREGORIAN_CALENDAR ((ecma_number_t) (-1970 * MS_PER_YEAR \ 28425bb815Sopenharmony_ci - (1970 / 4) * MS_PER_DAY \ 29425bb815Sopenharmony_ci + (1970 / 100) * MS_PER_DAY \ 30425bb815Sopenharmony_ci - (1970 / 400) * MS_PER_DAY \ 31425bb815Sopenharmony_ci - MS_PER_DAY)) 32425bb815Sopenharmony_ci 33425bb815Sopenharmony_ci/** 34425bb815Sopenharmony_ci * Unit test's main function. 35425bb815Sopenharmony_ci */ 36425bb815Sopenharmony_ciclass DateHelpersTest : public testing::Test{ 37425bb815Sopenharmony_cipublic: 38425bb815Sopenharmony_ci static void SetUpTestCase() 39425bb815Sopenharmony_ci { 40425bb815Sopenharmony_ci GTEST_LOG_(INFO) << "DateHelpersTest SetUpTestCase"; 41425bb815Sopenharmony_ci } 42425bb815Sopenharmony_ci 43425bb815Sopenharmony_ci static void TearDownTestCase() 44425bb815Sopenharmony_ci { 45425bb815Sopenharmony_ci GTEST_LOG_(INFO) << "DateHelpersTest TearDownTestCase"; 46425bb815Sopenharmony_ci } 47425bb815Sopenharmony_ci 48425bb815Sopenharmony_ci void SetUp() override {} 49425bb815Sopenharmony_ci void TearDown() override {} 50425bb815Sopenharmony_ci 51425bb815Sopenharmony_ci}; 52425bb815Sopenharmony_ci 53425bb815Sopenharmony_ciHWTEST_F(DateHelpersTest, Test001, testing::ext::TestSize.Level1) 54425bb815Sopenharmony_ci{ 55425bb815Sopenharmony_ci /* int ecma_date_day (time)*/ 56425bb815Sopenharmony_ci 57425bb815Sopenharmony_ci TEST_ASSERT (ecma_date_day (0) == 0); 58425bb815Sopenharmony_ci TEST_ASSERT (ecma_date_day (MS_PER_DAY) == 1); 59425bb815Sopenharmony_ci 60425bb815Sopenharmony_ci /* ecma_number_t ecma_date_time_within_day (time) */ 61425bb815Sopenharmony_ci 62425bb815Sopenharmony_ci TEST_ASSERT (ecma_date_time_within_day (0) == 0); 63425bb815Sopenharmony_ci TEST_ASSERT (ecma_date_time_within_day (42) == 42); 64425bb815Sopenharmony_ci TEST_ASSERT (ecma_date_time_within_day (42.51) == 42.51); 65425bb815Sopenharmony_ci TEST_ASSERT (ecma_date_time_within_day (MS_PER_DAY + 42) == 42); 66425bb815Sopenharmony_ci 67425bb815Sopenharmony_ci /* int ecma_date_year_from_time (time) */ 68425bb815Sopenharmony_ci 69425bb815Sopenharmony_ci TEST_ASSERT (ecma_date_year_from_time (0) == 1970); 70425bb815Sopenharmony_ci TEST_ASSERT (ecma_date_year_from_time (0) == 1970); 71425bb815Sopenharmony_ci TEST_ASSERT (ecma_date_year_from_time (MS_PER_DAY) == 1970); 72425bb815Sopenharmony_ci TEST_ASSERT (ecma_date_year_from_time ((MS_PER_DAY) * (ecma_number_t) 365 - 1) == 1970); 73425bb815Sopenharmony_ci TEST_ASSERT (ecma_date_year_from_time (MS_PER_DAY * (ecma_number_t) 365) == 1971); 74425bb815Sopenharmony_ci TEST_ASSERT (ecma_date_year_from_time (MS_PER_DAY * (ecma_number_t) (365 * (2015 - 1970))) 75425bb815Sopenharmony_ci == 2014); 76425bb815Sopenharmony_ci TEST_ASSERT (ecma_date_year_from_time (MS_PER_DAY * (ecma_number_t) (365.25 * (2015 - 1970))) 77425bb815Sopenharmony_ci == 2015); 78425bb815Sopenharmony_ci TEST_ASSERT (ecma_date_year_from_time (-MS_PER_YEAR) == 1969); 79425bb815Sopenharmony_ci TEST_ASSERT (ecma_date_year_from_time (-1970 * MS_PER_YEAR) == 1); 80425bb815Sopenharmony_ci TEST_ASSERT (ecma_date_year_from_time (START_OF_GREGORIAN_CALENDAR) == 0); 81425bb815Sopenharmony_ci TEST_ASSERT (ecma_date_year_from_time (START_OF_GREGORIAN_CALENDAR - 1) == -1); 82425bb815Sopenharmony_ci TEST_ASSERT (ecma_date_year_from_time (START_OF_GREGORIAN_CALENDAR - 3 * MS_PER_YEAR) == -3); 83425bb815Sopenharmony_ci 84425bb815Sopenharmony_ci /* int ecma_date_month_from_time (time) */ 85425bb815Sopenharmony_ci 86425bb815Sopenharmony_ci TEST_ASSERT (ecma_date_month_from_time (START_OF_GREGORIAN_CALENDAR) == 0); 87425bb815Sopenharmony_ci TEST_ASSERT (ecma_date_month_from_time (0) == 0); 88425bb815Sopenharmony_ci TEST_ASSERT (ecma_date_month_from_time (-MS_PER_DAY) == 11); 89425bb815Sopenharmony_ci TEST_ASSERT (ecma_date_month_from_time (31 * MS_PER_DAY) == 1); 90425bb815Sopenharmony_ci 91425bb815Sopenharmony_ci /* int ecma_date_date_from_time (time) */ 92425bb815Sopenharmony_ci 93425bb815Sopenharmony_ci TEST_ASSERT (ecma_date_date_from_time (START_OF_GREGORIAN_CALENDAR) == 1); 94425bb815Sopenharmony_ci TEST_ASSERT (ecma_date_date_from_time (0) == 1); 95425bb815Sopenharmony_ci TEST_ASSERT (ecma_date_date_from_time (-MS_PER_DAY) == 31); 96425bb815Sopenharmony_ci TEST_ASSERT (ecma_date_date_from_time (31 * MS_PER_DAY) == 1); 97425bb815Sopenharmony_ci 98425bb815Sopenharmony_ci /* int ecma_date_week_day (ecma_number_t time) */ 99425bb815Sopenharmony_ci 100425bb815Sopenharmony_ci /* FIXME: Implement */ 101425bb815Sopenharmony_ci 102425bb815Sopenharmony_ci /* ecma_number_t ecma_date_utc (time) */ 103425bb815Sopenharmony_ci 104425bb815Sopenharmony_ci /* FIXME: Implement */ 105425bb815Sopenharmony_ci 106425bb815Sopenharmony_ci /* ecma_number_t ecma_date_hour_from_time (time) */ 107425bb815Sopenharmony_ci 108425bb815Sopenharmony_ci TEST_ASSERT (ecma_date_hour_from_time (START_OF_GREGORIAN_CALENDAR) == 0); 109425bb815Sopenharmony_ci TEST_ASSERT (ecma_date_hour_from_time (0) == 0); 110425bb815Sopenharmony_ci TEST_ASSERT (ecma_date_hour_from_time (-MS_PER_DAY) == 0); 111425bb815Sopenharmony_ci TEST_ASSERT (ecma_date_hour_from_time (-1) == 23); 112425bb815Sopenharmony_ci 113425bb815Sopenharmony_ci /* ecma_number_t ecma_date_min_from_time (time) */ 114425bb815Sopenharmony_ci 115425bb815Sopenharmony_ci TEST_ASSERT (ecma_date_min_from_time (START_OF_GREGORIAN_CALENDAR) == 0); 116425bb815Sopenharmony_ci TEST_ASSERT (ecma_date_min_from_time (0) == 0); 117425bb815Sopenharmony_ci TEST_ASSERT (ecma_date_min_from_time (-MS_PER_DAY) == 0); 118425bb815Sopenharmony_ci TEST_ASSERT (ecma_date_min_from_time (-1) == 59); 119425bb815Sopenharmony_ci 120425bb815Sopenharmony_ci /* ecma_number_t ecma_date_sec_from_time (time) */ 121425bb815Sopenharmony_ci 122425bb815Sopenharmony_ci TEST_ASSERT (ecma_date_sec_from_time (START_OF_GREGORIAN_CALENDAR) == 0); 123425bb815Sopenharmony_ci TEST_ASSERT (ecma_date_sec_from_time (0) == 0); 124425bb815Sopenharmony_ci TEST_ASSERT (ecma_date_sec_from_time (-MS_PER_DAY) == 0); 125425bb815Sopenharmony_ci TEST_ASSERT (ecma_date_sec_from_time (-1) == 59); 126425bb815Sopenharmony_ci 127425bb815Sopenharmony_ci /* ecma_number_t ecma_date_ms_from_time (time) */ 128425bb815Sopenharmony_ci 129425bb815Sopenharmony_ci TEST_ASSERT (ecma_date_ms_from_time (START_OF_GREGORIAN_CALENDAR) == 0); 130425bb815Sopenharmony_ci TEST_ASSERT (ecma_date_ms_from_time (0) == 0); 131425bb815Sopenharmony_ci TEST_ASSERT (ecma_date_ms_from_time (-MS_PER_DAY) == 0); 132425bb815Sopenharmony_ci TEST_ASSERT (ecma_date_ms_from_time (-1) == 999); 133425bb815Sopenharmony_ci 134425bb815Sopenharmony_ci /* ecma_number_t ecma_date_make_time (hour, min, sec, ms) */ 135425bb815Sopenharmony_ci 136425bb815Sopenharmony_ci /* FIXME: Implement */ 137425bb815Sopenharmony_ci 138425bb815Sopenharmony_ci /* ecma_number_t ecma_date_make_day (year, month, date) */ 139425bb815Sopenharmony_ci 140425bb815Sopenharmony_ci TEST_ASSERT (ecma_date_make_day (1970, 0, 1) == 0); 141425bb815Sopenharmony_ci TEST_ASSERT (ecma_date_make_day (1970, -1, 1) == -31); 142425bb815Sopenharmony_ci TEST_ASSERT (ecma_date_make_day (1970, 0, 2.5) == 1); 143425bb815Sopenharmony_ci TEST_ASSERT (ecma_date_make_day (1970, 1, 35) == 65); 144425bb815Sopenharmony_ci TEST_ASSERT (ecma_date_make_day (1970, 13, 35) == 430); 145425bb815Sopenharmony_ci TEST_ASSERT (ecma_date_make_day (2016, 2, 1) == 16861); 146425bb815Sopenharmony_ci TEST_ASSERT (ecma_date_make_day (2016, 8, 31) == 17075); 147425bb815Sopenharmony_ci TEST_ASSERT (ecma_date_make_day (2016, 9, 1) == 17075); 148425bb815Sopenharmony_ci 149425bb815Sopenharmony_ci /* ecma_number_t ecma_date_make_date (day, time) */ 150425bb815Sopenharmony_ci 151425bb815Sopenharmony_ci /* FIXME: Implement */ 152425bb815Sopenharmony_ci 153425bb815Sopenharmony_ci /* ecma_number_t ecma_date_time_clip (year) */ 154425bb815Sopenharmony_ci 155425bb815Sopenharmony_ci /* FIXME: Implement */ 156425bb815Sopenharmony_ci} 157