blob: 545f92cb09f2f5b93b7213b9342c2a9f5654365f [file] [log] [blame]
msaboff@apple.com6ce5b2c2016-09-03 00:12:16 +00001//-------------------------------------------------------------------------------------------------------
2// Copyright (C) Microsoft. All rights reserved.
3// Licensed under the MIT license. See LICENSE.txt file in the project root for full license information.
4//-------------------------------------------------------------------------------------------------------
5
6function write(v) { WScript.Echo(v + ""); }
7
8var errorCount = 0;
9
10// global
11
12var globalList = [
13 ["eval",1],
14 ["parseInt",2],
15 ["parseFloat",1],
16 ["isNaN",1],
17 ["isFinite",1],
18 ["decodeURI",1],
19 ["encodeURI",1],
20 ["decodeURIComponent",1],
21 ["encodeURIComponent",1],
22 ["Object",0],
23 ["Function",1],
24 ["Array",1],
25 ["String",1],
26 ["Boolean",1],
27 ["Number",1],
28 ["Date",7],
29 ["RegExp",2],
30 ["Error",1],
31 ["EvalError",1],
32 ["RangeError",1],
33 ["ReferenceError",1],
34 ["SyntaxError",1],
35 ["TypeError",1],
36 ["URIError",1]
37]
38
39// Object
40var objList = [
41 //TODO ["constructor",0],
42 ["toString",0],
43 ["toLocaleString",0],
44 ["valueOf",0],
45 ["hasOwnProperty",1] ,
46 ["isPrototypeOf",1] ,
47 ["propertyIsEnumerable",1]
48]
49
50// Function
51var funcList = [
52 ["constructor",1],
53 ["toString",0],
54 ["apply",2 ],
55 ["call", 1]
56]
57
58// Array
59var arrList = [
60 // FuncName, length
61 ["constructor",1],
62 ["toString",0],
63 ["toLocaleString", 0],
64 ["concat", 1],
65 ["join",1],
66 ["pop",0],
67 ["push",1],
68 ["reverse",0],
69 ["shift",0],
70 ["slice",2],
71 ["sort",1],
72 ["splice",2],
73 ["unshift",1]
74];
75
76
77// String
78var stringList = [
79 ["constructor",1],
80 ["toString",0],
81 ["valueOf",0],
82 ["charAt",1],
83 ["charCodeAt",1],
84 ["concat",1],
85 ["indexOf",2],
86 ["lastIndexOf",2],
87 ["localeCompare",1],
88 ["match",1],
89 ["replace",1],
90 ["search",0],
91 ["slice",0],
92 ["split",2],
93 ["substring",2],
94 ["toLowerCase",0],
95 ["toLocaleLowerCase",0],
96 ["toUpperCase",0],
97 ["toLocaleUpperCase",0],
98
99 // not in ECMA spec
100
101 ["anchor",1],
102 ["big",0],
103 ["blink",0],
104 ["bold",0],
105 ["fixed",0],
106 ["fontcolor",1],
107 ["fontsize",1],
108 ["italics",0],
109 ["link",1],
110 ["small",0],
111 ["strike",0],
112 ["sub",0],
113 ["sup",0],
114 ["substr",2]
115]
116
117var stringList2 = [
118 ["fromCharCode", 0]
119];
120
121// Boolean
122var boolList = [
123 ["constructor",1],
124 ["toString",0],
125 ["valueOf",0]
126]
127
128//Number
129
130var numberList = [
131 ["constructor",1],
132 ["toString",1],
133 ["toLocaleString",0],
134 ["valueOf",0],
135 ["toFixed",1],
136 ["toExponential",1],
137 ["toPrecision",1]
138]
139
140// Math object is a single object - 18
141var mathList = [
142
143 ["abs",1],
144 ["acos",1],
145 ["asin",1],
146 ["atan",1],
147 ["atan2",2],
148 ["ceil",1],
149 ["cos",1],
150 ["exp",1],
151 ["floor",1],
152 ["log",1],
153 ["max",2],
154 ["min",2],
155 ["pow",2],
156 ["random",0],
157 ["round",1],
158 ["sin",1],
159 ["sqrt",1],
160 ["tan",1]
161]
162
163// Date Prototype object
164var dateList = [
165 ["constructor",7],
166
167 ["toString",0],
168 ["toDateString",0],
169 ["toTimeString",0],
170 ["toLocaleString",0],
171 ["toLocaleDateString",0],
172
173 ["valueOf",0],
174
175 ["getTime",0],
176
177 ["getFullYear",0],
178 ["getUTCFullYear",0],
179
180 ["getMonth",0],
181 ["getUTCMonth",0],
182
183 ["getDate",0],
184 ["getUTCDate",0],
185
186 ["getDay",0],
187 ["getUTCDay",0],
188
189 ["getHours",0],
190 ["getUTCHours",0],
191
192 ["getMinutes",0],
193 ["getUTCMinutes",0],
194
195 ["getSeconds",0],
196 ["getUTCSeconds",0],
197
198 ["getMilliseconds",0],
199 ["getUTCMilliseconds",0],
200
201 ["getTimezoneOffset",0],
202
203 ["setTime",1],
204
205 ["setMilliseconds",1],
206 ["setUTCMilliseconds",1],
207
208 ["setSeconds",2],
209 ["setUTCSeconds",2],
210
211 ["setMinutes",3],
212 ["setUTCMinutes",3],
213
214 ["setHours",4],
215 ["setUTCHours",4],
216
217 ["setDate",1],
218 ["setUTCDate",1],
219
220 ["setMonth",2],
221 ["setUTCMonth",2],
222
223 ["setFullYear",3],
224 ["setUTCFullYear",3],
225
226 ["toUTCString",0],
227
228 // not in ECMA spec
229
230 ["toGMTString",0],
231 ["toLocaleTimeString",0 ],
232 ["toUTCString",0],
233
234 ["setYear",1],
235 ["getYear",0]
236
237 // TODO ["getVarDate",0]
238]
239
240// static date functions
241var dateList2 = [
242 ["parse",1],
243 ["UTC",7]
244]
245
246
247
248// RegExp object
249
250var regxpList = [
251 ["constructor",2],
252 ["exec",1],
253 ["test",1],
254 ["toString",0] //,
255 // not in ECMA spec
256 // TODO ["compile",2]
257
258]
259
260
261// Error object
262
263var errorList = [
264 ["constructor",1],
265 ["name",5],
266 ["message",0],
267 ["toString",0]
268]
269
270
271function doEval(scen) {
272 try {
273 var res = eval(scen);
274 write("No Exception: " + scen);
275 } catch (e) {
276 write(" Exception: " + scen + ". :: " + e.message);
277 }
278}
279
280var somevar = 0;
281
282function TestNew(list, str) {
283 for (var i=0; i<list.length; i++) {
284 var fname = list[i][0];
285 doEval("somevar = new " + str+fname+"()");
286 }
287}
288
289TestNew(globalList,"");
290
291TestNew(objList, "Object.prototype.");
292
293TestNew(funcList, "Function.prototype.");
294
295TestNew(arrList, "Array.prototype.");
296
297TestNew(stringList, "String.prototype.");
298TestNew(stringList2, "String.");
299
300TestNew(boolList, "Boolean.prototype.");
301
302TestNew(numberList, "Number.prototype.");
303
304TestNew(mathList, "Math.");
305
306TestNew(dateList, "Date.prototype.");
307TestNew(dateList2,"Date.");
308
309TestNew(regxpList, "RegExp.prototype.");
310
311TestNew(errorList, "Error.prototype.");
312
313
314if ( errorCount > 0 ) {
315 throw Error(errorCount + " Test(s) Failed");
316}