js/src/tests/ecma/Date/15.9.4.3.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.4.3.js	Wed Dec 31 06:09:35 2014 +0100
     1.3 @@ -0,0 +1,151 @@
     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 +var SECTION = "15.9.4.3";
    1.11 +var TITLE = "Date.UTC( year, month, date, hours, minutes, seconds, ms )";
    1.12 +
    1.13 +// Dates around 1970
    1.14 +
    1.15 +addNewTestCase( Date.UTC( 1970,0,1,0,0,0,0),
    1.16 +		"Date.UTC( 1970,0,1,0,0,0,0)",
    1.17 +		utc(1970,0,1,0,0,0,0) );
    1.18 +
    1.19 +addNewTestCase( Date.UTC( 1969,11,31,23,59,59,999),
    1.20 +		"Date.UTC( 1969,11,31,23,59,59,999)",
    1.21 +		utc(1969,11,31,23,59,59,999) );
    1.22 +addNewTestCase( Date.UTC( 1972,1,29,23,59,59,999),
    1.23 +		"Date.UTC( 1972,1,29,23,59,59,999)",
    1.24 +		utc(1972,1,29,23,59,59,999) );
    1.25 +addNewTestCase( Date.UTC( 1972,2,1,23,59,59,999),
    1.26 +		"Date.UTC( 1972,2,1,23,59,59,999)",
    1.27 +		utc(1972,2,1,23,59,59,999) );
    1.28 +addNewTestCase( Date.UTC( 1968,1,29,23,59,59,999),
    1.29 +		"Date.UTC( 1968,1,29,23,59,59,999)",
    1.30 +		utc(1968,1,29,23,59,59,999) );
    1.31 +addNewTestCase( Date.UTC( 1968,2,1,23,59,59,999),
    1.32 +		"Date.UTC( 1968,2,1,23,59,59,999)",
    1.33 +		utc(1968,2,1,23,59,59,999) );
    1.34 +addNewTestCase( Date.UTC( 1969,0,1,0,0,0,0),
    1.35 +		"Date.UTC( 1969,0,1,0,0,0,0)",
    1.36 +		utc(1969,0,1,0,0,0,0) );
    1.37 +addNewTestCase( Date.UTC( 1969,11,31,23,59,59,1000),
    1.38 +		"Date.UTC( 1969,11,31,23,59,59,1000)",
    1.39 +		utc(1970,0,1,0,0,0,0) );
    1.40 +addNewTestCase( Date.UTC( 1969,Number.NaN,31,23,59,59,999),
    1.41 +		"Date.UTC( 1969,Number.NaN,31,23,59,59,999)",
    1.42 +		utc(1969,Number.NaN,31,23,59,59,999) );
    1.43 +
    1.44 +// Dates around 2000
    1.45 +
    1.46 +addNewTestCase( Date.UTC( 1999,11,31,23,59,59,999),
    1.47 +		"Date.UTC( 1999,11,31,23,59,59,999)",
    1.48 +		utc(1999,11,31,23,59,59,999) );
    1.49 +addNewTestCase( Date.UTC( 2000,0,1,0,0,0,0),
    1.50 +		"Date.UTC( 2000,0,1,0,0,0,0)",
    1.51 +		utc(2000,0,1,0,0,0,0) );
    1.52 +
    1.53 +// Dates around 1900
    1.54 +addNewTestCase( Date.UTC( 1899,11,31,23,59,59,999),
    1.55 +		"Date.UTC( 1899,11,31,23,59,59,999)",
    1.56 +		utc(1899,11,31,23,59,59,999) );
    1.57 +addNewTestCase( Date.UTC( 1900,0,1,0,0,0,0),
    1.58 +		"Date.UTC( 1900,0,1,0,0,0,0)",
    1.59 +		utc(1900,0,1,0,0,0,0) );
    1.60 +addNewTestCase( Date.UTC( 1973,0,1,0,0,0,0),
    1.61 +		"Date.UTC( 1973,0,1,0,0,0,0)",
    1.62 +		utc(1973,0,1,0,0,0,0) );
    1.63 +addNewTestCase( Date.UTC( 1776,6,4,12,36,13,111),
    1.64 +		"Date.UTC( 1776,6,4,12,36,13,111)",
    1.65 +		utc(1776,6,4,12,36,13,111) );
    1.66 +addNewTestCase( Date.UTC( 2525,9,18,15,30,1,123),
    1.67 +		"Date.UTC( 2525,9,18,15,30,1,123)",
    1.68 +		utc(2525,9,18,15,30,1,123) );
    1.69 +
    1.70 +// Dates around 29 Feb 2000
    1.71 +
    1.72 +addNewTestCase( Date.UTC( 2000,1,29,0,0,0,0 ),
    1.73 +		"Date.UTC( 2000,1,29,0,0,0,0 )",
    1.74 +		utc(2000,1,29,0,0,0,0) );
    1.75 +addNewTestCase( Date.UTC( 2000,1,29,8,0,0,0 ),
    1.76 +		"Date.UTC( 2000,1,29,8,0,0,0 )",
    1.77 +		utc(2000,1,29,8,0,0,0) );
    1.78 +
    1.79 +// Dates around 1 Jan 2005
    1.80 +
    1.81 +addNewTestCase( Date.UTC( 2005,0,1,0,0,0,0 ),
    1.82 +		"Date.UTC( 2005,0,1,0,0,0,0 )",
    1.83 +		utc(2005,0,1,0,0,0,0) );
    1.84 +addNewTestCase( Date.UTC( 2004,11,31,16,0,0,0 ),
    1.85 +		"Date.UTC( 2004,11,31,16,0,0,0 )",
    1.86 +		utc(2004,11,31,16,0,0,0) );
    1.87 +
    1.88 +test();
    1.89 +
    1.90 +function addNewTestCase( DateCase, DateString, ExpectDate) {
    1.91 +  DateCase = DateCase;
    1.92 +
    1.93 +  new TestCase( SECTION, DateString,         ExpectDate.value,       DateCase );
    1.94 +  new TestCase( SECTION, DateString,         ExpectDate.value,       DateCase );
    1.95 +}
    1.96 +
    1.97 +function MyDate() {
    1.98 +  this.year = 0;
    1.99 +  this.month = 0;
   1.100 +  this.date = 0;
   1.101 +  this.hours = 0;
   1.102 +  this.minutes = 0;
   1.103 +  this.seconds = 0;
   1.104 +  this.ms = 0;
   1.105 +}
   1.106 +
   1.107 +function utc( year, month, date, hours, minutes, seconds, ms ) {
   1.108 +  d = new MyDate();
   1.109 +  d.year      = Number(year);
   1.110 +
   1.111 +  if (month)
   1.112 +    d.month     = Number(month);
   1.113 +  if (date)
   1.114 +    d.date      = Number(date);
   1.115 +  if (hours)
   1.116 +    d.hours     = Number(hours);
   1.117 +  if (minutes)
   1.118 +    d.minutes   = Number(minutes);
   1.119 +  if (seconds)
   1.120 +    d.seconds   = Number(seconds);
   1.121 +  if (ms)
   1.122 +    d.ms        = Number(ms);
   1.123 +
   1.124 +  if ( isNaN(d.year) && 0 <= ToInteger(d.year) && d.year <= 99 ) {
   1.125 +    d.year = 1900 + ToInteger(d.year);
   1.126 +  }
   1.127 +
   1.128 +  if (isNaN(month) || isNaN(year) || isNaN(date) || isNaN(hours) ||
   1.129 +      isNaN(minutes) || isNaN(seconds) || isNaN(ms) ) {
   1.130 +    d.year = Number.NaN;
   1.131 +    d.month = Number.NaN;
   1.132 +    d.date = Number.NaN;
   1.133 +    d.hours = Number.NaN;
   1.134 +    d.minutes = Number.NaN;
   1.135 +    d.seconds = Number.NaN;
   1.136 +    d.ms = Number.NaN;
   1.137 +    d.value = Number.NaN;
   1.138 +    d.time = Number.NaN;
   1.139 +    d.day =Number.NaN;
   1.140 +    return d;
   1.141 +  }
   1.142 +
   1.143 +  d.day = MakeDay( d.year, d.month, d.date );
   1.144 +  d.time = MakeTime( d.hours, d.minutes, d.seconds, d.ms );
   1.145 +  d.value = (TimeClip( MakeDate(d.day,d.time)));
   1.146 +
   1.147 +  return d;
   1.148 +}
   1.149 +
   1.150 +function UTCTime( t ) {
   1.151 +  sign = ( t < 0 ) ? -1 : 1;
   1.152 +  return ( (t +(TZ_DIFF*msPerHour)) );
   1.153 +}
   1.154 +

mercurial