1425bb815Sopenharmony_ci// Copyright JS Foundation and other contributors, http://js.foundation 2425bb815Sopenharmony_ci// 3425bb815Sopenharmony_ci// Licensed under the Apache License, Version 2.0 (the "License"); 4425bb815Sopenharmony_ci// you may not use this file except in compliance with the License. 5425bb815Sopenharmony_ci// You may obtain a copy of the License at 6425bb815Sopenharmony_ci// 7425bb815Sopenharmony_ci// http://www.apache.org/licenses/LICENSE-2.0 8425bb815Sopenharmony_ci// 9425bb815Sopenharmony_ci// Unless required by applicable law or agreed to in writing, software 10425bb815Sopenharmony_ci// distributed under the License is distributed on an "AS IS" BASIS 11425bb815Sopenharmony_ci// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12425bb815Sopenharmony_ci// See the License for the specific language governing permissions and 13425bb815Sopenharmony_ci// limitations under the License. 14425bb815Sopenharmony_ci 15425bb815Sopenharmony_ciassert (Date.length == 7); 16425bb815Sopenharmony_ci 17425bb815Sopenharmony_civar d; 18425bb815Sopenharmony_ci 19425bb815Sopenharmony_citry 20425bb815Sopenharmony_ci{ 21425bb815Sopenharmony_ci d = new Date({toString: function() { throw new Error("foo"); }}); 22425bb815Sopenharmony_ci assert (false); 23425bb815Sopenharmony_ci} 24425bb815Sopenharmony_cicatch (e) 25425bb815Sopenharmony_ci{ 26425bb815Sopenharmony_ci assert (e instanceof Error); 27425bb815Sopenharmony_ci assert (e.message === "foo"); 28425bb815Sopenharmony_ci} 29425bb815Sopenharmony_ci 30425bb815Sopenharmony_cid = new Date("abcd"); 31425bb815Sopenharmony_ciassert (isNaN(d.valueOf())); 32425bb815Sopenharmony_ci 33425bb815Sopenharmony_cid = new Date(); 34425bb815Sopenharmony_ciassert (!isNaN(d.valueOf())); 35425bb815Sopenharmony_ci 36425bb815Sopenharmony_cid = new Date("2015-01-01"); 37425bb815Sopenharmony_ciassert (d.valueOf() == 1420070400000); 38425bb815Sopenharmony_ci 39425bb815Sopenharmony_cid = new Date(1420070400000); 40425bb815Sopenharmony_ciassert (d.valueOf() == 1420070400000); 41425bb815Sopenharmony_ci 42425bb815Sopenharmony_cid = new Date(2015,0,1,0,0,0,0); 43425bb815Sopenharmony_ciassert (d.valueOf() - (d.getTimezoneOffset() * 60000) == 1420070400000); 44425bb815Sopenharmony_ci 45425bb815Sopenharmony_cid = new Date(8.64e+15); 46425bb815Sopenharmony_ciassert (d.valueOf() == 8.64e+15); 47425bb815Sopenharmony_ci 48425bb815Sopenharmony_cid = new Date(8.64e+15 + 1); 49425bb815Sopenharmony_ciassert (isNaN(d.valueOf())); 50425bb815Sopenharmony_ci 51425bb815Sopenharmony_cid = new Date(20000000, 0, 1); 52425bb815Sopenharmony_ciassert (isNaN(d.valueOf())); 53425bb815Sopenharmony_ci 54425bb815Sopenharmony_cid = new Date(0, 20000000, 1); 55425bb815Sopenharmony_ciassert (isNaN(d.valueOf())); 56425bb815Sopenharmony_ci 57425bb815Sopenharmony_civar Obj = function (val) 58425bb815Sopenharmony_ci{ 59425bb815Sopenharmony_ci this.value = val; 60425bb815Sopenharmony_ci this.valueOf = function () { throw new ReferenceError ("valueOf-" + this.value); }; 61425bb815Sopenharmony_ci this.toString = function () { throw new ReferenceError ("toString-"+ this.value); }; 62425bb815Sopenharmony_ci}; 63425bb815Sopenharmony_ci 64425bb815Sopenharmony_citry 65425bb815Sopenharmony_ci{ 66425bb815Sopenharmony_ci d = new Date (new Obj (1), new Obj (2)); 67425bb815Sopenharmony_ci // Should not be reached. 68425bb815Sopenharmony_ci assert (false); 69425bb815Sopenharmony_ci} 70425bb815Sopenharmony_cicatch (e) 71425bb815Sopenharmony_ci{ 72425bb815Sopenharmony_ci assert (e instanceof ReferenceError); 73425bb815Sopenharmony_ci assert (e.message === "valueOf-1"); 74425bb815Sopenharmony_ci} 75425bb815Sopenharmony_ci 76425bb815Sopenharmony_ciassert (typeof Date (2015) == "string"); 77425bb815Sopenharmony_ciassert (typeof Date() != typeof (new Date ())); 78425bb815Sopenharmony_ciassert (Date (Number.NaN) == Date ()); 79