1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/js/src/tests/ecma/Date/15.9.5.31-1.js Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,188 @@ 1.4 +/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ 1.5 +/* This Source Code Form is subject to the terms of the Mozilla Public 1.6 + * License, v. 2.0. If a copy of the MPL was not distributed with this 1.7 + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ 1.8 + 1.9 + 1.10 +/** 1.11 + File Name: 15.9.5.31-1.js 1.12 + 1.13 + ECMA Section: 1.14 + 15.9.5.31 Date.prototype.setUTCHours(hour [, min [, sec [, ms ]]] ) 1.15 + 1.16 + Description: 1.17 + 1.18 + If min is not specified, this behaves as if min were specified with 1.19 + the value getUTCMinutes( ). If sec is not specified, this behaves 1.20 + as if sec were specified with the value getUTCSeconds ( ). If ms 1.21 + is not specified, this behaves as if ms were specified with the 1.22 + value getUTCMilliseconds( ). 1.23 + 1.24 + 1.Let t be this time value. 1.25 + 2.Call ToNumber(hour). 1.26 + 3.If min is not specified, compute MinFromTime(t); 1.27 + otherwise, call ToNumber(min). 1.28 + 4.If sec is not specified, compute SecFromTime(t); 1.29 + otherwise, call ToNumber(sec). 1.30 + 5.If ms is not specified, compute msFromTime(t); 1.31 + otherwise, call ToNumber(ms). 1.32 + 6.Compute MakeTime(Result(2), Result(3), Result(4), Result(5)). 1.33 + 7.Compute MakeDate(Day(t), Result(6)). 1.34 + 8.Set the [[Value]] property of the this value to TimeClip(Result(7)). 1.35 + 1.36 + 1.Return the value of the [[Value]] property of the this value. 1.37 + Author: christine@netscape.com 1.38 + Date: 12 november 1997 1.39 +*/ 1.40 +var SECTION = "15.9.5.31-1"; 1.41 +var VERSION = "ECMA_1"; 1.42 +startTest(); 1.43 + 1.44 +writeHeaderToLog(SECTION + 1.45 + " Date.prototype.setUTCHours(hour [, min [, sec [, ms ]]] )"); 1.46 + 1.47 +addNewTestCase( 0, 0, void 0, void 0, void 0, 1.48 + "TDATE = new Date(0);(TDATE).setUTCHours(0);TDATE", 1.49 + UTCDateFromTime(SetUTCHours(0,0,0,0)), 1.50 + LocalDateFromTime(SetUTCHours(0,0,0,0)) ); 1.51 + 1.52 +addNewTestCase( 28800000, 23, 59, 999, void 0, 1.53 + "TDATE = new Date(28800000);(TDATE).setUTCHours(23,59,999);TDATE", 1.54 + UTCDateFromTime(SetUTCHours(28800000,23,59,999)), 1.55 + LocalDateFromTime(SetUTCHours(28800000,23,59,999)) ); 1.56 + 1.57 +addNewTestCase( 28800000,999,999, void 0, void 0, 1.58 + "TDATE = new Date(28800000);(TDATE).setUTCHours(999,999);TDATE", 1.59 + UTCDateFromTime(SetUTCHours(28800000,999,999)), 1.60 + LocalDateFromTime(SetUTCHours(28800000,999,999)) ); 1.61 + 1.62 +addNewTestCase( 28800000, 999, void 0, void 0, void 0, 1.63 + "TDATE = new Date(28800000);(TDATE).setUTCHours(999);TDATE", 1.64 + UTCDateFromTime(SetUTCHours(28800000,999,0)), 1.65 + LocalDateFromTime(SetUTCHours(28800000,999,0)) ); 1.66 + 1.67 +addNewTestCase( 28800000, -8670, void 0, void 0, void 0, 1.68 + "TDATE = new Date(28800000);(TDATE).setUTCHours(-8670);TDATE", 1.69 + UTCDateFromTime(SetUTCHours(28800000,-8670)), 1.70 + LocalDateFromTime(SetUTCHours(28800000,-8670)) ); 1.71 + 1.72 +// modify hours to remove dst ambiguity 1.73 +addNewTestCase( 946684800000, 1235567, void 0, void 0, void 0, 1.74 + "TDATE = new Date(946684800000);(TDATE).setUTCHours(1235567);TDATE", 1.75 + UTCDateFromTime(SetUTCHours(946684800000,1235567)), 1.76 + LocalDateFromTime(SetUTCHours(946684800000,1235567)) ); 1.77 + 1.78 +addNewTestCase( -2208988800000, 59, 999, void 0, void 0, 1.79 + "TDATE = new Date(-2208988800000);(TDATE).setUTCHours(59,999);TDATE", 1.80 + UTCDateFromTime(SetUTCHours(-2208988800000,59,999)), 1.81 + LocalDateFromTime(SetUTCHours(-2208988800000,59,999)) ); 1.82 + 1.83 +test(); 1.84 + 1.85 +function addNewTestCase( time, hours, min, sec, ms, DateString, UTCDate, LocalDate) { 1.86 + 1.87 + DateCase = new Date(time); 1.88 + if ( min == void 0 ) { 1.89 + DateCase.setUTCHours( hours ); 1.90 + } else { 1.91 + if ( sec == void 0 ) { 1.92 + DateCase.setUTCHours( hours, min ); 1.93 + } else { 1.94 + if ( ms == void 0 ) { 1.95 + DateCase.setUTCHours( hours, min, sec ); 1.96 + } else { 1.97 + DateCase.setUTCHours( hours, min, sec, ms ); 1.98 + } 1.99 + } 1.100 + } 1.101 + 1.102 + new TestCase( SECTION, DateString+".getTime()", UTCDate.value, 1.103 + DateCase.getTime() ); 1.104 + new TestCase( SECTION, DateString+".valueOf()", UTCDate.value, 1.105 + DateCase.valueOf() ); 1.106 + new TestCase( SECTION, DateString+".getUTCFullYear()", UTCDate.year, 1.107 + DateCase.getUTCFullYear() ); 1.108 + new TestCase( SECTION, DateString+".getUTCMonth()", UTCDate.month, 1.109 + DateCase.getUTCMonth() ); 1.110 + new TestCase( SECTION, DateString+".getUTCDate()", UTCDate.date, 1.111 + DateCase.getUTCDate() ); 1.112 + new TestCase( SECTION, DateString+".getUTCDay()", UTCDate.day, 1.113 + DateCase.getUTCDay() ); 1.114 + new TestCase( SECTION, DateString+".getUTCHours()", UTCDate.hours, 1.115 + DateCase.getUTCHours() ); 1.116 + new TestCase( SECTION, DateString+".getUTCMinutes()", UTCDate.minutes, 1.117 + DateCase.getUTCMinutes() ); 1.118 + new TestCase( SECTION, DateString+".getUTCSeconds()", UTCDate.seconds, 1.119 + DateCase.getUTCSeconds() ); 1.120 + new TestCase( SECTION, DateString+".getUTCMilliseconds()", UTCDate.ms, 1.121 + DateCase.getUTCMilliseconds() ); 1.122 + 1.123 + new TestCase( SECTION, DateString+".getFullYear()", LocalDate.year, 1.124 + DateCase.getFullYear() ); 1.125 + new TestCase( SECTION, DateString+".getMonth()", LocalDate.month, 1.126 + DateCase.getMonth() ); 1.127 + new TestCase( SECTION, DateString+".getDate()", LocalDate.date, 1.128 + DateCase.getDate() ); 1.129 + new TestCase( SECTION, DateString+".getDay()", LocalDate.day, 1.130 + DateCase.getDay() ); 1.131 + new TestCase( SECTION, DateString+".getHours()", LocalDate.hours, 1.132 + DateCase.getHours() ); 1.133 + new TestCase( SECTION, DateString+".getMinutes()", LocalDate.minutes, 1.134 + DateCase.getMinutes() ); 1.135 + new TestCase( SECTION, DateString+".getSeconds()", LocalDate.seconds, 1.136 + DateCase.getSeconds() ); 1.137 + new TestCase( SECTION, DateString+".getMilliseconds()", LocalDate.ms, 1.138 + DateCase.getMilliseconds() ); 1.139 + 1.140 + DateCase.toString = Object.prototype.toString; 1.141 + 1.142 + new TestCase( SECTION, 1.143 + DateString+".toString=Object.prototype.toString;" + 1.144 + DateString+".toString()", 1.145 + "[object Date]", 1.146 + DateCase.toString() ); 1.147 +} 1.148 +function MyDate() { 1.149 + this.year = 0; 1.150 + this.month = 0; 1.151 + this.date = 0; 1.152 + this.hours = 0; 1.153 + this.minutes = 0; 1.154 + this.seconds = 0; 1.155 + this.ms = 0; 1.156 +} 1.157 +function LocalDateFromTime(t) { 1.158 + t = LocalTime(t); 1.159 + return ( MyDateFromTime(t) ); 1.160 +} 1.161 +function UTCDateFromTime(t) { 1.162 + return ( MyDateFromTime(t) ); 1.163 +} 1.164 +function MyDateFromTime( t ) { 1.165 + var d = new MyDate(); 1.166 + d.year = YearFromTime(t); 1.167 + d.month = MonthFromTime(t); 1.168 + d.date = DateFromTime(t); 1.169 + d.hours = HourFromTime(t); 1.170 + d.minutes = MinFromTime(t); 1.171 + d.seconds = SecFromTime(t); 1.172 + d.ms = msFromTime(t); 1.173 + 1.174 + d.time = MakeTime( d.hours, d.minutes, d.seconds, d.ms ); 1.175 + d.value = TimeClip( MakeDate( MakeDay( d.year, d.month, d.date ), d.time ) ); 1.176 + d.day = WeekDay( d.value ); 1.177 + 1.178 + return (d); 1.179 +} 1.180 +function SetUTCHours( t, hour, min, sec, ms ) { 1.181 + var TIME = t; 1.182 + var HOUR = Number(hour); 1.183 + var MIN = ( min == void 0) ? MinFromTime(TIME) : Number(min); 1.184 + var SEC = ( sec == void 0) ? SecFromTime(TIME) : Number(sec); 1.185 + var MS = ( ms == void 0 ) ? msFromTime(TIME) : Number(ms); 1.186 + var RESULT6 = MakeTime( HOUR, 1.187 + MIN, 1.188 + SEC, 1.189 + MS ); 1.190 + return ( TimeClip(MakeDate(Day(TIME), RESULT6)) ); 1.191 +}