1 | require('object.assign').shim();
|
2 | var temp = {};
|
3 |
|
4 |
|
5 | exports.name = 'ES5';
|
6 | exports.target_file = 'es5/index.html';
|
7 | exports.skeleton_file = 'es5/skeleton.html';
|
8 | exports.browsers = {
|
9 | es5shim: {
|
10 | full: 'es5-shim',
|
11 | short: 'es5-shim',
|
12 | obsolete: false,
|
13 | platformtype: 'compiler'
|
14 | },
|
15 | ie7: {
|
16 | full: 'Internet Explorer 7',
|
17 | family: 'Chakra',
|
18 | short: 'IE 7',
|
19 | obsolete: true
|
20 | },
|
21 | ie8: {
|
22 | full: 'Internet Explorer 8',
|
23 | family: 'Chakra',
|
24 | short: 'IE 8',
|
25 | obsolete: true
|
26 | },
|
27 | ie9: {
|
28 | full: 'Internet Explorer 9',
|
29 | family: 'Chakra',
|
30 | short: 'IE 9',
|
31 | obsolete: false
|
32 | },
|
33 | ie10: {
|
34 | full: 'Internet Explorer 10, 11',
|
35 | family: 'Chakra',
|
36 | short: 'IE 10-11',
|
37 | obsolete: false
|
38 | },
|
39 | edge13: {
|
40 | full: 'Edge 13+',
|
41 | family: 'Chakra',
|
42 | short: 'Edge 13+',
|
43 | obsolete: false
|
44 | },
|
45 | firefox2: {
|
46 | full: 'Firefox 2',
|
47 | family: 'SpiderMonkey',
|
48 | short: 'FF 2',
|
49 | obsolete: true
|
50 | },
|
51 | firefox3: {
|
52 | full: 'Firefox 3',
|
53 | family: 'SpiderMonkey',
|
54 | short: 'FF 3',
|
55 | obsolete: true
|
56 | },
|
57 | firefox3_5: {
|
58 | full: 'Firefox 3.5',
|
59 | family: 'SpiderMonkey',
|
60 | short: 'FF 3.5',
|
61 | obsolete: true
|
62 | },
|
63 | firefox3_6: {
|
64 | full: 'Firefox 3.6',
|
65 | family: 'SpiderMonkey',
|
66 | short: 'FF 3.6',
|
67 | obsolete: true
|
68 | },
|
69 | firefox4: {
|
70 | full: 'Firefox 4',
|
71 | family: 'SpiderMonkey',
|
72 | short: 'FF 4',
|
73 | obsolete: true
|
74 | },
|
75 | firefox5: {
|
76 | full: 'Firefox 5-7',
|
77 | family: 'SpiderMonkey',
|
78 | short: 'FF 5-7',
|
79 | obsolete: true
|
80 | },
|
81 | firefox8: {
|
82 | full: 'Firefox 8-20',
|
83 | family: 'SpiderMonkey',
|
84 | short: 'FF 8-20',
|
85 | obsolete: true
|
86 | },
|
87 | firefox21: {
|
88 | full: 'Firefox 21-45',
|
89 | family: 'SpiderMonkey',
|
90 | short: 'FF 21-45',
|
91 | obsolete: false
|
92 | },
|
93 | firefox46: {
|
94 | full: 'Firefox 46+',
|
95 | family: 'SpiderMonkey',
|
96 | short: 'FF 46+',
|
97 | obsolete: false
|
98 | },
|
99 | safari3: {
|
100 | full: 'Safari 3.2',
|
101 | family: 'JavaScriptCore',
|
102 | short: 'SF 3.2',
|
103 | obsolete: true
|
104 | },
|
105 | safari4: {
|
106 | full: 'Safari 4.0.5',
|
107 | family: 'JavaScriptCore',
|
108 | short: 'SF 4',
|
109 | obsolete: true
|
110 | },
|
111 | safari5: {
|
112 | full: 'Safari 5.0.5',
|
113 | family: 'JavaScriptCore',
|
114 | short: 'SF 5',
|
115 | obsolete: true
|
116 | },
|
117 | safari51: {
|
118 | full: 'Safari 5.1.4',
|
119 | family: 'JavaScriptCore',
|
120 | short: 'SF 5.1.4',
|
121 | obsolete: true
|
122 | },
|
123 | safari6: {
|
124 | full: 'Safari 6.0, Safari 7.0, Safari 7.1, Safari 8, Safari 9',
|
125 | family: 'JavaScriptCore',
|
126 | short: 'SF 6-9',
|
127 | obsolete: false
|
128 | },
|
129 | safari10: {
|
130 | full: 'Safari 10',
|
131 | family: 'JavaScriptCore',
|
132 | short: 'SF 10',
|
133 | obsolete: false
|
134 | },
|
135 | safaritp: {
|
136 | full: 'Safari Technology Preview Release 12',
|
137 | family: 'JavaScriptCore',
|
138 | short: 'SF TP',
|
139 | unstable: true
|
140 | },
|
141 | webkit: {
|
142 | full: 'WebKit r204915 (August 24, 2016)',
|
143 | family: 'JavaScriptCore',
|
144 | short: 'WebKit',
|
145 | unstable: true
|
146 | },
|
147 | chrome5: {
|
148 | full: 'Chrome 5 (5.0.375.127)',
|
149 | family: 'V8',
|
150 | short: 'CH 5',
|
151 | obsolete: true
|
152 | },
|
153 | chrome6: {
|
154 | full: 'Chrome 6 (6.0.472.55)',
|
155 | family: 'V8',
|
156 | short: 'CH 6',
|
157 | obsolete: true
|
158 | },
|
159 | chrome7: {
|
160 | full: 'Chrome 7 (7.0.517.5), Chrome 8, Chrome 9 (9.0.587.0 dev), Chrome 10, Chrome 11, Chrome 12 (12.0.742.91)',
|
161 | family: 'V8',
|
162 | short: 'CH 7-12',
|
163 | obsolete: true
|
164 | },
|
165 | chrome13: {
|
166 | full: 'Chrome 13 (13.0.782.107 beta), Chrome 14 (14.0.835.8 dev), Chrome 15, Chrome 16 (16.0.891.0 dev)',
|
167 | family: 'V8',
|
168 | short: 'CH 13-16',
|
169 | obsolete: true
|
170 | },
|
171 | chrome19: {
|
172 | full: 'Chrome 19 (19.0.1084.56 stable), Chrome 22',
|
173 | family: 'V8',
|
174 | short: 'CH 19-22',
|
175 | obsolete: true
|
176 | },
|
177 | chrome23: {
|
178 | full: 'Chrome 23-53, Opera 15+',
|
179 | family: 'V8',
|
180 | short: 'CH 23-53,<br>OP 15+',
|
181 | obsolete: false
|
182 | },
|
183 | chrome54: {
|
184 | full: 'Chrome 54 (54.0.2808.0 canary)',
|
185 | family: 'V8',
|
186 | short: 'CH 54',
|
187 | unstable: true
|
188 | },
|
189 | opera10_10: {
|
190 | full: 'Opera 10.10',
|
191 | family: 'Carakan',
|
192 | short: 'OP 10.1',
|
193 | obsolete: true
|
194 | },
|
195 | opera10_50: {
|
196 | full: 'Opera 10.50, Opera 10.62 (build 8437), Opera 10.70 (build 9044), Opera 11 (build 1156), Opera 11.10 (build 2048), Opera 11.11 (build 2109), Opera 11.50 (build 1074)',
|
197 | family: 'Carakan',
|
198 | short: 'OP 10.50-11.50',
|
199 | obsolete: true
|
200 | },
|
201 | opera12: {
|
202 | full: 'Opera 11.60 (build 1185), Opera 11.64 (build 1403), Opera 12 (build 1065)',
|
203 | family: 'Carakan',
|
204 | short: 'OP 11.60-OP 12',
|
205 | obsolete: true
|
206 | },
|
207 | opera12_10: {
|
208 | full: 'Opera 12.15',
|
209 | family: 'Carakan',
|
210 | short: 'OP 12.10',
|
211 | obsolete: false
|
212 | },
|
213 | konq43: {
|
214 | full: 'Konqueror 4.3',
|
215 | family: 'KJS',
|
216 | short: 'Konq 4.3',
|
217 | obsolete: true
|
218 | },
|
219 | konq49: {
|
220 | full: 'Konqueror 4.9',
|
221 | family: 'KJS',
|
222 | short: 'Konq 4.9',
|
223 | obsolete: true
|
224 | },
|
225 | konq413: {
|
226 | full: 'Konqueror 4.13',
|
227 | family: 'KJS',
|
228 | short: 'Konq 4.13',
|
229 | obsolete: false
|
230 | },
|
231 | besen: {
|
232 | full: 'Bero\'s EcmaScript Engine (version 1.0.0.489)',
|
233 | short: 'BESEN',
|
234 | link: 'http://besen.sourceforge.net/',
|
235 | obsolete: false,
|
236 | platformtype: 'engine',
|
237 | },
|
238 | rhino: {
|
239 | full: 'Rhino 1.7 release 3 PRERELEASE 2010 01 14',
|
240 | short: 'Rhino 1.7',
|
241 | obsolete: false,
|
242 | platform: 'engine',
|
243 | },
|
244 | phantom: {
|
245 | full: 'PhantomJS 2.0',
|
246 | short: 'PhantomJS 2.0',
|
247 | obsolete: false,
|
248 | platformtype: 'engine',
|
249 | equals: 'safari6',
|
250 | },
|
251 | ejs: {
|
252 | full: 'Echo JS',
|
253 | short: 'EJS',
|
254 | unstable: true,
|
255 | platformtype: 'compiler',
|
256 | },
|
257 | android40: {
|
258 | full: 'Android Browser',
|
259 | family: 'Android',
|
260 | short: 'Android 4.0',
|
261 | platformtype: 'mobile',
|
262 | obsolete: true,
|
263 | },
|
264 | android41: {
|
265 | full: 'Android Browser',
|
266 | family: 'Android',
|
267 | short: 'Android 4.1 - 4.3',
|
268 | platformtype: 'mobile',
|
269 | obsolete: true,
|
270 | },
|
271 | android44: {
|
272 | full: 'Android Browser',
|
273 | family: 'Android',
|
274 | short: 'Android 4.4+',
|
275 | platformtype: 'mobile',
|
276 | equals: 'chrome23',
|
277 | ignore_flagged: true,
|
278 | },
|
279 | ios78: {
|
280 | full: 'iOS Safari 7/8/9',
|
281 | short: 'iOS7/8/9',
|
282 | equals: 'safari6',
|
283 | platformtype: 'mobile',
|
284 | }
|
285 | };
|
286 | var sparseNote = {
|
287 | val: true,
|
288 | note_id: 'sparse_arrays',
|
289 | note_html: 'Internet Explorer 6 - 8 do not differentiate between a dense array with undefined values, and a sparse array. Specifically, `0 in [,]` and `0 in [undefined]` both yield false - whereas in a compliant browser, the former would give `false`, the latter `true`. As such, ES5 array iteration methods can only be shimmed reliably when dealing with dense arrays.'
|
290 | };
|
291 | exports.tests = [
|
292 | {
|
293 | name: 'Object/array literal extensions',
|
294 | significance: 'large',
|
295 | subtests: [{
|
296 | name: 'Getter accessors',
|
297 | exec: function () { |
298 |
|
299 | },
|
300 | res: {
|
301 | ie9: true,
|
302 | firefox2: true,
|
303 | safari3: true,
|
304 | safaritp: true,
|
305 | webkit: true,
|
306 | chrome5: true,
|
307 | opera10_10: true,
|
308 | konq43: true,
|
309 | besen: true,
|
310 | rhino: true,
|
311 | ejs: true,
|
312 | android40: true,
|
313 | }
|
314 | },
|
315 | {
|
316 | name: 'Setter accessors',
|
317 | exec: function () { |
318 |
|
319 |
|
320 |
|
321 | },
|
322 | res: {
|
323 | ie9: true,
|
324 | firefox2: true,
|
325 | safari3: true,
|
326 | safaritp: true,
|
327 | webkit: true,
|
328 | chrome5: true,
|
329 | opera10_10: true,
|
330 | konq43: true,
|
331 | besen: true,
|
332 | rhino: true,
|
333 | ejs: true,
|
334 | android40: true,
|
335 | },
|
336 | },
|
337 | {
|
338 | name: 'Trailing commas in object literals',
|
339 | exec: function () { |
340 |
|
341 | },
|
342 | res: {
|
343 | ie9: true,
|
344 | firefox2: true,
|
345 | safari3: null,
|
346 | safari4: true,
|
347 | safaritp: true,
|
348 | webkit: true,
|
349 | chrome5: null,
|
350 | chrome7: true,
|
351 | opera10_50: null,
|
352 | opera12_10: true,
|
353 | konq43: null,
|
354 | besen: null,
|
355 | rhino: null,
|
356 | ejs: null,
|
357 | android40: null,
|
358 | },
|
359 | },
|
360 | {
|
361 | name: 'Trailing commas in array literals',
|
362 | exec: function () { |
363 |
|
364 | },
|
365 | res: {
|
366 | ie9: true,
|
367 | firefox2: true,
|
368 | safari3: null,
|
369 | safari4: true,
|
370 | safaritp: true,
|
371 | webkit: true,
|
372 | chrome5: null,
|
373 | chrome7: true,
|
374 | opera10_50: null,
|
375 | opera12_10: true,
|
376 | konq43: null,
|
377 | besen: null,
|
378 | rhino: null,
|
379 | ejs: null,
|
380 | android40: null,
|
381 | },
|
382 | },
|
383 | {
|
384 | name: 'Reserved words as property names',
|
385 | exec: function () { |
386 |
|
387 | },
|
388 | res: {
|
389 | ie9: true,
|
390 | firefox2: true,
|
391 | safari51: true,
|
392 | safaritp: true,
|
393 | webkit: true,
|
394 | chrome5: false,
|
395 | chrome6: false,
|
396 | chrome7: true,
|
397 | chrome13: true,
|
398 | chrome19: true,
|
399 | chrome23: true,
|
400 | opera12: true,
|
401 | konq413: true,
|
402 | besen: true,
|
403 | rhino: false,
|
404 | ejs: true,
|
405 | android40: true,
|
406 | },
|
407 | }],
|
408 | separator: 'after'
|
409 | },
|
410 | {
|
411 | name: 'Object static methods',
|
412 | significance: 'large',
|
413 | subtests: [{
|
414 | name: 'Object.create',
|
415 | exec: function () {
|
416 | return typeof Object.create == 'function';
|
417 | },
|
418 | res: {
|
419 | ie9: true,
|
420 | firefox4: true,
|
421 | safari5: true,
|
422 | safaritp: true,
|
423 | webkit: true,
|
424 | chrome5: true,
|
425 | opera12: true,
|
426 | konq413: true,
|
427 | besen: true,
|
428 | rhino: true,
|
429 | ejs: true,
|
430 | android40: true,
|
431 | }
|
432 | },
|
433 | {
|
434 | name: 'Object.defineProperty',
|
435 | exec: function () {
|
436 | return typeof Object.defineProperty == 'function';
|
437 | },
|
438 | res: {
|
439 | ie8: {
|
440 | val: true,
|
441 | note_id: 'define-property-ie',
|
442 | note_html: 'In Internet Explorer 8 <code>Object.defineProperty</code> only accepts DOM objects ' +
|
443 | '(<a href="http://msdn.microsoft.com/en-us/library/dd548687(VS.85).aspx">MSDN reference</a>).'
|
444 | },
|
445 | ie9: true,
|
446 | firefox4: true,
|
447 | firefox21: true,
|
448 | safari5: {
|
449 | val: true,
|
450 | note_id: 'define-property-webkit',
|
451 | note_html: 'In some versions of Safari 5, <code>Object.defineProperty</code> does <b>not</b> work with DOM objects.'
|
452 | },
|
453 | safari51: true,
|
454 | safaritp: true,
|
455 | webkit: true,
|
456 | chrome5: true,
|
457 | opera12: true,
|
458 | konq413: true,
|
459 | besen: true,
|
460 | rhino: true,
|
461 | ejs: true,
|
462 | android40: true,
|
463 | }
|
464 | },
|
465 | {
|
466 | name: 'Object.defineProperties',
|
467 | exec: function () {
|
468 | return typeof Object.defineProperties == 'function';
|
469 | },
|
470 | res: {
|
471 | ie9: true,
|
472 | firefox4: true,
|
473 | safari5: true,
|
474 | safaritp: true,
|
475 | webkit: true,
|
476 | chrome5: true,
|
477 | opera12: true,
|
478 | konq413: true,
|
479 | besen: true,
|
480 | rhino: true,
|
481 | ejs: true,
|
482 | android40: true,
|
483 | }
|
484 | },
|
485 | {
|
486 | name: 'Object.getPrototypeOf',
|
487 | exec: function () {
|
488 | return typeof Object.getPrototypeOf == 'function';
|
489 | },
|
490 | res: {
|
491 | ie9: true,
|
492 | firefox3_5: true,
|
493 | safari5: true,
|
494 | safaritp: true,
|
495 | webkit: true,
|
496 | chrome5: true,
|
497 | opera12: true,
|
498 | konq43: false,
|
499 | konq49: true,
|
500 | konq413: true,
|
501 | besen: true,
|
502 | rhino: true,
|
503 | ejs: true,
|
504 | android40: true,
|
505 | }
|
506 | },
|
507 | {
|
508 | name: 'Object.keys',
|
509 | exec: function () {
|
510 | return typeof Object.keys == 'function';
|
511 | },
|
512 | res: {
|
513 | es5shim: true,
|
514 | ie9: true,
|
515 | firefox4: true,
|
516 | safari5: true,
|
517 | safaritp: true,
|
518 | webkit: true,
|
519 | chrome5: true,
|
520 | opera12: true,
|
521 | konq43: false,
|
522 | konq49: true,
|
523 | konq413: true,
|
524 | besen: true,
|
525 | rhino: true,
|
526 | ejs: true,
|
527 | android40: true,
|
528 | }
|
529 | },
|
530 | {
|
531 | name: 'Object.seal',
|
532 | exec: function () {
|
533 | return typeof Object.seal == 'function';
|
534 | },
|
535 | res: {
|
536 | ie9: true,
|
537 | firefox4: true,
|
538 | safari51: true,
|
539 | safaritp: true,
|
540 | webkit: true,
|
541 | chrome6: true,
|
542 | opera12: true,
|
543 | konq413: true,
|
544 | besen: true,
|
545 | rhino: true,
|
546 | ejs: true,
|
547 | android40: true,
|
548 | }
|
549 | },
|
550 | {
|
551 | name: 'Object.freeze',
|
552 | exec: function () {
|
553 | return typeof Object.freeze == 'function';
|
554 | },
|
555 | res: {
|
556 | ie9: true,
|
557 | firefox4: true,
|
558 | safari51: true,
|
559 | safaritp: true,
|
560 | webkit: true,
|
561 | chrome6: true,
|
562 | opera12: true,
|
563 | konq413: true,
|
564 | besen: true,
|
565 | rhino: true,
|
566 | ejs: true,
|
567 | android40: true,
|
568 | }
|
569 | },
|
570 | {
|
571 | name: 'Object.preventExtensions',
|
572 | exec: function () {
|
573 | return typeof Object.preventExtensions == 'function';
|
574 | },
|
575 | res: {
|
576 | ie9: true,
|
577 | firefox4: true,
|
578 | safari51: true,
|
579 | safaritp: true,
|
580 | webkit: true,
|
581 | chrome6: true,
|
582 | opera12: true,
|
583 | konq413: true,
|
584 | besen: true,
|
585 | rhino: true,
|
586 | ejs: true,
|
587 | android40: true,
|
588 | }
|
589 | },
|
590 | {
|
591 | name: 'Object.isSealed',
|
592 | exec: function () {
|
593 | return typeof Object.isSealed == 'function';
|
594 | },
|
595 | res: {
|
596 | ie9: true,
|
597 | firefox4: true,
|
598 | safari51: true,
|
599 | safaritp: true,
|
600 | webkit: true,
|
601 | chrome6: true,
|
602 | opera12: true,
|
603 | konq413: true,
|
604 | besen: true,
|
605 | rhino: true,
|
606 | ejs: true,
|
607 | android40: true,
|
608 | }
|
609 | },
|
610 | {
|
611 | name: 'Object.isFrozen',
|
612 | exec: function () {
|
613 | return typeof Object.isFrozen == 'function';
|
614 | },
|
615 | res: {
|
616 | ie9: true,
|
617 | firefox4: true,
|
618 | safari51: true,
|
619 | safaritp: true,
|
620 | webkit: true,
|
621 | chrome6: true,
|
622 | opera12: true,
|
623 | konq413: true,
|
624 | besen: true,
|
625 | rhino: true,
|
626 | ejs: true,
|
627 | android40: true,
|
628 | }
|
629 | },
|
630 | {
|
631 | name: 'Object.isExtensible',
|
632 | exec: function () {
|
633 | return typeof Object.isExtensible == 'function';
|
634 | },
|
635 | res: {
|
636 | ie9: true,
|
637 | firefox4: true,
|
638 | safari51: true,
|
639 | safaritp: true,
|
640 | webkit: true,
|
641 | chrome6: true,
|
642 | opera12: true,
|
643 | konq413: true,
|
644 | besen: true,
|
645 | rhino: true,
|
646 | ejs: true,
|
647 | android40: true,
|
648 | }
|
649 | },
|
650 | {
|
651 | name: 'Object.getOwnPropertyDescriptor',
|
652 | exec: function () {
|
653 | return typeof Object.getOwnPropertyDescriptor == 'function';
|
654 | },
|
655 | res: {
|
656 | ie7: false,
|
657 | ie8: {
|
658 | val: true,
|
659 | note_id: 'get-own-property-descriptor-ie',
|
660 | note_html: 'In Internet Explorer 8 <code>Object.getOwnPropertyDescriptor</code> only accepts DOM objects ' +
|
661 | '(<a href="http://msdn.microsoft.com/en-us/library/dd548687(VS.85).aspx">MSDN reference</a>).'
|
662 | },
|
663 | ie9: true,
|
664 | ie10: true,
|
665 | firefox4: true,
|
666 | safari5: true,
|
667 | safaritp: true,
|
668 | webkit: true,
|
669 | chrome5: true,
|
670 | opera12: true,
|
671 | konq413: true,
|
672 | besen: true,
|
673 | rhino: true,
|
674 | ejs: true,
|
675 | android40: true,
|
676 | }
|
677 | },
|
678 | {
|
679 | name: 'Object.getOwnPropertyNames',
|
680 | exec: function () {
|
681 | return typeof Object.getOwnPropertyNames == 'function';
|
682 | },
|
683 | res: {
|
684 | ie9: true,
|
685 | firefox4: true,
|
686 | safari5: true,
|
687 | safaritp: true,
|
688 | webkit: true,
|
689 | chrome5: true,
|
690 | opera12: true,
|
691 | konq43: false,
|
692 | konq49: true,
|
693 | konq413: true,
|
694 | besen: true,
|
695 | rhino: true,
|
696 | ejs: true,
|
697 | android40: true,
|
698 | },
|
699 | separator: 'after'
|
700 | }],
|
701 | },
|
702 | {
|
703 | name: 'Array methods',
|
704 | significance: 'large',
|
705 | subtests: [{
|
706 | name: 'Array.isArray',
|
707 | exec: function () {
|
708 | return typeof Array.isArray == 'function';
|
709 | },
|
710 | res: {
|
711 | es5shim: true,
|
712 | ie9: true,
|
713 | firefox4: true,
|
714 | safari5: true,
|
715 | safaritp: true,
|
716 | webkit: true,
|
717 | chrome5: true,
|
718 | opera10_50: true,
|
719 | konq43: false,
|
720 | konq49: true,
|
721 | konq413: true,
|
722 | besen: true,
|
723 | rhino: true,
|
724 | ejs: true,
|
725 | android40: true,
|
726 | }
|
727 | },
|
728 | {
|
729 | name: 'Array.prototype.indexOf',
|
730 | exec: function () {
|
731 | return typeof Array.prototype.indexOf == 'function';
|
732 | },
|
733 | res: {
|
734 | es5shim: true,
|
735 | ie9: true,
|
736 | firefox2: true,
|
737 | safari3: true,
|
738 | safaritp: true,
|
739 | webkit: true,
|
740 | chrome5: true,
|
741 | opera10_10: true,
|
742 | konq43: true,
|
743 | besen: true,
|
744 | rhino: true,
|
745 | ejs: true,
|
746 | android40: true,
|
747 | }
|
748 | },
|
749 | {
|
750 | name: 'Array.prototype.lastIndexOf',
|
751 | exec: function () {
|
752 | return typeof Array.prototype.lastIndexOf == 'function';
|
753 | },
|
754 | res: {
|
755 | es5shim: true,
|
756 | ie9: true,
|
757 | firefox2: true,
|
758 | safari3: true,
|
759 | safaritp: true,
|
760 | webkit: true,
|
761 | chrome5: true,
|
762 | opera10_10: true,
|
763 | konq43: true,
|
764 | besen: true,
|
765 | rhino: true,
|
766 | ejs: true,
|
767 | android40: true,
|
768 | }
|
769 | },
|
770 | {
|
771 | name: 'Array.prototype.every',
|
772 | exec: function () {
|
773 | return typeof Array.prototype.every == 'function';
|
774 | },
|
775 | res: {
|
776 | es5shim: sparseNote,
|
777 | ie9: true,
|
778 | firefox2: true,
|
779 | safari3: true,
|
780 | safaritp: true,
|
781 | webkit: true,
|
782 | chrome5: true,
|
783 | opera10_10: true,
|
784 | konq43: true,
|
785 | besen: true,
|
786 | rhino: true,
|
787 | ejs: true,
|
788 | android40: true,
|
789 | }
|
790 | },
|
791 | {
|
792 | name: 'Array.prototype.some',
|
793 | exec: function () {
|
794 | return typeof Array.prototype.some == 'function';
|
795 | },
|
796 | res: {
|
797 | es5shim: sparseNote,
|
798 | ie9: true,
|
799 | firefox2: true,
|
800 | safari3: true,
|
801 | safaritp: true,
|
802 | webkit: true,
|
803 | chrome5: true,
|
804 | opera10_10: true,
|
805 | konq43: true,
|
806 | besen: true,
|
807 | rhino: true,
|
808 | ejs: true,
|
809 | android40: true,
|
810 | }
|
811 | },
|
812 | {
|
813 | name: 'Array.prototype.forEach',
|
814 | exec: function () {
|
815 | return typeof Array.prototype.forEach == 'function';
|
816 | },
|
817 | res: {
|
818 | es5shim: sparseNote,
|
819 | ie9: true,
|
820 | firefox2: true,
|
821 | safari3: true,
|
822 | safaritp: true,
|
823 | webkit: true,
|
824 | chrome5: true,
|
825 | opera10_10: true,
|
826 | konq43: true,
|
827 | besen: true,
|
828 | rhino: true,
|
829 | ejs: true,
|
830 | android40: true,
|
831 | }
|
832 | },
|
833 | {
|
834 | name: 'Array.prototype.map',
|
835 | exec: function () {
|
836 | return typeof Array.prototype.map == 'function';
|
837 | },
|
838 | res: {
|
839 | es5shim: sparseNote,
|
840 | ie9: true,
|
841 | firefox2: true,
|
842 | safari3: true,
|
843 | safaritp: true,
|
844 | webkit: true,
|
845 | chrome5: true,
|
846 | opera10_10: true,
|
847 | konq43: true,
|
848 | besen: true,
|
849 | rhino: true,
|
850 | ejs: true,
|
851 | android40: true,
|
852 | }
|
853 | },
|
854 | {
|
855 | name: 'Array.prototype.filter',
|
856 | exec: function () {
|
857 | return typeof Array.prototype.filter == 'function';
|
858 | },
|
859 | res: {
|
860 | es5shim: sparseNote,
|
861 | ie9: true,
|
862 | firefox2: true,
|
863 | safari3: true,
|
864 | safaritp: true,
|
865 | webkit: true,
|
866 | chrome5: true,
|
867 | opera10_10: true,
|
868 | konq43: true,
|
869 | besen: true,
|
870 | rhino: true,
|
871 | ejs: true,
|
872 | android40: true,
|
873 | }
|
874 | },
|
875 | {
|
876 | name: 'Array.prototype.reduce',
|
877 | exec: function () {
|
878 | return typeof Array.prototype.reduce == 'function';
|
879 | },
|
880 | res: {
|
881 | es5shim: sparseNote,
|
882 | ie9: true,
|
883 | firefox3: true,
|
884 | safari4: true,
|
885 | safaritp: true,
|
886 | webkit: true,
|
887 | chrome5: true,
|
888 | opera10_50: true,
|
889 | konq43: true,
|
890 | besen: true,
|
891 | rhino: true,
|
892 | ejs: true,
|
893 | android40: true,
|
894 | }
|
895 | },
|
896 | {
|
897 | name: 'Array.prototype.reduceRight',
|
898 | exec: function () {
|
899 | return typeof Array.prototype.reduceRight == 'function';
|
900 | },
|
901 | res: {
|
902 | es5shim: sparseNote,
|
903 | ie9: true,
|
904 | firefox3: true,
|
905 | safari4: true,
|
906 | safaritp: true,
|
907 | webkit: true,
|
908 | chrome5: true,
|
909 | opera10_50: true,
|
910 | konq43: true,
|
911 | besen: true,
|
912 | rhino: true,
|
913 | ejs: true,
|
914 | android40: true,
|
915 | },
|
916 | }],
|
917 | },
|
918 | {
|
919 | name: 'String properties and methods',
|
920 | significance: 'small',
|
921 | subtests: [{
|
922 | name: 'Property access on strings',
|
923 | exec: function () {
|
924 | return "foobar"[3] === "b";
|
925 | },
|
926 | res: {
|
927 | ie7: false,
|
928 | ie8: true,
|
929 | firefox2: true,
|
930 | safari3: true,
|
931 | safaritp: true,
|
932 | webkit: true,
|
933 | chrome5: true,
|
934 | opera10_10: true,
|
935 | konq43: true,
|
936 | besen: true,
|
937 | rhino: true,
|
938 | ejs: true,
|
939 | android40: true,
|
940 | }
|
941 | },
|
942 | {
|
943 | name: 'String.prototype.trim',
|
944 | exec: function () {
|
945 | return typeof String.prototype.trim == 'function';
|
946 | },
|
947 | res: {
|
948 | es5shim: true,
|
949 | ie9: true,
|
950 | firefox3_5: true,
|
951 | safari5: true,
|
952 | safaritp: true,
|
953 | webkit: true,
|
954 | chrome5: true,
|
955 | opera10_50: true,
|
956 | konq43: false,
|
957 | konq49: true,
|
958 | konq413: true,
|
959 | besen: true,
|
960 | rhino: true,
|
961 | ejs: true,
|
962 | android40: true,
|
963 | },
|
964 | separator: 'after'
|
965 | }
|
966 | ]
|
967 | },
|
968 | {
|
969 | name: 'Date methods',
|
970 | significance: 'small',
|
971 | subtests: [{
|
972 | name: 'Date.prototype.toISOString',
|
973 | exec: function () {
|
974 | return typeof Date.prototype.toISOString == 'function';
|
975 | },
|
976 | res: {
|
977 | es5shim: true,
|
978 | ie9: true,
|
979 | firefox3_5: true,
|
980 | safari4: true,
|
981 | safaritp: true,
|
982 | webkit: true,
|
983 | chrome5: true,
|
984 | opera10_50: true,
|
985 | konq413: true,
|
986 | besen: true,
|
987 | rhino: true,
|
988 | ejs: false,
|
989 | android40: true,
|
990 | }
|
991 | },
|
992 | {
|
993 | name: 'Date.now',
|
994 | exec: function () {
|
995 | return typeof Date.now == 'function';
|
996 | },
|
997 | res: {
|
998 | es5shim: true,
|
999 | ie9: true,
|
1000 | firefox2: true,
|
1001 | safari4: true,
|
1002 | safaritp: true,
|
1003 | webkit: true,
|
1004 | chrome5: true,
|
1005 | opera10_50: true,
|
1006 | konq43: true,
|
1007 | besen: true,
|
1008 | rhino: true,
|
1009 | ejs: true,
|
1010 | android40: true,
|
1011 | }
|
1012 | },
|
1013 | {
|
1014 | name: 'Date.prototype.toJSON',
|
1015 | exec: function () {
|
1016 | try {
|
1017 | return Date.prototype.toJSON.call(new Date(NaN)) === null;
|
1018 | } catch (e) {
|
1019 | return false;
|
1020 | }
|
1021 | },
|
1022 | res: {
|
1023 | es5shim: true,
|
1024 | ie9: true,
|
1025 | firefox4: true,
|
1026 | safari10: true,
|
1027 | safaritp: true,
|
1028 | webkit: true,
|
1029 | chrome5: true,
|
1030 | opera10_10: false,
|
1031 | opera10_50: false,
|
1032 | opera12: {
|
1033 | val: true,
|
1034 | note_id: 'Date.prototype.toJSON-OP11_60-OP11_64',
|
1035 | note_html: 'In Opera 11.60-11.64 Date.prototype.toJSON is undefined.'
|
1036 | },
|
1037 | opera12_10: true,
|
1038 | konq43: true,
|
1039 | besen: true,
|
1040 | rhino: true,
|
1041 | ejs: true,
|
1042 | android40: true,
|
1043 | }
|
1044 | }]
|
1045 | },
|
1046 | {
|
1047 | name: 'Function.prototype.bind',
|
1048 | significance: 'medium',
|
1049 | exec: function () {
|
1050 | return typeof Function.prototype.bind == 'function';
|
1051 | },
|
1052 | res: {
|
1053 | es5shim: true,
|
1054 | ie9: true,
|
1055 | firefox4: true,
|
1056 | safari51: true,
|
1057 | safaritp: true,
|
1058 | webkit: true,
|
1059 | chrome7: true,
|
1060 | opera12: true,
|
1061 | konq413: true,
|
1062 | besen: true,
|
1063 | rhino: true,
|
1064 | phantom: true,
|
1065 | ejs: true,
|
1066 | ios78: true,
|
1067 | android40: true,
|
1068 | },
|
1069 | },
|
1070 | {
|
1071 | name: 'JSON',
|
1072 | significance: 'medium',
|
1073 | exec: function () {
|
1074 | return typeof JSON == 'object';
|
1075 | },
|
1076 | res: {
|
1077 | ie7: false,
|
1078 | ie8: true,
|
1079 | ie9: true,
|
1080 | ie10: true,
|
1081 | firefox3_5: true,
|
1082 | safari4: true,
|
1083 | safaritp: true,
|
1084 | webkit: true,
|
1085 | chrome5: true,
|
1086 | opera10_50: true,
|
1087 | konq43: false,
|
1088 | konq49: true,
|
1089 | konq413: true,
|
1090 | besen: true,
|
1091 | rhino: true,
|
1092 | phantom: true,
|
1093 | ejs: true,
|
1094 | ios78: true,
|
1095 | android40: true,
|
1096 | },
|
1097 | separator: 'after'
|
1098 | },
|
1099 | {
|
1100 | name: 'Immutable globals',
|
1101 | significance: 'small',
|
1102 | subtests: [
|
1103 | {
|
1104 | name: 'undefined',
|
1105 | exec: function () { |
1106 |
|
1107 |
|
1108 |
|
1109 |
|
1110 | },
|
1111 | res: {
|
1112 | ie9: true,
|
1113 | firefox4: true,
|
1114 | safari5: true,
|
1115 | safaritp: true,
|
1116 | webkit: true,
|
1117 | chrome19: true,
|
1118 | chrome23: true,
|
1119 | opera12: true,
|
1120 | konq43: false,
|
1121 | konq49: true,
|
1122 | konq413: true,
|
1123 | besen: true,
|
1124 | rhino: true,
|
1125 | ejs: false,
|
1126 | android41: true,
|
1127 | }
|
1128 | },
|
1129 | {
|
1130 | name: 'NaN',
|
1131 | exec: function () { |
1132 |
|
1133 |
|
1134 |
|
1135 |
|
1136 | },
|
1137 | res: {
|
1138 | ie9: true,
|
1139 | firefox4: true,
|
1140 | safari5: true,
|
1141 | safaritp: true,
|
1142 | webkit: true,
|
1143 | chrome19: true,
|
1144 | chrome23: true,
|
1145 | opera12: true,
|
1146 | konq43: false,
|
1147 | konq49: true,
|
1148 | konq413: true,
|
1149 | besen: true,
|
1150 | rhino: true,
|
1151 | ejs: false,
|
1152 | android41: true,
|
1153 | }
|
1154 | },
|
1155 | {
|
1156 | name: 'Infinity',
|
1157 | exec: function () { |
1158 |
|
1159 |
|
1160 |
|
1161 |
|
1162 | },
|
1163 | res: {
|
1164 | ie9: true,
|
1165 | firefox4: true,
|
1166 | safari5: true,
|
1167 | safaritp: true,
|
1168 | webkit: true,
|
1169 | chrome19: true,
|
1170 | chrome23: true,
|
1171 | opera12: true,
|
1172 | konq43: false,
|
1173 | konq49: true,
|
1174 | konq413: true,
|
1175 | besen: true,
|
1176 | rhino: true,
|
1177 | ejs: false,
|
1178 | android41: true,
|
1179 | }
|
1180 | }]
|
1181 | },
|
1182 | {
|
1183 | name: 'Miscellaneous',
|
1184 | significance: 'medium',
|
1185 | subtests: [{
|
1186 | name: 'Array.prototype.sort: compareFn must be function or undefined',
|
1187 | exec: function () {
|
1188 | try {
|
1189 | [1,2].sort(null);
|
1190 | return false;
|
1191 | } catch (enull) {}
|
1192 | try {
|
1193 | [1,2].sort(true);
|
1194 | return false;
|
1195 | } catch (etrue) {}
|
1196 | try {
|
1197 | [1,2].sort({});
|
1198 | return false;
|
1199 | } catch (eobj) {}
|
1200 | try {
|
1201 | [1,2].sort([]);
|
1202 | return false;
|
1203 | } catch (earr) {}
|
1204 | try {
|
1205 | [1,2].sort(/a/g);
|
1206 | return false;
|
1207 | } catch (eregex) {}
|
1208 | return true;
|
1209 | },
|
1210 | res: {
|
1211 | es5shim: true,
|
1212 | ie9: true,
|
1213 | firefox5: true,
|
1214 | opera10_10: null,
|
1215 | opera10_50: true,
|
1216 | konq43: null,
|
1217 | konq49: null,
|
1218 | konq413: null,
|
1219 | besen: null,
|
1220 | rhino: null,
|
1221 | ejs: null,
|
1222 | android40: false,
|
1223 | },
|
1224 | },
|
1225 | {
|
1226 | name: 'Array.prototype.sort: compareFn may be explicit undefined',
|
1227 | exec: function () {
|
1228 | try {
|
1229 | var arr = [2, 1];
|
1230 | return arr.sort(undefined) === arr && arr[0] === 1 && arr[1] === 2;
|
1231 | } catch (e) {
|
1232 | return false;
|
1233 | }
|
1234 | },
|
1235 | res: {
|
1236 | es5shim: true,
|
1237 | ie9: true,
|
1238 | firefox4: true,
|
1239 | safari4: true,
|
1240 | safaritp: true,
|
1241 | webkit: true,
|
1242 | chrome13: true,
|
1243 | opera10_10: null,
|
1244 | opera10_50: true,
|
1245 | konq43: null,
|
1246 | konq49: null,
|
1247 | konq413: null,
|
1248 | besen: null,
|
1249 | rhino: null,
|
1250 | ejs: null,
|
1251 | android40: true,
|
1252 | },
|
1253 | },
|
1254 | {
|
1255 | name: 'Function.prototype.apply permits array-likes',
|
1256 | exec: function () {
|
1257 | return (function(a,b) { return a === 1 && b === 2; }).apply({}, {0:1, 1:2, length:2});
|
1258 | },
|
1259 | res: {
|
1260 | ie7: null,
|
1261 | ie9: true,
|
1262 | firefox4: true,
|
1263 | safari3: false,
|
1264 | safari5: true,
|
1265 | safaritp: true,
|
1266 | webkit: true,
|
1267 | chrome5: false,
|
1268 | chrome13: true,
|
1269 | opera10_10: null,
|
1270 | opera10_50: true,
|
1271 | konq43: null,
|
1272 | besen: null,
|
1273 | rhino: null,
|
1274 | ejs: null,
|
1275 | android40: null,
|
1276 | },
|
1277 | },
|
1278 | {
|
1279 | name: 'parseInt ignores leading zeros',
|
1280 | exec: function () {
|
1281 | return parseInt('010') === 10;
|
1282 | },
|
1283 | res: {
|
1284 | es5shim: true,
|
1285 | ie9: true,
|
1286 | firefox2: false,
|
1287 | firefox21: true,
|
1288 | safari6: true,
|
1289 | safaritp: true,
|
1290 | webkit: true,
|
1291 | chrome23: true,
|
1292 | opera10_10: false,
|
1293 | konq43: false,
|
1294 | konq49: false,
|
1295 | konq413: false,
|
1296 | besen: true,
|
1297 | rhino: false,
|
1298 | ejs: true,
|
1299 | android44: true,
|
1300 | }
|
1301 | },
|
1302 | {
|
1303 | name: 'Function "prototype" property is non-enumerable',
|
1304 | exec: function () { |
1305 |
|
1306 | },
|
1307 | res: {
|
1308 | ie7: null,
|
1309 | ie9: true,
|
1310 | firefox3_6: true,
|
1311 | safari3: null,
|
1312 | safari4: true,
|
1313 | safaritp: true,
|
1314 | webkit: true,
|
1315 | chrome5: false,
|
1316 | chrome13: true,
|
1317 | opera10_10: null,
|
1318 | opera10_50: false,
|
1319 | opera12_10: true,
|
1320 | konq43: null,
|
1321 | besen: null,
|
1322 | rhino: null,
|
1323 | ejs: null,
|
1324 | android40: null,
|
1325 | },
|
1326 | },
|
1327 | {
|
1328 | name: 'Arguments toStringTag is "Arguments"',
|
1329 | exec: function () { |
1330 |
|
1331 | },
|
1332 | res: {
|
1333 | ie7: null,
|
1334 | ie9: true,
|
1335 | firefox4: true,
|
1336 | safari3: null,
|
1337 | safari4: true,
|
1338 | safaritp: true,
|
1339 | webkit: true,
|
1340 | chrome5: null,
|
1341 | chrome7: true,
|
1342 | chrome13: true,
|
1343 | opera10_10: null,
|
1344 | opera10_50: false,
|
1345 | opera12_10: true,
|
1346 | konq43: null,
|
1347 | besen: null,
|
1348 | rhino: null,
|
1349 | ejs: null,
|
1350 | android40: null,
|
1351 | },
|
1352 | },
|
1353 | {
|
1354 | name: 'Zero-width chars in identifiers',
|
1355 | exec: function () { |
1356 |
|
1357 |
|
1358 | },
|
1359 | res: {
|
1360 | ie9: true,
|
1361 | firefox2: false,
|
1362 | firefox3_5: false,
|
1363 | firefox8: true,
|
1364 | firefox21: true,
|
1365 | safari6: true,
|
1366 | safaritp: true,
|
1367 | webkit: true,
|
1368 | chrome19: true,
|
1369 | chrome23: true,
|
1370 | opera10_10: false,
|
1371 | opera12_10: true,
|
1372 | konq43: false,
|
1373 | konq49: false,
|
1374 | konq413: false,
|
1375 | besen: true,
|
1376 | rhino: true,
|
1377 | ejs: true,
|
1378 | android41: true,
|
1379 | }
|
1380 | },
|
1381 | {
|
1382 | name: 'Unreserved words',
|
1383 | exec: function () { |
1384 |
|
1385 |
|
1386 |
|
1387 | },
|
1388 | res: {
|
1389 | ie7: null,
|
1390 | ie9: true,
|
1391 | firefox2: true,
|
1392 | safari3: null,
|
1393 | safari4: true,
|
1394 | safaritp: true,
|
1395 | webkit: true,
|
1396 | chrome5: false,
|
1397 | chrome13: true,
|
1398 | opera10_10: null,
|
1399 | opera10_50: true,
|
1400 | konq43: null,
|
1401 | besen: null,
|
1402 | rhino: null,
|
1403 | ejs: null,
|
1404 | android40: null,
|
1405 | }
|
1406 | },
|
1407 | {
|
1408 | name: 'Enumerable properties can be shadowed by non-enumerables',
|
1409 | exec: function () { |
1410 |
|
1411 |
|
1412 |
|
1413 |
|
1414 |
|
1415 |
|
1416 |
|
1417 |
|
1418 |
|
1419 | },
|
1420 | res: {
|
1421 | ie7: null,
|
1422 | ie9: false,
|
1423 | edge13: true,
|
1424 | firefox2: true,
|
1425 | safari3: false,
|
1426 | chrome5: false,
|
1427 | chrome13: false,
|
1428 | chrome54: true,
|
1429 | opera10_10: null,
|
1430 | opera10_50: true,
|
1431 | konq43: null,
|
1432 | besen: null,
|
1433 | rhino: null,
|
1434 | ejs: null,
|
1435 | android40: null,
|
1436 | }
|
1437 | },
|
1438 | {
|
1439 | name: 'Thrown functions have proper "this" values',
|
1440 | exec: function () { |
1441 |
|
1442 |
|
1443 |
|
1444 |
|
1445 |
|
1446 |
|
1447 |
|
1448 | },
|
1449 | res: {
|
1450 | ie7: null,
|
1451 | ie9: true,
|
1452 | firefox2: true,
|
1453 | safari3: null,
|
1454 | safari4: true,
|
1455 | safaritp: true,
|
1456 | webkit: true,
|
1457 | chrome5: true,
|
1458 | opera10_10: null,
|
1459 | opera10_50: true,
|
1460 | konq43: null,
|
1461 | besen: null,
|
1462 | rhino: null,
|
1463 | ejs: null,
|
1464 | android40: null,
|
1465 | },
|
1466 | }]
|
1467 | },
|
1468 | {
|
1469 | name: 'Strict mode',
|
1470 | significance: 'large',
|
1471 | subtests: [
|
1472 | {
|
1473 | name: 'reserved words',
|
1474 | exec: function() { |
1475 |
|
1476 |
|
1477 |
|
1478 |
|
1479 |
|
1480 |
|
1481 | },
|
1482 | res: (temp.strict = {
|
1483 | ie10: true,
|
1484 | firefox4: true,
|
1485 | safari51: true,
|
1486 | safaritp: true,
|
1487 | webkit: true,
|
1488 | chrome13: true,
|
1489 | opera12: true,
|
1490 | besen: true,
|
1491 | phantom: true,
|
1492 | ejs: true,
|
1493 | ios78: true,
|
1494 | android41: true,
|
1495 | }),
|
1496 | },
|
1497 | {
|
1498 | name: '"this" is undefined in functions',
|
1499 | exec: function() { |
1500 |
|
1501 |
|
1502 | },
|
1503 | res: Object.assign({}, temp.strict, {
|
1504 | ie10: {
|
1505 | val: true,
|
1506 | note_id: 'strict-mode-ie10',
|
1507 | note_html: 'IE10 PP2 fails this test.</code>'
|
1508 | }
|
1509 | }),
|
1510 | },
|
1511 | {
|
1512 | name: '"this" is not coerced to object in primitive methods',
|
1513 | exec: function() { |
1514 |
|
1515 |
|
1516 |
|
1517 |
|
1518 | },
|
1519 | res: temp.strict,
|
1520 | },
|
1521 | {
|
1522 | name: '"this" is not coerced to object in primitive accessors',
|
1523 | exec: function() { |
1524 |
|
1525 |
|
1526 |
|
1527 |
|
1528 |
|
1529 |
|
1530 |
|
1531 |
|
1532 |
|
1533 |
|
1534 |
|
1535 |
|
1536 |
|
1537 |
|
1538 |
|
1539 |
|
1540 |
|
1541 |
|
1542 | },
|
1543 | res: Object.assign({}, temp.strict, {
|
1544 | firefox4: false,
|
1545 | firefox46: true,
|
1546 | }),
|
1547 | },
|
1548 | {
|
1549 | name: 'legacy octal is a SyntaxError',
|
1550 | exec: function() { |
1551 |
|
1552 |
|
1553 |
|
1554 |
|
1555 | },
|
1556 | res: temp.strict,
|
1557 | },
|
1558 | {
|
1559 | name: 'assignment to unresolvable identifiers is a ReferenceError',
|
1560 | exec: function() { |
1561 |
|
1562 |
|
1563 | },
|
1564 | res: temp.strict,
|
1565 | },
|
1566 | {
|
1567 | name: 'assignment to eval or arguments is a SyntaxError',
|
1568 | exec: function() { |
1569 |
|
1570 |
|
1571 |
|
1572 |
|
1573 |
|
1574 |
|
1575 | },
|
1576 | res: temp.strict,
|
1577 | },
|
1578 | {
|
1579 | name: 'assignment to non-writable properties is a TypeError',
|
1580 | exec: function() { |
1581 |
|
1582 |
|
1583 |
|
1584 |
|
1585 |
|
1586 |
|
1587 | },
|
1588 | res: temp.strict,
|
1589 | },
|
1590 | {
|
1591 | name: 'eval or arguments bindings is a SyntaxError',
|
1592 | exec: function() { |
1593 |
|
1594 |
|
1595 |
|
1596 |
|
1597 |
|
1598 |
|
1599 |
|
1600 |
|
1601 | },
|
1602 | res: temp.strict,
|
1603 | },
|
1604 | {
|
1605 | name: 'arguments.caller and arguments.callee is a TypeError',
|
1606 | exec: function() { |
1607 |
|
1608 |
|
1609 |
|
1610 |
|
1611 | },
|
1612 | res: temp.strict,
|
1613 | },
|
1614 | {
|
1615 | name: '(function(){}).caller and (function(){}).arguments is a TypeError',
|
1616 | exec: function() { |
1617 |
|
1618 |
|
1619 |
|
1620 |
|
1621 | },
|
1622 | res: temp.strict,
|
1623 | },
|
1624 | {
|
1625 | name: 'arguments is unmapped',
|
1626 | exec: function() { |
1627 |
|
1628 |
|
1629 |
|
1630 |
|
1631 |
|
1632 |
|
1633 |
|
1634 |
|
1635 | },
|
1636 | res: temp.strict,
|
1637 | },
|
1638 | {
|
1639 | name: 'eval() can\'t create bindings',
|
1640 | exec: function() { |
1641 |
|
1642 |
|
1643 | },
|
1644 | res: temp.strict,
|
1645 | },
|
1646 | {
|
1647 | name: 'deleting bindings is a SyntaxError',
|
1648 | exec: function() { |
1649 |
|
1650 |
|
1651 | },
|
1652 | res: temp.strict,
|
1653 | },
|
1654 | {
|
1655 | name: 'deleting non-configurable properties is a TypeError',
|
1656 | exec: function() { |
1657 |
|
1658 |
|
1659 | },
|
1660 | res: temp.strict,
|
1661 | },
|
1662 | {
|
1663 | name: '"with" is a SyntaxError',
|
1664 | exec: function() { |
1665 |
|
1666 |
|
1667 | },
|
1668 | res: temp.strict,
|
1669 | },
|
1670 | {
|
1671 | name: 'repeated parameter names is a SyntaxError',
|
1672 | exec: function() { |
1673 |
|
1674 |
|
1675 | },
|
1676 | res: temp.strict,
|
1677 | },
|
1678 | {
|
1679 | name: 'function expressions with matching name and argument are valid',
|
1680 | exec: function() { |
1681 |
|
1682 |
|
1683 | },
|
1684 | res: {
|
1685 | ie10: true,
|
1686 | firefox2: true,
|
1687 | safari51: false,
|
1688 | safari10: true,
|
1689 | safaritp: true,
|
1690 | webkit: true,
|
1691 | chrome13: true,
|
1692 | opera12: true,
|
1693 | besen: true,
|
1694 | phantom: true,
|
1695 | ejs: true,
|
1696 | ios78: true,
|
1697 | android41: true,
|
1698 | }
|
1699 | }]
|
1700 | }
|
1701 | ];
|