| // Copyright 2009 the Sputnik authors. All rights reserved. |
| // This code is governed by the BSD license found in the LICENSE file. |
| |
| /*--- |
| info: | |
| The [[Value]] property of the newly constructed object |
| is set by following steps: |
| 1. Call ToNumber(year) |
| 2. Call ToNumber(month) |
| 3. If date is supplied use ToNumber(date) |
| 4. If hours is supplied use ToNumber(hours) |
| 5. If minutes is supplied use ToNumber(minutes) |
| 6. If seconds is supplied use ToNumber(seconds) |
| 7. If ms is supplied use ToNumber(ms) |
| esid: sec-date-year-month-date-hours-minutes-seconds-ms |
| es5id: 15.9.3.1_A4_T3 |
| description: 4 arguments, (year, month, date, hours) |
| ---*/ |
| |
| var myObj = function(val){ |
| this.value = val; |
| this.valueOf = function(){throw "valueOf-"+this.value;}; |
| this.toString = function(){throw "toString-"+this.value;}; |
| }; |
| |
| //CHECK#1 |
| try{ |
| var x1 = new Date(new myObj(1), new myObj(2), new myObj(3), new myObj(4)); |
| $ERROR("#1: The 1st step is calling ToNumber(year)"); |
| } |
| catch(e){ |
| if(e !== "valueOf-1"){ |
| $ERROR("#1: The 1st step is calling ToNumber(year)"); |
| } |
| } |
| |
| //CHECK#2 |
| try{ |
| var x2 = new Date(1, new myObj(2), new myObj(3), new myObj(4)); |
| $ERROR("#2: The 2nd step is calling ToNumber(month)"); |
| } |
| catch(e){ |
| if(e !== "valueOf-2"){ |
| $ERROR("#2: The 2nd step is calling ToNumber(month)"); |
| } |
| } |
| |
| //CHECK#3 |
| try{ |
| var x3 = new Date(1, 2, new myObj(3), new myObj(4)); |
| $ERROR("#3: The 3rd step is calling ToNumber(date)"); |
| } |
| catch(e){ |
| if(e !== "valueOf-3"){ |
| $ERROR("#3: The 3rd step is calling ToNumber(date)"); |
| } |
| } |
| |
| //CHECK#4 |
| try{ |
| var x4 = new Date(1, 2, 3, new myObj(4)); |
| $ERROR("#4: The 4th step is calling ToNumber(hours)"); |
| } |
| catch(e){ |
| if(e !== "valueOf-4"){ |
| $ERROR("#4: The 4th step is calling ToNumber(hours)"); |
| } |
| } |