js/src/tests/ecma/Date/15.9.5.31-1.js

changeset 0
6474c204b198
     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 +}

mercurial