darin | cd553de | 2003-10-13 02:05:37 +0000 | [diff] [blame] | 1 | /* The contents of this file are subject to the Netscape Public |
| 2 | * License Version 1.1 (the "License"); you may not use this file |
| 3 | * except in compliance with the License. You may obtain a copy of |
| 4 | * the License at http://www.mozilla.org/NPL/ |
| 5 | * |
| 6 | * Software distributed under the License is distributed on an "AS |
| 7 | * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or |
| 8 | * implied. See the License for the specific language governing |
| 9 | * rights and limitations under the License. |
| 10 | * |
| 11 | * The Original Code is Mozilla Communicator client code, released March |
| 12 | * 31, 1998. |
| 13 | * |
| 14 | * The Initial Developer of the Original Code is Netscape Communications |
| 15 | * Corporation. Portions created by Netscape are |
| 16 | * Copyright (C) 1998 Netscape Communications Corporation. All |
| 17 | * Rights Reserved. |
| 18 | * |
| 19 | * Contributor(s): |
| 20 | * |
| 21 | */ |
| 22 | /** |
| 23 | File Name: 15.9.5.24-1.js |
| 24 | ECMA Section: 15.9.5.24 Date.prototype.setTime(time) |
| 25 | Description: |
| 26 | 1. If the this value is not a Date object, generate a runtime error. |
| 27 | 2. Call ToNumber(time). |
| 28 | 3. Call TimeClip(Result(1)). |
| 29 | 4. Set the [[Value]] property of the this value to Result(2). |
| 30 | 5. Return the value of the [[Value]] property of the this value. |
| 31 | Author: christine@netscape.com |
| 32 | Date: 12 november 1997 |
| 33 | |
| 34 | */ |
| 35 | var TITLE = "Date.prototype.setTime" |
| 36 | var SECTION = "15.9.5.24-1"; |
| 37 | var VERSION = "ECMA_1"; |
| 38 | startTest(); |
| 39 | |
| 40 | writeHeaderToLog( SECTION + " Date.prototype.setMilliseconds(ms)"); |
| 41 | |
| 42 | var testcases = new Array(); |
| 43 | getTestCases(); |
| 44 | test(); |
| 45 | |
| 46 | function test() { |
| 47 | for ( tc=0; tc < testcases.length; tc++ ) { |
| 48 | testcases[tc].passed = writeTestCaseResult( |
| 49 | testcases[tc].expect, |
| 50 | testcases[tc].actual, |
| 51 | testcases[tc].description +" = "+ |
| 52 | testcases[tc].actual ); |
| 53 | |
| 54 | testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; |
| 55 | } |
| 56 | stopTest(); |
| 57 | return ( testcases ); |
| 58 | } |
| 59 | |
| 60 | function getTestCases() { |
| 61 | |
| 62 | addTestCase( 0, 946684800000 ); |
| 63 | /* |
| 64 | |
| 65 | // This test case is incorrect. Need to fix the DaylightSavings functions in |
| 66 | // shell.js for this to work properly. |
| 67 | // addTestCase( 0, -69609600000 ); |
| 68 | // addTestCase( 0, "-69609600000" ); |
| 69 | |
| 70 | addTestCase( 0, "0" ); |
| 71 | addTestCase( 0, "-2208988800000" ); |
| 72 | addTestCase( 0, "-86400000" ); |
| 73 | addTestCase( 0, "946684800000" ); |
| 74 | */ |
| 75 | } |
| 76 | function addTestCase( startms, newms ) { |
| 77 | |
| 78 | var DateCase = new Date( startms ); |
| 79 | DateCase.setMilliseconds( newms ); |
| 80 | var DateString = "var date = new Date("+ startms +"); date.setMilliseconds("+ newms +"); date"; |
| 81 | var UTCDate = UTCDateFromTime( Number(newms) ); |
| 82 | var LocalDate = LocalDateFromTime( Number(newms) ); |
| 83 | |
| 84 | var item = testcases.length; |
| 85 | |
| 86 | // fixed_year = ( ExpectDate.year >=1900 || ExpectDate.year < 2000 ) ? ExpectDate.year - 1900 : ExpectDate.year; |
| 87 | |
| 88 | testcases[item++] = new TestCase( SECTION, DateString+".getTime()", UTCDate.value, DateCase.getTime() ); |
| 89 | testcases[item++] = new TestCase( SECTION, DateString+".valueOf()", UTCDate.value, DateCase.valueOf() ); |
| 90 | |
| 91 | testcases[item++] = new TestCase( SECTION, DateString+".getUTCFullYear()", UTCDate.year, DateCase.getUTCFullYear() ); |
| 92 | testcases[item++] = new TestCase( SECTION, DateString+".getUTCMonth()", UTCDate.month, DateCase.getUTCMonth() ); |
| 93 | testcases[item++] = new TestCase( SECTION, DateString+".getUTCDate()", UTCDate.date, DateCase.getUTCDate() ); |
| 94 | // testcases[item++] = new TestCase( SECTION, DateString+".getUTCDay()", UTCDate.day, DateCase.getUTCDay() ); |
| 95 | testcases[item++] = new TestCase( SECTION, DateString+".getUTCHours()", UTCDate.hours, DateCase.getUTCHours() ); |
| 96 | testcases[item++] = new TestCase( SECTION, DateString+".getUTCMinutes()", UTCDate.minutes,DateCase.getUTCMinutes() ); |
| 97 | testcases[item++] = new TestCase( SECTION, DateString+".getUTCSeconds()", UTCDate.seconds,DateCase.getUTCSeconds() ); |
| 98 | testcases[item++] = new TestCase( SECTION, DateString+".getUTCMilliseconds()", UTCDate.ms, DateCase.getUTCMilliseconds() ); |
| 99 | |
| 100 | testcases[item++] = new TestCase( SECTION, DateString+".getFullYear()", LocalDate.year, DateCase.getFullYear() ); |
| 101 | testcases[item++] = new TestCase( SECTION, DateString+".getMonth()", LocalDate.month, DateCase.getMonth() ); |
| 102 | testcases[item++] = new TestCase( SECTION, DateString+".getDate()", LocalDate.date, DateCase.getDate() ); |
| 103 | // testcases[item++] = new TestCase( SECTION, DateString+".getDay()", LocalDate.day, DateCase.getDay() ); |
| 104 | testcases[item++] = new TestCase( SECTION, DateString+".getHours()", LocalDate.hours, DateCase.getHours() ); |
| 105 | testcases[item++] = new TestCase( SECTION, DateString+".getMinutes()", LocalDate.minutes, DateCase.getMinutes() ); |
| 106 | testcases[item++] = new TestCase( SECTION, DateString+".getSeconds()", LocalDate.seconds, DateCase.getSeconds() ); |
| 107 | testcases[item++] = new TestCase( SECTION, DateString+".getMilliseconds()", LocalDate.ms, DateCase.getMilliseconds() ); |
| 108 | |
| 109 | DateCase.toString = Object.prototype.toString; |
| 110 | |
| 111 | testcases[item++] = new TestCase( SECTION, |
| 112 | DateString+".toString=Object.prototype.toString;"+DateString+".toString()", |
| 113 | "[object Date]", |
| 114 | DateCase.toString() ); |
| 115 | } |
| 116 | |
| 117 | function MyDate() { |
| 118 | this.year = 0; |
| 119 | this.month = 0; |
| 120 | this.date = 0; |
| 121 | this.hours = 0; |
| 122 | this.minutes = 0; |
| 123 | this.seconds = 0; |
| 124 | this.ms = 0; |
| 125 | } |
| 126 | function LocalDateFromTime(t) { |
| 127 | t = LocalTime(t); |
| 128 | return ( MyDateFromTime(t) ); |
| 129 | } |
| 130 | function UTCDateFromTime(t) { |
| 131 | return ( MyDateFromTime(t) ); |
| 132 | } |
| 133 | function MyDateFromTime( t ) { |
| 134 | var d = new MyDate(); |
| 135 | d.year = YearFromTime(t); |
| 136 | d.month = MonthFromTime(t); |
| 137 | d.date = DateFromTime(t); |
| 138 | d.hours = HourFromTime(t); |
| 139 | d.minutes = MinFromTime(t); |
| 140 | d.seconds = SecFromTime(t); |
| 141 | d.ms = msFromTime(t); |
| 142 | |
| 143 | d.time = MakeTime( d.hours, d.minutes, d.seconds, d.ms ); |
| 144 | d.value = TimeClip( MakeDate( MakeDay( d.year, d.month, d.date ), d.time ) ); |
| 145 | d.day = WeekDay( d.value ); |
| 146 | |
| 147 | return (d); |
| 148 | } |