mirror of
https://github.com/tc39/test262.git
synced 2025-07-29 00:44:32 +02:00
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.
This commit is contained in:
parent
3f805a1383
commit
e4f4abdcb2
@ -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
|
||||
|
@ -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)'
|
||||
);
|
||||
|
@ -12,7 +12,7 @@ info: |
|
||||
features: [Symbol]
|
||||
---*/
|
||||
|
||||
var date = new Date();
|
||||
var date = new Date(0);
|
||||
var symbol = Symbol('');
|
||||
var year = {
|
||||
valueOf: function() {
|
||||
|
@ -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');
|
||||
|
@ -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;
|
||||
|
||||
|
@ -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,
|
||||
|
@ -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;
|
||||
|
@ -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');
|
||||
|
@ -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;
|
||||
|
||||
|
@ -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;
|
||||
|
@ -9,7 +9,7 @@ description: >
|
||||
---*/
|
||||
|
||||
function callbackfn(val, idx, obj) {
|
||||
return new Date();
|
||||
return new Date(0);
|
||||
}
|
||||
|
||||
var newArr = [11].filter(callbackfn);
|
||||
|
@ -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;
|
||||
|
||||
|
@ -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);
|
||||
|
@ -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;
|
||||
|
||||
|
@ -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;
|
||||
|
||||
|
@ -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;
|
||||
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
||||
|
@ -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;
|
||||
|
||||
|
@ -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;
|
||||
|
@ -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,
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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');
|
||||
|
@ -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();
|
||||
});
|
||||
|
@ -20,5 +20,5 @@ features: [Reflect.construct]
|
||||
---*/
|
||||
|
||||
assert.sameValue(isConstructor(Date), true, 'isConstructor(Date) must return true');
|
||||
new Date();
|
||||
new Date(0);
|
||||
|
||||
|
@ -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);
|
||||
|
@ -14,7 +14,7 @@ info: |
|
||||
features: [Symbol.toPrimitive]
|
||||
---*/
|
||||
|
||||
var d = new Date();
|
||||
var d = new Date(0);
|
||||
|
||||
assert.sameValue(typeof d[Symbol.toPrimitive], 'function');
|
||||
|
||||
|
@ -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() {
|
||||
|
@ -13,7 +13,7 @@ info: |
|
||||
? ToNumber(date).
|
||||
---*/
|
||||
|
||||
var date = new Date();
|
||||
var date = new Date(0);
|
||||
var originalValue = date.getTime();
|
||||
var obj = {
|
||||
valueOf: function() {
|
||||
|
@ -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 = {
|
||||
|
@ -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 = {
|
||||
|
@ -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 = {
|
||||
|
@ -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 = {
|
||||
|
@ -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() {
|
||||
|
@ -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 = {
|
||||
|
@ -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() {
|
||||
|
@ -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 = {
|
||||
|
@ -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() {
|
||||
|
@ -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 = {
|
||||
|
@ -10,7 +10,7 @@ info: |
|
||||
? ToNumber(date).
|
||||
---*/
|
||||
|
||||
var date = new Date();
|
||||
var date = new Date(0);
|
||||
var originalValue = date.getTime();
|
||||
var obj = {
|
||||
valueOf: function() {
|
||||
|
@ -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 = {
|
||||
|
@ -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() {
|
||||
|
@ -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 = {
|
||||
|
@ -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() {
|
||||
|
@ -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);
|
||||
|
@ -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
|
||||
|
@ -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) {
|
||||
|
@ -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);
|
||||
|
@ -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);
|
||||
|
@ -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]');
|
||||
|
@ -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) {
|
||||
|
@ -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) {
|
||||
|
@ -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 = {};
|
||||
|
@ -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
|
||||
|
@ -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);
|
||||
|
@ -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
|
||||
|
@ -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');
|
||||
}
|
||||
|
@ -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');
|
||||
}
|
||||
|
@ -8,7 +8,7 @@ description: >
|
||||
step 2)
|
||||
---*/
|
||||
|
||||
var props = new Date();
|
||||
var props = new Date(0);
|
||||
var result = false;
|
||||
|
||||
Object.defineProperty(props, "prop", {
|
||||
|
@ -9,7 +9,7 @@ description: >
|
||||
(8.10.5 step 4.a)
|
||||
---*/
|
||||
|
||||
var descObj = new Date();
|
||||
var descObj = new Date(0);
|
||||
|
||||
descObj.configurable = true;
|
||||
|
||||
|
@ -10,7 +10,7 @@ description: >
|
||||
|
||||
var newObj = Object.create({}, {
|
||||
prop: {
|
||||
configurable: new Date()
|
||||
configurable: new Date(0)
|
||||
}
|
||||
});
|
||||
|
||||
|
@ -9,7 +9,7 @@ description: >
|
||||
(8.10.5 step 5.a)
|
||||
---*/
|
||||
|
||||
var dateObj = new Date();
|
||||
var dateObj = new Date(0);
|
||||
|
||||
dateObj.value = "DateValue";
|
||||
|
||||
|
@ -9,7 +9,7 @@ description: >
|
||||
(8.10.5 step 6.a)
|
||||
---*/
|
||||
|
||||
var dateObj = new Date();
|
||||
var dateObj = new Date(0);
|
||||
|
||||
dateObj.writable = true;
|
||||
|
||||
|
@ -10,7 +10,7 @@ description: >
|
||||
|
||||
var newObj = Object.create({}, {
|
||||
prop: {
|
||||
writable: new Date()
|
||||
writable: new Date(0)
|
||||
}
|
||||
});
|
||||
var hasProperty = newObj.hasOwnProperty("prop");
|
||||
|
@ -9,7 +9,7 @@ description: >
|
||||
step 7.a)
|
||||
---*/
|
||||
|
||||
var dateObj = new Date();
|
||||
var dateObj = new Date(0);
|
||||
|
||||
dateObj.get = function() {
|
||||
return "VerifyDateObject";
|
||||
|
@ -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;
|
||||
|
@ -12,7 +12,7 @@ description: >
|
||||
assert.throws(TypeError, function() {
|
||||
Object.create({}, {
|
||||
prop: {
|
||||
set: new Date()
|
||||
set: new Date(0)
|
||||
}
|
||||
});
|
||||
});
|
||||
|
@ -9,7 +9,7 @@ description: >
|
||||
5.a)
|
||||
---*/
|
||||
|
||||
var props = new Date();
|
||||
var props = new Date(0);
|
||||
props.prop = {
|
||||
value: 12,
|
||||
enumerable: true
|
||||
|
@ -10,7 +10,7 @@ description: >
|
||||
---*/
|
||||
|
||||
var accessed = false;
|
||||
var descObj = new Date();
|
||||
var descObj = new Date(0);
|
||||
|
||||
descObj.enumerable = true;
|
||||
|
||||
|
@ -12,7 +12,7 @@ var accessed = false;
|
||||
|
||||
var newObj = Object.create({}, {
|
||||
prop: {
|
||||
enumerable: new Date()
|
||||
enumerable: new Date(0)
|
||||
}
|
||||
});
|
||||
for (var property in newObj) {
|
||||
|
@ -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", {
|
||||
|
@ -9,7 +9,7 @@ description: >
|
||||
---*/
|
||||
|
||||
var obj = {};
|
||||
var props = new Date();
|
||||
var props = new Date(0);
|
||||
|
||||
Object.defineProperty(props, "prop", {
|
||||
value: {
|
||||
|
@ -12,7 +12,7 @@ var obj = {};
|
||||
|
||||
Object.defineProperties(obj, {
|
||||
property: {
|
||||
configurable: new Date()
|
||||
configurable: new Date(0)
|
||||
}
|
||||
});
|
||||
var preCheck = obj.hasOwnProperty("property");
|
||||
|
@ -11,7 +11,7 @@ description: >
|
||||
|
||||
var obj = {};
|
||||
|
||||
var descObj = new Date();
|
||||
var descObj = new Date(0);
|
||||
|
||||
descObj.value = "Date";
|
||||
|
||||
|
@ -12,7 +12,7 @@ includes: [propertyHelper.js]
|
||||
|
||||
var obj = {};
|
||||
|
||||
var descObj = new Date();
|
||||
var descObj = new Date(0);
|
||||
|
||||
descObj.writable = false;
|
||||
|
||||
|
@ -12,7 +12,7 @@ var obj = {};
|
||||
|
||||
Object.defineProperties(obj, {
|
||||
property: {
|
||||
writable: new Date()
|
||||
writable: new Date(0)
|
||||
}
|
||||
});
|
||||
|
||||
|
@ -11,7 +11,7 @@ description: >
|
||||
|
||||
var obj = {};
|
||||
|
||||
var descObj = new Date();
|
||||
var descObj = new Date(0);
|
||||
|
||||
descObj.get = function() {
|
||||
return "Date";
|
||||
|
@ -10,7 +10,7 @@ description: >
|
||||
---*/
|
||||
|
||||
var data = "data";
|
||||
var descObj = new Date();
|
||||
var descObj = new Date(0);
|
||||
var setFun = function(value) {
|
||||
data = value;
|
||||
};
|
||||
|
@ -10,7 +10,7 @@ description: >
|
||||
---*/
|
||||
|
||||
var obj = {};
|
||||
var descObj = new Date();
|
||||
var descObj = new Date(0);
|
||||
var accessed = false;
|
||||
|
||||
descObj.enumerable = true;
|
||||
|
@ -13,7 +13,7 @@ var accessed = false;
|
||||
|
||||
Object.defineProperties(obj, {
|
||||
prop: {
|
||||
enumerable: new Date()
|
||||
enumerable: new Date(0)
|
||||
}
|
||||
});
|
||||
for (var property in obj) {
|
||||
|
@ -11,7 +11,7 @@ description: >
|
||||
|
||||
var obj = {};
|
||||
|
||||
var descObj = new Date();
|
||||
var descObj = new Date(0);
|
||||
descObj.configurable = true;
|
||||
|
||||
Object.defineProperties(obj, {
|
||||
|
@ -10,7 +10,7 @@ includes: [propertyHelper.js]
|
||||
---*/
|
||||
|
||||
|
||||
var obj = new Date();
|
||||
var obj = new Date(0);
|
||||
|
||||
Object.defineProperty(obj, "prop", {
|
||||
value: 11,
|
||||
|
@ -11,7 +11,7 @@ description: >
|
||||
var obj = {};
|
||||
|
||||
Object.defineProperty(obj, "property", {
|
||||
configurable: new Date()
|
||||
configurable: new Date(0)
|
||||
});
|
||||
|
||||
var beforeDeleted = obj.hasOwnProperty("property");
|
||||
|
@ -11,7 +11,7 @@ description: >
|
||||
|
||||
var obj = {};
|
||||
|
||||
var dateObj = new Date();
|
||||
var dateObj = new Date(0);
|
||||
|
||||
dateObj.value = "Date";
|
||||
|
||||
|
@ -11,7 +11,7 @@ description: >
|
||||
|
||||
var obj = {};
|
||||
|
||||
var dateObj = new Date();
|
||||
var dateObj = new Date(0);
|
||||
|
||||
dateObj.writable = true;
|
||||
|
||||
|
@ -11,7 +11,7 @@ description: >
|
||||
var obj = {};
|
||||
|
||||
Object.defineProperty(obj, "property", {
|
||||
writable: new Date()
|
||||
writable: new Date(0)
|
||||
});
|
||||
|
||||
var beforeWrite = obj.hasOwnProperty("property");
|
||||
|
@ -11,7 +11,7 @@ description: >
|
||||
|
||||
var obj = {};
|
||||
|
||||
var dateObj = new Date();
|
||||
var dateObj = new Date(0);
|
||||
|
||||
dateObj.get = function() {
|
||||
return "dateGetProperty";
|
||||
|
@ -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;
|
||||
|
@ -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);
|
||||
|
@ -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) {
|
||||
|
@ -11,7 +11,7 @@ description: >
|
||||
|
||||
var obj = {};
|
||||
|
||||
var dateObj = new Date();
|
||||
var dateObj = new Date(0);
|
||||
|
||||
dateObj.configurable = true;
|
||||
|
||||
|
@ -9,7 +9,7 @@ description: >
|
||||
step 1)
|
||||
---*/
|
||||
|
||||
var desc = new Date();
|
||||
var desc = new Date(0);
|
||||
|
||||
Object.defineProperty(desc, "foo", {
|
||||
value: 12,
|
||||
|
@ -9,7 +9,7 @@ description: >
|
||||
---*/
|
||||
|
||||
var obj = {};
|
||||
var dateObj = new Date();
|
||||
var dateObj = new Date(0);
|
||||
|
||||
Object.defineProperty(obj, "prop", {
|
||||
value: dateObj
|
||||
|
@ -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);
|
||||
|
||||
|
@ -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)');
|
||||
|
@ -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";
|
||||
|
||||
|
@ -9,7 +9,7 @@ description: >
|
||||
includes: [propertyHelper.js]
|
||||
---*/
|
||||
|
||||
var obj = new Date();
|
||||
var obj = new Date(0);
|
||||
|
||||
assert(Object.isExtensible(obj));
|
||||
Object.preventExtensions(obj);
|
||||
|
@ -9,7 +9,7 @@ description: >
|
||||
includes: [propertyHelper.js]
|
||||
---*/
|
||||
|
||||
var obj = new Date();
|
||||
var obj = new Date(0);
|
||||
|
||||
assert(Object.isExtensible(obj));
|
||||
Object.preventExtensions(obj);
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user