blob: e921b7e4b21b88ab838ae7dc468499984252f922 [file] [log] [blame]
var errors = "";
var numTests = 0;
function test(type) {
var didThrow = false;
try {
var bad = type(10);
} catch(e) {
didThrow = true;
}
if (!didThrow) {
errors += ("bad result: calling " + type.name + " as a function did not throw\n");
}
numTests++;
if (typeof type !== "function")
errors += ("bad result: typeof " + type.name + " is not function. Was " + (typeof type) + "\n");
numTests++;
}
// According to the spec, the constructors of the following types "are not intended to be
// called as a function and will throw an exception". However, as constructors, their
// type should be "function".
// https://tc39.github.io/ecma262/#sec-typedarray-constructors
test(Int8Array);
test(Uint8Array);
test(Uint8ClampedArray);
test(Int16Array);
test(Uint16Array);
test(Int32Array);
test(Uint32Array);
test(Float32Array);
test(Float64Array);
// https://tc39.github.io/ecma262/#sec-map-constructor
test(Map);
// https://tc39.github.io/ecma262/#sec-set-constructor
test(Set);
// https://tc39.github.io/ecma262/#sec-weakmap-constructor
test(WeakMap);
// https://tc39.github.io/ecma262/#sec-weakset-constructor
test(WeakSet);
// https://tc39.github.io/ecma262/#sec-arraybuffer-constructor
test(ArrayBuffer);
// https://tc39.github.io/ecma262/#sec-dataview-constructor
test(DataView);
// https://tc39.github.io/ecma262/#sec-promise-constructor
test(Promise);
// https://tc39.github.io/ecma262/#sec-proxy-constructor
test(Proxy);
let expectedNumTests = 34;
if (numTests != expectedNumTests) {
errors += "Not all tests were run: ran " + numTests + " out of " + expectedNumTests + " \n";
}
if (errors.length)
throw new Error(errors);