1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
|
/*
* 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");
|