mirror of https://github.com/tc39/test262.git
Test Array.prototype methods called as top-level functions
This commit is contained in:
parent
6bfcf4237a
commit
9857b124c0
|
@ -0,0 +1,203 @@
|
||||||
|
// Copyright (C) 2020 Alexey Shvayka. All rights reserved.
|
||||||
|
// This code is governed by the BSD license found in the LICENSE file.
|
||||||
|
|
||||||
|
/*---
|
||||||
|
esid: sec-properties-of-the-array-prototype-object
|
||||||
|
description: >
|
||||||
|
Array.prototype methods resolve `this` value using strict mode semantics,
|
||||||
|
throwing TypeError if called as top-level function.
|
||||||
|
info: |
|
||||||
|
Array.prototype.concat ( ...items )
|
||||||
|
|
||||||
|
1. Let O be ? ToObject(this value).
|
||||||
|
|
||||||
|
ToObject ( argument )
|
||||||
|
|
||||||
|
Argument Type: Undefined
|
||||||
|
Result: Throw a TypeError exception.
|
||||||
|
features: [Symbol, Symbol.isConcatSpreadable, Symbol.iterator, Symbol.species, Array.prototype.flat, Array.prototype.flatMap]
|
||||||
|
---*/
|
||||||
|
|
||||||
|
["constructor", "length", "0", Symbol.isConcatSpreadable, Symbol.species].forEach(function(key) {
|
||||||
|
Object.defineProperty(this, key, {
|
||||||
|
get: function() {
|
||||||
|
throw new Test262Error(String(key) + " lookup should not be performed");
|
||||||
|
},
|
||||||
|
});
|
||||||
|
}, this);
|
||||||
|
|
||||||
|
function callback() {
|
||||||
|
throw new Test262Error("callback should not be called");
|
||||||
|
}
|
||||||
|
|
||||||
|
var index = {
|
||||||
|
get valueOf() {
|
||||||
|
throw new Test262Error("index should not be coerced to number");
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
var separator = {
|
||||||
|
get toString() {
|
||||||
|
throw new Test262Error("separator should not be coerced to string");
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
var concat = Array.prototype.concat;
|
||||||
|
assert.throws(TypeError, function() {
|
||||||
|
concat();
|
||||||
|
}, "concat");
|
||||||
|
|
||||||
|
var copyWithin = Array.prototype.copyWithin;
|
||||||
|
assert.throws(TypeError, function() {
|
||||||
|
copyWithin(index, index);
|
||||||
|
}, "copyWithin");
|
||||||
|
|
||||||
|
var entries = Array.prototype.entries;
|
||||||
|
assert.throws(TypeError, function() {
|
||||||
|
entries();
|
||||||
|
}, "entries");
|
||||||
|
|
||||||
|
var every = Array.prototype.every;
|
||||||
|
assert.throws(TypeError, function() {
|
||||||
|
every(callback);
|
||||||
|
}, "every");
|
||||||
|
|
||||||
|
var fill = Array.prototype.fill;
|
||||||
|
assert.throws(TypeError, function() {
|
||||||
|
fill(0);
|
||||||
|
}, "fill");
|
||||||
|
|
||||||
|
var filter = Array.prototype.filter;
|
||||||
|
assert.throws(TypeError, function() {
|
||||||
|
filter(callback);
|
||||||
|
}, "filter");
|
||||||
|
|
||||||
|
var find = Array.prototype.find;
|
||||||
|
assert.throws(TypeError, function() {
|
||||||
|
find(callback);
|
||||||
|
}, "find");
|
||||||
|
|
||||||
|
var findIndex = Array.prototype.findIndex;
|
||||||
|
assert.throws(TypeError, function() {
|
||||||
|
findIndex(callback);
|
||||||
|
}, "findIndex");
|
||||||
|
|
||||||
|
var flat = Array.prototype.flat;
|
||||||
|
assert.throws(TypeError, function() {
|
||||||
|
flat(index);
|
||||||
|
}, "flat");
|
||||||
|
|
||||||
|
var flatMap = Array.prototype.flatMap;
|
||||||
|
assert.throws(TypeError, function() {
|
||||||
|
flatMap(callback);
|
||||||
|
}, "flatMap");
|
||||||
|
|
||||||
|
var forEach = Array.prototype.forEach;
|
||||||
|
assert.throws(TypeError, function() {
|
||||||
|
forEach(callback);
|
||||||
|
}, "forEach");
|
||||||
|
|
||||||
|
var includes = Array.prototype.includes;
|
||||||
|
assert.throws(TypeError, function() {
|
||||||
|
includes(0, index);
|
||||||
|
}, "includes");
|
||||||
|
|
||||||
|
var indexOf = Array.prototype.indexOf;
|
||||||
|
assert.throws(TypeError, function() {
|
||||||
|
indexOf(0, index);
|
||||||
|
}, "indexOf");
|
||||||
|
|
||||||
|
var join = Array.prototype.join;
|
||||||
|
assert.throws(TypeError, function() {
|
||||||
|
join(separator);
|
||||||
|
}, "join");
|
||||||
|
|
||||||
|
var keys = Array.prototype.keys;
|
||||||
|
assert.throws(TypeError, function() {
|
||||||
|
keys();
|
||||||
|
}, "keys");
|
||||||
|
|
||||||
|
var lastIndexOf = Array.prototype.lastIndexOf;
|
||||||
|
assert.throws(TypeError, function() {
|
||||||
|
lastIndexOf(0, index);
|
||||||
|
}, "lastIndexOf");
|
||||||
|
|
||||||
|
var map = Array.prototype.map;
|
||||||
|
assert.throws(TypeError, function() {
|
||||||
|
map(callback);
|
||||||
|
}, "map");
|
||||||
|
|
||||||
|
var pop = Array.prototype.pop;
|
||||||
|
assert.throws(TypeError, function() {
|
||||||
|
pop();
|
||||||
|
}, "pop");
|
||||||
|
|
||||||
|
var push = Array.prototype.push;
|
||||||
|
assert.throws(TypeError, function() {
|
||||||
|
push();
|
||||||
|
}, "push");
|
||||||
|
|
||||||
|
var reduce = Array.prototype.reduce;
|
||||||
|
assert.throws(TypeError, function() {
|
||||||
|
reduce(callback, 0);
|
||||||
|
}, "reduce");
|
||||||
|
|
||||||
|
var reduceRight = Array.prototype.reduceRight;
|
||||||
|
assert.throws(TypeError, function() {
|
||||||
|
reduceRight(callback, 0);
|
||||||
|
}, "reduceRight");
|
||||||
|
|
||||||
|
var reverse = Array.prototype.reverse;
|
||||||
|
assert.throws(TypeError, function() {
|
||||||
|
reverse();
|
||||||
|
}, "reverse");
|
||||||
|
|
||||||
|
var shift = Array.prototype.shift;
|
||||||
|
assert.throws(TypeError, function() {
|
||||||
|
shift();
|
||||||
|
}, "shift");
|
||||||
|
|
||||||
|
var slice = Array.prototype.slice;
|
||||||
|
assert.throws(TypeError, function() {
|
||||||
|
slice(index, index);
|
||||||
|
}, "slice");
|
||||||
|
|
||||||
|
var some = Array.prototype.some;
|
||||||
|
assert.throws(TypeError, function() {
|
||||||
|
some(callback);
|
||||||
|
}, "some");
|
||||||
|
|
||||||
|
var sort = Array.prototype.sort;
|
||||||
|
assert.throws(TypeError, function() {
|
||||||
|
sort(callback);
|
||||||
|
}, "sort");
|
||||||
|
|
||||||
|
var splice = Array.prototype.splice;
|
||||||
|
assert.throws(TypeError, function() {
|
||||||
|
splice(index, index);
|
||||||
|
}, "splice");
|
||||||
|
|
||||||
|
var toLocaleString = Array.prototype.toLocaleString;
|
||||||
|
assert.throws(TypeError, function() {
|
||||||
|
toLocaleString();
|
||||||
|
}, "toLocaleString");
|
||||||
|
|
||||||
|
var toString = Array.prototype.toString;
|
||||||
|
assert.throws(TypeError, function() {
|
||||||
|
toString();
|
||||||
|
}, "toString");
|
||||||
|
|
||||||
|
var unshift = Array.prototype.unshift;
|
||||||
|
assert.throws(TypeError, function() {
|
||||||
|
unshift();
|
||||||
|
}, "unshift");
|
||||||
|
|
||||||
|
var values = Array.prototype.values;
|
||||||
|
assert.throws(TypeError, function() {
|
||||||
|
values();
|
||||||
|
}, "values");
|
||||||
|
|
||||||
|
var iterator = Array.prototype[Symbol.iterator];
|
||||||
|
assert.throws(TypeError, function() {
|
||||||
|
iterator();
|
||||||
|
}, "Symbol.iterator");
|
Loading…
Reference in New Issue