/* * Any copyright is dedicated to the Public Domain. * http://creativecommons.org/licenses/publicdomain/ */ 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");