initial import
[vuplus_webkit] / Source / JavaScriptCore / tests / mozilla / ecma / Date / 15.9.5.36-5.js
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.36-1.js
24     ECMA Section:       15.9.5.36 Date.prototype.setFullYear(year [, mon [, date ]] )
25     Description:
26
27     If mon is not specified, this behaves as if mon were specified with the
28     value getMonth( ). If date is not specified, this behaves as if date were
29     specified with the value getDate( ).
30
31    1.   Let t be the result of LocalTime(this time value); but if this time
32         value is NaN, let t be +0.
33    2.   Call ToNumber(year).
34    3.   If mon is not specified, compute MonthFromTime(t); otherwise, call
35         ToNumber(mon).
36    4.   If date is not specified, compute DateFromTime(t); otherwise, call
37         ToNumber(date).
38    5.   Compute MakeDay(Result(2), Result(3), Result(4)).
39    6.   Compute UTC(MakeDate(Result(5), TimeWithinDay(t))).
40    7.   Set the [[Value]] property of the this value to TimeClip(Result(6)).
41    8.   Return the value of the [[Value]] property of the this value.
42
43     Author:             christine@netscape.com
44     Date:               12 november 1997
45
46     Added test cases for Year 2000 Compatilibity Testing.
47
48 */
49     var SECTION = "15.9.5.36-1";
50     var VERSION = "ECMA_1";
51     startTest();
52
53     writeHeaderToLog( SECTION + " Date.prototype.setFullYear(year [, mon [, date ]] )");
54
55     getTestCases();
56     test();
57
58 function test() {
59     for ( tc=0; tc < testcases.length; tc++ ) {
60         testcases[tc].passed = writeTestCaseResult(
61                             testcases[tc].expect,
62                             testcases[tc].actual,
63                             testcases[tc].description +" = "+
64                             testcases[tc].actual );
65
66         testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value ";
67     }
68     stopTest();
69     return ( testcases );
70 }
71 function getTestCases() {
72     // 2000
73     addNewTestCase( "TDATE = new Date(0);(TDATE).setFullYear(2000);TDATE",
74                     UTCDateFromTime(SetFullYear(0,2000)),
75                     LocalDateFromTime(SetFullYear(0,2000)) );
76
77     addNewTestCase( "TDATE = new Date(0);(TDATE).setFullYear(2000,0);TDATE",
78                     UTCDateFromTime(SetFullYear(0,2000,0)),
79                     LocalDateFromTime(SetFullYear(0,2000,0)) );
80
81     addNewTestCase( "TDATE = new Date(0);(TDATE).setFullYear(2000,0,1);TDATE",
82                     UTCDateFromTime(SetFullYear(0,2000,0,1)),
83                     LocalDateFromTime(SetFullYear(0,2000,0,1)) );
84
85 /*
86     // feb 29, 2000
87     addNewTestCase( "TDATE = new Date(0);(TDATE).setFullYear(2000);TDATE",
88                     UTCDateFromTime(SetFullYear(0,2000)),
89                     LocalDateFromTime(SetFullYear(0,2000)) );
90
91     addNewTestCase( "TDATE = new Date(0);(TDATE).setFullYear(2000,1);TDATE",
92                     UTCDateFromTime(SetFullYear(0,2000,1)),
93                     LocalDateFromTime(SetFullYear(0,2000,1)) );
94
95     addNewTestCase( "TDATE = new Date(0);(TDATE).setFullYear(2000,1,29);TDATE",
96                     UTCDateFromTime(SetFullYear(0,2000,1,29)),
97                     LocalDateFromTime(SetFullYear(0,2000,1,29)) );
98
99     // Jan 1, 2005
100     addNewTestCase( "TDATE = new Date(0);(TDATE).setFullYear(2005);TDATE",
101                     UTCDateFromTime(SetFullYear(0,2005)),
102                     LocalDateFromTime(SetFullYear(0,2005)) );
103
104     addNewTestCase( "TDATE = new Date(0);(TDATE).setFullYear(2005,0);TDATE",
105                     UTCDateFromTime(SetFullYear(0,2005,0)),
106                     LocalDateFromTime(SetFullYear(0,2005,0)) );
107
108     addNewTestCase( "TDATE = new Date(0);(TDATE).setFullYear(2005,0,1);TDATE",
109                     UTCDateFromTime(SetFullYear(0,2005,0,1)),
110                     LocalDateFromTime(SetFullYear(0,2005,0,1)) );
111
112 */
113 }
114 function addNewTestCase( DateString, UTCDate, LocalDate) {
115     DateCase = eval( DateString );
116
117     var item = testcases.length;
118
119 //    fixed_year = ( ExpectDate.year >=1900 || ExpectDate.year < 2000 ) ? ExpectDate.year - 1900 : ExpectDate.year;
120
121     testcases[item++] = new TestCase( SECTION, DateString+".getTime()",             UTCDate.value,       DateCase.getTime() );
122     testcases[item++] = new TestCase( SECTION, DateString+".valueOf()",             UTCDate.value,       DateCase.valueOf() );
123
124     testcases[item++] = new TestCase( SECTION, DateString+".getUTCFullYear()",      UTCDate.year,    DateCase.getUTCFullYear() );
125     testcases[item++] = new TestCase( SECTION, DateString+".getUTCMonth()",         UTCDate.month,  DateCase.getUTCMonth() );
126     testcases[item++] = new TestCase( SECTION, DateString+".getUTCDate()",          UTCDate.date,   DateCase.getUTCDate() );
127     testcases[item++] = new TestCase( SECTION, DateString+".getUTCDay()",           UTCDate.day,    DateCase.getUTCDay() );
128     testcases[item++] = new TestCase( SECTION, DateString+".getUTCHours()",         UTCDate.hours,  DateCase.getUTCHours() );
129     testcases[item++] = new TestCase( SECTION, DateString+".getUTCMinutes()",       UTCDate.minutes,DateCase.getUTCMinutes() );
130     testcases[item++] = new TestCase( SECTION, DateString+".getUTCSeconds()",       UTCDate.seconds,DateCase.getUTCSeconds() );
131     testcases[item++] = new TestCase( SECTION, DateString+".getUTCMilliseconds()",  UTCDate.ms,     DateCase.getUTCMilliseconds() );
132
133     testcases[item++] = new TestCase( SECTION, DateString+".getFullYear()",         LocalDate.year,       DateCase.getFullYear() );
134     testcases[item++] = new TestCase( SECTION, DateString+".getMonth()",            LocalDate.month,      DateCase.getMonth() );
135     testcases[item++] = new TestCase( SECTION, DateString+".getDate()",             LocalDate.date,       DateCase.getDate() );
136     testcases[item++] = new TestCase( SECTION, DateString+".getDay()",              LocalDate.day,        DateCase.getDay() );
137     testcases[item++] = new TestCase( SECTION, DateString+".getHours()",            LocalDate.hours,      DateCase.getHours() );
138     testcases[item++] = new TestCase( SECTION, DateString+".getMinutes()",          LocalDate.minutes,    DateCase.getMinutes() );
139     testcases[item++] = new TestCase( SECTION, DateString+".getSeconds()",          LocalDate.seconds,    DateCase.getSeconds() );
140     testcases[item++] = new TestCase( SECTION, DateString+".getMilliseconds()",     LocalDate.ms,         DateCase.getMilliseconds() );
141
142     DateCase.toString = Object.prototype.toString;
143
144     testcases[item++] = new TestCase( SECTION,
145                                       DateString+".toString=Object.prototype.toString;"+DateString+".toString()",
146                                       "[object Date]",
147                                       DateCase.toString() );
148 }
149
150 function MyDate() {
151     this.year = 0;
152     this.month = 0;
153     this.date = 0;
154     this.hours = 0;
155     this.minutes = 0;
156     this.seconds = 0;
157     this.ms = 0;
158 }
159 function LocalDateFromTime(t) {
160     t = LocalTime(t);
161     return ( MyDateFromTime(t) );
162 }
163 function UTCDateFromTime(t) {
164  return ( MyDateFromTime(t) );
165 }
166 function MyDateFromTime( t ) {
167     var d = new MyDate();
168     d.year = YearFromTime(t);
169     d.month = MonthFromTime(t);
170     d.date = DateFromTime(t);
171     d.hours = HourFromTime(t);
172     d.minutes = MinFromTime(t);
173     d.seconds = SecFromTime(t);
174     d.ms = msFromTime(t);
175
176     d.time = MakeTime( d.hours, d.minutes, d.seconds, d.ms );
177     d.value = TimeClip( MakeDate( MakeDay( d.year, d.month, d.date ), d.time ) );
178     d.day = WeekDay( d.value );
179
180     return (d);
181 }
182 function SetFullYear( t, year, mon, date ) {
183     var T = ( isNaN(t) ) ? 0 : LocalTime(t) ;
184     var YEAR = Number( year );
185     var MONTH = ( mon == void 0 ) ? MonthFromTime(T) : Number( mon );
186     var DATE = ( date == void 0 ) ? DateFromTime(T)  : Number( date );
187
188     var DAY = MakeDay( YEAR, MONTH, DATE );
189     var UTC_DATE = UTC(MakeDate( DAY, TimeWithinDay(T)));
190
191     return ( TimeClip(UTC_DATE) );
192 }