Source code
Revision control
Copy as Markdown
Other Tools
/*
* Any copyright is dedicated to the Public Domain.
*/
function checkMethod(method) {
try {
new method();
assertEq(0, 1, "not reached " + method);
} catch (e) {
assertEq(e.message.indexOf(" is not a constructor") === -1, false);
}
}
function checkMethods(proto) {
var names = Object.getOwnPropertyNames(proto);
for (var i = 0; i < names.length; i++) {
var name = names[i];
if (["constructor", "arguments", "caller"].indexOf(name) >= 0)
continue;
var prop = proto[name];
if (typeof prop === "function")
checkMethod(prop);
}
}
checkMethod(Function.prototype);
checkMethods(JSON);
checkMethods(Math);
checkMethods(Proxy);
var builtin_ctors = [
Object, Function, Array, String, Boolean, Number, Date, RegExp, Error,
EvalError, RangeError, ReferenceError, SyntaxError, TypeError, URIError,
];
for (var i = 0; i < builtin_ctors.length; i++) {
checkMethods(builtin_ctors[i]);
checkMethods(builtin_ctors[i].prototype);
}
var builtin_funcs = [
eval, isFinite, isNaN, parseFloat, parseInt,
decodeURI, decodeURIComponent, encodeURI, encodeURIComponent
];
for (var i = 0; i < builtin_funcs.length; i++) {
checkMethod(builtin_funcs[i]);
}
if (typeof reportCompare == 'function')
reportCompare(0, 0, "ok");