From e4f4abdcb2244792d4ee3c84924ea8bf71a1837e Mon Sep 17 00:00:00 2001 From: Peter Hoddie Date: Thu, 4 Jul 2024 08:19:23 -0700 Subject: [PATCH] Compatibility with Hardened JavaScript (#4088) This PR proposes changes to existing test262 tests to allow them to pass under Hardened JavaScript (see Secure ECMAScript proposal and Hardened JavaScript). Moddable uses Hardened JavaScript for JavaScript runtimes on resource constrained embedded devices, including those targeted by ECMA-419. The changes fall into four groups: 1. Replace use of new Date() with new Date(1970). Scripts running inside a Compartment cannot retrieve the current time, so new Date() throws but new Date(1970) succeeds. Very few tests need the current time, but instead simply need a Date instance. 2. Use Object.defineProperty instead of setting existing built-in properties directly, such as toString and toValue. In Hardened JavaScript, prototypes of built-in objects are frozen. Consequently, setting properties of an instance that exist on the prototype throw (Hardened JavaScript is always in strict mode). 3. Eliminate use of Math.random(). Scripts running inside a Compartment cannot generate random numbers. One test identified so far uses Math.random() in a way that can easily be replaced with a counter. 4. Narrow the scope of exception tests. Consider the following assert.throws(TypeError, () => { var s1 = new Date(); s1.toString = Boolean.prototype.toString; s1.toString(); }); This test passes, but only because new Date() fails by throwing a TypeError. If the invocation of the Date constructor is resolved by (1) above, then the assignment to toString fails as per (2) above. The script should be modified as below to ensure that assert.throws only tests the intended statement, s1.toString(). The modified script tests the intended functionality and passes under Hardened JavaScript var s1 = new Date(1970); Object.defineProperty(s1, "toString", { value: Boolean.prototype.toString }); assert.throws(TypeError, () => { s1.toString(); }); This is an initial PR to begin the process of adapting test262 for use with Hardened JavaScript. Further changes are expected, with the vast majority likely to fall into the four groups described above. Thank you to gibson042, kriskowal, and erights for their advice on this work. --- src/subclass-builtins/Date.case | 4 +++- .../built-ins/Date/prototype/setYear/year-nan.js | 6 +++--- .../Date/prototype/setYear/year-to-number-err.js | 2 +- test/built-ins/Array/isArray/15.4.3.2-1-9.js | 2 +- .../Array/prototype/every/15.4.4.16-1-11.js | 2 +- .../Array/prototype/every/15.4.4.16-3-23.js | 10 ++++++---- .../Array/prototype/every/15.4.4.16-5-15.js | 2 +- .../prototype/every/15.4.4.16-7-c-iii-21.js | 2 +- .../Array/prototype/filter/15.4.4.20-1-11.js | 2 +- .../Array/prototype/filter/15.4.4.20-5-15.js | 2 +- .../prototype/filter/15.4.4.20-9-c-iii-22.js | 2 +- .../Array/prototype/forEach/15.4.4.18-1-11.js | 2 +- .../Array/prototype/forEach/15.4.4.18-5-15.js | 2 +- .../Array/prototype/indexOf/15.4.4.14-1-11.js | 2 +- .../prototype/lastIndexOf/15.4.4.15-1-11.js | 2 +- .../Array/prototype/map/15.4.4.19-1-11.js | 2 +- .../Array/prototype/map/15.4.4.19-5-15.js | 2 +- .../Array/prototype/reduce/15.4.4.21-1-11.js | 2 +- .../prototype/reduce/15.4.4.21-9-c-ii-31.js | 2 +- .../prototype/reduceRight/15.4.4.22-1-11.js | 2 +- .../prototype/reduceRight/15.4.4.22-3-23.js | 10 ++++++---- .../prototype/reduceRight/15.4.4.22-9-c-ii-31.js | 2 +- .../Array/prototype/some/15.4.4.17-1-11.js | 2 +- .../Array/prototype/some/15.4.4.17-5-15.js | 2 +- .../Array/prototype/some/15.4.4.17-7-c-iii-21.js | 2 +- .../prototype/toString/S15.6.4.2_A2_T3.js | 8 ++++---- test/built-ins/Date/is-a-constructor.js | 2 +- .../built-ins/Date/proto-from-ctor-realm-zero.js | 2 +- .../prototype/Symbol.toPrimitive/hint-invalid.js | 2 +- .../Date/prototype/setDate/arg-to-number-err.js | 2 +- .../setFullYear/arg-date-to-number-err.js | 2 +- .../setFullYear/arg-month-to-number-err.js | 2 +- .../setFullYear/arg-year-to-number-err.js | 2 +- .../prototype/setHours/arg-hour-to-number-err.js | 2 +- .../prototype/setHours/arg-min-to-number-err.js | 2 +- .../prototype/setHours/arg-ms-to-number-err.js | 2 +- .../prototype/setHours/arg-sec-to-number-err.js | 2 +- .../setMilliseconds/arg-to-number-err.js | 2 +- .../setMinutes/arg-min-to-number-err.js | 2 +- .../prototype/setMinutes/arg-ms-to-number-err.js | 2 +- .../setMinutes/arg-sec-to-number-err.js | 2 +- .../prototype/setMonth/arg-date-to-number-err.js | 2 +- .../setMonth/arg-month-to-number-err.js | 2 +- .../prototype/setSeconds/arg-ms-to-number-err.js | 2 +- .../setSeconds/arg-sec-to-number-err.js | 2 +- .../Date/prototype/setTime/arg-to-number-err.js | 2 +- .../prototype/setTime/new-value-time-clip.js | 2 +- .../Date/prototype/toDateString/format.js | 2 +- .../Date/prototype/toISOString/15.9.5.43-0-10.js | 2 +- .../Date/prototype/toISOString/15.9.5.43-0-11.js | 2 +- .../Date/prototype/toISOString/15.9.5.43-0-12.js | 2 +- .../Date/prototype/toISOString/15.9.5.43-0-5.js | 2 +- .../Date/prototype/toISOString/15.9.5.43-0-8.js | 2 +- .../Date/prototype/toISOString/15.9.5.43-0-9.js | 2 +- .../Date/prototype/toJSON/invoke-result.js | 2 +- test/built-ins/Date/prototype/toString/format.js | 2 +- .../Date/prototype/toTimeString/format.js | 2 +- .../Date/prototype/toUTCString/format.js | 2 +- .../prototype/toString/S15.7.4.2_A4_T03.js | 8 ++++---- .../Number/prototype/valueOf/S15.7.4.4_A2_T03.js | 8 ++++---- test/built-ins/Object/create/15.2.3.5-4-11.js | 2 +- test/built-ins/Object/create/15.2.3.5-4-118.js | 2 +- test/built-ins/Object/create/15.2.3.5-4-143.js | 2 +- test/built-ins/Object/create/15.2.3.5-4-171.js | 2 +- test/built-ins/Object/create/15.2.3.5-4-197.js | 2 +- test/built-ins/Object/create/15.2.3.5-4-222.js | 2 +- test/built-ins/Object/create/15.2.3.5-4-249.js | 2 +- test/built-ins/Object/create/15.2.3.5-4-285.js | 2 +- test/built-ins/Object/create/15.2.3.5-4-297.js | 2 +- test/built-ins/Object/create/15.2.3.5-4-34.js | 2 +- test/built-ins/Object/create/15.2.3.5-4-65.js | 2 +- test/built-ins/Object/create/15.2.3.5-4-90.js | 2 +- .../Object/defineProperties/15.2.3.7-2-12.js | 2 +- .../Object/defineProperties/15.2.3.7-5-a-13.js | 2 +- .../Object/defineProperties/15.2.3.7-5-b-103.js | 2 +- .../Object/defineProperties/15.2.3.7-5-b-131.js | 2 +- .../Object/defineProperties/15.2.3.7-5-b-157.js | 2 +- .../Object/defineProperties/15.2.3.7-5-b-182.js | 2 +- .../Object/defineProperties/15.2.3.7-5-b-210.js | 2 +- .../Object/defineProperties/15.2.3.7-5-b-245.js | 2 +- .../Object/defineProperties/15.2.3.7-5-b-25.js | 2 +- .../Object/defineProperties/15.2.3.7-5-b-50.js | 2 +- .../Object/defineProperties/15.2.3.7-5-b-78.js | 2 +- .../Object/defineProperties/15.2.3.7-6-a-18.js | 2 +- .../Object/defineProperty/15.2.3.6-3-117.js | 2 +- .../Object/defineProperty/15.2.3.6-3-145.js | 2 +- .../Object/defineProperty/15.2.3.6-3-171.js | 2 +- .../Object/defineProperty/15.2.3.6-3-196.js | 2 +- .../Object/defineProperty/15.2.3.6-3-224.js | 2 +- .../Object/defineProperty/15.2.3.6-3-254.js | 2 +- .../Object/defineProperty/15.2.3.6-3-39.js | 2 +- .../Object/defineProperty/15.2.3.6-3-64.js | 2 +- .../Object/defineProperty/15.2.3.6-3-92.js | 2 +- .../Object/defineProperty/15.2.3.6-4-39.js | 2 +- .../Object/defineProperty/15.2.3.6-4-392.js | 2 +- test/built-ins/Object/freeze/15.2.3.9-2-d-6.js | 2 +- .../Object/getPrototypeOf/15.2.3.2-2-25.js | 2 +- test/built-ins/Object/keys/15.2.3.14-6-5.js | 2 +- .../Object/preventExtensions/15.2.3.10-3-18.js | 2 +- .../Object/preventExtensions/15.2.3.10-3-8.js | 2 +- .../Object.prototype.toString.call-date.js | 8 ++++---- .../toString/symbol-tag-override-instances.js | 2 +- .../seal/object-seal-o-is-a-date-object.js | 2 +- ...object-that-uses-object-s-get-own-property.js | 2 +- test/built-ins/Object/seal/seal-date.js | 2 +- .../Promise/all/invoke-then-error-close.js | 8 +++++--- .../Promise/all/invoke-then-error-reject.js | 8 +++++--- .../expressions/addition/S11.6.1_A2.2_T2.js | 16 ++++++++-------- .../class/subclass-builtins/subclass-Date.js | 4 ++-- .../template-object-template-map.js | 3 ++- .../typeof/built-in-exotic-objects-no-call.js | 4 ++-- .../class/subclass-builtins/subclass-Date.js | 4 ++-- .../builtin-objects/Date/super-must-be-called.js | 8 ++++---- 113 files changed, 161 insertions(+), 150 deletions(-) diff --git a/src/subclass-builtins/Date.case b/src/subclass-builtins/Date.case index 65ae759f1f..b5d680d6cf 100644 --- a/src/subclass-builtins/Date.case +++ b/src/subclass-builtins/Date.case @@ -4,9 +4,11 @@ /*--- esid: sec-ecmascript-standard-built-in-objects desc: > - new SubDate() instanceof Date + new SubDate(0) instanceof Date template: default ---*/ //- builtin Date +//- args +0 diff --git a/test/annexB/built-ins/Date/prototype/setYear/year-nan.js b/test/annexB/built-ins/Date/prototype/setYear/year-nan.js index 23cf552504..1ef2860dd2 100644 --- a/test/annexB/built-ins/Date/prototype/setYear/year-nan.js +++ b/test/annexB/built-ins/Date/prototype/setYear/year-nan.js @@ -15,19 +15,19 @@ features: [Symbol] var date; -date = new Date(); +date = new Date(0); assert.sameValue(date.setYear(), NaN, 'return value (no argument)'); assert.sameValue( date.valueOf(), NaN, '[[DateValue]] internal slot (no argument)' ); -date = new Date(); +date = new Date(0); assert.sameValue(date.setYear(NaN), NaN, 'return value (literal NaN)'); assert.sameValue( date.valueOf(), NaN, '[[DateValue]] internal slot (literal NaN)' ); -date = new Date(); +date = new Date(0); assert.sameValue( date.setYear('not a number'), NaN, 'return value (NaN from ToNumber)' ); diff --git a/test/annexB/built-ins/Date/prototype/setYear/year-to-number-err.js b/test/annexB/built-ins/Date/prototype/setYear/year-to-number-err.js index 6c834d7c37..021f25fd45 100644 --- a/test/annexB/built-ins/Date/prototype/setYear/year-to-number-err.js +++ b/test/annexB/built-ins/Date/prototype/setYear/year-to-number-err.js @@ -12,7 +12,7 @@ info: | features: [Symbol] ---*/ -var date = new Date(); +var date = new Date(0); var symbol = Symbol(''); var year = { valueOf: function() { diff --git a/test/built-ins/Array/isArray/15.4.3.2-1-9.js b/test/built-ins/Array/isArray/15.4.3.2-1-9.js index 5d4eab1d01..d48b3bcc9a 100644 --- a/test/built-ins/Array/isArray/15.4.3.2-1-9.js +++ b/test/built-ins/Array/isArray/15.4.3.2-1-9.js @@ -7,4 +7,4 @@ es5id: 15.4.3.2-1-9 description: Array.isArray applied to Date object ---*/ -assert.sameValue(Array.isArray(new Date()), false, 'Array.isArray(new Date()) must return false'); +assert.sameValue(Array.isArray(new Date(0)), false, 'Array.isArray(new Date(0)) must return false'); diff --git a/test/built-ins/Array/prototype/every/15.4.4.16-1-11.js b/test/built-ins/Array/prototype/every/15.4.4.16-1-11.js index c851023a80..e9eb2d613c 100644 --- a/test/built-ins/Array/prototype/every/15.4.4.16-1-11.js +++ b/test/built-ins/Array/prototype/every/15.4.4.16-1-11.js @@ -10,7 +10,7 @@ function callbackfn(val, idx, obj) { return !(obj instanceof Date); } -var obj = new Date(); +var obj = new Date(0); obj.length = 1; obj[0] = 1; diff --git a/test/built-ins/Array/prototype/every/15.4.4.16-3-23.js b/test/built-ins/Array/prototype/every/15.4.4.16-3-23.js index 0dfdb6396b..6a064d73f2 100644 --- a/test/built-ins/Array/prototype/every/15.4.4.16-3-23.js +++ b/test/built-ins/Array/prototype/every/15.4.4.16-3-23.js @@ -31,10 +31,12 @@ Con.prototype = proto; var child = new Con(); -child.toString = function() { - toStringAccessed = true; - return '1'; -}; +Object.defineProperty(child, "toString", { + value: function() { + toStringAccessed = true; + return '1'; + } +}); var obj = { 0: 12, diff --git a/test/built-ins/Array/prototype/every/15.4.4.16-5-15.js b/test/built-ins/Array/prototype/every/15.4.4.16-5-15.js index 7133cd487a..a8b425922c 100644 --- a/test/built-ins/Array/prototype/every/15.4.4.16-5-15.js +++ b/test/built-ins/Array/prototype/every/15.4.4.16-5-15.js @@ -8,7 +8,7 @@ description: Array.prototype.every - Date Object can be used as thisArg ---*/ var accessed = false; -var objDate = new Date(); +var objDate = new Date(0); function callbackfn(val, idx, obj) { accessed = true; diff --git a/test/built-ins/Array/prototype/every/15.4.4.16-7-c-iii-21.js b/test/built-ins/Array/prototype/every/15.4.4.16-7-c-iii-21.js index c527cf763e..cb048d144c 100644 --- a/test/built-ins/Array/prototype/every/15.4.4.16-7-c-iii-21.js +++ b/test/built-ins/Array/prototype/every/15.4.4.16-7-c-iii-21.js @@ -10,7 +10,7 @@ var accessed = false; function callbackfn(val, idx, obj) { accessed = true; - return new Date(); + return new Date(0); } assert([11].every(callbackfn), '[11].every(callbackfn) !== true'); diff --git a/test/built-ins/Array/prototype/filter/15.4.4.20-1-11.js b/test/built-ins/Array/prototype/filter/15.4.4.20-1-11.js index 438185e0c1..d2194bd3b7 100644 --- a/test/built-ins/Array/prototype/filter/15.4.4.20-1-11.js +++ b/test/built-ins/Array/prototype/filter/15.4.4.20-1-11.js @@ -10,7 +10,7 @@ function callbackfn(val, idx, obj) { return obj instanceof Date; } -var obj = new Date(); +var obj = new Date(0); obj.length = 1; obj[0] = 1; diff --git a/test/built-ins/Array/prototype/filter/15.4.4.20-5-15.js b/test/built-ins/Array/prototype/filter/15.4.4.20-5-15.js index 2193c40150..ebef0f0546 100644 --- a/test/built-ins/Array/prototype/filter/15.4.4.20-5-15.js +++ b/test/built-ins/Array/prototype/filter/15.4.4.20-5-15.js @@ -8,7 +8,7 @@ description: Array.prototype.filter - Date Object can be used as thisArg var accessed = false; -var objDate = new Date(); +var objDate = new Date(0); function callbackfn(val, idx, obj) { accessed = true; diff --git a/test/built-ins/Array/prototype/filter/15.4.4.20-9-c-iii-22.js b/test/built-ins/Array/prototype/filter/15.4.4.20-9-c-iii-22.js index d631b66c8b..904e43cc25 100644 --- a/test/built-ins/Array/prototype/filter/15.4.4.20-9-c-iii-22.js +++ b/test/built-ins/Array/prototype/filter/15.4.4.20-9-c-iii-22.js @@ -9,7 +9,7 @@ description: > ---*/ function callbackfn(val, idx, obj) { - return new Date(); + return new Date(0); } var newArr = [11].filter(callbackfn); diff --git a/test/built-ins/Array/prototype/forEach/15.4.4.18-1-11.js b/test/built-ins/Array/prototype/forEach/15.4.4.18-1-11.js index 4eaf2170a9..f71db3c903 100644 --- a/test/built-ins/Array/prototype/forEach/15.4.4.18-1-11.js +++ b/test/built-ins/Array/prototype/forEach/15.4.4.18-1-11.js @@ -12,7 +12,7 @@ function callbackfn(val, idx, obj) { result = obj instanceof Date; } -var obj = new Date(); +var obj = new Date(0); obj.length = 1; obj[0] = 1; diff --git a/test/built-ins/Array/prototype/forEach/15.4.4.18-5-15.js b/test/built-ins/Array/prototype/forEach/15.4.4.18-5-15.js index 0200d8f56d..becc04ab21 100644 --- a/test/built-ins/Array/prototype/forEach/15.4.4.18-5-15.js +++ b/test/built-ins/Array/prototype/forEach/15.4.4.18-5-15.js @@ -7,7 +7,7 @@ description: Array.prototype.forEach - Date Object can be used as thisArg ---*/ var result = false; -var objDate = new Date(); +var objDate = new Date(0); function callbackfn(val, idx, obj) { result = (this === objDate); diff --git a/test/built-ins/Array/prototype/indexOf/15.4.4.14-1-11.js b/test/built-ins/Array/prototype/indexOf/15.4.4.14-1-11.js index e6ffc20f9f..3471e254e0 100644 --- a/test/built-ins/Array/prototype/indexOf/15.4.4.14-1-11.js +++ b/test/built-ins/Array/prototype/indexOf/15.4.4.14-1-11.js @@ -6,7 +6,7 @@ esid: sec-array.prototype.indexof description: Array.prototype.indexOf applied to Date object ---*/ -var obj = new Date(); +var obj = new Date(0); obj.length = 2; obj[1] = true; diff --git a/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-1-11.js b/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-1-11.js index 063c4a8830..12d97cf849 100644 --- a/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-1-11.js +++ b/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-1-11.js @@ -6,7 +6,7 @@ esid: sec-array.prototype.lastindexof description: Array.prototype.lastIndexOf applied to Date object ---*/ -var obj = new Date(); +var obj = new Date(0); obj.length = 2; obj[1] = true; diff --git a/test/built-ins/Array/prototype/map/15.4.4.19-1-11.js b/test/built-ins/Array/prototype/map/15.4.4.19-1-11.js index 003521b822..259b2a1359 100644 --- a/test/built-ins/Array/prototype/map/15.4.4.19-1-11.js +++ b/test/built-ins/Array/prototype/map/15.4.4.19-1-11.js @@ -10,7 +10,7 @@ function callbackfn(val, idx, obj) { return obj instanceof Date; } -var obj = new Date(); +var obj = new Date(0); obj.length = 1; obj[0] = 1; diff --git a/test/built-ins/Array/prototype/map/15.4.4.19-5-15.js b/test/built-ins/Array/prototype/map/15.4.4.19-5-15.js index 5fef396b09..a771eda870 100644 --- a/test/built-ins/Array/prototype/map/15.4.4.19-5-15.js +++ b/test/built-ins/Array/prototype/map/15.4.4.19-5-15.js @@ -6,7 +6,7 @@ esid: sec-array.prototype.map description: Array.prototype.map - Date object can be used as thisArg ---*/ -var objDate = new Date(); +var objDate = new Date(0); function callbackfn(val, idx, obj) { return this === objDate; diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-1-11.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-1-11.js index f9bd16f175..55c7e6bd21 100644 --- a/test/built-ins/Array/prototype/reduce/15.4.4.21-1-11.js +++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-1-11.js @@ -10,7 +10,7 @@ function callbackfn(prevVal, curVal, idx, obj) { return obj instanceof Date; } -var obj = new Date(); +var obj = new Date(0); obj.length = 1; obj[0] = 1; diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-ii-31.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-ii-31.js index f8759271ea..454caf5267 100644 --- a/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-ii-31.js +++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-ii-31.js @@ -6,7 +6,7 @@ esid: sec-array.prototype.reduce description: Array.prototype.reduce - Date object can be used as accumulator ---*/ -var objDate = new Date(); +var objDate = new Date(0); var accessed = false; diff --git a/test/built-ins/Array/prototype/reduceRight/15.4.4.22-1-11.js b/test/built-ins/Array/prototype/reduceRight/15.4.4.22-1-11.js index a2fe26d5e5..b9c1d3b6a3 100644 --- a/test/built-ins/Array/prototype/reduceRight/15.4.4.22-1-11.js +++ b/test/built-ins/Array/prototype/reduceRight/15.4.4.22-1-11.js @@ -6,7 +6,7 @@ esid: sec-array.prototype.reduceright description: Array.prototype.reduceRight applied to Date object ---*/ -var obj = new Date(); +var obj = new Date(0); obj.length = 1; obj[0] = 1; var accessed = false; diff --git a/test/built-ins/Array/prototype/reduceRight/15.4.4.22-3-23.js b/test/built-ins/Array/prototype/reduceRight/15.4.4.22-3-23.js index 49bf54c30a..71af713dae 100644 --- a/test/built-ins/Array/prototype/reduceRight/15.4.4.22-3-23.js +++ b/test/built-ins/Array/prototype/reduceRight/15.4.4.22-3-23.js @@ -35,10 +35,12 @@ function callbackfn(prevVal, curVal, idx, obj) { return false; } -child.toString = function() { - toStringAccessed = true; - return '1'; -}; +Object.defineProperty(child, "toString", { + value: function() { + toStringAccessed = true; + return '1'; + } +}); var obj = { 0: 12, diff --git a/test/built-ins/Array/prototype/reduceRight/15.4.4.22-9-c-ii-31.js b/test/built-ins/Array/prototype/reduceRight/15.4.4.22-9-c-ii-31.js index 249a8ceb8d..e2dc04e2f5 100644 --- a/test/built-ins/Array/prototype/reduceRight/15.4.4.22-9-c-ii-31.js +++ b/test/built-ins/Array/prototype/reduceRight/15.4.4.22-9-c-ii-31.js @@ -9,7 +9,7 @@ description: > ---*/ var accessed = false; -var objDate = new Date(); +var objDate = new Date(0); function callbackfn(prevVal, curVal, idx, obj) { accessed = true; diff --git a/test/built-ins/Array/prototype/some/15.4.4.17-1-11.js b/test/built-ins/Array/prototype/some/15.4.4.17-1-11.js index b8bf81857f..706123bb11 100644 --- a/test/built-ins/Array/prototype/some/15.4.4.17-1-11.js +++ b/test/built-ins/Array/prototype/some/15.4.4.17-1-11.js @@ -10,7 +10,7 @@ function callbackfn(val, idx, obj) { return obj instanceof Date; } -var obj = new Date(); +var obj = new Date(0); obj.length = 2; obj[0] = 11; obj[1] = 9; diff --git a/test/built-ins/Array/prototype/some/15.4.4.17-5-15.js b/test/built-ins/Array/prototype/some/15.4.4.17-5-15.js index ab527b7bae..f61b1e956a 100644 --- a/test/built-ins/Array/prototype/some/15.4.4.17-5-15.js +++ b/test/built-ins/Array/prototype/some/15.4.4.17-5-15.js @@ -6,7 +6,7 @@ esid: sec-array.prototype.some description: Array.prototype.some - Date object can be used as thisArg ---*/ -var objDate = new Date(); +var objDate = new Date(0); function callbackfn(val, idx, obj) { return this === objDate; diff --git a/test/built-ins/Array/prototype/some/15.4.4.17-7-c-iii-21.js b/test/built-ins/Array/prototype/some/15.4.4.17-7-c-iii-21.js index 04dd1dce95..2a5f3c1272 100644 --- a/test/built-ins/Array/prototype/some/15.4.4.17-7-c-iii-21.js +++ b/test/built-ins/Array/prototype/some/15.4.4.17-7-c-iii-21.js @@ -7,7 +7,7 @@ description: Array.prototype.some - return value of callbackfn is a Date object ---*/ function callbackfn(val, idx, obj) { - return new Date(); + return new Date(0); } assert([11].some(callbackfn), '[11].some(callbackfn) !== true'); diff --git a/test/built-ins/Boolean/prototype/toString/S15.6.4.2_A2_T3.js b/test/built-ins/Boolean/prototype/toString/S15.6.4.2_A2_T3.js index 95a7a35418..76c30a272a 100644 --- a/test/built-ins/Boolean/prototype/toString/S15.6.4.2_A2_T3.js +++ b/test/built-ins/Boolean/prototype/toString/S15.6.4.2_A2_T3.js @@ -11,14 +11,14 @@ es5id: 15.6.4.2_A2_T3 description: transferring to the Date objects ---*/ +var s1 = new Date(0); +Object.defineProperty(s1, "toString", {value: Boolean.prototype.toString}); assert.throws(TypeError, () => { - var s1 = new Date(); - s1.toString = Boolean.prototype.toString; s1.toString(); }); +var s2 = new Date(0); +s2.myToString = Boolean.prototype.toString; assert.throws(TypeError, () => { - var s2 = new Date(); - s2.myToString = Boolean.prototype.toString; s2.myToString(); }); diff --git a/test/built-ins/Date/is-a-constructor.js b/test/built-ins/Date/is-a-constructor.js index 92bc249c6b..cb08818c08 100644 --- a/test/built-ins/Date/is-a-constructor.js +++ b/test/built-ins/Date/is-a-constructor.js @@ -20,5 +20,5 @@ features: [Reflect.construct] ---*/ assert.sameValue(isConstructor(Date), true, 'isConstructor(Date) must return true'); -new Date(); +new Date(0); diff --git a/test/built-ins/Date/proto-from-ctor-realm-zero.js b/test/built-ins/Date/proto-from-ctor-realm-zero.js index 00cb0ddd1e..de8497420d 100644 --- a/test/built-ins/Date/proto-from-ctor-realm-zero.js +++ b/test/built-ins/Date/proto-from-ctor-realm-zero.js @@ -25,6 +25,6 @@ var other = $262.createRealm().global; var C = new other.Function(); C.prototype = null; -var o = Reflect.construct(Date, [], C); +var o = Reflect.construct(Date, [0], C); assert.sameValue(Object.getPrototypeOf(o), other.Date.prototype); diff --git a/test/built-ins/Date/prototype/Symbol.toPrimitive/hint-invalid.js b/test/built-ins/Date/prototype/Symbol.toPrimitive/hint-invalid.js index 09f2837474..6be45c6b2f 100644 --- a/test/built-ins/Date/prototype/Symbol.toPrimitive/hint-invalid.js +++ b/test/built-ins/Date/prototype/Symbol.toPrimitive/hint-invalid.js @@ -14,7 +14,7 @@ info: | features: [Symbol.toPrimitive] ---*/ -var d = new Date(); +var d = new Date(0); assert.sameValue(typeof d[Symbol.toPrimitive], 'function'); diff --git a/test/built-ins/Date/prototype/setDate/arg-to-number-err.js b/test/built-ins/Date/prototype/setDate/arg-to-number-err.js index 663afa94c4..cf01faf203 100644 --- a/test/built-ins/Date/prototype/setDate/arg-to-number-err.js +++ b/test/built-ins/Date/prototype/setDate/arg-to-number-err.js @@ -8,7 +8,7 @@ info: | 2. Let dt be ? ToNumber(date). ---*/ -var date = new Date(); +var date = new Date(0); var originalValue = date.getTime(); var obj = { valueOf: function() { diff --git a/test/built-ins/Date/prototype/setFullYear/arg-date-to-number-err.js b/test/built-ins/Date/prototype/setFullYear/arg-date-to-number-err.js index f1b0358b5a..0fcea27487 100644 --- a/test/built-ins/Date/prototype/setFullYear/arg-date-to-number-err.js +++ b/test/built-ins/Date/prototype/setFullYear/arg-date-to-number-err.js @@ -13,7 +13,7 @@ info: | ? ToNumber(date). ---*/ -var date = new Date(); +var date = new Date(0); var originalValue = date.getTime(); var obj = { valueOf: function() { diff --git a/test/built-ins/Date/prototype/setFullYear/arg-month-to-number-err.js b/test/built-ins/Date/prototype/setFullYear/arg-month-to-number-err.js index f1de8478df..8720569022 100644 --- a/test/built-ins/Date/prototype/setFullYear/arg-month-to-number-err.js +++ b/test/built-ins/Date/prototype/setFullYear/arg-month-to-number-err.js @@ -11,7 +11,7 @@ info: | ? ToNumber(month). ---*/ -var date = new Date(); +var date = new Date(0); var callCount = 0; var originalValue = date.getTime(); var obj = { diff --git a/test/built-ins/Date/prototype/setFullYear/arg-year-to-number-err.js b/test/built-ins/Date/prototype/setFullYear/arg-year-to-number-err.js index 67fe061bcb..3c98884235 100644 --- a/test/built-ins/Date/prototype/setFullYear/arg-year-to-number-err.js +++ b/test/built-ins/Date/prototype/setFullYear/arg-year-to-number-err.js @@ -9,7 +9,7 @@ info: | 3. Let y be ? ToNumber(year). ---*/ -var date = new Date(); +var date = new Date(0); var callCount = 0; var originalValue = date.getTime(); var obj = { diff --git a/test/built-ins/Date/prototype/setHours/arg-hour-to-number-err.js b/test/built-ins/Date/prototype/setHours/arg-hour-to-number-err.js index 7db1c80a09..50c06cb065 100644 --- a/test/built-ins/Date/prototype/setHours/arg-hour-to-number-err.js +++ b/test/built-ins/Date/prototype/setHours/arg-hour-to-number-err.js @@ -8,7 +8,7 @@ info: | 2. Let dt be ? ToNumber(hour). ---*/ -var date = new Date(); +var date = new Date(0); var callCount = 0; var originalValue = date.getTime(); var obj = { diff --git a/test/built-ins/Date/prototype/setHours/arg-min-to-number-err.js b/test/built-ins/Date/prototype/setHours/arg-min-to-number-err.js index 2caa05ccee..56ae58ebd3 100644 --- a/test/built-ins/Date/prototype/setHours/arg-min-to-number-err.js +++ b/test/built-ins/Date/prototype/setHours/arg-min-to-number-err.js @@ -10,7 +10,7 @@ info: | ToNumber(min). ---*/ -var date = new Date(); +var date = new Date(0); var callCount = 0; var originalValue = date.getTime(); var obj = { diff --git a/test/built-ins/Date/prototype/setHours/arg-ms-to-number-err.js b/test/built-ins/Date/prototype/setHours/arg-ms-to-number-err.js index ef6730c087..4b6b4e0bc3 100644 --- a/test/built-ins/Date/prototype/setHours/arg-ms-to-number-err.js +++ b/test/built-ins/Date/prototype/setHours/arg-ms-to-number-err.js @@ -14,7 +14,7 @@ info: | be ? ToNumber(ms). ---*/ -var date = new Date(); +var date = new Date(0); var originalValue = date.getTime(); var obj = { valueOf: function() { diff --git a/test/built-ins/Date/prototype/setHours/arg-sec-to-number-err.js b/test/built-ins/Date/prototype/setHours/arg-sec-to-number-err.js index 9284ead229..a31f8df9a0 100644 --- a/test/built-ins/Date/prototype/setHours/arg-sec-to-number-err.js +++ b/test/built-ins/Date/prototype/setHours/arg-sec-to-number-err.js @@ -12,7 +12,7 @@ info: | ToNumber(sec). ---*/ -var date = new Date(); +var date = new Date(0); var callCount = 0; var originalValue = date.getTime(); var obj = { diff --git a/test/built-ins/Date/prototype/setMilliseconds/arg-to-number-err.js b/test/built-ins/Date/prototype/setMilliseconds/arg-to-number-err.js index b802bb1650..1ef63f08d4 100644 --- a/test/built-ins/Date/prototype/setMilliseconds/arg-to-number-err.js +++ b/test/built-ins/Date/prototype/setMilliseconds/arg-to-number-err.js @@ -8,7 +8,7 @@ info: | 2. Let dt be ? ToNumber(date). ---*/ -var date = new Date(); +var date = new Date(0); var originalValue = date.getTime(); var obj = { valueOf: function() { diff --git a/test/built-ins/Date/prototype/setMinutes/arg-min-to-number-err.js b/test/built-ins/Date/prototype/setMinutes/arg-min-to-number-err.js index c54c3410c0..4c31d2d4cd 100644 --- a/test/built-ins/Date/prototype/setMinutes/arg-min-to-number-err.js +++ b/test/built-ins/Date/prototype/setMinutes/arg-min-to-number-err.js @@ -8,7 +8,7 @@ info: | 2. Let m be ? ToNumber(min). ---*/ -var date = new Date(); +var date = new Date(0); var callCount = 0; var originalValue = date.getTime(); var obj = { diff --git a/test/built-ins/Date/prototype/setMinutes/arg-ms-to-number-err.js b/test/built-ins/Date/prototype/setMinutes/arg-ms-to-number-err.js index b4a67ba88d..54e7bbfb05 100644 --- a/test/built-ins/Date/prototype/setMinutes/arg-ms-to-number-err.js +++ b/test/built-ins/Date/prototype/setMinutes/arg-ms-to-number-err.js @@ -12,7 +12,7 @@ info: | be ? ToNumber(ms). ---*/ -var date = new Date(); +var date = new Date(0); var originalValue = date.getTime(); var obj = { valueOf: function() { diff --git a/test/built-ins/Date/prototype/setMinutes/arg-sec-to-number-err.js b/test/built-ins/Date/prototype/setMinutes/arg-sec-to-number-err.js index 7d082878d4..4460de0feb 100644 --- a/test/built-ins/Date/prototype/setMinutes/arg-sec-to-number-err.js +++ b/test/built-ins/Date/prototype/setMinutes/arg-sec-to-number-err.js @@ -10,7 +10,7 @@ info: | ToNumber(sec). ---*/ -var date = new Date(); +var date = new Date(0); var callCount = 0; var originalValue = date.getTime(); var obj = { diff --git a/test/built-ins/Date/prototype/setMonth/arg-date-to-number-err.js b/test/built-ins/Date/prototype/setMonth/arg-date-to-number-err.js index 93295d9c16..70b549f26b 100644 --- a/test/built-ins/Date/prototype/setMonth/arg-date-to-number-err.js +++ b/test/built-ins/Date/prototype/setMonth/arg-date-to-number-err.js @@ -10,7 +10,7 @@ info: | ? ToNumber(date). ---*/ -var date = new Date(); +var date = new Date(0); var originalValue = date.getTime(); var obj = { valueOf: function() { diff --git a/test/built-ins/Date/prototype/setMonth/arg-month-to-number-err.js b/test/built-ins/Date/prototype/setMonth/arg-month-to-number-err.js index bd7a5a489b..64e61a7406 100644 --- a/test/built-ins/Date/prototype/setMonth/arg-month-to-number-err.js +++ b/test/built-ins/Date/prototype/setMonth/arg-month-to-number-err.js @@ -11,7 +11,7 @@ info: | ? ToNumber(month). ---*/ -var date = new Date(); +var date = new Date(0); var callCount = 0; var originalValue = date.getTime(); var obj = { diff --git a/test/built-ins/Date/prototype/setSeconds/arg-ms-to-number-err.js b/test/built-ins/Date/prototype/setSeconds/arg-ms-to-number-err.js index e3e68be873..c02c60dee6 100644 --- a/test/built-ins/Date/prototype/setSeconds/arg-ms-to-number-err.js +++ b/test/built-ins/Date/prototype/setSeconds/arg-ms-to-number-err.js @@ -10,7 +10,7 @@ info: | be ? ToNumber(ms). ---*/ -var date = new Date(); +var date = new Date(0); var originalValue = date.getTime(); var obj = { valueOf: function() { diff --git a/test/built-ins/Date/prototype/setSeconds/arg-sec-to-number-err.js b/test/built-ins/Date/prototype/setSeconds/arg-sec-to-number-err.js index 1058a1b604..a22e9115ae 100644 --- a/test/built-ins/Date/prototype/setSeconds/arg-sec-to-number-err.js +++ b/test/built-ins/Date/prototype/setSeconds/arg-sec-to-number-err.js @@ -8,7 +8,7 @@ info: | 2. Let s be ? ToNumber(sec). ---*/ -var date = new Date(); +var date = new Date(0); var callCount = 0; var originalValue = date.getTime(); var obj = { diff --git a/test/built-ins/Date/prototype/setTime/arg-to-number-err.js b/test/built-ins/Date/prototype/setTime/arg-to-number-err.js index 1fe0fe74da..7d47e1f700 100644 --- a/test/built-ins/Date/prototype/setTime/arg-to-number-err.js +++ b/test/built-ins/Date/prototype/setTime/arg-to-number-err.js @@ -8,7 +8,7 @@ info: | 2. Let t be ? ToNumber(time). ---*/ -var date = new Date(); +var date = new Date(0); var originalValue = date.getTime(); var obj = { valueOf: function() { diff --git a/test/built-ins/Date/prototype/setTime/new-value-time-clip.js b/test/built-ins/Date/prototype/setTime/new-value-time-clip.js index e06c786f5f..610e42d527 100644 --- a/test/built-ins/Date/prototype/setTime/new-value-time-clip.js +++ b/test/built-ins/Date/prototype/setTime/new-value-time-clip.js @@ -17,7 +17,7 @@ info: | ---*/ var maxMs = 8.64e15; -var date = new Date(); +var date = new Date(0); var returnValue; assert.notSameValue(date.getTime(), NaN); diff --git a/test/built-ins/Date/prototype/toDateString/format.js b/test/built-ins/Date/prototype/toDateString/format.js index f9e58dd0ae..cd384f677b 100644 --- a/test/built-ins/Date/prototype/toDateString/format.js +++ b/test/built-ins/Date/prototype/toDateString/format.js @@ -11,7 +11,7 @@ info: | ---*/ let dateRegExp = /^(Sun|Mon|Tue|Wed|Thu|Fri|Sat) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{2} [0-9]{4}$/ -let match = dateRegExp.exec(new Date().toDateString()); +let match = dateRegExp.exec(new Date(0).toDateString()); assert.notSameValue(null, match); // Years are padded to the left with zeroes diff --git a/test/built-ins/Date/prototype/toISOString/15.9.5.43-0-10.js b/test/built-ins/Date/prototype/toISOString/15.9.5.43-0-10.js index 28245a02d8..9ea20f6838 100644 --- a/test/built-ins/Date/prototype/toISOString/15.9.5.43-0-10.js +++ b/test/built-ins/Date/prototype/toISOString/15.9.5.43-0-10.js @@ -9,7 +9,7 @@ description: > UTC(0) ---*/ -var timeZoneMinutes = new Date().getTimezoneOffset() * (-1); +var timeZoneMinutes = new Date(0).getTimezoneOffset() * (-1); var date, dateStr; if (timeZoneMinutes > 0) { diff --git a/test/built-ins/Date/prototype/toISOString/15.9.5.43-0-11.js b/test/built-ins/Date/prototype/toISOString/15.9.5.43-0-11.js index 66496295f2..c712fac6f4 100644 --- a/test/built-ins/Date/prototype/toISOString/15.9.5.43-0-11.js +++ b/test/built-ins/Date/prototype/toISOString/15.9.5.43-0-11.js @@ -9,7 +9,7 @@ description: > UTC(0) ---*/ -var timeZoneMinutes = new Date().getTimezoneOffset() * (-1); +var timeZoneMinutes = new Date(0).getTimezoneOffset() * (-1); var date, dateStr; date = new Date(1970, 0, 100000001, 0, 0 + timeZoneMinutes - 60, 0, -1); diff --git a/test/built-ins/Date/prototype/toISOString/15.9.5.43-0-12.js b/test/built-ins/Date/prototype/toISOString/15.9.5.43-0-12.js index c7822354a9..923f0340b7 100644 --- a/test/built-ins/Date/prototype/toISOString/15.9.5.43-0-12.js +++ b/test/built-ins/Date/prototype/toISOString/15.9.5.43-0-12.js @@ -9,7 +9,7 @@ description: > UTC(0) ---*/ -var timeZoneMinutes = new Date().getTimezoneOffset() * (-1); +var timeZoneMinutes = new Date(0).getTimezoneOffset() * (-1); var date, dateStr; date = new Date(1970, 0, 100000001, 0, 0 + timeZoneMinutes - 60, 0, 0); diff --git a/test/built-ins/Date/prototype/toISOString/15.9.5.43-0-5.js b/test/built-ins/Date/prototype/toISOString/15.9.5.43-0-5.js index d58b1d1016..686fbfaafd 100644 --- a/test/built-ins/Date/prototype/toISOString/15.9.5.43-0-5.js +++ b/test/built-ins/Date/prototype/toISOString/15.9.5.43-0-5.js @@ -8,6 +8,6 @@ description: > zone(0) ---*/ -var dateStr = (new Date()).toISOString(); +var dateStr = (new Date(0)).toISOString(); assert.sameValue(dateStr[dateStr.length - 1], "Z", 'dateStr[dateStr.length - 1]'); diff --git a/test/built-ins/Date/prototype/toISOString/15.9.5.43-0-8.js b/test/built-ins/Date/prototype/toISOString/15.9.5.43-0-8.js index f6a2725648..82548da442 100644 --- a/test/built-ins/Date/prototype/toISOString/15.9.5.43-0-8.js +++ b/test/built-ins/Date/prototype/toISOString/15.9.5.43-0-8.js @@ -9,7 +9,7 @@ description: > UTC(0) ---*/ -var timeZoneMinutes = new Date().getTimezoneOffset() * (-1); +var timeZoneMinutes = new Date(0).getTimezoneOffset() * (-1); var date, dateStr; assert.throws(RangeError, function() { if (timeZoneMinutes > 0) { diff --git a/test/built-ins/Date/prototype/toISOString/15.9.5.43-0-9.js b/test/built-ins/Date/prototype/toISOString/15.9.5.43-0-9.js index 07d919126c..787ec8e7bb 100644 --- a/test/built-ins/Date/prototype/toISOString/15.9.5.43-0-9.js +++ b/test/built-ins/Date/prototype/toISOString/15.9.5.43-0-9.js @@ -9,7 +9,7 @@ description: > UTC(0) ---*/ -var timeZoneMinutes = new Date().getTimezoneOffset() * (-1); +var timeZoneMinutes = new Date(0).getTimezoneOffset() * (-1); var date, dateStr; if (timeZoneMinutes > 0) { diff --git a/test/built-ins/Date/prototype/toJSON/invoke-result.js b/test/built-ins/Date/prototype/toJSON/invoke-result.js index 0977bda24b..84548bcd64 100644 --- a/test/built-ins/Date/prototype/toJSON/invoke-result.js +++ b/test/built-ins/Date/prototype/toJSON/invoke-result.js @@ -17,7 +17,7 @@ info: | 4. Return ? Call(func, V, argumentsList). ---*/ -var date = new Date(); +var date = new Date(0); assert.sameValue(date.toJSON(), date.toISOString()); var result = {}; diff --git a/test/built-ins/Date/prototype/toString/format.js b/test/built-ins/Date/prototype/toString/format.js index 9212134aac..dfb73df1e5 100644 --- a/test/built-ins/Date/prototype/toString/format.js +++ b/test/built-ins/Date/prototype/toString/format.js @@ -12,7 +12,7 @@ info: | ---*/ let stringRegExp = /^(Sun|Mon|Tue|Wed|Thu|Fri|Sat) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{2} [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT[+-][0-9]{4}( \(.+\))?$/ -let match = stringRegExp.exec(new Date().toString()); +let match = stringRegExp.exec(new Date(0).toString()); assert.notSameValue(null, match); // Years are padded to the left with zeroes diff --git a/test/built-ins/Date/prototype/toTimeString/format.js b/test/built-ins/Date/prototype/toTimeString/format.js index bbc4509434..7b2a1d98e3 100644 --- a/test/built-ins/Date/prototype/toTimeString/format.js +++ b/test/built-ins/Date/prototype/toTimeString/format.js @@ -11,5 +11,5 @@ info: | ---*/ let timeRegExp = /^[0-9]{2}:[0-9]{2}:[0-9]{2} GMT[+-][0-9]{4}( \(.+\))?$/ -let match = timeRegExp.exec(new Date().toTimeString()); +let match = timeRegExp.exec(new Date(0).toTimeString()); assert.notSameValue(null, match); diff --git a/test/built-ins/Date/prototype/toUTCString/format.js b/test/built-ins/Date/prototype/toUTCString/format.js index 011d094a13..a651fae7e6 100644 --- a/test/built-ins/Date/prototype/toUTCString/format.js +++ b/test/built-ins/Date/prototype/toUTCString/format.js @@ -11,7 +11,7 @@ info: | ---*/ let utcRegExp = /^(Sun|Mon|Tue|Wed|Thu|Fri|Sat), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$/ -let match = utcRegExp.exec(new Date().toUTCString()); +let match = utcRegExp.exec(new Date(0).toUTCString()); assert.notSameValue(null, match); // Years are padded to the left with zeroes diff --git a/test/built-ins/Number/prototype/toString/S15.7.4.2_A4_T03.js b/test/built-ins/Number/prototype/toString/S15.7.4.2_A4_T03.js index fdde13dbb1..d4d4176aa3 100644 --- a/test/built-ins/Number/prototype/toString/S15.7.4.2_A4_T03.js +++ b/test/built-ins/Number/prototype/toString/S15.7.4.2_A4_T03.js @@ -10,9 +10,9 @@ es5id: 15.7.4.2_A4_T03 description: transferring to the Date objects ---*/ +var s1 = new Date(0); +Object.defineProperty(s1, "toString", {value: Number.prototype.toString}); try { - var s1 = new Date(); - s1.toString = Number.prototype.toString; var v1 = s1.toString(); throw new Test262Error('#1: Number.prototype.toString on not a Number object should throw TypeError'); } @@ -20,9 +20,9 @@ catch (e) { assert(e instanceof TypeError, 'The result of evaluating (e instanceof TypeError) is expected to be true'); } +var s2 = new Date(0); +s2.myToString = Number.prototype.toString; try { - var s2 = new Date(); - s2.myToString = Number.prototype.toString; var v2 = s2.myToString(); throw new Test262Error('#2: Number.prototype.toString on not a Number object should throw TypeError'); } diff --git a/test/built-ins/Number/prototype/valueOf/S15.7.4.4_A2_T03.js b/test/built-ins/Number/prototype/valueOf/S15.7.4.4_A2_T03.js index 89d7f0299c..5f50474e6d 100644 --- a/test/built-ins/Number/prototype/valueOf/S15.7.4.4_A2_T03.js +++ b/test/built-ins/Number/prototype/valueOf/S15.7.4.4_A2_T03.js @@ -10,9 +10,9 @@ es5id: 15.7.4.4_A2_T03 description: transferring to the Date objects ---*/ +var s1 = new Date(0); +Object.defineProperty(s1, "valueOf", {value: Number.prototype.valueOf}); try { - var s1 = new Date(); - s1.valueOf = Number.prototype.valueOf; var v1 = s1.valueOf(); throw new Test262Error('#1: Number.prototype.valueOf on not a Number object should throw TypeError'); } @@ -20,9 +20,9 @@ catch (e) { assert(e instanceof TypeError, 'The result of evaluating (e instanceof TypeError) is expected to be true'); } +var s2 = new Date(0); +s2.myValueOf = Number.prototype.valueOf; try { - var s2 = new Date(); - s2.myValueOf = Number.prototype.valueOf; var v2 = s2.myValueOf(); throw new Test262Error('#2: Number.prototype.valueOf on not a Number object should throw TypeError'); } diff --git a/test/built-ins/Object/create/15.2.3.5-4-11.js b/test/built-ins/Object/create/15.2.3.5-4-11.js index 7f997a2449..8c6d99fe36 100644 --- a/test/built-ins/Object/create/15.2.3.5-4-11.js +++ b/test/built-ins/Object/create/15.2.3.5-4-11.js @@ -8,7 +8,7 @@ description: > step 2) ---*/ -var props = new Date(); +var props = new Date(0); var result = false; Object.defineProperty(props, "prop", { diff --git a/test/built-ins/Object/create/15.2.3.5-4-118.js b/test/built-ins/Object/create/15.2.3.5-4-118.js index 07a0c5613d..be703cc67b 100644 --- a/test/built-ins/Object/create/15.2.3.5-4-118.js +++ b/test/built-ins/Object/create/15.2.3.5-4-118.js @@ -9,7 +9,7 @@ description: > (8.10.5 step 4.a) ---*/ -var descObj = new Date(); +var descObj = new Date(0); descObj.configurable = true; diff --git a/test/built-ins/Object/create/15.2.3.5-4-143.js b/test/built-ins/Object/create/15.2.3.5-4-143.js index fd08e43a9c..9fae1fa135 100644 --- a/test/built-ins/Object/create/15.2.3.5-4-143.js +++ b/test/built-ins/Object/create/15.2.3.5-4-143.js @@ -10,7 +10,7 @@ description: > var newObj = Object.create({}, { prop: { - configurable: new Date() + configurable: new Date(0) } }); diff --git a/test/built-ins/Object/create/15.2.3.5-4-171.js b/test/built-ins/Object/create/15.2.3.5-4-171.js index a603d0dff6..852bef35a6 100644 --- a/test/built-ins/Object/create/15.2.3.5-4-171.js +++ b/test/built-ins/Object/create/15.2.3.5-4-171.js @@ -9,7 +9,7 @@ description: > (8.10.5 step 5.a) ---*/ -var dateObj = new Date(); +var dateObj = new Date(0); dateObj.value = "DateValue"; diff --git a/test/built-ins/Object/create/15.2.3.5-4-197.js b/test/built-ins/Object/create/15.2.3.5-4-197.js index fdf8704b59..33270ea0e2 100644 --- a/test/built-ins/Object/create/15.2.3.5-4-197.js +++ b/test/built-ins/Object/create/15.2.3.5-4-197.js @@ -9,7 +9,7 @@ description: > (8.10.5 step 6.a) ---*/ -var dateObj = new Date(); +var dateObj = new Date(0); dateObj.writable = true; diff --git a/test/built-ins/Object/create/15.2.3.5-4-222.js b/test/built-ins/Object/create/15.2.3.5-4-222.js index 2f03b51e3d..4849d7aa37 100644 --- a/test/built-ins/Object/create/15.2.3.5-4-222.js +++ b/test/built-ins/Object/create/15.2.3.5-4-222.js @@ -10,7 +10,7 @@ description: > var newObj = Object.create({}, { prop: { - writable: new Date() + writable: new Date(0) } }); var hasProperty = newObj.hasOwnProperty("prop"); diff --git a/test/built-ins/Object/create/15.2.3.5-4-249.js b/test/built-ins/Object/create/15.2.3.5-4-249.js index afbf4ec88e..a0570c2f24 100644 --- a/test/built-ins/Object/create/15.2.3.5-4-249.js +++ b/test/built-ins/Object/create/15.2.3.5-4-249.js @@ -9,7 +9,7 @@ description: > step 7.a) ---*/ -var dateObj = new Date(); +var dateObj = new Date(0); dateObj.get = function() { return "VerifyDateObject"; diff --git a/test/built-ins/Object/create/15.2.3.5-4-285.js b/test/built-ins/Object/create/15.2.3.5-4-285.js index 04a3b4b423..e45a112e1a 100644 --- a/test/built-ins/Object/create/15.2.3.5-4-285.js +++ b/test/built-ins/Object/create/15.2.3.5-4-285.js @@ -9,7 +9,7 @@ description: > step 8.a) ---*/ -var dateObj = new Date(); +var dateObj = new Date(0); var data = "data"; dateObj.set = function(value) { data = value; diff --git a/test/built-ins/Object/create/15.2.3.5-4-297.js b/test/built-ins/Object/create/15.2.3.5-4-297.js index 36a3c9acbf..e360135887 100644 --- a/test/built-ins/Object/create/15.2.3.5-4-297.js +++ b/test/built-ins/Object/create/15.2.3.5-4-297.js @@ -12,7 +12,7 @@ description: > assert.throws(TypeError, function() { Object.create({}, { prop: { - set: new Date() + set: new Date(0) } }); }); diff --git a/test/built-ins/Object/create/15.2.3.5-4-34.js b/test/built-ins/Object/create/15.2.3.5-4-34.js index c2d007dea6..3424f224c7 100644 --- a/test/built-ins/Object/create/15.2.3.5-4-34.js +++ b/test/built-ins/Object/create/15.2.3.5-4-34.js @@ -9,7 +9,7 @@ description: > 5.a) ---*/ -var props = new Date(); +var props = new Date(0); props.prop = { value: 12, enumerable: true diff --git a/test/built-ins/Object/create/15.2.3.5-4-65.js b/test/built-ins/Object/create/15.2.3.5-4-65.js index d0761a6fd7..74f51d94c9 100644 --- a/test/built-ins/Object/create/15.2.3.5-4-65.js +++ b/test/built-ins/Object/create/15.2.3.5-4-65.js @@ -10,7 +10,7 @@ description: > ---*/ var accessed = false; -var descObj = new Date(); +var descObj = new Date(0); descObj.enumerable = true; diff --git a/test/built-ins/Object/create/15.2.3.5-4-90.js b/test/built-ins/Object/create/15.2.3.5-4-90.js index b953f2f2bc..f8d90529e4 100644 --- a/test/built-ins/Object/create/15.2.3.5-4-90.js +++ b/test/built-ins/Object/create/15.2.3.5-4-90.js @@ -12,7 +12,7 @@ var accessed = false; var newObj = Object.create({}, { prop: { - enumerable: new Date() + enumerable: new Date(0) } }); for (var property in newObj) { diff --git a/test/built-ins/Object/defineProperties/15.2.3.7-2-12.js b/test/built-ins/Object/defineProperties/15.2.3.7-2-12.js index 103a8ea8d1..bf440593cd 100644 --- a/test/built-ins/Object/defineProperties/15.2.3.7-2-12.js +++ b/test/built-ins/Object/defineProperties/15.2.3.7-2-12.js @@ -7,7 +7,7 @@ description: Object.defineProperties - argument 'Properties' is a Date object ---*/ var obj = {}; -var props = new Date(); +var props = new Date(0); var result = false; Object.defineProperty(props, "prop", { diff --git a/test/built-ins/Object/defineProperties/15.2.3.7-5-a-13.js b/test/built-ins/Object/defineProperties/15.2.3.7-5-a-13.js index bf4aaa78f4..06ecbd2c2e 100644 --- a/test/built-ins/Object/defineProperties/15.2.3.7-5-a-13.js +++ b/test/built-ins/Object/defineProperties/15.2.3.7-5-a-13.js @@ -9,7 +9,7 @@ description: > ---*/ var obj = {}; -var props = new Date(); +var props = new Date(0); Object.defineProperty(props, "prop", { value: { diff --git a/test/built-ins/Object/defineProperties/15.2.3.7-5-b-103.js b/test/built-ins/Object/defineProperties/15.2.3.7-5-b-103.js index 4a1ab03d5b..85d9a96b65 100644 --- a/test/built-ins/Object/defineProperties/15.2.3.7-5-b-103.js +++ b/test/built-ins/Object/defineProperties/15.2.3.7-5-b-103.js @@ -12,7 +12,7 @@ var obj = {}; Object.defineProperties(obj, { property: { - configurable: new Date() + configurable: new Date(0) } }); var preCheck = obj.hasOwnProperty("property"); diff --git a/test/built-ins/Object/defineProperties/15.2.3.7-5-b-131.js b/test/built-ins/Object/defineProperties/15.2.3.7-5-b-131.js index a10e3a907b..b4c6035bcc 100644 --- a/test/built-ins/Object/defineProperties/15.2.3.7-5-b-131.js +++ b/test/built-ins/Object/defineProperties/15.2.3.7-5-b-131.js @@ -11,7 +11,7 @@ description: > var obj = {}; -var descObj = new Date(); +var descObj = new Date(0); descObj.value = "Date"; diff --git a/test/built-ins/Object/defineProperties/15.2.3.7-5-b-157.js b/test/built-ins/Object/defineProperties/15.2.3.7-5-b-157.js index 74413b7de6..6d636f4e09 100644 --- a/test/built-ins/Object/defineProperties/15.2.3.7-5-b-157.js +++ b/test/built-ins/Object/defineProperties/15.2.3.7-5-b-157.js @@ -12,7 +12,7 @@ includes: [propertyHelper.js] var obj = {}; -var descObj = new Date(); +var descObj = new Date(0); descObj.writable = false; diff --git a/test/built-ins/Object/defineProperties/15.2.3.7-5-b-182.js b/test/built-ins/Object/defineProperties/15.2.3.7-5-b-182.js index 8563d4f3b0..7c211cb310 100644 --- a/test/built-ins/Object/defineProperties/15.2.3.7-5-b-182.js +++ b/test/built-ins/Object/defineProperties/15.2.3.7-5-b-182.js @@ -12,7 +12,7 @@ var obj = {}; Object.defineProperties(obj, { property: { - writable: new Date() + writable: new Date(0) } }); diff --git a/test/built-ins/Object/defineProperties/15.2.3.7-5-b-210.js b/test/built-ins/Object/defineProperties/15.2.3.7-5-b-210.js index f49214a034..074f9425ba 100644 --- a/test/built-ins/Object/defineProperties/15.2.3.7-5-b-210.js +++ b/test/built-ins/Object/defineProperties/15.2.3.7-5-b-210.js @@ -11,7 +11,7 @@ description: > var obj = {}; -var descObj = new Date(); +var descObj = new Date(0); descObj.get = function() { return "Date"; diff --git a/test/built-ins/Object/defineProperties/15.2.3.7-5-b-245.js b/test/built-ins/Object/defineProperties/15.2.3.7-5-b-245.js index a8d8f226e5..04a10ef284 100644 --- a/test/built-ins/Object/defineProperties/15.2.3.7-5-b-245.js +++ b/test/built-ins/Object/defineProperties/15.2.3.7-5-b-245.js @@ -10,7 +10,7 @@ description: > ---*/ var data = "data"; -var descObj = new Date(); +var descObj = new Date(0); var setFun = function(value) { data = value; }; diff --git a/test/built-ins/Object/defineProperties/15.2.3.7-5-b-25.js b/test/built-ins/Object/defineProperties/15.2.3.7-5-b-25.js index 2492ea6eb8..c137ed86bd 100644 --- a/test/built-ins/Object/defineProperties/15.2.3.7-5-b-25.js +++ b/test/built-ins/Object/defineProperties/15.2.3.7-5-b-25.js @@ -10,7 +10,7 @@ description: > ---*/ var obj = {}; -var descObj = new Date(); +var descObj = new Date(0); var accessed = false; descObj.enumerable = true; diff --git a/test/built-ins/Object/defineProperties/15.2.3.7-5-b-50.js b/test/built-ins/Object/defineProperties/15.2.3.7-5-b-50.js index 7f99adc4af..f54a8f45cd 100644 --- a/test/built-ins/Object/defineProperties/15.2.3.7-5-b-50.js +++ b/test/built-ins/Object/defineProperties/15.2.3.7-5-b-50.js @@ -13,7 +13,7 @@ var accessed = false; Object.defineProperties(obj, { prop: { - enumerable: new Date() + enumerable: new Date(0) } }); for (var property in obj) { diff --git a/test/built-ins/Object/defineProperties/15.2.3.7-5-b-78.js b/test/built-ins/Object/defineProperties/15.2.3.7-5-b-78.js index 6fe2d9e0b7..f5a7eafd8a 100644 --- a/test/built-ins/Object/defineProperties/15.2.3.7-5-b-78.js +++ b/test/built-ins/Object/defineProperties/15.2.3.7-5-b-78.js @@ -11,7 +11,7 @@ description: > var obj = {}; -var descObj = new Date(); +var descObj = new Date(0); descObj.configurable = true; Object.defineProperties(obj, { diff --git a/test/built-ins/Object/defineProperties/15.2.3.7-6-a-18.js b/test/built-ins/Object/defineProperties/15.2.3.7-6-a-18.js index 74e1566795..36869b80a9 100644 --- a/test/built-ins/Object/defineProperties/15.2.3.7-6-a-18.js +++ b/test/built-ins/Object/defineProperties/15.2.3.7-6-a-18.js @@ -10,7 +10,7 @@ includes: [propertyHelper.js] ---*/ -var obj = new Date(); +var obj = new Date(0); Object.defineProperty(obj, "prop", { value: 11, diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-3-117.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-117.js index 04d74d887e..faf477b21a 100644 --- a/test/built-ins/Object/defineProperty/15.2.3.6-3-117.js +++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-117.js @@ -11,7 +11,7 @@ description: > var obj = {}; Object.defineProperty(obj, "property", { - configurable: new Date() + configurable: new Date(0) }); var beforeDeleted = obj.hasOwnProperty("property"); diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-3-145.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-145.js index 2fa41afc51..ec8f0932fe 100644 --- a/test/built-ins/Object/defineProperty/15.2.3.6-3-145.js +++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-145.js @@ -11,7 +11,7 @@ description: > var obj = {}; -var dateObj = new Date(); +var dateObj = new Date(0); dateObj.value = "Date"; diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-3-171.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-171.js index 15f8cc9e88..b2caab26be 100644 --- a/test/built-ins/Object/defineProperty/15.2.3.6-3-171.js +++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-171.js @@ -11,7 +11,7 @@ description: > var obj = {}; -var dateObj = new Date(); +var dateObj = new Date(0); dateObj.writable = true; diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-3-196.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-196.js index 62c4cd7d7c..7e1f700238 100644 --- a/test/built-ins/Object/defineProperty/15.2.3.6-3-196.js +++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-196.js @@ -11,7 +11,7 @@ description: > var obj = {}; Object.defineProperty(obj, "property", { - writable: new Date() + writable: new Date(0) }); var beforeWrite = obj.hasOwnProperty("property"); diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-3-224.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-224.js index 3b6b143c43..4c81cd678a 100644 --- a/test/built-ins/Object/defineProperty/15.2.3.6-3-224.js +++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-224.js @@ -11,7 +11,7 @@ description: > var obj = {}; -var dateObj = new Date(); +var dateObj = new Date(0); dateObj.get = function() { return "dateGetProperty"; diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-3-254.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-254.js index 3c5799b94b..93e7e5d4fd 100644 --- a/test/built-ins/Object/defineProperty/15.2.3.6-3-254.js +++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-254.js @@ -11,7 +11,7 @@ description: > var obj = {}; var data = "data"; -var dateObj = new Date(); +var dateObj = new Date(0); dateObj.set = function(value) { data = value; diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-3-39.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-39.js index 605f7a5f9f..e55556f66e 100644 --- a/test/built-ins/Object/defineProperty/15.2.3.6-3-39.js +++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-39.js @@ -12,7 +12,7 @@ description: > var obj = {}; var accessed = false; -var dateObj = new Date(); +var dateObj = new Date(0); dateObj.enumerable = true; Object.defineProperty(obj, "property", dateObj); diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-3-64.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-64.js index 4cd67c97d7..acf952ed12 100644 --- a/test/built-ins/Object/defineProperty/15.2.3.6-3-64.js +++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-64.js @@ -12,7 +12,7 @@ var obj = {}; var accessed = false; Object.defineProperty(obj, "property", { - enumerable: new Date() + enumerable: new Date(0) }); for (var prop in obj) { diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-3-92.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-92.js index 1afb867676..5490af1dbc 100644 --- a/test/built-ins/Object/defineProperty/15.2.3.6-3-92.js +++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-92.js @@ -11,7 +11,7 @@ description: > var obj = {}; -var dateObj = new Date(); +var dateObj = new Date(0); dateObj.configurable = true; diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-39.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-39.js index 62173de61a..5b54c71e93 100644 --- a/test/built-ins/Object/defineProperty/15.2.3.6-4-39.js +++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-39.js @@ -9,7 +9,7 @@ description: > step 1) ---*/ -var desc = new Date(); +var desc = new Date(0); Object.defineProperty(desc, "foo", { value: 12, diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-392.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-392.js index 79cf9e5164..8ba763f886 100644 --- a/test/built-ins/Object/defineProperty/15.2.3.6-4-392.js +++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-392.js @@ -9,7 +9,7 @@ description: > ---*/ var obj = {}; -var dateObj = new Date(); +var dateObj = new Date(0); Object.defineProperty(obj, "prop", { value: dateObj diff --git a/test/built-ins/Object/freeze/15.2.3.9-2-d-6.js b/test/built-ins/Object/freeze/15.2.3.9-2-d-6.js index 1b82d65614..f471776f3b 100644 --- a/test/built-ins/Object/freeze/15.2.3.9-2-d-6.js +++ b/test/built-ins/Object/freeze/15.2.3.9-2-d-6.js @@ -6,7 +6,7 @@ es5id: 15.2.3.9-2-d-6 description: Object.freeze - 'O' is a Date object ---*/ -var dateObj = new Date(); +var dateObj = new Date(0); Object.freeze(dateObj); diff --git a/test/built-ins/Object/getPrototypeOf/15.2.3.2-2-25.js b/test/built-ins/Object/getPrototypeOf/15.2.3.2-2-25.js index 9cac453932..27bfd08c2d 100644 --- a/test/built-ins/Object/getPrototypeOf/15.2.3.2-2-25.js +++ b/test/built-ins/Object/getPrototypeOf/15.2.3.2-2-25.js @@ -8,6 +8,6 @@ description: > (Date object) ---*/ -var obj = new Date(); +var obj = new Date(0); assert.sameValue(Object.getPrototypeOf(obj), Date.prototype, 'Object.getPrototypeOf(obj)'); diff --git a/test/built-ins/Object/keys/15.2.3.14-6-5.js b/test/built-ins/Object/keys/15.2.3.14-6-5.js index 4bd098a3ef..12ff4fb47e 100644 --- a/test/built-ins/Object/keys/15.2.3.14-6-5.js +++ b/test/built-ins/Object/keys/15.2.3.14-6-5.js @@ -8,7 +8,7 @@ description: > with the order of properties in 'O' (any other built-in object) ---*/ -var obj = new Date(); +var obj = new Date(0); obj.prop1 = 100; obj.prop2 = "prop2"; diff --git a/test/built-ins/Object/preventExtensions/15.2.3.10-3-18.js b/test/built-ins/Object/preventExtensions/15.2.3.10-3-18.js index 73378e1fd2..a31a3a3403 100644 --- a/test/built-ins/Object/preventExtensions/15.2.3.10-3-18.js +++ b/test/built-ins/Object/preventExtensions/15.2.3.10-3-18.js @@ -9,7 +9,7 @@ description: > includes: [propertyHelper.js] ---*/ -var obj = new Date(); +var obj = new Date(0); assert(Object.isExtensible(obj)); Object.preventExtensions(obj); diff --git a/test/built-ins/Object/preventExtensions/15.2.3.10-3-8.js b/test/built-ins/Object/preventExtensions/15.2.3.10-3-8.js index 01a351d6fe..d5630585b6 100644 --- a/test/built-ins/Object/preventExtensions/15.2.3.10-3-8.js +++ b/test/built-ins/Object/preventExtensions/15.2.3.10-3-8.js @@ -9,7 +9,7 @@ description: > includes: [propertyHelper.js] ---*/ -var obj = new Date(); +var obj = new Date(0); assert(Object.isExtensible(obj)); Object.preventExtensions(obj); diff --git a/test/built-ins/Object/prototype/toString/Object.prototype.toString.call-date.js b/test/built-ins/Object/prototype/toString/Object.prototype.toString.call-date.js index a422075aa0..8a38c0683a 100644 --- a/test/built-ins/Object/prototype/toString/Object.prototype.toString.call-date.js +++ b/test/built-ins/Object/prototype/toString/Object.prototype.toString.call-date.js @@ -6,12 +6,12 @@ esid: sec-object.prototype.tostring description: is a String exotic object, let builtinTag be "String". ---*/ assert.sameValue( - Object.prototype.toString.call(new Date()), + Object.prototype.toString.call(new Date(0)), "[object Date]", - "Object.prototype.toString.call(new Date()) returns [object Date]" + "Object.prototype.toString.call(new Date(0)) returns [object Date]" ); assert.sameValue( - Object.prototype.toString.call(Object(new Date())), + Object.prototype.toString.call(Object(new Date(0))), "[object Date]", - "Object.prototype.toString.call(Object(new Date())) returns [object Date]" + "Object.prototype.toString.call(Object(new Date(0))) returns [object Date]" ); diff --git a/test/built-ins/Object/prototype/toString/symbol-tag-override-instances.js b/test/built-ins/Object/prototype/toString/symbol-tag-override-instances.js index 26f9f4bbf5..acb3c268ed 100644 --- a/test/built-ins/Object/prototype/toString/symbol-tag-override-instances.js +++ b/test/built-ins/Object/prototype/toString/symbol-tag-override-instances.js @@ -46,7 +46,7 @@ custom = new Number(); custom[Symbol.toStringTag] = 'test262'; assert.sameValue(Object.prototype.toString.call(custom), '[object test262]'); -custom = new Date(); +custom = new Date(0); custom[Symbol.toStringTag] = 'test262'; assert.sameValue(Object.prototype.toString.call(custom), '[object test262]'); diff --git a/test/built-ins/Object/seal/object-seal-o-is-a-date-object.js b/test/built-ins/Object/seal/object-seal-o-is-a-date-object.js index a14a0f19bf..d2d8754696 100644 --- a/test/built-ins/Object/seal/object-seal-o-is-a-date-object.js +++ b/test/built-ins/Object/seal/object-seal-o-is-a-date-object.js @@ -6,7 +6,7 @@ esid: sec-setintegritylevel description: Object.seal - 'O' is a Date object ---*/ -var dateObj = new Date(); +var dateObj = new Date(0); var preCheck = Object.isExtensible(dateObj); Object.seal(dateObj); diff --git a/test/built-ins/Object/seal/object-seal-p-is-own-property-of-a-date-object-that-uses-object-s-get-own-property.js b/test/built-ins/Object/seal/object-seal-p-is-own-property-of-a-date-object-that-uses-object-s-get-own-property.js index 57824620c0..c758c597ef 100644 --- a/test/built-ins/Object/seal/object-seal-p-is-own-property-of-a-date-object-that-uses-object-s-get-own-property.js +++ b/test/built-ins/Object/seal/object-seal-p-is-own-property-of-a-date-object-that-uses-object-s-get-own-property.js @@ -9,7 +9,7 @@ description: > includes: [propertyHelper.js] ---*/ -var obj = new Date(); +var obj = new Date(0); obj.foo = 10; diff --git a/test/built-ins/Object/seal/seal-date.js b/test/built-ins/Object/seal/seal-date.js index e4ccbc9bc8..fb18a79641 100644 --- a/test/built-ins/Object/seal/seal-date.js +++ b/test/built-ins/Object/seal/seal-date.js @@ -33,4 +33,4 @@ info: | ---*/ -Object.seal(new Date()); +Object.seal(new Date(0)); diff --git a/test/built-ins/Promise/all/invoke-then-error-close.js b/test/built-ins/Promise/all/invoke-then-error-close.js index 72c48f48d3..93f3509728 100644 --- a/test/built-ins/Promise/all/invoke-then-error-close.js +++ b/test/built-ins/Promise/all/invoke-then-error-close.js @@ -42,9 +42,11 @@ iter[Symbol.iterator] = function() { }; }; -promise.then = function() { - throw new Test262Error(); -}; +Object.defineProperty(promise, "then", { + value: function() { + throw new Test262Error(); + } +}); Promise.all(iter); diff --git a/test/built-ins/Promise/all/invoke-then-error-reject.js b/test/built-ins/Promise/all/invoke-then-error-reject.js index 36ac1a6f5c..7214e2ef3c 100644 --- a/test/built-ins/Promise/all/invoke-then-error-reject.js +++ b/test/built-ins/Promise/all/invoke-then-error-reject.js @@ -28,9 +28,11 @@ flags: [async] var promise = new Promise(function() {}); var error = new Test262Error(); -promise.then = function() { - throw error; -}; +Object.defineProperty(promise, "then", { + value: function() { + throw error; + } +}); Promise.all([promise]).then(function() { throw new Test262Error('The promise should be rejected'); diff --git a/test/language/expressions/addition/S11.6.1_A2.2_T2.js b/test/language/expressions/addition/S11.6.1_A2.2_T2.js index 690b67e7ca..cb685361f4 100644 --- a/test/language/expressions/addition/S11.6.1_A2.2_T2.js +++ b/test/language/expressions/addition/S11.6.1_A2.2_T2.js @@ -8,25 +8,25 @@ description: If Type(value) is Date object, evaluate ToPrimitive(value, String) ---*/ //CHECK#1 -var date = new Date(); +var date = new Date(0); if (date + date !== date.toString() + date.toString()) { - throw new Test262Error('#1: var date = new Date(); date + date === date.toString() + date.toString(). Actual: ' + (date + date)); + throw new Test262Error('#1: var date = new Date(0); date + date === date.toString() + date.toString(). Actual: ' + (date + date)); } //CHECK#2 -var date = new Date(); +var date = new Date(0); if (date + 0 !== date.toString() + "0") { - throw new Test262Error('#2: var date = new Date(); date + 0 === date.toString() + "0". Actual: ' + (date + 0)); + throw new Test262Error('#2: var date = new Date(0); date + 0 === date.toString() + "0". Actual: ' + (date + 0)); } //CHECK#3 -var date = new Date(); +var date = new Date(0); if (date + true !== date.toString() + "true") { - throw new Test262Error('#3: var date = new Date(); date + true === date.toString() + "true". Actual: ' + (date + true)); + throw new Test262Error('#3: var date = new Date(0); date + true === date.toString() + "true". Actual: ' + (date + true)); } //CHECK#4 -var date = new Date(); +var date = new Date(0); if (date + new Object() !== date.toString() + "[object Object]") { - throw new Test262Error('#4: var date = new Date(); date + new Object() === date.toString() + "[object Object]". Actual: ' + (date + new Object())); + throw new Test262Error('#4: var date = new Date(0); date + new Object() === date.toString() + "[object Object]". Actual: ' + (date + new Object())); } diff --git a/test/language/expressions/class/subclass-builtins/subclass-Date.js b/test/language/expressions/class/subclass-builtins/subclass-Date.js index e22fbce496..7c37351dbf 100644 --- a/test/language/expressions/class/subclass-builtins/subclass-Date.js +++ b/test/language/expressions/class/subclass-builtins/subclass-Date.js @@ -2,13 +2,13 @@ // - src/subclass-builtins/Date.case // - src/subclass-builtins/default/expression.template /*--- -description: new SubDate() instanceof Date (Subclass instanceof Heritage) +description: new SubDate(0) instanceof Date (Subclass instanceof Heritage) flags: [generated] ---*/ const Subclass = class extends Date {} -const sub = new Subclass(); +const sub = new Subclass(0); assert(sub instanceof Subclass); assert(sub instanceof Date); diff --git a/test/language/expressions/tagged-template/template-object-template-map.js b/test/language/expressions/tagged-template/template-object-template-map.js index 4fec103c8d..6dc4f734ec 100644 --- a/test/language/expressions/tagged-template/template-object-template-map.js +++ b/test/language/expressions/tagged-template/template-object-template-map.js @@ -15,8 +15,9 @@ info: | ---*/ var expect; var cache = []; +var site = 1; function sameSite() { - tag`${Math.random()}`; + tag`${site++}`; } function tag(parameter) { diff --git a/test/language/expressions/typeof/built-in-exotic-objects-no-call.js b/test/language/expressions/typeof/built-in-exotic-objects-no-call.js index 0aab119170..498e0597bc 100644 --- a/test/language/expressions/typeof/built-in-exotic-objects-no-call.js +++ b/test/language/expressions/typeof/built-in-exotic-objects-no-call.js @@ -56,9 +56,9 @@ assert.sameValue( ); assert.sameValue( - typeof new Date(), + typeof new Date(0), "object", - 'typeof new Date() === "object"' + 'typeof new Date(0) === "object"' ); assert.sameValue( diff --git a/test/language/statements/class/subclass-builtins/subclass-Date.js b/test/language/statements/class/subclass-builtins/subclass-Date.js index 098ecf2172..a08d3d4ad0 100644 --- a/test/language/statements/class/subclass-builtins/subclass-Date.js +++ b/test/language/statements/class/subclass-builtins/subclass-Date.js @@ -2,13 +2,13 @@ // - src/subclass-builtins/Date.case // - src/subclass-builtins/default/statement.template /*--- -description: new SubDate() instanceof Date (Subclass instanceof Heritage) +description: new SubDate(0) instanceof Date (Subclass instanceof Heritage) flags: [generated] ---*/ class Subclass extends Date {} -const sub = new Subclass(); +const sub = new Subclass(0); assert(sub instanceof Subclass); assert(sub instanceof Date); diff --git a/test/language/statements/class/subclass/builtin-objects/Date/super-must-be-called.js b/test/language/statements/class/subclass/builtin-objects/Date/super-must-be-called.js index 4935b1e846..a5148035d5 100644 --- a/test/language/statements/class/subclass/builtin-objects/Date/super-must-be-called.js +++ b/test/language/statements/class/subclass/builtin-objects/Date/super-must-be-called.js @@ -23,13 +23,13 @@ class D extends Date { } assert.throws(ReferenceError, function() { - new D(); + new D(0); }); class D2 extends Date { - constructor() { - super(); + constructor(d) { + super(d); } } -new D2(); +new D2(0);