aboutsummaryrefslogtreecommitdiffstats
path: root/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21
diff options
context:
space:
mode:
Diffstat (limited to 'external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21')
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-0-1.js33
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-0-2.js32
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-1-1.js35
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-1-10.js42
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-1-11.js38
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-1-12.js38
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-1-13.js42
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-1-14.js38
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-1-15.js39
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-1-2.js35
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-1-3.js44
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-1-4.js39
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-1-5.js42
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-1-6.js38
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-1-7.js35
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-1-8.js37
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-1-9.js40
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-10-1.js45
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-10-2.js40
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-10-3.js36
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-10-4.js36
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-10-5.js40
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-10-6.js36
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-10-7.js36
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-10-8.js46
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-2-1.js42
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-2-10.js52
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-2-11.js45
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-2-12.js54
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-2-13.js50
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-2-14.js40
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-2-15.js47
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-2-17.js40
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-2-18.js37
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-2-19.js42
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-2-2.js35
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-2-3.js46
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-2-4.js43
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-2-5.js56
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-2-6.js45
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-2-7.js48
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-2-8.js53
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-2-9.js60
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-3-1.js40
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-3-10.js40
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-3-11.js37
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-3-12.js37
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-3-13.js37
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-3-14.js57
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-3-15.js37
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-3-16.js37
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-3-17.js37
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-3-18.js39
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-3-19.js45
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-3-2.js38
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-3-20.js45
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-3-21.js53
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-3-22.js61
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-3-23.js61
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-3-24.js40
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-3-25.js41
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-3-28.js43
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-3-29.js41
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-3-3.js40
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-3-4.js40
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-3-5.js40
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-3-6.js37
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-3-7.js37
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-3-8.js40
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-3-9.js39
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-4-1.js39
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-4-10.js45
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-4-11.js49
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-4-12.js37
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-4-15.js55
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-4-2.js39
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-4-3.js39
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-4-4.js39
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-4-5.js39
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-4-6.js39
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-4-7.js39
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-4-8.js48
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-4-9.js52
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-5-1.js39
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-5-10.js52
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-5-11.js56
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-5-12.js49
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-5-13.js54
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-5-2.js43
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-5-3.js43
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-5-4.js43
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-5-5.js43
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-5-6.js45
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-5-7.js51
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-5-8.js58
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-5-9.js36
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-7-1.js36
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-7-10.js32
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-7-11.js32
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-7-2.js40
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-7-3.js40
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-7-4.js40
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-7-5.js40
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-7-6.js42
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-7-7.js48
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-7-8.js55
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-7-9.js55
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-8-b-1.js48
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-8-b-2.js45
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-8-b-3.js62
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-8-b-ii-1.js41
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-8-b-ii-2.js42
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-8-b-iii-1-1.js40
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-8-b-iii-1-10.js48
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-8-b-iii-1-11.js54
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-8-b-iii-1-12.js53
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-8-b-iii-1-13.js61
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-8-b-iii-1-14.js58
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-8-b-iii-1-15.js54
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-8-b-iii-1-16.js52
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-8-b-iii-1-17.js46
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-8-b-iii-1-18.js46
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-8-b-iii-1-19.js52
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-8-b-iii-1-2.js40
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-8-b-iii-1-20.js51
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-8-b-iii-1-21.js52
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-8-b-iii-1-22.js52
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-8-b-iii-1-23.js53
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-8-b-iii-1-25.js43
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-8-b-iii-1-26.js44
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-8-b-iii-1-27.js45
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-8-b-iii-1-28.js41
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-8-b-iii-1-29.js48
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-8-b-iii-1-3.js49
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-8-b-iii-1-30.js61
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-8-b-iii-1-31.js62
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-8-b-iii-1-32.js53
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-8-b-iii-1-33.js54
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-8-b-iii-1-4.js45
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-8-b-iii-1-5.js59
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-8-b-iii-1-6.js50
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-8-b-iii-1-7.js46
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-8-b-iii-1-8.js48
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-8-b-iii-1-9.js47
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-8-c-1.js42
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-8-c-2.js44
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-8-c-3.js47
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-8-c-4.js41
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-8-c-5.js48
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-8-c-6.js53
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-8-c-7.js45
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-8-c-8.js50
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-1.js37
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-10.js38
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-2.js41
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-3.js41
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-4.js40
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-5.js40
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-6.js45
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-7.js37
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-8.js48
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-9.js47
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-b-1.js39
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-b-10.js57
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-b-11.js56
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-b-12.js55
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-b-13.js54
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-b-14.js53
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-b-15.js61
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-b-16.js58
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-b-17.js55
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-b-18.js55
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-b-19.js59
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-b-2.js51
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-b-20.js59
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-b-21.js59
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-b-22.js59
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-b-23.js57
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-b-24.js56
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-b-25.js55
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-b-26.js54
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-b-27.js53
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-b-28.js61
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-b-29.js58
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-b-3.js53
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-b-4.js55
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-b-5.js55
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-b-6.js59
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-b-7.js59
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-b-8.js59
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-b-9.js52
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-1.js41
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-i-1.js41
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-i-10.js49
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-i-11.js55
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-i-12.js55
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-i-13.js62
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-i-14.js60
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-i-15.js55
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-i-16.js54
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-i-17.js47
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-i-18.js48
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-i-19.js58
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-i-2.js41
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-i-20.js58
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-i-21.js53
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-i-22.js52
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-i-23.js52
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-i-25.js44
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-i-26.js44
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-i-27.js44
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-i-28.js43
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-i-29.js48
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-i-3.js50
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-i-30.js62
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-i-31.js63
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-i-32.js54
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-i-33.js55
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-i-4.js45
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-i-5.js62
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-i-6.js52
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-i-7.js47
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-i-8.js50
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-i-9.js49
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-ii-1.js41
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-ii-10.js37
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-ii-11.js37
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-ii-12.js37
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-ii-13.js37
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-ii-14.js37
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-ii-16.js49
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-ii-17.js44
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-ii-18.js41
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-ii-19.js41
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-ii-2.js45
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-ii-20.js39
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-ii-21.js39
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-ii-22.js39
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-ii-23.js39
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-ii-24.js39
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-ii-25.js41
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-ii-26.js41
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-ii-27.js41
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-ii-28.js41
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-ii-29.js41
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-ii-3.js42
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-ii-30.js39
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-ii-31.js41
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-ii-32.js41
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-ii-33.js39
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-ii-34.js41
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-ii-35.js45
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-ii-37.js39
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-ii-4-s.js39
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-ii-4.js46
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-ii-5.js52
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-ii-7.js49
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-ii-8.js45
-rw-r--r--external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-ii-9.js37
259 files changed, 11946 insertions, 0 deletions
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-0-1.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-0-1.js
new file mode 100644
index 000000000..d5ca08e74
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-0-1.js
@@ -0,0 +1,33 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-0-1.js
+ * @description Array.prototype.reduce must exist as a function
+ */
+
+
+function testcase() {
+ var f = Array.prototype.reduce;
+ if (typeof(f) === "function") {
+ return true;
+ }
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-0-2.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-0-2.js
new file mode 100644
index 000000000..5b3fadb32
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-0-2.js
@@ -0,0 +1,32 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-0-2.js
+ * @description Array.prototype.reduce.length must be 1
+ */
+
+
+function testcase() {
+ if (Array.prototype.reduce.length === 1) {
+ return true;
+ }
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-1-1.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-1-1.js
new file mode 100644
index 000000000..59157228c
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-1-1.js
@@ -0,0 +1,35 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-1-1.js
+ * @description Array.prototype.reduce applied to undefined
+ */
+
+
+function testcase() {
+ try {
+ Array.prototype.reduce.call(undefined);
+ return false;
+ } catch (e) {
+ return (e instanceof TypeError);
+ }
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-1-10.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-1-10.js
new file mode 100644
index 000000000..03d500283
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-1-10.js
@@ -0,0 +1,42 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-1-10.js
+ * @description Array.prototype.reduce applied to the Math object
+ */
+
+
+function testcase() {
+
+ function callbackfn(prevVal, curVal, idx, obj) {
+ return ('[object Math]' === Object.prototype.toString.call(obj));
+ }
+
+ try {
+ Math.length = 1;
+ Math[0] = 1;
+ return Array.prototype.reduce.call(Math, callbackfn, 1);
+ } finally {
+ delete Math[0];
+ delete Math.length;
+ }
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-1-11.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-1-11.js
new file mode 100644
index 000000000..de0f1ec9d
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-1-11.js
@@ -0,0 +1,38 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-1-11.js
+ * @description Array.prototype.reduce applied to Date object
+ */
+
+
+function testcase() {
+ function callbackfn(prevVal, curVal, idx, obj) {
+ return obj instanceof Date;
+ }
+
+ var obj = new Date();
+ obj.length = 1;
+ obj[0] = 1;
+
+ return Array.prototype.reduce.call(obj, callbackfn, 1);
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-1-12.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-1-12.js
new file mode 100644
index 000000000..177b107ed
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-1-12.js
@@ -0,0 +1,38 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-1-12.js
+ * @description Array.prototype.reduce applied to RegExp object
+ */
+
+
+function testcase() {
+ function callbackfn(prevVal, curVal, idx, obj) {
+ return obj instanceof RegExp;
+ }
+
+ var obj = new RegExp();
+ obj.length = 1;
+ obj[0] = 1;
+
+ return Array.prototype.reduce.call(obj, callbackfn, 1);
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-1-13.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-1-13.js
new file mode 100644
index 000000000..1dd8efca5
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-1-13.js
@@ -0,0 +1,42 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-1-13.js
+ * @description Array.prototype.reduce applied to the JSON object
+ */
+
+
+function testcase() {
+
+ function callbackfn(prevVal, curVal, idx, obj) {
+ return ('[object JSON]' === Object.prototype.toString.call(obj));
+ }
+
+ try {
+ JSON.length = 1;
+ JSON[0] = 1;
+ return Array.prototype.reduce.call(JSON, callbackfn, 1);
+ } finally {
+ delete JSON.length;
+ delete JSON[0];
+ }
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-1-14.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-1-14.js
new file mode 100644
index 000000000..32888be76
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-1-14.js
@@ -0,0 +1,38 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-1-14.js
+ * @description Array.prototype.reduce applied to Error object
+ */
+
+
+function testcase() {
+ function callbackfn(prevVal, curVal, idx, obj) {
+ return obj instanceof Error;
+ }
+
+ var obj = new Error();
+ obj.length = 1;
+ obj[0] = 1;
+
+ return Array.prototype.reduce.call(obj, callbackfn, 1);
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-1-15.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-1-15.js
new file mode 100644
index 000000000..466e4546b
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-1-15.js
@@ -0,0 +1,39 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-1-15.js
+ * @description Array.prototype.reduce applied to the Arguments object
+ */
+
+
+function testcase() {
+
+ function callbackfn(prevVal, curVal, idx, obj) {
+ return ('[object Arguments]' === Object.prototype.toString.call(obj));
+ }
+
+ var obj = (function () {
+ return arguments;
+ }("a", "b"));
+
+ return Array.prototype.reduce.call(obj, callbackfn, 1);
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-1-2.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-1-2.js
new file mode 100644
index 000000000..bcfec25fb
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-1-2.js
@@ -0,0 +1,35 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-1-2.js
+ * @description Array.prototype.reduce applied to null
+ */
+
+
+function testcase() {
+ try {
+ Array.prototype.reduce.call(null);
+ return false;
+ } catch (e) {
+ return (e instanceof TypeError);
+ }
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-1-3.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-1-3.js
new file mode 100644
index 000000000..ff1ecb296
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-1-3.js
@@ -0,0 +1,44 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-1-3.js
+ * @description Array.prototype.reduce applied to boolean primitive
+ */
+
+
+function testcase() {
+
+ function callbackfn(prevVal, curVal, idx, obj) {
+ return obj instanceof Boolean;
+ }
+
+ try {
+ Boolean.prototype[0] = true;
+ Boolean.prototype.length = 1;
+
+ return Array.prototype.reduce.call(false, callbackfn, 1);
+
+ } finally {
+ delete Boolean.prototype[0];
+ delete Boolean.prototype.length;
+ }
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-1-4.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-1-4.js
new file mode 100644
index 000000000..3e98a263a
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-1-4.js
@@ -0,0 +1,39 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-1-4.js
+ * @description Array.prototype.reduce applied to Boolean object
+ */
+
+
+function testcase() {
+ function callbackfn(prevVal, curVal, idx, obj) {
+ return obj instanceof Boolean;
+ }
+
+ var obj = new Boolean(true);
+ obj.length = 2;
+ obj[0] = 11;
+ obj[1] = 12;
+
+ return Array.prototype.reduce.call(obj, callbackfn, 1);
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-1-5.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-1-5.js
new file mode 100644
index 000000000..c245f68ba
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-1-5.js
@@ -0,0 +1,42 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-1-5.js
+ * @description Array.prototype.reduce applied to number primitive
+ */
+
+
+function testcase() {
+ function callbackfn(prevVal, curVal, idx, obj) {
+ return obj instanceof Number;
+ }
+
+ try {
+ Number.prototype[0] = 1;
+ Number.prototype.length = 1;
+
+ return Array.prototype.reduce.call(2.5, callbackfn, 1);
+ } finally {
+ delete Number.prototype[0];
+ delete Number.prototype.length;
+ }
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-1-6.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-1-6.js
new file mode 100644
index 000000000..17d49de79
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-1-6.js
@@ -0,0 +1,38 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-1-6.js
+ * @description Array.prototype.reduce applied to Number object
+ */
+
+
+function testcase() {
+ function callbackfn(prevVal, curVal, idx, obj) {
+ return obj instanceof Number;
+ }
+
+ var obj = new Number(-128);
+ obj.length = 2;
+ obj[0] = 11;
+ obj[1] = 12;
+ return Array.prototype.reduce.call(obj, callbackfn, 1);
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-1-7.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-1-7.js
new file mode 100644
index 000000000..053800bae
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-1-7.js
@@ -0,0 +1,35 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-1-7.js
+ * @description Array.prototype.reduce applied to string primitive
+ */
+
+
+function testcase() {
+
+ function callbackfn(prevVal, curVal, idx, obj) {
+ return obj instanceof String;
+ }
+
+ return Array.prototype.reduce.call("abc", callbackfn, 1);
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-1-8.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-1-8.js
new file mode 100644
index 000000000..7067361d1
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-1-8.js
@@ -0,0 +1,37 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-1-8.js
+ * @description Array.prototype.reduce applied to String object
+ */
+
+
+function testcase() {
+
+ function callbackfn(prevVal, curVal, idx, obj) {
+ return obj instanceof String;
+ }
+
+ var obj = new String("abc");
+
+ return Array.prototype.reduce.call(obj, callbackfn, 1);
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-1-9.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-1-9.js
new file mode 100644
index 000000000..d9dec722c
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-1-9.js
@@ -0,0 +1,40 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-1-9.js
+ * @description Array.prototype.reduce applied to Function object
+ */
+
+
+function testcase() {
+ function callbackfn(prevVal, curVal, idx, obj) {
+ return obj instanceof Function;
+ }
+
+ var obj = function (a, b) {
+ return a + b;
+ };
+ obj[0] = 11;
+ obj[1] = 9;
+
+ return Array.prototype.reduce.call(obj, callbackfn, 1);
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-10-1.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-10-1.js
new file mode 100644
index 000000000..854c4820f
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-10-1.js
@@ -0,0 +1,45 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-10-1.js
+ * @description Array.prototype.reduce doesn't mutate the Array on which it is called on
+ */
+
+
+function testcase() {
+
+ function callbackfn(prevVal, curVal, idx, obj)
+ {
+ return 1;
+ }
+ var srcArr = [1,2,3,4,5];
+ srcArr.reduce(callbackfn);
+ if(srcArr[0] === 1 &&
+ srcArr[1] === 2 &&
+ srcArr[2] === 3 &&
+ srcArr[3] === 4 &&
+ srcArr[4] === 5)
+ {
+ return true;
+ }
+
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-10-2.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-10-2.js
new file mode 100644
index 000000000..32b34eabb
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-10-2.js
@@ -0,0 +1,40 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-10-2.js
+ * @description Array.prototype.reduce reduces the array in ascending order of indices
+ */
+
+
+function testcase() {
+
+ function callbackfn(prevVal, curVal, idx, obj)
+ {
+ return prevVal + curVal;
+ }
+ var srcArr = ['1','2','3','4','5'];
+ if(srcArr.reduce(callbackfn) === '12345')
+ {
+ return true;
+ }
+
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-10-3.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-10-3.js
new file mode 100644
index 000000000..6cff1e4c8
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-10-3.js
@@ -0,0 +1,36 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-10-3.js
+ * @description Array.prototype.reduce - subclassed array of length 1
+ */
+
+
+function testcase() {
+ foo.prototype = [1];
+ function foo() {}
+ var f = new foo();
+
+ function cb(){}
+ if(f.reduce(cb) === 1)
+ return true;
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-10-4.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-10-4.js
new file mode 100644
index 000000000..644e8d586
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-10-4.js
@@ -0,0 +1,36 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-10-4.js
+ * @description Array.prototype.reduce - subclassed array with length more than 1
+ */
+
+
+function testcase() {
+ foo.prototype = new Array(1, 2, 3, 4);
+ function foo() {}
+ var f = new foo();
+
+ function cb(prevVal, curVal, idx, obj){return prevVal + curVal;}
+ if(f.reduce(cb) === 10)
+ return true;
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-10-5.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-10-5.js
new file mode 100644
index 000000000..91aab5c13
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-10-5.js
@@ -0,0 +1,40 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-10-5.js
+ * @description Array.prototype.reduce reduces the array in ascending order of indices(initialvalue present)
+ */
+
+
+function testcase() {
+
+ function callbackfn(prevVal, curVal, idx, obj)
+ {
+ return prevVal + curVal;
+ }
+ var srcArr = ['1','2','3','4','5'];
+ if(srcArr.reduce(callbackfn,'0') === '012345')
+ {
+ return true;
+ }
+
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-10-6.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-10-6.js
new file mode 100644
index 000000000..17f0f9b4a
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-10-6.js
@@ -0,0 +1,36 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-10-6.js
+ * @description Array.prototype.reduce - subclassed array when initialvalue provided
+ */
+
+
+function testcase() {
+ foo.prototype = [1,2,3,4];
+ function foo() {}
+ var f = new foo();
+
+ function cb(prevVal, curVal, idx, obj){return prevVal + curVal;}
+ if(f.reduce(cb,-1) === 9)
+ return true;
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-10-7.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-10-7.js
new file mode 100644
index 000000000..670ec99d1
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-10-7.js
@@ -0,0 +1,36 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-10-7.js
+ * @description Array.prototype.reduce - subclassed array with length 1 and initialvalue provided
+ */
+
+
+function testcase() {
+ foo.prototype = [1];
+ function foo() {}
+ var f = new foo();
+
+ function cb(prevVal, curVal, idx, obj){return prevVal + curVal;}
+ if(f.reduce(cb,-1) === 0)
+ return true;
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-10-8.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-10-8.js
new file mode 100644
index 000000000..55f3fe141
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-10-8.js
@@ -0,0 +1,46 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-10-8.js
+ * @description Array.prototype.reduce doesn't visit expandos
+ */
+
+
+function testcase() {
+
+ var callCnt = 0;
+ function callbackfn(prevVal, curVal, idx, obj)
+ {
+ callCnt++;
+ return curVal;
+ }
+ var srcArr = ['1','2','3','4','5'];
+ srcArr["i"] = 10;
+ srcArr[true] = 11;
+ srcArr.reduce(callbackfn);
+
+ if(callCnt == 4)
+ {
+ return true;
+ }
+
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-2-1.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-2-1.js
new file mode 100644
index 000000000..1695f32cc
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-2-1.js
@@ -0,0 +1,42 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-2-1.js
+ * @description Array.prototype.reduce - 'length' is own data property on an Array-like object
+ */
+
+
+function testcase() {
+
+ function callbackfn(prevVal, curVal, idx, obj) {
+ return (obj.length === 2);
+ }
+
+ var obj = {
+ 0: 12,
+ 1: 11,
+ 2: 9,
+ length: 2
+ };
+
+ return Array.prototype.reduce.call(obj, callbackfn, 1) === true;
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-2-10.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-2-10.js
new file mode 100644
index 000000000..89bb6f1de
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-2-10.js
@@ -0,0 +1,52 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-2-10.js
+ * @description Array.prototype.reduce applied to Array-like object, 'length' is an inherited accessor property
+ */
+
+
+function testcase() {
+
+ function callbackfn(prevVal, curVal, idx, obj) {
+ return (obj.length === 2);
+ }
+
+ var proto = {};
+
+ Object.defineProperty(proto, "length", {
+ get: function () {
+ return 2;
+ },
+ configurable: true
+ });
+
+ var Con = function () { };
+ Con.prototype = proto;
+
+ var child = new Con();
+ child[0] = 12;
+ child[1] = 11;
+ child[2] = 9;
+
+ return Array.prototype.reduce.call(child, callbackfn, 1) === true;
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-2-11.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-2-11.js
new file mode 100644
index 000000000..d4285a438
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-2-11.js
@@ -0,0 +1,45 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-2-11.js
+ * @description Array.prototype.reduce applied to Array-like object, 'length' is an own accessor property without a get function
+ */
+
+
+function testcase() {
+
+ var accessed = false;
+ function callbackfn(prevVal, curVal, idx, obj) {
+ accessed = true;
+ }
+
+ var obj = {
+ 0: 11,
+ 1: 12
+ };
+ Object.defineProperty(obj, "length", {
+ set: function () { },
+ configurable: true
+ });
+
+ return Array.prototype.reduce.call(obj, callbackfn, 1) === 1 && !accessed;
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-2-12.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-2-12.js
new file mode 100644
index 000000000..1027fb13e
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-2-12.js
@@ -0,0 +1,54 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-2-12.js
+ * @description Array.prototype.reduce - 'length' is own accessor property without a get function that overrides an inherited accessor property on an Array
+ */
+
+
+function testcase() {
+
+ var accessed = false;
+ function callbackfn(prevVal, curVal, idx, obj) {
+ accessed = true;
+ }
+
+ try {
+ Object.defineProperty(Object.prototype, "length", {
+ get: function () {
+ return 2;
+ },
+ configurable: true
+ });
+
+ var obj = { 0: 12, 1: 11 };
+ Object.defineProperty(obj, "length", {
+ set: function () { },
+ configurable: true
+ });
+
+ return Array.prototype.reduce.call(obj, callbackfn, 1) === 1 && !accessed;
+ } finally {
+ delete Object.prototype.length;
+ }
+
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-2-13.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-2-13.js
new file mode 100644
index 000000000..5660066d3
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-2-13.js
@@ -0,0 +1,50 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-2-13.js
+ * @description Array.prototype.reduce applied to Array-like object that 'length' is inherited accessor property without a get function
+ */
+
+
+function testcase() {
+
+ var accessed = false;
+
+ function callbackfn(prevVal, curVal, idx, obj) {
+ accessed = true;
+ }
+
+ var proto = {};
+ Object.defineProperty(proto, "length", {
+ set: function () { },
+ configurable: true
+ });
+
+ var Con = function () { };
+ Con.prototype = proto;
+
+ var child = new Con();
+ child[0] = 11;
+ child[1] = 12;
+
+ return Array.prototype.reduce.call(child, callbackfn, 1) === 1 && !accessed;
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-2-14.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-2-14.js
new file mode 100644
index 000000000..be01e52be
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-2-14.js
@@ -0,0 +1,40 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-2-14.js
+ * @description Array.prototype.reduce applied to the Array-like object that 'length' property doesn't exist
+ */
+
+
+function testcase() {
+
+ var accessed = false;
+
+ function callbackfn(prevVal, curVal, idx, obj) {
+ accessed = true;
+ }
+
+ var obj = { 0: 11, 1: 12 };
+
+ return Array.prototype.reduce.call(obj, callbackfn, 1) === 1 && !accessed;
+
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-2-15.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-2-15.js
new file mode 100644
index 000000000..89f43fc35
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-2-15.js
@@ -0,0 +1,47 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-2-15.js
+ * @description Array.prototype.reduce - 'length' is property of the global object
+ */
+
+
+function testcase() {
+
+ function callbackfn(prevVal, curVal, idx, obj) {
+ return (obj.length === 2);
+ }
+
+ try {
+ var oldLen = fnGlobalObject().length;
+ fnGlobalObject()[0] = 12;
+ fnGlobalObject()[1] = 11;
+ fnGlobalObject()[2] = 9;
+ fnGlobalObject().length = 2;
+ return Array.prototype.reduce.call(fnGlobalObject(), callbackfn, 1) === true;
+ } finally {
+ delete fnGlobalObject()[0];
+ delete fnGlobalObject()[1];
+ delete fnGlobalObject()[2];
+ fnGlobalObject().length = oldLen;
+ }
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-2-17.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-2-17.js
new file mode 100644
index 000000000..7acb5d119
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-2-17.js
@@ -0,0 +1,40 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-2-17.js
+ * @description Array.prototype.reduce applied to the Arguments object, which implements its own property get method
+ */
+
+
+function testcase() {
+
+ function callbackfn(prevVal, curVal, idx, obj) {
+ return (obj.length === 2);
+ }
+
+ var func = function (a, b) {
+ arguments[2] = 9;
+ return Array.prototype.reduce.call(arguments, callbackfn, 1);
+ };
+
+ return func(12, 11) === true;
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-2-18.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-2-18.js
new file mode 100644
index 000000000..7faf33894
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-2-18.js
@@ -0,0 +1,37 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-2-18.js
+ * @description Array.prototype.reduce applied to String object, which implements its own property get method
+ */
+
+
+function testcase() {
+
+ function callbackfn(prevVal, curVal, idx, obj) {
+ return (obj.length === 3);
+ }
+
+ var str = new String("012");
+
+ return Array.prototype.reduce.call(str, callbackfn, 1) === true;
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-2-19.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-2-19.js
new file mode 100644
index 000000000..5926bdf69
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-2-19.js
@@ -0,0 +1,42 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-2-19.js
+ * @description Array.prototype.reduce applied to Function object, which implements its own property get method
+ */
+
+
+function testcase() {
+
+ function callbackfn(prevVal, curVal, idx, obj) {
+ return (obj.length === 2);
+ }
+
+ var fun = function (a, b) {
+ return a + b;
+ };
+ fun[0] = 12;
+ fun[1] = 11;
+ fun[2] = 9;
+
+ return Array.prototype.reduce.call(fun, callbackfn, 1) === true;
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-2-2.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-2-2.js
new file mode 100644
index 000000000..c24bde340
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-2-2.js
@@ -0,0 +1,35 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-2-2.js
+ * @description Array.prototype.reduce - 'length' is own data property on an Array
+ */
+
+
+function testcase() {
+
+ function callbackfn(prevVal, curVal, idx, obj) {
+ return (obj.length === 2);
+ }
+
+ return [12, 11].reduce(callbackfn, 1) === true;
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-2-3.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-2-3.js
new file mode 100644
index 000000000..583499cfb
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-2-3.js
@@ -0,0 +1,46 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-2-3.js
+ * @description Array.prototype.reduce - 'length' is an own data property that overrides an inherited data property on an Array-like object
+ */
+
+
+function testcase() {
+
+ function callbackfn(prevVal, curVal, idx, obj) {
+ return (obj.length === 2);
+ }
+
+ var proto = { length: 3 };
+
+ var Con = function () { };
+ Con.prototype = proto;
+
+ var child = new Con();
+ child.length = 2;
+ child[0] = 12;
+ child[1] = 11;
+ child[2] = 9;
+
+ return Array.prototype.reduce.call(child, callbackfn, 1) === true;
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-2-4.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-2-4.js
new file mode 100644
index 000000000..6ad04fa19
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-2-4.js
@@ -0,0 +1,43 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-2-4.js
+ * @description Array.prototype.reduce - 'length' is own data property that overrides an inherited data property on an Array
+ */
+
+
+function testcase() {
+ var storeProtoLength;
+
+ function callbackfn(prevVal, curVal, idx, obj) {
+ return (obj.length === 2);
+ }
+
+ try {
+ storeProtoLength = Array.prototype.length;
+ Array.prototype.length = 0;
+
+ return [12, 11].reduce(callbackfn, 1) === true;
+ } finally {
+ Array.prototype.length = storeProtoLength;
+ }
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-2-5.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-2-5.js
new file mode 100644
index 000000000..a4dedea9d
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-2-5.js
@@ -0,0 +1,56 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-2-5.js
+ * @description Array.prototype.reduce applied to Array-like object, 'length' is an own data property that overrides an inherited accessor property
+ */
+
+
+function testcase() {
+
+ function callbackfn(prevVal, curVal, idx, obj) {
+ return (obj.length === 2);
+ }
+
+ var proto = {};
+
+ Object.defineProperty(proto, "length", {
+ get: function () {
+ return 3;
+ },
+ configurable: true
+ });
+
+ var Con = function () { };
+ Con.prototype = proto;
+
+ var child = new Con();
+ Object.defineProperty(child, "length", {
+ value: 2,
+ configurable: true
+ });
+ child[0] = 12;
+ child[1] = 11;
+ child[2] = 9;
+
+ return Array.prototype.reduce.call(child, callbackfn, 1) === true;
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-2-6.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-2-6.js
new file mode 100644
index 000000000..27c940714
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-2-6.js
@@ -0,0 +1,45 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-2-6.js
+ * @description Array.prototype.reduce applied to Array-like object, 'length' is an inherited data property
+ */
+
+
+function testcase() {
+
+ function callbackfn(prevVal, curVal, idx, obj) {
+ return (obj.length === 2);
+ }
+
+ var proto = { length: 2 };
+
+ var Con = function () { };
+ Con.prototype = proto;
+
+ var child = new Con();
+ child[0] = 12;
+ child[1] = 11;
+ child[2] = 9;
+
+ return Array.prototype.reduce.call(child, callbackfn, 1) === true;
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-2-7.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-2-7.js
new file mode 100644
index 000000000..8cb5cb8a9
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-2-7.js
@@ -0,0 +1,48 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-2-7.js
+ * @description Array.prototype.reduce applied to Array-like object, 'length' is an own accessor property
+ */
+
+
+function testcase() {
+
+ function callbackfn(prevVal, curVal, idx, obj) {
+ return (obj.length === 2);
+ }
+
+ var obj = {};
+
+ Object.defineProperty(obj, "length", {
+ get: function () {
+ return 2;
+ },
+ configurable: true
+ });
+
+ obj[0] = 12;
+ obj[1] = 11;
+ obj[2] = 9;
+
+ return Array.prototype.reduce.call(obj, callbackfn, 1) === true;
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-2-8.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-2-8.js
new file mode 100644
index 000000000..2ec2df6e0
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-2-8.js
@@ -0,0 +1,53 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-2-8.js
+ * @description Array.prototype.reduce applied to Array-like object, 'length' is an own accessor property that overrides an inherited data property
+ */
+
+
+function testcase() {
+
+ function callbackfn(prevVal, curVal, idx, obj) {
+ return (obj.length === 2);
+ }
+
+ var proto = { length: 3 };
+
+ var Con = function () { };
+ Con.prototype = proto;
+
+ var child = new Con();
+
+ Object.defineProperty(child, "length", {
+ get: function () {
+ return 2;
+ },
+ configurable: true
+ });
+
+ child[0] = 12;
+ child[1] = 11;
+ child[2] = 9;
+
+ return Array.prototype.reduce.call(child, callbackfn, 1) === true;
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-2-9.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-2-9.js
new file mode 100644
index 000000000..e1d232d05
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-2-9.js
@@ -0,0 +1,60 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-2-9.js
+ * @description Array.prototype.reduce applied to Array-like object, 'length' is an own accessor property that overrides an inherited accessor property
+ */
+
+
+function testcase() {
+
+ function callbackfn(prevVal, curVal, idx, obj) {
+ return (obj.length === 2);
+ }
+
+ var proto = {};
+
+ Object.defineProperty(proto, "length", {
+ get: function () {
+ return 3;
+ },
+ configurable: true
+ });
+
+ var Con = function () { };
+ Con.prototype = proto;
+
+ var child = new Con();
+
+ Object.defineProperty(child, "length", {
+ get: function () {
+ return 2;
+ },
+ configurable: true
+ });
+
+ child[0] = 12;
+ child[1] = 11;
+ child[2] = 9;
+
+ return Array.prototype.reduce.call(child, callbackfn, 1) === true;
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-3-1.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-3-1.js
new file mode 100644
index 000000000..80f5b81af
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-3-1.js
@@ -0,0 +1,40 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-3-1.js
+ * @description Array.prototype.reduce - value of 'length' is undefined
+ */
+
+
+function testcase() {
+
+ var accessed = false;
+
+ function callbackfn(prevVal, curVal, idx, obj) {
+ accessed = true;
+ return 2;
+ }
+
+ var obj = { 0: 0, 1: 1, length: undefined };
+
+ return Array.prototype.reduce.call(obj, callbackfn, 1) === 1 && !accessed;
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-3-10.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-3-10.js
new file mode 100644
index 000000000..693b4f031
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-3-10.js
@@ -0,0 +1,40 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-3-10.js
+ * @description Array.prototype.reduce - value of 'length' is number primitive (value is NaN)
+ */
+
+
+function testcase() {
+
+ var accessed = false;
+
+ function callbackfn(prevVal, curVal, idx, obj) {
+ accessed = true;
+ return 2;
+ }
+
+ var obj = { 0: 9, length: NaN };
+
+ return Array.prototype.reduce.call(obj, callbackfn, 1) === 1 && !accessed;
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-3-11.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-3-11.js
new file mode 100644
index 000000000..9360d2121
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-3-11.js
@@ -0,0 +1,37 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-3-11.js
+ * @description Array.prototype.reduce - 'length' is a string containing a positive number
+ */
+
+
+function testcase() {
+
+ function callbackfn(prevVal, curVal, idx, obj) {
+ return (curVal === 11 && idx === 1);
+ }
+
+ var obj = { 1: 11, 2: 9, length: "2" };
+
+ return Array.prototype.reduce.call(obj, callbackfn, 1) === true;
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-3-12.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-3-12.js
new file mode 100644
index 000000000..bf6a399f4
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-3-12.js
@@ -0,0 +1,37 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-3-12.js
+ * @description Array.prototype.reduce - 'length' is a string containing a negative number
+ */
+
+
+function testcase() {
+
+ function callbackfn(prevVal, curVal, idx, obj) {
+ return (curVal === 11 && idx === 1);
+ }
+
+ var obj = { 1: 11, 2: 9, length: "-4294967294" };
+
+ return Array.prototype.reduce.call(obj, callbackfn, 1) === true;
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-3-13.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-3-13.js
new file mode 100644
index 000000000..b7b8b8ae8
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-3-13.js
@@ -0,0 +1,37 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-3-13.js
+ * @description Array.prototype.reduce - 'length' is a string containing a decimal number
+ */
+
+
+function testcase() {
+
+ function callbackfn(prevVal, curVal, idx, obj) {
+ return (curVal === 11 && idx === 1);
+ }
+
+ var obj = { 1: 11, 2: 9, length: "2.5" };
+
+ return Array.prototype.reduce.call(obj, callbackfn, 1) === true;
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-3-14.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-3-14.js
new file mode 100644
index 000000000..eb880c64e
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-3-14.js
@@ -0,0 +1,57 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-3-14.js
+ * @description Array.prototype.reduce - 'length' is a string containing +/-Infinity
+ */
+
+
+function testcase() {
+
+ var accessed1 = false;
+ var accessed2 = false;
+ var accessed3 = false;
+
+ function callbackfn1(prevVal, curVal, idx, obj) {
+ accessed1 = true;
+ return 2;
+ }
+
+ function callbackfn2(prevVal, curVal, idx, obj) {
+ accessed2 = true;
+ return 2;
+ }
+
+ function callbackfn3(prevVal, curVal, idx, obj) {
+ accessed3 = true;
+ return 2;
+ }
+
+ var obj1 = { 0: 9, length: "Infinity" };
+ var obj2 = { 0: 9, length: "-Infinity" };
+ var obj3 = { 0: 9, length: "+Infinity" };
+
+ return Array.prototype.reduce.call(obj1, callbackfn1, 1) === 1 &&
+ Array.prototype.reduce.call(obj2, callbackfn2, 1) === 1 &&
+ Array.prototype.reduce.call(obj3, callbackfn3, 1) === 1 &&
+ !accessed1 && !accessed2 && !accessed3;
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-3-15.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-3-15.js
new file mode 100644
index 000000000..6895359eb
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-3-15.js
@@ -0,0 +1,37 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-3-15.js
+ * @description Array.prototype.reduce - 'length' is a string containing an exponential number
+ */
+
+
+function testcase() {
+
+ function callbackfn(prevVal, curVal, idx, obj) {
+ return (curVal === 11 && idx === 1);
+ }
+
+ var obj = { 1: 11, 2: 9, length: "2E0" };
+
+ return Array.prototype.reduce.call(obj, callbackfn, 1) === true;
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-3-16.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-3-16.js
new file mode 100644
index 000000000..822bf8616
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-3-16.js
@@ -0,0 +1,37 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-3-16.js
+ * @description Array.prototype.reduce - 'length' is a string containing a hex number
+ */
+
+
+function testcase() {
+
+ function callbackfn(prevVal, curVal, idx, obj) {
+ return (curVal === 11 && idx === 1);
+ }
+
+ var obj = { 1: 11, 2: 9, length: "0x0002" };
+
+ return Array.prototype.reduce.call(obj, callbackfn, 1) === true;
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-3-17.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-3-17.js
new file mode 100644
index 000000000..cc860f414
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-3-17.js
@@ -0,0 +1,37 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-3-17.js
+ * @description Array.prototype.reduce - 'length' is a string containing a number with leading zeros
+ */
+
+
+function testcase() {
+
+ function callbackfn(prevVal, curVal, idx, obj) {
+ return (curVal === 11 && idx === 1);
+ }
+
+ var obj = { 1: 11, 2: 9, length: "0002.00" };
+
+ return Array.prototype.reduce.call(obj, callbackfn, 1) === true;
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-3-18.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-3-18.js
new file mode 100644
index 000000000..83bacccee
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-3-18.js
@@ -0,0 +1,39 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-3-18.js
+ * @description Array.prototype.reduce - value of 'length' is a string that can't convert to a number
+ */
+
+
+function testcase() {
+
+ var accessed = false;
+ function callbackfn(prevVal, curVal, idx, obj) {
+ accessed = true;
+ return 2;
+ }
+
+ var obj = { 0: 9, length: "asdf!_" };
+
+ return Array.prototype.reduce.call(obj, callbackfn, 1) === 1 && !accessed;
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-3-19.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-3-19.js
new file mode 100644
index 000000000..b16e0b579
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-3-19.js
@@ -0,0 +1,45 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-3-19.js
+ * @description Array.prototype.reduce - value of 'length' is an Object which has an own toString method
+ */
+
+
+function testcase() {
+
+ function callbackfn(prevVal, curVal, idx, obj) {
+ return (curVal === 11 && idx === 1);
+ }
+
+ var obj = {
+ 1: 11,
+ 2: 9,
+ length: {
+ toString: function () {
+ return '2';
+ }
+ }
+ };
+
+ return Array.prototype.reduce.call(obj, callbackfn, 1) === true;
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-3-2.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-3-2.js
new file mode 100644
index 000000000..185f647bc
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-3-2.js
@@ -0,0 +1,38 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-3-2.js
+ * @description Array.prototype.reduce - value of 'length' is a boolean (value is true)
+ */
+
+
+function testcase() {
+
+ function callbackfn(prevVal, curVal, idx, obj) {
+ return (curVal === 11 && idx === 0);
+ }
+
+ var obj = { 0: 11, 1: 9, length: true };
+
+ return Array.prototype.reduce.call(obj, callbackfn, 1) === true;
+
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-3-20.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-3-20.js
new file mode 100644
index 000000000..d1d6b08ba
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-3-20.js
@@ -0,0 +1,45 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-3-20.js
+ * @description Array.prototype.reduce - value of 'length' is an object which has an own valueOf method
+ */
+
+
+function testcase() {
+
+ function callbackfn(prevVal, curVal, idx, obj) {
+ return (curVal === 11 && idx === 1);
+ }
+
+ var obj = {
+ 1: 11,
+ 2: 9,
+ length: {
+ valueOf: function () {
+ return 2;
+ }
+ }
+ };
+
+ return Array.prototype.reduce.call(obj, callbackfn, 1) === true;
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-3-21.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-3-21.js
new file mode 100644
index 000000000..722fd40e2
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-3-21.js
@@ -0,0 +1,53 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-3-21.js
+ * @description Array.prototype.reduce - 'length' is an object that has an own valueOf method that returns an object and toString method that returns a string
+ */
+
+
+function testcase() {
+
+ var valueOfOccured = false;
+ var toStringOccured = false;
+
+ function callbackfn(prevVal, curVal, idx, obj) {
+ return (curVal === 11 && idx === 1);
+ }
+
+ var obj = {
+ 1: 11,
+ 2: 9,
+ length: {
+ valueOf: function () {
+ valueOfOccured = true;
+ return {};
+ },
+ toString: function () {
+ toStringOccured = true;
+ return '2';
+ }
+ }
+ };
+
+ return Array.prototype.reduce.call(obj, callbackfn, 1) === true && valueOfOccured && toStringOccured;
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-3-22.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-3-22.js
new file mode 100644
index 000000000..9a094d989
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-3-22.js
@@ -0,0 +1,61 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-3-22.js
+ * @description Array.prototype.reduce throws TypeError exception - 'length' is an object with toString and valueOf methods that don�t return primitive values
+ */
+
+
+function testcase() {
+
+ var accessed = false;
+ var valueOfAccessed = false;
+ var toStringAccessed = false;
+
+ function callbackfn(prevVal, curVal, idx, obj) {
+ accessed = true;
+ return true;
+ }
+
+ var obj = {
+ 1: 11,
+ 2: 12,
+
+ length: {
+ valueOf: function () {
+ valueOfAccessed = true;
+ return {};
+ },
+ toString: function () {
+ toStringAccessed = true;
+ return {};
+ }
+ }
+ };
+
+ try {
+ Array.prototype.reduce.call(obj, callbackfn, 1);
+ return false;
+ } catch (ex) {
+ return (ex instanceof TypeError) && !accessed && toStringAccessed && valueOfAccessed;
+ }
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-3-23.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-3-23.js
new file mode 100644
index 000000000..a2cc846a6
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-3-23.js
@@ -0,0 +1,61 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-3-23.js
+ * @description Array.prototype.reduce uses inherited valueOf method - 'length' is an object with an own toString and inherited valueOf methods
+ */
+
+
+function testcase() {
+
+ var valueOfAccessed = false;
+ var toStringAccessed = false;
+
+ function callbackfn(prevVal, curVal, idx, obj) {
+ return (curVal === 11 && idx === 1);
+ }
+
+ var proto = {
+ valueOf: function () {
+ valueOfAccessed = true;
+ return 2;
+ }
+ };
+
+ var Con = function () { };
+ Con.prototype = proto;
+
+ var child = new Con();
+
+ child.toString = function () {
+ toStringAccessed = true;
+ return '1';
+ };
+
+ var obj = {
+ 1: 11,
+ 2: 9,
+ length: child
+ };
+
+ return Array.prototype.reduce.call(obj, callbackfn, 1) === true && valueOfAccessed && !toStringAccessed;
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-3-24.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-3-24.js
new file mode 100644
index 000000000..43837253e
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-3-24.js
@@ -0,0 +1,40 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-3-24.js
+ * @description Array.prototype.reduce - value of 'length' is a positive non-integer, ensure truncation occurs in the proper direction
+ */
+
+
+function testcase() {
+ function callbackfn(prevVal, curVal, idx, obj) {
+ return (curVal === 11 && idx === 1);
+ }
+
+ var obj = {
+ 1: 11,
+ 2: 9,
+ length: 2.685
+ };
+
+ return Array.prototype.reduce.call(obj, callbackfn, 1) === true;
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-3-25.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-3-25.js
new file mode 100644
index 000000000..7209dc678
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-3-25.js
@@ -0,0 +1,41 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-3-25.js
+ * @description Array.prototype.reduce - value of 'length' is a negative non-integer, ensure truncation occurs in the proper direction
+ */
+
+
+function testcase() {
+
+ function callbackfn(prevVal, curVal, idx, obj) {
+ return (curVal === 11 && idx === 1);
+ }
+
+ var obj = {
+ 1: 11,
+ 2: 9,
+ length: -4294967294.5
+ };
+
+ return Array.prototype.reduce.call(obj, callbackfn, 1) === true;
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-3-28.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-3-28.js
new file mode 100644
index 000000000..a43458004
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-3-28.js
@@ -0,0 +1,43 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-3-28.js
+ * @description Array.prototype.reduce - value of 'length' is boundary value (2^32)
+ */
+
+
+function testcase() {
+
+ var accessed = false;
+
+ function callbackfn(prevVal, curVal, idx, obj) {
+ accessed = true;
+ return 2;
+ }
+
+ var obj = {
+ 0: 12,
+ length: 4294967296
+ };
+
+ return Array.prototype.reduce.call(obj, callbackfn, 1) === 1 && !accessed;
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-3-29.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-3-29.js
new file mode 100644
index 000000000..68099a80e
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-3-29.js
@@ -0,0 +1,41 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-3-29.js
+ * @description Array.prototype.reduce - value of 'length' is boundary value (2^32 + 1)
+ */
+
+
+function testcase() {
+
+ function callbackfn(prevVal, curVal, idx, obj) {
+ return (curVal === 11 && idx === 0);
+ }
+
+ var obj = {
+ 0: 11,
+ 1: 9,
+ length: 4294967297
+ };
+
+ return Array.prototype.reduce.call(obj, callbackfn, 1);
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-3-3.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-3-3.js
new file mode 100644
index 000000000..387ec0005
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-3-3.js
@@ -0,0 +1,40 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-3-3.js
+ * @description Array.prototype.reduce - value of 'length' is a number (value is 0)
+ */
+
+
+function testcase() {
+
+ var accessed = false;
+
+ function callbackfn(prevVal, curVal, idx, obj) {
+ accessed = true;
+ return 2;
+ }
+
+ var obj = { 0: 1, 1: 1, length: 0 };
+
+ return Array.prototype.reduce.call(obj, callbackfn, 1) === 1 && !accessed;
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-3-4.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-3-4.js
new file mode 100644
index 000000000..118343840
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-3-4.js
@@ -0,0 +1,40 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-3-4.js
+ * @description Array.prototype.reduce - value of 'length' is a number (value is +0)
+ */
+
+
+function testcase() {
+
+ var accessed = false;
+
+ function callbackfn(prevVal, curVal, idx, obj) {
+ accessed = true;
+ return 2;
+ }
+
+ var obj = { 0: 11, length: +0 };
+
+ return Array.prototype.reduce.call(obj, callbackfn, 1) === 1 && !accessed;
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-3-5.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-3-5.js
new file mode 100644
index 000000000..01403a3bb
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-3-5.js
@@ -0,0 +1,40 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-3-5.js
+ * @description Array.prototype.reduce - value of 'length' is a number (value is -0)
+ */
+
+
+function testcase() {
+
+ var accessed = false;
+
+ function callbackfn(prevVal, curVal, idx, obj) {
+ accessed = true;
+ return 2;
+ }
+
+ var obj = { 0: 11, length: -0 };
+
+ return Array.prototype.reduce.call(obj, callbackfn, 1) === 1 && !accessed;
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-3-6.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-3-6.js
new file mode 100644
index 000000000..bf1cef704
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-3-6.js
@@ -0,0 +1,37 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-3-6.js
+ * @description Array.prototype.reduce - value of 'length' is a number (value is positive)
+ */
+
+
+function testcase() {
+
+ function callbackfn(prevVal, curVal, idx, obj) {
+ return (curVal === 11 && idx === 1);
+ }
+
+ var obj = { 1: 11, 2: 9, length: 2 };
+
+ return Array.prototype.reduce.call(obj, callbackfn, 1) === true;
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-3-7.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-3-7.js
new file mode 100644
index 000000000..2876e6029
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-3-7.js
@@ -0,0 +1,37 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-3-7.js
+ * @description Array.prototype.reduce - value of 'length' is a number (value is negative)
+ */
+
+
+function testcase() {
+
+ function callbackfn(prevVal, curVal, idx, obj) {
+ return (curVal === 11 && idx === 1);
+ }
+
+ var obj = { 1: 11, 2: 9, length: -4294967294 };
+
+ return Array.prototype.reduce.call(obj, callbackfn, 1) === true;
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-3-8.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-3-8.js
new file mode 100644
index 000000000..0788f0f28
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-3-8.js
@@ -0,0 +1,40 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-3-8.js
+ * @description Array.prototype.reduce - value of 'length' is a number (value is Infinity)
+ */
+
+
+function testcase() {
+
+ var accessed = false;
+
+ function callbackfn(prevVal, curVal, idx, obj) {
+ accessed = true;
+ return 2;
+ }
+
+ var obj = { 0: 9, length: Infinity };
+
+ return Array.prototype.reduce.call(obj, callbackfn, 1) === 1 && !accessed;
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-3-9.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-3-9.js
new file mode 100644
index 000000000..c15f39a65
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-3-9.js
@@ -0,0 +1,39 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-3-9.js
+ * @description Array.prototype.reduce - value of 'length' is a number (value is -Infinity)
+ */
+
+
+function testcase() {
+
+ var accessed = false;
+
+ function callbackfn(prevVal, curVal, idx, obj) {
+ accessed = true;
+ }
+
+ var obj = { 0: 9, length: -Infinity };
+
+ return Array.prototype.reduce.call(obj, callbackfn, 1) === 1 && !accessed;
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-4-1.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-4-1.js
new file mode 100644
index 000000000..416321a6b
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-4-1.js
@@ -0,0 +1,39 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-4-1.js
+ * @description Array.prototype.reduce throws TypeError if callbackfn is undefined
+ */
+
+
+function testcase() {
+
+ var arr = new Array(10);
+ try {
+ arr.reduce();
+ }
+ catch(e) {
+ if(e instanceof TypeError)
+ return true;
+ }
+
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-4-10.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-4-10.js
new file mode 100644
index 000000000..fcf29e8af
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-4-10.js
@@ -0,0 +1,45 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-4-10.js
+ * @description Array.prototype.reduce - the exception is not thrown if exception was thrown by step 2
+ */
+
+
+function testcase() {
+
+ var obj = { 0: 11, 1: 12 };
+
+ Object.defineProperty(obj, "length", {
+ get: function () {
+ throw new SyntaxError();
+ },
+ configurable: true
+ });
+
+ try {
+ Array.prototype.reduce.call(obj, undefined);
+ return false;
+ } catch (ex) {
+ return !(ex instanceof TypeError);
+ }
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-4-11.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-4-11.js
new file mode 100644
index 000000000..5439de63f
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-4-11.js
@@ -0,0 +1,49 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-4-11.js
+ * @description Array.prototype.reduce - the exception is not thrown if exception was thrown by step 3
+ */
+
+
+function testcase() {
+
+ var obj = { 0: 11, 1: 12 };
+
+ Object.defineProperty(obj, "length", {
+ get: function () {
+ return {
+ toString: function () {
+ throw new SyntaxError();
+ }
+ };
+ },
+ configurable: true
+ });
+
+ try {
+ Array.prototype.reduce.call(obj, undefined);
+ return false;
+ } catch (ex) {
+ return !(ex instanceof TypeError);
+ }
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-4-12.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-4-12.js
new file mode 100644
index 000000000..f97d66fc0
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-4-12.js
@@ -0,0 +1,37 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-4-12.js
+ * @description Array.prototype.reduce - 'callbackfn' is a function
+ */
+
+
+function testcase() {
+
+ var accessed = false;
+ function callbackfn(prevVal, curVal, idx, obj) {
+ accessed = true;
+ return curVal > 10;
+ }
+
+ return [11, 9].reduce(callbackfn, 1) === false && accessed;
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-4-15.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-4-15.js
new file mode 100644
index 000000000..01c13d919
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-4-15.js
@@ -0,0 +1,55 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-4-15.js
+ * @description Array.prototype.reduce - calling with no callbackfn is the same as passing undefined for callbackfn
+ */
+
+
+function testcase() {
+ var obj = { 10: 10 };
+ var lengthAccessed = false;
+ var loopAccessed = false;
+
+ Object.defineProperty(obj, "length", {
+ get: function () {
+ lengthAccessed = true;
+ return 20;
+ },
+ configurable: true
+ });
+
+ Object.defineProperty(obj, "0", {
+ get: function () {
+ loopAccessed = true;
+ return 10;
+ },
+ configurable: true
+ });
+
+ try {
+ Array.prototype.reduce.call(obj);
+ return false;
+ } catch (ex) {
+ return (ex instanceof TypeError) && lengthAccessed && !loopAccessed;
+ }
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-4-2.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-4-2.js
new file mode 100644
index 000000000..89f20b32c
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-4-2.js
@@ -0,0 +1,39 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-4-2.js
+ * @description Array.prototype.reduce throws ReferenceError if callbackfn is unreferenced
+ */
+
+
+function testcase() {
+
+ var arr = new Array(10);
+ try {
+ arr.reduce(foo);
+ }
+ catch(e) {
+ if(e instanceof ReferenceError)
+ return true;
+ }
+
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-4-3.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-4-3.js
new file mode 100644
index 000000000..b67ce6c59
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-4-3.js
@@ -0,0 +1,39 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-4-3.js
+ * @description Array.prototype.reduce throws TypeError if callbackfn is null
+ */
+
+
+function testcase() {
+
+ var arr = new Array(10);
+ try {
+ arr.reduce(null);
+ }
+ catch(e) {
+ if(e instanceof TypeError)
+ return true;
+ }
+
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-4-4.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-4-4.js
new file mode 100644
index 000000000..e71fc92a1
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-4-4.js
@@ -0,0 +1,39 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-4-4.js
+ * @description Array.prototype.reduce throws TypeError if callbackfn is boolean
+ */
+
+
+function testcase() {
+
+ var arr = new Array(10);
+ try {
+ arr.reduce(true);
+ }
+ catch(e) {
+ if(e instanceof TypeError)
+ return true;
+ }
+
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-4-5.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-4-5.js
new file mode 100644
index 000000000..62addd534
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-4-5.js
@@ -0,0 +1,39 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-4-5.js
+ * @description Array.prototype.reduce throws TypeError if callbackfn is number
+ */
+
+
+function testcase() {
+
+ var arr = new Array(10);
+ try {
+ arr.reduce(5);
+ }
+ catch(e) {
+ if(e instanceof TypeError)
+ return true;
+ }
+
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-4-6.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-4-6.js
new file mode 100644
index 000000000..e898023b3
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-4-6.js
@@ -0,0 +1,39 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-4-6.js
+ * @description Array.prototype.reduce throws TypeError if callbackfn is string
+ */
+
+
+function testcase() {
+
+ var arr = new Array(10);
+ try {
+ arr.reduce("abc");
+ }
+ catch(e) {
+ if(e instanceof TypeError)
+ return true;
+ }
+
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-4-7.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-4-7.js
new file mode 100644
index 000000000..5ef9ee024
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-4-7.js
@@ -0,0 +1,39 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-4-7.js
+ * @description Array.prototype.reduce throws TypeError if callbackfn is Object without [[Call]] internal method
+ */
+
+
+function testcase() {
+
+ var arr = new Array(10);
+ try {
+ arr.reduce(new Object());
+ }
+ catch(e) {
+ if(e instanceof TypeError)
+ return true;
+ }
+
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-4-8.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-4-8.js
new file mode 100644
index 000000000..6d3fd86c7
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-4-8.js
@@ -0,0 +1,48 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-4-8.js
+ * @description Array.prototype.reduce - side effects produced by step 2 are visible when an exception occurs
+ */
+
+
+function testcase() {
+
+ var obj = { 0: 11, 1: 12 };
+
+ var accessed = false;
+
+ Object.defineProperty(obj, "length", {
+ get: function () {
+ accessed = true;
+ return 2;
+ },
+ configurable: true
+ });
+
+ try {
+ Array.prototype.reduce.call(obj, null);
+ return false;
+ } catch (ex) {
+ return ex instanceof TypeError && accessed;
+ }
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-4-9.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-4-9.js
new file mode 100644
index 000000000..0c4f7c3a5
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-4-9.js
@@ -0,0 +1,52 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-4-9.js
+ * @description Array.prototype.reduce - side effects produced by step 3 are visible when an exception occurs
+ */
+
+
+function testcase() {
+
+ var obj = { 0: 11, 1: 12 };
+
+ var accessed = false;
+
+ Object.defineProperty(obj, "length", {
+ get: function () {
+ return {
+ toString: function () {
+ accessed = true;
+ return "2";
+ }
+ };
+ },
+ configurable: true
+ });
+
+ try {
+ Array.prototype.reduce.call(obj, null);
+ return false;
+ } catch (ex) {
+ return ex instanceof TypeError && accessed;
+ }
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-5-1.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-5-1.js
new file mode 100644
index 000000000..d6707fee8
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-5-1.js
@@ -0,0 +1,39 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-5-1.js
+ * @description Array.prototype.reduce throws TypeError if 'length' is 0 (empty array), no initVal
+ */
+
+
+function testcase() {
+ function cb(){}
+
+ try {
+ [].reduce(cb);
+ }
+ catch (e) {
+ if (e instanceof TypeError) {
+ return true;
+ }
+ }
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-5-10.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-5-10.js
new file mode 100644
index 000000000..1dd97e244
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-5-10.js
@@ -0,0 +1,52 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-5-10.js
+ * @description Array.prototype.reduce - if exception occurs, it occurs after any side-effects that might be produced by step 2
+ */
+
+
+function testcase() {
+
+ function callbackfn(prevVal, curVal, idx, obj) {
+ return (curVal > 10);
+ }
+
+ var obj = { 0: 11, 1: 12 };
+
+ var accessed = false;
+
+ Object.defineProperty(obj, "length", {
+ get: function () {
+ accessed = true;
+ return 0;
+ },
+ configurable: true
+ });
+
+ try {
+ Array.prototype.reduce.call(obj, callbackfn);
+ return false;
+ } catch (ex) {
+ return (ex instanceof TypeError) && accessed;
+ }
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-5-11.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-5-11.js
new file mode 100644
index 000000000..47ebd5568
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-5-11.js
@@ -0,0 +1,56 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-5-11.js
+ * @description Array.prototype.reduce - if the exception occurs, it occurs after any side-effects that might be produced by step 3
+ */
+
+
+function testcase() {
+
+ function callbackfn(prevVal, curVal, idx, obj) {
+ return (curVal > 10);
+ }
+
+ var obj = { 0: 11, 1: 12 };
+
+ var accessed = false;
+
+ Object.defineProperty(obj, "length", {
+ get: function () {
+ return {
+ toString: function () {
+ accessed = true;
+ return "0";
+ }
+ };
+ },
+ configurable: true
+ });
+
+ try {
+ Array.prototype.reduce.call(obj, callbackfn);
+ return false;
+ } catch (ex) {
+ return (ex instanceof TypeError) && accessed;
+ }
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-5-12.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-5-12.js
new file mode 100644
index 000000000..25e6e4ad8
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-5-12.js
@@ -0,0 +1,49 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-5-12.js
+ * @description Array.prototype.reduce - the exception is not thrown if exception was thrown by step 2
+ */
+
+
+function testcase() {
+
+ function callbackfn(prevVal, curVal, idx, obj) {
+ return (curVal > 10);
+ }
+
+ var obj = { 0: 11, 1: 12 };
+
+ Object.defineProperty(obj, "length", {
+ get: function () {
+ throw new SyntaxError();
+ },
+ configurable: true
+ });
+
+ try {
+ Array.prototype.reduce.call(obj, callbackfn);
+ return false;
+ } catch (ex) {
+ return !(ex instanceof TypeError);
+ }
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-5-13.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-5-13.js
new file mode 100644
index 000000000..1b753914f
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-5-13.js
@@ -0,0 +1,54 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-5-13.js
+ * @description Array.prototype.reduce - the exception is not thrown if exception was thrown by step 3
+ */
+
+
+function testcase() {
+
+ function callbackfn(prevVal, curVal, idx, obj) {
+ return (curVal > 10);
+ }
+
+ var obj = { 0: 11, 1: 12 };
+
+ Object.defineProperty(obj, "length", {
+ get: function () {
+ return {
+ toString: function () {
+ throw new SyntaxError();
+ }
+ };
+ },
+ configurable: true
+ });
+
+
+ try {
+ Array.prototype.reduce.call(obj, callbackfn);
+ return false;
+ } catch (ex) {
+ return !(ex instanceof TypeError);
+ }
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-5-2.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-5-2.js
new file mode 100644
index 000000000..6c8672842
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-5-2.js
@@ -0,0 +1,43 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-5-2.js
+ * @description Array.prototype.reduce throws TypeError if 'length' is 0 (subclassed Array, length overridden to null (type conversion)), no initVal
+ */
+
+
+function testcase() {
+ foo.prototype = new Array(1, 2, 3);
+ function foo() {}
+ var f = new foo();
+ f.length = null;
+
+ function cb(){}
+ try {
+ f.reduce(cb);
+ }
+ catch (e) {
+ if (e instanceof TypeError) {
+ return true;
+ }
+ }
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-5-3.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-5-3.js
new file mode 100644
index 000000000..35dca3904
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-5-3.js
@@ -0,0 +1,43 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-5-3.js
+ * @description Array.prototype.reduce throws TypeError if 'length' is 0 (subclassed Array, length overridden to false (type conversion)), no initVal
+ */
+
+
+function testcase() {
+ foo.prototype = new Array(1, 2, 3);
+ function foo() {}
+ var f = new foo();
+ f.length = false;
+
+ function cb(){}
+ try {
+ f.reduce(cb);
+ }
+ catch (e) {
+ if (e instanceof TypeError) {
+ return true;
+ }
+ }
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-5-4.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-5-4.js
new file mode 100644
index 000000000..94ad10511
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-5-4.js
@@ -0,0 +1,43 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-5-4.js
+ * @description Array.prototype.reduce throws TypeError if 'length' is 0 (subclassed Array, length overridden to 0 (type conversion)), no initVal
+ */
+
+
+function testcase() {
+ foo.prototype = new Array(1, 2, 3);
+ function foo() {}
+ var f = new foo();
+ f.length = 0;
+
+ function cb(){}
+ try {
+ f.reduce(cb);
+ }
+ catch (e) {
+ if (e instanceof TypeError) {
+ return true;
+ }
+ }
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-5-5.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-5-5.js
new file mode 100644
index 000000000..551837275
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-5-5.js
@@ -0,0 +1,43 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-5-5.js
+ * @description Array.prototype.reduce throws TypeError if 'length' is 0 (subclassed Array, length overridden to '0' (type conversion)), no initVal
+ */
+
+
+function testcase() {
+ foo.prototype = new Array(1, 2, 3);
+ function foo() {}
+ var f = new foo();
+ f.length = '0';
+
+ function cb(){}
+ try {
+ f.reduce(cb);
+ }
+ catch (e) {
+ if (e instanceof TypeError) {
+ return true;
+ }
+ }
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-5-6.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-5-6.js
new file mode 100644
index 000000000..9968a07fa
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-5-6.js
@@ -0,0 +1,45 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-5-6.js
+ * @description Array.prototype.reduce throws TypeError if 'length' is 0 (subclassed Array, length overridden with obj with valueOf), no initVal
+ */
+
+
+function testcase() {
+ foo.prototype = new Array(1, 2, 3);
+ function foo() {}
+ var f = new foo();
+
+ var o = { valueOf: function () { return 0;}};
+ f.length = o;
+
+ function cb(){}
+ try {
+ f.reduce(cb);
+ }
+ catch (e) {
+ if (e instanceof TypeError) {
+ return true;
+ }
+ }
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-5-7.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-5-7.js
new file mode 100644
index 000000000..c3ca56875
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-5-7.js
@@ -0,0 +1,51 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-5-7.js
+ * @description Array.prototype.reduce throws TypeError if 'length' is 0 (subclassed Array, length overridden with obj w/o valueOf (toString)), no initVal
+ */
+
+
+function testcase() {
+ foo.prototype = new Array(1, 2, 3);
+ function foo() {}
+ var f = new foo();
+
+ var o = { toString: function () { return '0';}};
+ f.length = o;
+
+ // objects inherit the default valueOf method of the Object object;
+ // that simply returns the itself. Since the default valueOf() method
+ // does not return a primitive value, ES next tries to convert the object
+ // to a number by calling its toString() method and converting the
+ // resulting string to a number.
+
+ function cb(){}
+ try {
+ f.reduce(cb);
+ }
+ catch (e) {
+ if (e instanceof TypeError) {
+ return true;
+ }
+ }
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-5-8.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-5-8.js
new file mode 100644
index 000000000..762b39219
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-5-8.js
@@ -0,0 +1,58 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-5-8.js
+ * @description Array.prototype.reduce throws TypeError if 'length' is 0 (subclassed Array, length overridden with []), no initVal
+ */
+
+
+function testcase() {
+ foo.prototype = new Array(1, 2, 3);
+ function foo() {}
+ var f = new foo();
+
+ f.length = [];
+
+ // objects inherit the default valueOf method of the Object object;
+ // that simply returns the itself. Since the default valueOf() method
+ // does not return a primitive value, ES next tries to convert the object
+ // to a number by calling its toString() method and converting the
+ // resulting string to a number.
+ //
+ // The toString( ) method on Array converts the array elements to strings,
+ // then returns the result of concatenating these strings, with commas in
+ // between. An array with no elements converts to the empty string, which
+ // converts to the number 0. If an array has a single element that is a
+ // number n, the array converts to a string representation of n, which is
+ // then converted back to n itself. If an array contains more than one element,
+ // or if its one element is not a number, the array converts to NaN.
+
+ function cb(){}
+ try {
+ f.reduce(cb);
+ }
+ catch (e) {
+ if (e instanceof TypeError) {
+ return true;
+ }
+ }
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-5-9.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-5-9.js
new file mode 100644
index 000000000..652170d17
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-5-9.js
@@ -0,0 +1,36 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-5-9.js
+ * @description Array.prototype.reduce - 'initialValue' is returned if 'len' is 0 and 'initialValue' is present
+ */
+
+
+function testcase() {
+
+ var accessed = false;
+ function callbackfn(prevVal, curVal, idx, obj) {
+ accessed = true;
+ }
+
+ return [].reduce(callbackfn, 3) === 3 && !accessed;
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-7-1.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-7-1.js
new file mode 100644
index 000000000..b24bc1029
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-7-1.js
@@ -0,0 +1,36 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-7-1.js
+ * @description Array.prototype.reduce returns initialValue if 'length' is 0 and initialValue is present (empty array)
+ */
+
+
+function testcase() {
+ function cb(){}
+
+ try {
+ if([].reduce(cb,1) === 1)
+ return true;
+ }
+ catch (e) { }
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-7-10.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-7-10.js
new file mode 100644
index 000000000..81f87ad5b
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-7-10.js
@@ -0,0 +1,32 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-7-10.js
+ * @description Array.prototype.reduce - 'initialValue' is present
+ */
+
+
+function testcase() {
+
+ var str = "initialValue is present";
+ return str === [].reduce(function () { }, str);
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-7-11.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-7-11.js
new file mode 100644
index 000000000..fa0f2d69e
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-7-11.js
@@ -0,0 +1,32 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-7-11.js
+ * @description Array.prototype.reduce - 'initialValue' is not present
+ */
+
+
+function testcase() {
+
+ var str = "initialValue is not present";
+ return str === [str].reduce(function () { });
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-7-2.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-7-2.js
new file mode 100644
index 000000000..2bb231caf
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-7-2.js
@@ -0,0 +1,40 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-7-2.js
+ * @description Array.prototype.reduce returns initialValue if 'length' is 0 and initialValue is present (subclassed Array, length overridden to null (type conversion))
+ */
+
+
+function testcase() {
+ foo.prototype = new Array(1, 2, 3);
+ function foo() {}
+ var f = new foo();
+ f.length = null;
+
+ function cb(){}
+ try {
+ if(f.reduce(cb,1) === 1)
+ return true;
+ }
+ catch (e) { }
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-7-3.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-7-3.js
new file mode 100644
index 000000000..256cc961b
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-7-3.js
@@ -0,0 +1,40 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-7-3.js
+ * @description Array.prototype.reduce returns initialValue if 'length' is 0 and initialValue is present (subclassed Array, length overridden to false (type conversion))
+ */
+
+
+function testcase() {
+ foo.prototype = new Array(1, 2, 3);
+ function foo() {}
+ var f = new foo();
+ f.length = false;
+
+ function cb(){}
+ try {
+ if(f.reduce(cb,1) === 1)
+ return true;
+ }
+ catch (e) { }
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-7-4.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-7-4.js
new file mode 100644
index 000000000..48c599083
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-7-4.js
@@ -0,0 +1,40 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-7-4.js
+ * @description Array.prototype.reduce returns initialValue if 'length' is 0 and initialValue is present (subclassed Array, length overridden to 0 (type conversion))
+ */
+
+
+function testcase() {
+ foo.prototype = new Array(1, 2, 3);
+ function foo() {}
+ var f = new foo();
+ f.length = 0;
+
+ function cb(){}
+ try {
+ if(f.reduce(cb,1) === 1)
+ return true;
+ }
+ catch (e) { }
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-7-5.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-7-5.js
new file mode 100644
index 000000000..34adb79fe
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-7-5.js
@@ -0,0 +1,40 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-7-5.js
+ * @description Array.prototype.reduce returns initialValue if 'length' is 0 and initialValue is present (subclassed Array, length overridden to '0' (type conversion))
+ */
+
+
+function testcase() {
+ foo.prototype = new Array(1, 2, 3);
+ function foo() {}
+ var f = new foo();
+ f.length = '0';
+
+ function cb(){}
+ try {
+ if(f.reduce(cb,1) === 1)
+ return true;
+ }
+ catch (e) { }
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-7-6.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-7-6.js
new file mode 100644
index 000000000..8a4183b8f
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-7-6.js
@@ -0,0 +1,42 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-7-6.js
+ * @description Array.prototype.reduce returns initialValue if 'length' is 0 and initialValue is present (subclassed Array, length overridden with obj with valueOf)
+ */
+
+
+function testcase() {
+ foo.prototype = new Array(1, 2, 3);
+ function foo() {}
+ var f = new foo();
+
+ var o = { valueOf: function () { return 0;}};
+ f.length = o;
+
+ function cb(){}
+ try {
+ if(f.reduce(cb,1) === 1)
+ return true;
+ }
+ catch (e) { }
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-7-7.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-7-7.js
new file mode 100644
index 000000000..51db604fe
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-7-7.js
@@ -0,0 +1,48 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-7-7.js
+ * @description Array.prototype.reduce returns initialValue if 'length' is 0 and initialValue is present (subclassed Array, length overridden with obj w/o valueOf (toString))
+ */
+
+
+function testcase() {
+ foo.prototype = new Array(1, 2, 3);
+ function foo() {}
+ var f = new foo();
+
+ var o = { toString: function () { return '0';}};
+ f.length = o;
+
+ // objects inherit the default valueOf method of the Object object;
+ // that simply returns the itself. Since the default valueOf() method
+ // does not return a primitive value, ES next tries to convert the object
+ // to a number by calling its toString() method and converting the
+ // resulting string to a number.
+
+ function cb(){}
+ try {
+ if(f.reduce(cb,1) === 1)
+ return true;
+ }
+ catch (e) { }
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-7-8.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-7-8.js
new file mode 100644
index 000000000..f01f77f49
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-7-8.js
@@ -0,0 +1,55 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-7-8.js
+ * @description Array.prototype.reduce returns initialValue if 'length' is 0 and initialValue is present (subclassed Array, length overridden with [])
+ */
+
+
+function testcase() {
+ foo.prototype = new Array(1, 2, 3);
+ function foo() {}
+ var f = new foo();
+
+ f.length = [];
+
+ // objects inherit the default valueOf method of the Object object;
+ // that simply returns the itself. Since the default valueOf() method
+ // does not return a primitive value, ES next tries to convert the object
+ // to a number by calling its toString() method and converting the
+ // resulting string to a number.
+ //
+ // The toString( ) method on Array converts the array elements to strings,
+ // then returns the result of concatenating these strings, with commas in
+ // between. An array with no elements converts to the empty string, which
+ // converts to the number 0. If an array has a single element that is a
+ // number n, the array converts to a string representation of n, which is
+ // then converted back to n itself. If an array contains more than one element,
+ // or if its one element is not a number, the array converts to NaN.
+
+ function cb(){}
+ try {
+ if(f.reduce(cb,1) === 1)
+ return true;
+ }
+ catch (e) { }
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-7-9.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-7-9.js
new file mode 100644
index 000000000..c977fa72b
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-7-9.js
@@ -0,0 +1,55 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-7-9.js
+ * @description Array.prototype.reduce returns initialValue if 'length' is 0 and initialValue is present (subclassed Array, length overridden with [0])
+ */
+
+
+function testcase() {
+ foo.prototype = new Array(1, 2, 3);
+ function foo() {}
+ var f = new foo();
+
+ f.length = [0];
+
+ // objects inherit the default valueOf method of the Object object;
+ // that simply returns the itself. Since the default valueOf() method
+ // does not return a primitive value, ES next tries to convert the object
+ // to a number by calling its toString() method and converting the
+ // resulting string to a number.
+ //
+ // The toString( ) method on Array converts the array elements to strings,
+ // then returns the result of concatenating these strings, with commas in
+ // between. An array with no elements converts to the empty string, which
+ // converts to the number 0. If an array has a single element that is a
+ // number n, the array converts to a string representation of n, which is
+ // then converted back to n itself. If an array contains more than one element,
+ // or if its one element is not a number, the array converts to NaN.
+
+ function cb(){}
+ try {
+ if(f.reduce(cb,1) === 1)
+ return true;
+ }
+ catch (e) { }
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-8-b-1.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-8-b-1.js
new file mode 100644
index 000000000..8dabc11d0
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-8-b-1.js
@@ -0,0 +1,48 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-8-b-1.js
+ * @description Array.prototype.reduce - no observable effects occur if 'len' is 0
+ */
+
+
+function testcase() {
+
+ var accessed = false;
+
+ var obj = { length: 0 };
+
+ Object.defineProperty(obj, "0", {
+ get: function () {
+ accessed = true;
+ return 10;
+ },
+ configurable: true
+ });
+
+ try {
+ Array.prototype.reduce.call(obj, function () { });
+ return false;
+ } catch (ex) {
+ return !accessed;
+ }
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-8-b-2.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-8-b-2.js
new file mode 100644
index 000000000..d22d7f3c3
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-8-b-2.js
@@ -0,0 +1,45 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-8-b-2.js
+ * @description Array.prototype.reduce - modifications to length don't change number of iterations in step 9
+ */
+
+
+function testcase() {
+
+ function callbackfn(prevVal, curVal, idx, obj) {
+ return idx;
+ }
+
+ var obj = { 3: 12, 4: 9, length: 4 };
+
+ Object.defineProperty(obj, "2", {
+ get: function () {
+ obj.length = 10;
+ return 11;
+ },
+ configurable: true
+ });
+
+ return Array.prototype.reduce.call(obj, callbackfn) === 3;
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-8-b-3.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-8-b-3.js
new file mode 100644
index 000000000..98947c34d
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-8-b-3.js
@@ -0,0 +1,62 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-8-b-3.js
+ * @description Array.prototype.reduce - loop is broken once 'kPresent' is true
+ */
+
+
+function testcase() {
+
+ var called = 0;
+ var testResult = false;
+ var firstCalled = 0;
+ var secondCalled = 0;
+
+ function callbackfn(prevVal, val, idx, obj) {
+ if (called === 0) {
+ testResult = (idx === 1);
+ }
+ called++;
+ }
+
+ var arr = [, , ];
+
+ Object.defineProperty(arr, "0", {
+ get: function () {
+ firstCalled++;
+ return 11;
+ },
+ configurable: true
+ });
+
+ Object.defineProperty(arr, "1", {
+ get: function () {
+ secondCalled++;
+ return 9;
+ },
+ configurable: true
+ });
+
+ arr.reduce(callbackfn);
+ return testResult && firstCalled === 1 && secondCalled === 1;
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-8-b-ii-1.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-8-b-ii-1.js
new file mode 100644
index 000000000..a87150731
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-8-b-ii-1.js
@@ -0,0 +1,41 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-8-b-ii-1.js
+ * @description Array.prototype.reduce - added properties in step 2 are visible here
+ */
+
+
+function testcase() {
+
+ var obj = { };
+
+ Object.defineProperty(obj, "length", {
+ get: function () {
+ obj[1] = "accumulator";
+ return 3;
+ },
+ configurable: true
+ });
+
+ return Array.prototype.reduce.call(obj, function () { }) === "accumulator";
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-8-b-ii-2.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-8-b-ii-2.js
new file mode 100644
index 000000000..8726677a5
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-8-b-ii-2.js
@@ -0,0 +1,42 @@
+/// Copyright (c) 2009 Microsoft Corporation
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-8-b-ii-2.js
+ * @description Array.prototype.reduce - deleted properties in step 2 are visible here
+ */
+
+
+function testcase() {
+
+ var obj = { 1: "accumulator", 2: "another" };
+
+ Object.defineProperty(obj, "length", {
+ get: function () {
+ delete obj[1];
+ return 3;
+ },
+ configurable: true
+ });
+
+ return "accumulator" !== Array.prototype.reduce.call(obj, function () { });
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-8-b-iii-1-1.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-8-b-iii-1-1.js
new file mode 100644
index 000000000..4c8560c5a
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-8-b-iii-1-1.js
@@ -0,0 +1,40 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-8-b-iii-1-1.js
+ * @description Array.prototype.reduce - element to be retrieved is own data property on an Array-like object
+ */
+
+
+function testcase() {
+
+ var testResult = false;
+ function callbackfn(prevVal, curVal, idx, obj) {
+ if (idx === 1) {
+ testResult = (prevVal === 0);
+ }
+ }
+
+ var obj = { 0: 0, 1: 1, 2: 2, length: 2 };
+ Array.prototype.reduce.call(obj, callbackfn);
+ return testResult;
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-8-b-iii-1-10.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-8-b-iii-1-10.js
new file mode 100644
index 000000000..addc48b36
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-8-b-iii-1-10.js
@@ -0,0 +1,48 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-8-b-iii-1-10.js
+ * @description Array.prototype.reduce - when element to be retrieved is own accessor property on an Array
+ */
+
+
+function testcase() {
+ var testResult = false;
+
+ function callbackfn(prevVal, curVal, idx, obj) {
+ if (idx === 1) {
+ testResult = (prevVal === 0);
+ }
+ }
+
+ var arr = [, 1, 2];
+
+ Object.defineProperty(arr, "0", {
+ get: function () {
+ return 0;
+ },
+ configurable: true
+ });
+
+ arr.reduce(callbackfn);
+ return testResult;
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-8-b-iii-1-11.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-8-b-iii-1-11.js
new file mode 100644
index 000000000..ea4b90c10
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-8-b-iii-1-11.js
@@ -0,0 +1,54 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-8-b-iii-1-11.js
+ * @description Array.prototype.reduce - element to be retrieved is own accessor property that overrides an inherited data property on an Array-like object
+ */
+
+
+function testcase() {
+
+ var testResult = false;
+ function callbackfn(prevVal, curVal, idx, obj) {
+ if (idx === 1) {
+ testResult = (prevVal === "9");
+ }
+ }
+
+ var proto = { 0: 0, 1: 1, 2: 2 };
+
+ var Con = function () { };
+ Con.prototype = proto;
+
+ var child = new Con();
+ child.length = 3;
+
+ Object.defineProperty(child, "0", {
+ get: function () {
+ return "9";
+ },
+ configurable: true
+ });
+
+ Array.prototype.reduce.call(child, callbackfn);
+ return testResult;
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-8-b-iii-1-12.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-8-b-iii-1-12.js
new file mode 100644
index 000000000..3ede3767e
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-8-b-iii-1-12.js
@@ -0,0 +1,53 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-8-b-iii-1-12.js
+ * @description Array.prototype.reduce - element to be retrieved is own accessor property that overrides an inherited data property on an Array
+ */
+
+
+function testcase() {
+ var testResult = false;
+
+ function callbackfn(prevVal, curVal, idx, obj) {
+ if (idx === 1) {
+ testResult = (prevVal === "9");
+ }
+ }
+
+ try {
+ Array.prototype[0] = 0;
+ var arr = [, 1, 2];
+
+ Object.defineProperty(arr, "0", {
+ get: function () {
+ return "9";
+ },
+ configurable: true
+ });
+
+ arr.reduce(callbackfn);
+ return testResult;
+ } finally {
+ delete Array.prototype[0];
+ }
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-8-b-iii-1-13.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-8-b-iii-1-13.js
new file mode 100644
index 000000000..9a025eb9e
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-8-b-iii-1-13.js
@@ -0,0 +1,61 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-8-b-iii-1-13.js
+ * @description Array.prototype.reduce - element to be retrieved is own accessor property that overrides an inherited accessor property on an Array-like object
+ */
+
+
+function testcase() {
+ var testResult = false;
+
+ function callbackfn(prevVal, curVal, idx, obj) {
+ if (idx === 1) {
+ testResult = (prevVal === "9");
+ }
+ }
+
+ var proto = { 1: 1, 2: 2};
+
+ Object.defineProperty(proto, "0", {
+ get: function () {
+ return 0;
+ },
+ configurable: true
+ });
+
+ var Con = function () { };
+ Con.prototype = proto;
+
+ var child = new Con();
+ child.length = 3;
+
+ Object.defineProperty(child, "0", {
+ get: function () {
+ return "9";
+ },
+ configurable: true
+ });
+
+ Array.prototype.reduce.call(child, callbackfn);
+ return testResult;
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-8-b-iii-1-14.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-8-b-iii-1-14.js
new file mode 100644
index 000000000..41bb76993
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-8-b-iii-1-14.js
@@ -0,0 +1,58 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-8-b-iii-1-14.js
+ * @description Array.prototype.reduce - element to be retrieved is own accessor property that overrides an inherited accessor property on an Array
+ */
+
+
+function testcase() {
+
+ var testResult = false;
+ function callbackfn(prevVal, curVal, idx, obj) {
+ if (idx === 1) {
+ testResult = (prevVal === "9");
+ }
+ }
+
+ try {
+ Object.defineProperty(Array.prototype, "0", {
+ get: function () {
+ return 0;
+ },
+ configurable: true
+ });
+
+ var arr = [, 1, 2];
+ Object.defineProperty(arr, "0", {
+ get: function () {
+ return "9";
+ },
+ configurable: true
+ });
+
+ arr.reduce(callbackfn);
+ return testResult;
+ } finally {
+ delete Array.prototype[0];
+ }
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-8-b-iii-1-15.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-8-b-iii-1-15.js
new file mode 100644
index 000000000..bacc90a1f
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-8-b-iii-1-15.js
@@ -0,0 +1,54 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-8-b-iii-1-15.js
+ * @description Array.prototype.reduce - element to be retrieved is inherited accessor property on an Array-like object
+ */
+
+
+function testcase() {
+
+ var testResult = false;
+ function callbackfn(prevVal, curVal, idx, obj) {
+ if (idx === 1) {
+ testResult = (prevVal === 0);
+ }
+ }
+
+ var proto = { 1: 1, 2: 2 };
+
+ Object.defineProperty(proto, "0", {
+ get: function () {
+ return 0;
+ },
+ configurable: true
+ });
+
+ var Con = function () { };
+ Con.prototype = proto;
+
+ var child = new Con();
+ child.length = 3;
+
+ Array.prototype.reduce.call(child, callbackfn);
+ return testResult;
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-8-b-iii-1-16.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-8-b-iii-1-16.js
new file mode 100644
index 000000000..3f62373e7
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-8-b-iii-1-16.js
@@ -0,0 +1,52 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-8-b-iii-1-16.js
+ * @description Array.prototype.reduce - element to be retrieved is inherited accessor property on an Array
+ */
+
+
+function testcase() {
+
+ var testResult = false;
+ function callbackfn(prevVal, curVal, idx, obj) {
+ if (idx === 1) {
+ testResult = (prevVal === 0);
+ }
+ }
+
+ try {
+ Object.defineProperty(Array.prototype, "0", {
+ get: function () {
+ return 0;
+ },
+ configurable: true
+ });
+
+ var arr = [, 1, 2];
+
+ arr.reduce(callbackfn);
+ return testResult;
+ } finally {
+ delete Array.prototype[0];
+ }
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-8-b-iii-1-17.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-8-b-iii-1-17.js
new file mode 100644
index 000000000..4c30b27bd
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-8-b-iii-1-17.js
@@ -0,0 +1,46 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-8-b-iii-1-17.js
+ * @description Array.prototype.reduce - element to be retrieved is own accessor property without a get function on an Array-like object
+ */
+
+
+function testcase() {
+
+ var testResult = false;
+ function callbackfn(prevVal, curVal, idx, obj) {
+ if (idx === 1) {
+ testResult = (prevVal === undefined);
+ }
+ }
+
+ var obj = { 1: 1, 2: 2, length: 3 };
+
+ Object.defineProperty(obj, "0", {
+ set: function () { },
+ configurable: true
+ });
+
+ Array.prototype.reduce.call(obj, callbackfn);
+ return testResult;
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-8-b-iii-1-18.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-8-b-iii-1-18.js
new file mode 100644
index 000000000..0de7e4646
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-8-b-iii-1-18.js
@@ -0,0 +1,46 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-8-b-iii-1-18.js
+ * @description Array.prototype.reduce - element to be retrieved is own accessor property without a get function on an Array
+ */
+
+
+function testcase() {
+
+ var testResult = false;
+ function callbackfn(prevVal, curVal, idx, obj) {
+ if (idx === 1) {
+ testResult = (prevVal === undefined);
+ }
+ }
+
+ var arr = [, 1, 2];
+
+ Object.defineProperty(arr, "0", {
+ set: function () { },
+ configurable: true
+ });
+
+ arr.reduce(callbackfn);
+ return testResult;
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-8-b-iii-1-19.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-8-b-iii-1-19.js
new file mode 100644
index 000000000..c6ca8a066
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-8-b-iii-1-19.js
@@ -0,0 +1,52 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-8-b-iii-1-19.js
+ * @description Array.prototype.reduce - element to be retrieved is own accessor property without a get function that overrides an inherited accessor property on an Array-like object
+ */
+
+
+function testcase() {
+
+ var testResult = false;
+ function callbackfn(prevVal, curVal, idx, obj) {
+ if (idx === 1) {
+ testResult = (prevVal === undefined);
+ }
+ }
+
+ try {
+ Object.prototype[0] = 0;
+
+ var obj = { 1: 1, 2: 2, length: 3 };
+
+ Object.defineProperty(obj, "0", {
+ set: function () { },
+ configurable: true
+ });
+
+ Array.prototype.reduce.call(obj, callbackfn);
+ return testResult;
+ } finally {
+ delete Object.prototype[0];
+ }
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-8-b-iii-1-2.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-8-b-iii-1-2.js
new file mode 100644
index 000000000..7e316da80
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-8-b-iii-1-2.js
@@ -0,0 +1,40 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-8-b-iii-1-2.js
+ * @description Array.prototype.reduce - element to be retrieved is own data property on an Array
+ */
+
+
+function testcase() {
+
+ var testResult = false;
+ function callbackfn(prevVal, curVal, idx, obj) {
+ if (idx === 1) {
+ testResult = (prevVal === 0);
+ }
+ }
+
+ var arr = [0, 1, 2];
+ arr.reduce(callbackfn);
+ return testResult;
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-8-b-iii-1-20.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-8-b-iii-1-20.js
new file mode 100644
index 000000000..8f6884b42
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-8-b-iii-1-20.js
@@ -0,0 +1,51 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-8-b-iii-1-20.js
+ * @description Array.prototype.reduce - element to be retrieved is own accessor property without a get function that overrides an inherited accessor property on an Array
+ */
+
+
+function testcase() {
+
+ var testResult = false;
+ function callbackfn(prevVal, curVal, idx, obj) {
+ if (idx === 1) {
+ testResult = (prevVal === undefined);
+ }
+ }
+
+ try {
+ Array.prototype[0] = 0;
+ var arr = [, 1, 2];
+ Object.defineProperty(arr, "0", {
+ set: function () { },
+ configurable: true
+ });
+
+ arr.reduce(callbackfn);
+ return testResult;
+
+ } finally {
+ delete Array.prototype[0];
+ }
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-8-b-iii-1-21.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-8-b-iii-1-21.js
new file mode 100644
index 000000000..7f7503403
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-8-b-iii-1-21.js
@@ -0,0 +1,52 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-8-b-iii-1-21.js
+ * @description Array.prototype.reduce - element to be retrieved is inherited accessor property without a get function on an Array-like object
+ */
+
+
+function testcase() {
+
+ var testResult = false;
+ function callbackfn(prevVal, curVal, idx, obj) {
+ if (idx === 1) {
+ testResult = (prevVal === undefined);
+ }
+ }
+
+ var proto = { 1: 1, 2: 2 };
+
+ Object.defineProperty(proto, "0", {
+ set: function () { },
+ configurable: true
+ });
+
+ var Con = function () { };
+ Con.prototype = proto;
+
+ var child = new Con();
+ child.length = 3;
+
+ Array.prototype.reduce.call(child, callbackfn);
+ return testResult;
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-8-b-iii-1-22.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-8-b-iii-1-22.js
new file mode 100644
index 000000000..b363d5c71
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-8-b-iii-1-22.js
@@ -0,0 +1,52 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-8-b-iii-1-22.js
+ * @description Array.prototype.reduce - element to be retrieved is inherited accessor property without a get function on an Array
+ */
+
+
+function testcase() {
+
+ var testResult = false;
+ function callbackfn(prevVal, curVal, idx, obj) {
+ if (idx === 1) {
+ testResult = (prevVal === undefined);
+ }
+ }
+
+ try {
+ Object.defineProperty(Array.prototype, "0", {
+ set: function () { },
+ configurable: true
+ });
+
+ var arr = [, 1, 2];
+
+ arr.reduce(callbackfn);
+ return testResult;
+
+ } finally {
+ delete Array.prototype[0];
+ }
+
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-8-b-iii-1-23.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-8-b-iii-1-23.js
new file mode 100644
index 000000000..a652ef95c
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-8-b-iii-1-23.js
@@ -0,0 +1,53 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-8-b-iii-1-23.js
+ * @description Array.prototype.reduce - This object is the global object which contains index property
+ */
+
+
+function testcase() {
+
+ var testResult = false;
+ function callbackfn(prevVal, curVal, idx, obj) {
+ if (idx === 1) {
+ testResult = (prevVal === 0);
+ }
+ }
+
+ try {
+ var oldLen = fnGlobalObject().length;
+ fnGlobalObject()[0] = 0;
+ fnGlobalObject()[1] = 1;
+ fnGlobalObject()[2] = 2;
+ fnGlobalObject().length = 3;
+
+ Array.prototype.reduce.call(fnGlobalObject(), callbackfn);
+ return testResult;
+
+ } finally {
+ delete fnGlobalObject()[0];
+ delete fnGlobalObject()[1];
+ delete fnGlobalObject()[2];
+ fnGlobalObject().length = oldLen;
+ }
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-8-b-iii-1-25.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-8-b-iii-1-25.js
new file mode 100644
index 000000000..61bb21c03
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-8-b-iii-1-25.js
@@ -0,0 +1,43 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-8-b-iii-1-25.js
+ * @description Array.prototype.reduce - This object is the Arguments object which implements its own property get method (number of arguments is less than number of parameters)
+ */
+
+
+function testcase() {
+
+ var testResult = false;
+ function callbackfn(prevVal, curVal, idx, obj) {
+ if (idx === 1) {
+ testResult = (prevVal === 0);
+ }
+ }
+
+ var func = function (a, b, c) {
+ Array.prototype.reduce.call(arguments, callbackfn);
+ };
+
+ func(0, 1);
+ return testResult;
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-8-b-iii-1-26.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-8-b-iii-1-26.js
new file mode 100644
index 000000000..5f3564493
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-8-b-iii-1-26.js
@@ -0,0 +1,44 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-8-b-iii-1-26.js
+ * @description Array.prototype.reduce - This object is the Arguments object which implements its own property get method (number of arguments equals number of parameters)
+ */
+
+
+function testcase() {
+
+ var testResult = false;
+ function callbackfn(prevVal, curVal, idx, obj) {
+ if (idx === 2) {
+ testResult = (prevVal === 1);
+ }
+ }
+
+ var func = function (a, b, c) {
+ delete arguments[0];
+ Array.prototype.reduce.call(arguments, callbackfn);
+ };
+
+ func(0, 1, 2);
+ return testResult;
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-8-b-iii-1-27.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-8-b-iii-1-27.js
new file mode 100644
index 000000000..769bf34d7
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-8-b-iii-1-27.js
@@ -0,0 +1,45 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-8-b-iii-1-27.js
+ * @description Array.prototype.reduce - This object is the Arguments object which implements its own property get method (number of arguments is greater than number of parameters)
+ */
+
+
+function testcase() {
+
+ var testResult = false;
+ function callbackfn(prevVal, curVal, idx, obj) {
+ if (idx === 3) {
+ testResult = (prevVal === 2);
+ }
+ }
+
+ var func = function (a, b, c) {
+ delete arguments[0];
+ delete arguments[1];
+ Array.prototype.reduce.call(arguments, callbackfn);
+ };
+
+ func(0, 1, 2, 3);
+ return testResult;
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-8-b-iii-1-28.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-8-b-iii-1-28.js
new file mode 100644
index 000000000..242f0756e
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-8-b-iii-1-28.js
@@ -0,0 +1,41 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-8-b-iii-1-28.js
+ * @description Array.prototype.reduce - applied to String object, which implements its own property get method
+ */
+
+
+function testcase() {
+
+ var testResult = false;
+ function callbackfn(prevVal, curVal, idx, obj) {
+ if (idx === 1) {
+ testResult = (prevVal === "0");
+ }
+ }
+
+ var str = new String("012");
+ Array.prototype.reduce.call(str, callbackfn);
+ return testResult;
+
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-8-b-iii-1-29.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-8-b-iii-1-29.js
new file mode 100644
index 000000000..7861f6f9d
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-8-b-iii-1-29.js
@@ -0,0 +1,48 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-8-b-iii-1-29.js
+ * @description Array.prototype.reduce - applied to Function object which implements its own property get method
+ */
+
+
+function testcase() {
+
+ var testResult = false;
+ function callbackfn(prevVal, curVal, idx, obj) {
+ if (idx === 1) {
+ testResult = (prevVal === 0);
+ }
+ }
+
+ var obj = function (a, b, c) {
+ return a + b + c;
+ };
+ obj[0] = 0;
+ obj[1] = 1;
+ obj[2] = 2;
+ obj[3] = 3;
+
+ Array.prototype.reduce.call(obj, callbackfn);
+ return testResult;
+
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-8-b-iii-1-3.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-8-b-iii-1-3.js
new file mode 100644
index 000000000..eb5762bb3
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-8-b-iii-1-3.js
@@ -0,0 +1,49 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-8-b-iii-1-3.js
+ * @description Array.prototype.reduce - element to be retrieved is own data property that overrides an inherited data property on an Array-like object
+ */
+
+
+function testcase() {
+
+ var testResult = false;
+ function callbackfn(prevVal, curVal, idx, obj) {
+ if (idx === 1) {
+ testResult = (prevVal === "9");
+ }
+ }
+
+ var proto = { 0: 0, 1: 1, 2: 2, length: 3 };
+ var Con = function () { };
+ Con.prototype = proto;
+
+ var child = new Con();
+ child[0] = "9";
+ child[1] = "1";
+ child.length = 3;
+
+ Array.prototype.reduce.call(child, callbackfn);
+ return testResult;
+
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-8-b-iii-1-30.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-8-b-iii-1-30.js
new file mode 100644
index 000000000..03a2f5fae
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-8-b-iii-1-30.js
@@ -0,0 +1,61 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-8-b-iii-1-30.js
+ * @description Array.prototype.reduce - element changed by getter on current iterations is observed in subsequent iterations on an Array
+ */
+
+
+function testcase() {
+
+ var testResult = false;
+ function callbackfn(prevVal, curVal, idx, obj) {
+ if (idx === 1) {
+ testResult = (curVal === 1);
+ }
+ }
+
+ var arr = [, , 2];
+ var preIterVisible = false;
+
+ Object.defineProperty(arr, "0", {
+ get: function () {
+ preIterVisible = true;
+ return 0;
+ },
+ configurable: true
+ });
+
+ Object.defineProperty(arr, "1", {
+ get: function () {
+ if (preIterVisible) {
+ return 1;
+ } else {
+ return 100;
+ }
+ },
+ configurable: true
+ });
+
+ arr.reduce(callbackfn);
+ return testResult;
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-8-b-iii-1-31.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-8-b-iii-1-31.js
new file mode 100644
index 000000000..d1123a552
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-8-b-iii-1-31.js
@@ -0,0 +1,62 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-8-b-iii-1-31.js
+ * @description Array.prototype.reduce - element changed by getter on current iterations is observed in subsequent iterations on an Array-like object
+ */
+
+
+function testcase() {
+
+ var testResult = false;
+ function callbackfn(prevVal, curVal, idx, obj) {
+ if (idx === 1) {
+ testResult = (curVal === 1);
+ }
+ }
+
+ var obj = { length: 2 };
+ var preIterVisible = false;
+
+ Object.defineProperty(obj, "0", {
+ get: function () {
+ preIterVisible = true;
+ return 0;
+ },
+ configurable: true
+ });
+
+ Object.defineProperty(obj, "1", {
+ get: function () {
+ if (preIterVisible) {
+ return 1;
+ } else {
+ return 100;
+ }
+ },
+ configurable: true
+ });
+
+ Array.prototype.reduce.call(obj, callbackfn);
+ return testResult;
+
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-8-b-iii-1-32.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-8-b-iii-1-32.js
new file mode 100644
index 000000000..65617e4d7
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-8-b-iii-1-32.js
@@ -0,0 +1,53 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-8-b-iii-1-32.js
+ * @description Array.prototype.reduce - exception in getter terminates iteration on an Array-like object
+ */
+
+
+function testcase() {
+
+ var accessed = false;
+ var testResult = false;
+ function callbackfn(prevVal, curVal, idx, obj) {
+ if (idx >= 1) {
+ accessed = true;
+ testResult = (prevVal === 0);
+ }
+ }
+
+ var obj = { 2: 2, 1: 1, length: 3 };
+ Object.defineProperty(obj, "0", {
+ get: function () {
+ throw new RangeError("unhandle exception happened in getter");
+ },
+ configurable: true
+ });
+
+ try {
+ Array.prototype.reduce.call(obj, callbackfn);
+ return false;
+ } catch (ex) {
+ return (ex instanceof RangeError) && !accessed && !testResult;
+ }
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-8-b-iii-1-33.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-8-b-iii-1-33.js
new file mode 100644
index 000000000..0c933f950
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-8-b-iii-1-33.js
@@ -0,0 +1,54 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-8-b-iii-1-33.js
+ * @description Array.prototype.reduce - exception in getter terminates iteration on an Array
+ */
+
+
+function testcase() {
+
+ var accessed = false;
+ var testResult = false;
+ function callbackfn(prevVal, curVal, idx, obj) {
+ if (idx >= 1) {
+ accessed = true;
+ testResult = (prevVal === 0);
+ }
+ }
+
+ var arr = [, 1, 2];
+
+ Object.defineProperty(arr, "0", {
+ get: function () {
+ throw new RangeError("unhandle exception happened in getter");
+ },
+ configurable: true
+ });
+
+ try {
+ arr.reduce(callbackfn);
+ return false;
+ } catch (ex) {
+ return (ex instanceof RangeError) && !accessed && !testResult;
+ }
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-8-b-iii-1-4.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-8-b-iii-1-4.js
new file mode 100644
index 000000000..791cd6c7a
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-8-b-iii-1-4.js
@@ -0,0 +1,45 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-8-b-iii-1-4.js
+ * @description Array.prototype.reduce - element to be retrieved is own data property that overrides an inherited data property on an Array
+ */
+
+
+function testcase() {
+
+ var testResult = false;
+ function callbackfn(prevVal, curVal, idx, obj) {
+ if (idx === 1) {
+ testResult = (prevVal === 0);
+ }
+ }
+
+ try {
+ Array.prototype[0] = "9";
+ [0, 1, 2].reduce(callbackfn);
+ return testResult;
+
+ } finally {
+ delete Array.prototype[0];
+ }
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-8-b-iii-1-5.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-8-b-iii-1-5.js
new file mode 100644
index 000000000..95790defc
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-8-b-iii-1-5.js
@@ -0,0 +1,59 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-8-b-iii-1-5.js
+ * @description Array.prototype.reduce - element to be retrieved is own data property that overrides an inherited accessor property on an Array-like object
+ */
+
+
+function testcase() {
+
+ var testResult = false;
+ function callbackfn(prevVal, curVal, idx, obj) {
+ if (idx === 1) {
+ testResult = (prevVal === "9");
+ }
+ }
+
+ var proto = {};
+
+ Object.defineProperty(proto, "0", {
+ get: function () {
+ return 0;
+ },
+ configurable: true
+ });
+
+ var Con = function () { };
+ Con.prototype = proto;
+
+ var child = new Con();
+ child.length = 2;
+ Object.defineProperty(child, "0", {
+ value: "9",
+ configurable: true
+ });
+ child[1] = "1";
+
+ Array.prototype.reduce.call(child, callbackfn);
+ return testResult;
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-8-b-iii-1-6.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-8-b-iii-1-6.js
new file mode 100644
index 000000000..e39ca5862
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-8-b-iii-1-6.js
@@ -0,0 +1,50 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-8-b-iii-1-6.js
+ * @description Array.prototype.reduce - element to be retrieved is own data property that overrides an inherited accessor property on an Array
+ */
+
+
+function testcase() {
+
+ var testResult = false;
+ function callbackfn(prevVal, curVal, idx, obj) {
+ if (idx === 1) {
+ testResult = (prevVal === 0);
+ }
+ }
+
+ try {
+ Object.defineProperty(Array.prototype, "0", {
+ get: function () {
+ return "5";
+ },
+ configurable: true
+ });
+
+ [0, 1, 2].reduce(callbackfn);
+ return testResult;
+ } finally {
+ delete Array.prototype[0];
+ }
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-8-b-iii-1-7.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-8-b-iii-1-7.js
new file mode 100644
index 000000000..4cbba2542
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-8-b-iii-1-7.js
@@ -0,0 +1,46 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-8-b-iii-1-7.js
+ * @description Array.prototype.reduce - element to be retrieved is inherited data property on an Array-like object
+ */
+
+
+function testcase() {
+
+ var testResult = false;
+ function callbackfn(prevVal, curVal, idx, obj) {
+ if (idx === 1) {
+ testResult = (prevVal === 0);
+ }
+ }
+
+ var proto = { 0: 0, 1: 1, 2: 2, length: 3 };
+ var Con = function () { };
+ Con.prototype = proto;
+
+ var child = new Con();
+ child.length = 3;
+
+ Array.prototype.reduce.call(child, callbackfn);
+ return testResult;
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-8-b-iii-1-8.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-8-b-iii-1-8.js
new file mode 100644
index 000000000..e6979c02f
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-8-b-iii-1-8.js
@@ -0,0 +1,48 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-8-b-iii-1-8.js
+ * @description Array.prototype.reduce - element to be retrieved is inherited data property on an Array
+ */
+
+
+function testcase() {
+
+ var testResult = false;
+ function callbackfn(prevVal, curVal, idx, obj) {
+ if (idx === 1) {
+ testResult = (prevVal === 0);
+ }
+ }
+
+ try {
+ Array.prototype[0] = 0;
+ Array.prototype[1] = 1;
+ Array.prototype[2] = 2;
+ [, , ,].reduce(callbackfn);
+ return testResult;
+ } finally {
+ delete Array.prototype[0];
+ delete Array.prototype[1];
+ delete Array.prototype[2];
+ }
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-8-b-iii-1-9.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-8-b-iii-1-9.js
new file mode 100644
index 000000000..e944a8b82
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-8-b-iii-1-9.js
@@ -0,0 +1,47 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-8-b-iii-1-9.js
+ * @description Array.prototype.reduce - element to be retrieved is own accessor property on an Array-like object
+ */
+
+
+function testcase() {
+
+ var testResult = false;
+ function callbackfn(prevVal, curVal, idx, obj) {
+ if (idx === 1) {
+ testResult = (prevVal === 0);
+ }
+ }
+
+ var obj = { 1: 1, 2: 2, length: 3 };
+ Object.defineProperty(obj, "0", {
+ get: function () {
+ return 0;
+ },
+ configurable: true
+ });
+
+ Array.prototype.reduce.call(obj, callbackfn);
+ return testResult;
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-8-c-1.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-8-c-1.js
new file mode 100644
index 000000000..97b5a60b4
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-8-c-1.js
@@ -0,0 +1,42 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-8-c-1.js
+ * @description Array.prototype.reduce throws TypeError when Array is empty and initialValue is not present
+ */
+
+
+function testcase() {
+
+ function callbackfn(prevVal, curVal, idx, obj)
+ {
+ }
+
+ var arr = new Array(10);
+ try {
+ arr.reduce(callbackfn);
+ }
+ catch(e) {
+ if(e instanceof TypeError)
+ return true;
+ }
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-8-c-2.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-8-c-2.js
new file mode 100644
index 000000000..bf7b2cd29
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-8-c-2.js
@@ -0,0 +1,44 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-8-c-2.js
+ * @description Array.prototype.reduce throws TypeError when elements assigned values are deleted by reducing array length and initialValue is not present
+ */
+
+
+function testcase() {
+
+ function callbackfn(prevVal, curVal, idx, obj)
+ {
+ }
+
+ var arr = new Array(10);
+ arr[9] = 1;
+ arr.length = 5;
+ try {
+ arr.reduce(callbackfn);
+ }
+ catch(e) {
+ if(e instanceof TypeError)
+ return true;
+ }
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-8-c-3.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-8-c-3.js
new file mode 100644
index 000000000..7f541f99e
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-8-c-3.js
@@ -0,0 +1,47 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-8-c-3.js
+ * @description Array.prototype.reduce throws TypeError when elements assigned values are deleted and initialValue is not present
+ */
+
+
+function testcase() {
+
+ function callbackfn(prevVal, curVal, idx, obj)
+ {
+ }
+
+ var arr = [1,2,3,4,5];
+ delete arr[0];
+ delete arr[1];
+ delete arr[2];
+ delete arr[3];
+ delete arr[4];
+ try {
+ arr.reduce(callbackfn);
+ }
+ catch(e) {
+ if(e instanceof TypeError)
+ return true;
+ }
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-8-c-4.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-8-c-4.js
new file mode 100644
index 000000000..1e11b5f50
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-8-c-4.js
@@ -0,0 +1,41 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-8-c-4.js
+ * @description Array.prototype.reduce doesn't throw error when array has no own properties but prototype contains a single property
+ */
+
+
+function testcase() {
+
+ var arr = [, , , ];
+
+ try {
+ Array.prototype[1] = "prototype";
+ arr.reduce(function () { });
+ return true;
+ } catch (ex) {
+ return false;
+ } finally {
+ delete Array.prototype[1];
+ }
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-8-c-5.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-8-c-5.js
new file mode 100644
index 000000000..e7b2efd01
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-8-c-5.js
@@ -0,0 +1,48 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-8-c-5.js
+ * @description Array.prototype.reduce - if exception occurs, it occurs after any side-effects that might be produced by step 2
+ */
+
+
+function testcase() {
+
+ var obj = { };
+
+ var accessed = false;
+
+ Object.defineProperty(obj, "length", {
+ get: function () {
+ accessed = true;
+ return 2;
+ },
+ configurable: true
+ });
+
+ try {
+ Array.prototype.reduce.call(obj, function () { });
+ return false;
+ } catch (ex) {
+ return (ex instanceof TypeError) && accessed;
+ }
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-8-c-6.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-8-c-6.js
new file mode 100644
index 000000000..07451f483
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-8-c-6.js
@@ -0,0 +1,53 @@
+/// Copyright (c) 2009 Microsoft Corporation
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-8-c-6.js
+ * @description Array.prototype.reduce - if exception occurs, it occurs after any side-effects that might be produced by step 3
+ */
+
+
+function testcase() {
+
+ var obj = {};
+
+ var accessed = false;
+
+ Object.defineProperty(obj, "length", {
+ get: function () {
+ return {
+ toString: function () {
+ accessed = true;
+ return "2";
+ }
+ };
+ },
+ configurable: true
+ });
+
+ try {
+ Array.prototype.reduce.call(obj, function () { });
+ return false;
+ } catch (ex) {
+ return (ex instanceof TypeError) && accessed;
+ }
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-8-c-7.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-8-c-7.js
new file mode 100644
index 000000000..8773999d7
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-8-c-7.js
@@ -0,0 +1,45 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-8-c-7.js
+ * @description Array.prototype.reduce - the exception is not thrown if exception was thrown by step 2
+ */
+
+
+function testcase() {
+
+ var obj = {};
+
+ Object.defineProperty(obj, "length", {
+ get: function () {
+ throw new SyntaxError();
+ },
+ configurable: true
+ });
+
+ try {
+ Array.prototype.reduce.call(obj, function () { });
+ return false;
+ } catch (ex) {
+ return !(ex instanceof TypeError);
+ }
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-8-c-8.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-8-c-8.js
new file mode 100644
index 000000000..6500bee7f
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-8-c-8.js
@@ -0,0 +1,50 @@
+/// Copyright (c) 2009 Microsoft Corporation
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-8-c-8.js
+ * @description Array.prototype.reduce - the exception is not thrown if exception was thrown by step 3
+ */
+
+
+function testcase() {
+
+ var obj = {};
+
+ Object.defineProperty(obj, "length", {
+ get: function () {
+ return {
+ toString: function () {
+ throw new SyntaxError();
+ }
+ };
+ },
+ configurable: true
+ });
+
+ try {
+ Array.prototype.reduce.call(obj, function () { });
+ return false;
+ } catch (ex) {
+ return !(ex instanceof TypeError);
+ }
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-1.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-1.js
new file mode 100644
index 000000000..1b4573152
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-1.js
@@ -0,0 +1,37 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-1.js
+ * @description Array.prototype.reduce doesn't consider new elements added to array after it is called
+ */
+
+
+function testcase() {
+ function callbackfn(prevVal, curVal, idx, obj) {
+ arr[5] = 6;
+ arr[2] = 3;
+ return prevVal + curVal;
+ }
+
+ var arr = [1, 2, , 4, '5'];
+ return arr.reduce(callbackfn) === "105";
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-10.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-10.js
new file mode 100644
index 000000000..ab35d8304
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-10.js
@@ -0,0 +1,38 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-10.js
+ * @description Array.prototype.reduce called with an initial value doesn't consider new elements added to array after it is called
+ */
+
+
+function testcase() {
+
+ function callbackfn(prevVal, curVal, idx, obj) {
+ arr[5] = 6;
+ arr[2] = 3;
+ return prevVal + curVal;
+ }
+
+ var arr = [1,2,,4,'5'];
+ return arr.reduce(callbackfn, "") === "12345";
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-2.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-2.js
new file mode 100644
index 000000000..14642716b
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-2.js
@@ -0,0 +1,41 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-2.js
+ * @description Array.prototype.reduce considers new value of elements in array after it is called
+ */
+
+
+function testcase() {
+
+ function callbackfn(prevVal, curVal, idx, obj)
+ {
+ arr[3] = -2;
+ arr[4] = -1;
+ return prevVal + curVal;
+ }
+
+ var arr = [1,2,3,4,5];
+ if(arr.reduce(callbackfn) === 3)
+ return true;
+
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-3.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-3.js
new file mode 100644
index 000000000..533c50a36
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-3.js
@@ -0,0 +1,41 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-3.js
+ * @description Array.prototype.reduce doesn't visit deleted elements in array after the call
+ */
+
+
+function testcase() {
+
+ function callbackfn(prevVal, curVal, idx, obj)
+ {
+ delete arr[3];
+ delete arr[4];
+ return prevVal + curVal;
+ }
+
+ var arr = ['1',2,3,4,5];
+ if(arr.reduce(callbackfn) === "123" ) // two elements deleted
+ return true;
+
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-4.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-4.js
new file mode 100644
index 000000000..b23695168
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-4.js
@@ -0,0 +1,40 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-4.js
+ * @description Array.prototype.reduce doesn't visit deleted elements when Array.length is decreased
+ */
+
+
+function testcase() {
+
+ function callbackfn(prevVal, curVal, idx, obj)
+ {
+ arr.length = 2;
+ return prevVal + curVal;
+ }
+
+ var arr = [1,2,3,4,5];
+ if(arr.reduce(callbackfn) === 3 )
+ return true;
+
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-5.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-5.js
new file mode 100644
index 000000000..3d80078b7
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-5.js
@@ -0,0 +1,40 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-5.js
+ * @description Array.prototype.reduce - callbackfn not called for array with one element
+ */
+
+
+function testcase() {
+
+ var callCnt = 0;
+ function callbackfn(prevVal, curVal, idx, obj)
+ {
+ callCnt++;
+ return 2;
+ }
+
+ var arr = [1];
+ if(arr.reduce(callbackfn) === 1 && callCnt === 0 )
+ return true;
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-6.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-6.js
new file mode 100644
index 000000000..b90b4dc7e
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-6.js
@@ -0,0 +1,45 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-6.js
+ * @description Array.prototype.reduce visits deleted element in array after the call when same index is also present in prototype
+ */
+
+
+function testcase() {
+
+ function callbackfn(prevVal, curVal, idx, obj)
+ {
+ delete arr[3];
+ delete arr[4];
+ return prevVal + curVal;
+ }
+
+ Array.prototype[4] = 5;
+ var arr = ['1',2,3,4,5];
+ var res = arr.reduce(callbackfn);
+ delete Array.prototype[4];
+
+ if(res === "1235" ) //one element acually deleted
+ return true;
+
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-7.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-7.js
new file mode 100644
index 000000000..76d002e54
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-7.js
@@ -0,0 +1,37 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-7.js
+ * @description Array.prototype.reduce stops calling callbackfn once the array is deleted during the call
+ */
+
+
+function testcase() {
+ function callbackfn(prevVal, curVal, idx, obj) {
+ delete o.arr;
+ return prevVal + curVal;
+ }
+
+ var o = new Object();
+ o.arr = ['1', 2, 3, 4, 5];
+ return o.arr.reduce(callbackfn) === "12345" && !o.hasOwnProperty("arr");
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-8.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-8.js
new file mode 100644
index 000000000..90290247e
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-8.js
@@ -0,0 +1,48 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-8.js
+ * @description Array.prototype.reduce - no observable effects occur if 'len' is 0
+ */
+
+
+function testcase() {
+
+ var accessed = false;
+ var callbackAccessed = false;
+ function callbackfn() {
+ callbackAccessed = true;
+ }
+
+ var obj = { length: 0 };
+
+ Object.defineProperty(obj, "0", {
+ get: function () {
+ accessed = true;
+ return 10;
+ },
+ configurable: true
+ });
+
+ Array.prototype.reduce.call(obj, function () { }, "initialValue");
+ return !accessed && !callbackAccessed;
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-9.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-9.js
new file mode 100644
index 000000000..3ba743938
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-9.js
@@ -0,0 +1,47 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-9.js
+ * @description Array.prototype.reduce - modifications to length don't change number of iterations in step 9
+ */
+
+
+function testcase() {
+ var called = 0;
+ function callbackfn(accum, val, idx, obj) {
+ called++;
+ return accum + val;
+ }
+
+ var arr = [0, 1, 2, 3];
+ Object.defineProperty(arr, "0", {
+ get: function () {
+ arr.length = 2;
+ return 0;
+ },
+ configurable: true
+ });
+
+ var newAccum = arr.reduce(callbackfn, "initialValue");
+
+ return newAccum === "initialValue01" && called === 2;
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-b-1.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-b-1.js
new file mode 100644
index 000000000..da2c02c23
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-b-1.js
@@ -0,0 +1,39 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-b-1.js
+ * @description Array.prototype.reduce returns initialvalue when Array is empty and initialValue is present
+ */
+
+
+function testcase() {
+
+ function callbackfn(prevVal, curVal, idx, obj)
+ {
+ }
+
+ var arr = new Array(10);
+
+ if(arr.reduce(callbackfn,5) === 5)
+ return true;
+
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-b-10.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-b-10.js
new file mode 100644
index 000000000..83101d1d8
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-b-10.js
@@ -0,0 +1,57 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-b-10.js
+ * @description Array.prototype.reduce - deleting property of prototype in step 8 causes deleted index property not to be visited on an Array-like Object
+ */
+
+
+function testcase() {
+
+ var accessed = false;
+ var testResult = true;
+
+ function callbackfn(accum, val, idx, obj) {
+ accessed = true;
+ if (idx === 3) {
+ testResult = false;
+ }
+ }
+
+ var obj = { 2: 2, length: 20 };
+
+ Object.defineProperty(obj, "0", {
+ get: function () {
+ delete Object.prototype[3];
+ return 0;
+ },
+ configurable: true
+ });
+
+ try {
+ Object.prototype[3] = 1;
+ Array.prototype.reduce.call(obj, callbackfn);
+ return testResult && accessed;
+ } finally {
+ delete Object.prototype[3];
+ }
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-b-11.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-b-11.js
new file mode 100644
index 000000000..dcdc2abf2
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-b-11.js
@@ -0,0 +1,56 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-b-11.js
+ * @description Array.prototype.reduce - deleting property of prototype in step 8 causes deleted index property not to be visited on an Array
+ */
+
+
+function testcase() {
+
+ var accessed = false;
+ var testResult = true;
+
+ function callbackfn(accum, val, idx, obj) {
+ accessed = true;
+ if (idx === 1) {
+ testResult = false;
+ }
+ }
+
+ var arr = [, , , 3];
+ Object.defineProperty(arr, "0", {
+ get: function () {
+ delete Array.prototype[1];
+ return 0;
+ },
+ configurable: true
+ });
+
+ try {
+ Array.prototype[1] = 1;
+ arr.reduce(callbackfn);
+ return testResult && accessed;
+ } finally {
+ delete Array.prototype[1];
+ }
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-b-12.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-b-12.js
new file mode 100644
index 000000000..f2c31feb3
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-b-12.js
@@ -0,0 +1,55 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-b-12.js
+ * @description Array.prototype.reduce - deleting own property with prototype property in step 8 causes prototype index property to be visited on an Array-like object
+ */
+
+
+function testcase() {
+
+ var testResult = false;
+
+ function callbackfn(accum, val, idx, obj) {
+ if (idx === 1 && val === 1) {
+ testResult = true;
+ }
+ }
+
+ var obj = { 0: 0, 1: 111, 4: 10, length: 10 };
+
+ Object.defineProperty(obj, "0", {
+ get: function () {
+ delete obj[1];
+ return 0;
+ },
+ configurable: true
+ });
+
+ try {
+ Object.prototype[1] = 1;
+ Array.prototype.reduce.call(obj, callbackfn);
+ return testResult;
+ } finally {
+ delete Object.prototype[1];
+ }
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-b-13.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-b-13.js
new file mode 100644
index 000000000..a229a3461
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-b-13.js
@@ -0,0 +1,54 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-b-13.js
+ * @description Array.prototype.reduce - deleting own property with prototype property in step 8 causes prototype index property to be visited on an Array
+ */
+
+
+function testcase() {
+
+ var testResult = false;
+
+ function callbackfn(accum, val, idx, obj) {
+ if (idx === 1 && val === 1) {
+ testResult = true;
+ }
+ }
+ var arr = [0, 111];
+
+ Object.defineProperty(arr, "0", {
+ get: function () {
+ delete arr[1];
+ return 0;
+ },
+ configurable: true
+ });
+
+ try {
+ Array.prototype[1] = 1;
+ arr.reduce(callbackfn);
+ return testResult;
+ } finally {
+ delete Array.prototype[1];
+ }
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-b-14.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-b-14.js
new file mode 100644
index 000000000..694b89f7a
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-b-14.js
@@ -0,0 +1,53 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-b-14.js
+ * @description Array.prototype.reduce - decreasing length of array in step 8 causes deleted index property not to be visited
+ */
+
+
+function testcase() {
+
+ var accessed = false;
+ var testResult = true;
+
+ function callbackfn(accum, val, idx, obj) {
+ accessed = true;
+ if (idx === 2) {
+ testResult = false;
+ }
+ }
+
+ var arr = [0, 1, 2, 3];
+
+ Object.defineProperty(arr, "0", {
+ get: function () {
+ arr.length = 2;
+ return 0;
+ },
+ configurable: true
+ });
+
+ arr.reduce(callbackfn);
+
+ return testResult && accessed;
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-b-15.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-b-15.js
new file mode 100644
index 000000000..3910a7607
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-b-15.js
@@ -0,0 +1,61 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-b-15.js
+ * @description Array.prototype.reduce - decreasing length of array with prototype property in step 8 causes prototype index property to be visited
+ */
+
+
+function testcase() {
+
+ var testResult = false;
+
+ function callbackfn(accum, val, idx, obj) {
+ if (idx === 2 && val === "prototype") {
+ testResult = true;
+ }
+ }
+ var arr = [0, 1, 2, 3];
+
+ try {
+ Object.defineProperty(Array.prototype, "2", {
+ get: function () {
+ return "prototype";
+ },
+ configurable: true
+ });
+
+ Object.defineProperty(arr, "0", {
+ get: function () {
+ arr.length = 2;
+ return 1;
+ },
+ configurable: true
+ });
+
+ arr.reduce(callbackfn);
+
+ return testResult;
+ } finally {
+ delete Array.prototype[2];
+ }
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-b-16.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-b-16.js
new file mode 100644
index 000000000..4bc9ef160
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-b-16.js
@@ -0,0 +1,58 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-b-16.js
+ * @description Array.prototype.reduce - decreasing length of array in step 8 does not delete non-configurable properties
+ */
+
+
+function testcase() {
+
+ var testResult = false;
+
+ function callbackfn(accum, val, idx, obj) {
+ if (idx === 2 && val === "unconfigurable") {
+ testResult = true;
+ }
+ }
+
+ var arr = [0, 1, 2, 3];
+
+ Object.defineProperty(arr, "2", {
+ get: function () {
+ return "unconfigurable";
+ },
+ configurable: false
+ });
+
+ Object.defineProperty(arr, "0", {
+ get: function () {
+ arr.length = 2;
+ return 1;
+ },
+ configurable: true
+ });
+
+ arr.reduce(callbackfn);
+
+ return testResult;
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-b-17.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-b-17.js
new file mode 100644
index 000000000..2df1d0a43
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-b-17.js
@@ -0,0 +1,55 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-b-17.js
+ * @description Array.prototype.reduce - properties added into own object are visited on an Array-like object
+ */
+
+
+function testcase() {
+
+ var testResult = false;
+
+ function callbackfn(accum, val, idx, obj) {
+ if (idx === 3 && val === 3) {
+ testResult = true;
+ }
+ }
+
+ var obj = { length: 5 };
+
+ Object.defineProperty(obj, "1", {
+ get: function () {
+ Object.defineProperty(obj, "3", {
+ get: function () {
+ return 3;
+ },
+ configurable: true
+ });
+ return 1;
+ },
+ configurable: true
+ });
+
+ Array.prototype.reduce.call(obj, callbackfn, "initialValue");
+ return testResult;
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-b-18.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-b-18.js
new file mode 100644
index 000000000..fdbdd22d2
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-b-18.js
@@ -0,0 +1,55 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-b-18.js
+ * @description Array.prototype.reduce - properties added into own object are visited on an Array
+ */
+
+
+function testcase() {
+
+ var testResult = false;
+
+ function callbackfn(accum, val, idx, obj) {
+ if (idx === 1 && val === 1) {
+ testResult = true;
+ }
+ }
+
+ var arr = [0, , 2];
+
+ Object.defineProperty(arr, "0", {
+ get: function () {
+ Object.defineProperty(arr, "1", {
+ get: function () {
+ return 1;
+ },
+ configurable: true
+ });
+ return 0;
+ },
+ configurable: true
+ });
+
+ arr.reduce(callbackfn, "initialValue");
+ return testResult;
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-b-19.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-b-19.js
new file mode 100644
index 000000000..fab2b0359
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-b-19.js
@@ -0,0 +1,59 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-b-19.js
+ * @description Array.prototype.reduce - properties added to prototype are visited on an Array-like object
+ */
+
+
+function testcase() {
+
+ var testResult = false;
+
+ function callbackfn(accum, val, idx, obj) {
+ if (idx === 1 && val === 6.99) {
+ testResult = true;
+ }
+ }
+
+ var obj = { length: 6 };
+
+ Object.defineProperty(obj, "0", {
+ get: function () {
+ Object.defineProperty(Object.prototype, "1", {
+ get: function () {
+ return 6.99;
+ },
+ configurable: true
+ });
+ return 0;
+ },
+ configurable: true
+ });
+
+ try {
+ Array.prototype.reduce.call(obj, callbackfn, "initialValue");
+ return testResult;
+ } finally {
+ delete Object.prototype[1];
+ }
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-b-2.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-b-2.js
new file mode 100644
index 000000000..01e899c52
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-b-2.js
@@ -0,0 +1,51 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-b-2.js
+ * @description Array.prototype.reduce - added properties in step 2 are visible here
+ */
+
+
+function testcase() {
+
+ var testResult = false;
+
+ function callbackfn(accum, val, idx, obj) {
+ if (idx === 2 && val === "2") {
+ testResult = true;
+ }
+ }
+
+ var obj = {};
+
+ Object.defineProperty(obj, "length", {
+ get: function () {
+ obj[2] = "2";
+ return 3;
+ },
+ configurable: true
+ });
+
+ Array.prototype.reduce.call(obj, callbackfn, "initialValue");
+
+ return testResult;
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-b-20.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-b-20.js
new file mode 100644
index 000000000..ad3ccf38c
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-b-20.js
@@ -0,0 +1,59 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-b-20.js
+ * @description Array.prototype.reduce - properties can be added to prototype are visited on an Array
+ */
+
+
+function testcase() {
+
+ var testResult = false;
+
+ function callbackfn(accum, val, idx, obj) {
+ if (idx === 1 && val === 6.99) {
+ testResult = true;
+ }
+ }
+
+ var arr = [0, , 2];
+
+ Object.defineProperty(arr, "0", {
+ get: function () {
+ Object.defineProperty(Array.prototype, "1", {
+ get: function () {
+ return 6.99;
+ },
+ configurable: true
+ });
+ return 0;
+ },
+ configurable: true
+ });
+
+ try {
+ arr.reduce(callbackfn, "initialValue");
+ return testResult;
+ } finally {
+ delete Array.prototype[1];
+ }
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-b-21.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-b-21.js
new file mode 100644
index 000000000..d693fb988
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-b-21.js
@@ -0,0 +1,59 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-b-21.js
+ * @description Array.prototype.reduce - deleting own property causes deleted index property not to be visited on an Array-like object
+ */
+
+
+function testcase() {
+
+ var accessed = false;
+ var testResult = true;
+
+ function callbackfn(accum, val, idx, obj) {
+ accessed = true;
+ if (idx === 1) {
+ testResult = false;
+ }
+ }
+
+ var obj = { 5: 10, length: 10 };
+
+ Object.defineProperty(obj, "1", {
+ get: function () {
+ return 6.99;
+ },
+ configurable: true
+ });
+
+ Object.defineProperty(obj, "0", {
+ get: function () {
+ delete obj[1];
+ return 0;
+ },
+ configurable: true
+ });
+
+ Array.prototype.reduce.call(obj, callbackfn, "initialValue");
+ return testResult && accessed;
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-b-22.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-b-22.js
new file mode 100644
index 000000000..133aa3290
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-b-22.js
@@ -0,0 +1,59 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-b-22.js
+ * @description Array.prototype.reduce - deleting own property causes deleted index property not to be visited on an Array
+ */
+
+
+function testcase() {
+
+ var accessed = false;
+ var testResult = true;
+
+ function callbackfn(accum, val, idx, obj) {
+ accessed = true;
+ if (idx === 1) {
+ testResult = false;
+ }
+ }
+
+ var arr = [1, 2, 4];
+
+ Object.defineProperty(arr, "1", {
+ get: function () {
+ return "6.99";
+ },
+ configurable: true
+ });
+
+ Object.defineProperty(arr, "0", {
+ get: function () {
+ delete arr[1];
+ return 0;
+ },
+ configurable: true
+ });
+
+ arr.reduce(callbackfn, "initialValue");
+ return testResult && accessed;
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-b-23.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-b-23.js
new file mode 100644
index 000000000..8a64119fe
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-b-23.js
@@ -0,0 +1,57 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-b-23.js
+ * @description Array.prototype.reduce - deleting property of prototype causes deleted index property not to be visited on an Array-like Object
+ */
+
+
+function testcase() {
+
+ var accessed = false;
+ var testResult = true;
+
+ function callbackfn(accum, val, idx, obj) {
+ accessed = true;
+ if (idx === 3) {
+ testResult = false;
+ }
+ }
+
+ var obj = { 2: 2, length: 20 };
+
+ Object.defineProperty(obj, "0", {
+ get: function () {
+ delete Object.prototype[3];
+ return 0;
+ },
+ configurable: true
+ });
+
+ try {
+ Object.prototype[3] = 1;
+ Array.prototype.reduce.call(obj, callbackfn, "initialValue");
+ return testResult && accessed;
+ } finally {
+ delete Object.prototype[3];
+ }
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-b-24.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-b-24.js
new file mode 100644
index 000000000..7f6669b37
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-b-24.js
@@ -0,0 +1,56 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-b-24.js
+ * @description Array.prototype.reduce - deleting property of prototype causes deleted index property not to be visited on an Array
+ */
+
+
+function testcase() {
+
+ var accessed = false;
+ var testResult = true;
+
+ function callbackfn(accum, val, idx, obj) {
+ accessed = true;
+ if (idx === 1) {
+ testResult = false;
+ }
+ }
+
+ var arr = [0, , , 3];
+ Object.defineProperty(arr, "0", {
+ get: function () {
+ delete Array.prototype[1];
+ return 0;
+ },
+ configurable: true
+ });
+
+ try {
+ Array.prototype[1] = 1;
+ arr.reduce(callbackfn, "initialValue");
+ return testResult && accessed;
+ } finally {
+ delete Array.prototype[1];
+ }
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-b-25.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-b-25.js
new file mode 100644
index 000000000..1283402a1
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-b-25.js
@@ -0,0 +1,55 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-b-25.js
+ * @description Array.prototype.reduce - deleting own property with prototype property causes prototype index property to be visited on an Array-like object
+ */
+
+
+function testcase() {
+
+ var testResult = false;
+
+ function callbackfn(accum, val, idx, obj) {
+ if (idx === 1 && val === 1) {
+ testResult = true;
+ }
+ }
+
+ var obj = { 0: 0, 1: 111, 4: 10, length: 10 };
+
+ Object.defineProperty(obj, "0", {
+ get: function () {
+ delete obj[1];
+ return 0;
+ },
+ configurable: true
+ });
+
+ try {
+ Object.prototype[1] = 1;
+ Array.prototype.reduce.call(obj, callbackfn, "initialValue");
+ return testResult;
+ } finally {
+ delete Object.prototype[1];
+ }
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-b-26.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-b-26.js
new file mode 100644
index 000000000..d2340588c
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-b-26.js
@@ -0,0 +1,54 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-b-26.js
+ * @description Array.prototype.reduce - deleting own property with prototype property causes prototype index property to be visited on an Array
+ */
+
+
+function testcase() {
+
+ var testResult = false;
+
+ function callbackfn(accum, val, idx, obj) {
+ if (idx === 1 && val === 1) {
+ testResult = true;
+ }
+ }
+ var arr = [0, 111];
+
+ Object.defineProperty(arr, "0", {
+ get: function () {
+ delete arr[1];
+ return 0;
+ },
+ configurable: true
+ });
+
+ try {
+ Array.prototype[1] = 1;
+ arr.reduce(callbackfn, "initialValue");
+ return testResult;
+ } finally {
+ delete Array.prototype[1];
+ }
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-b-27.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-b-27.js
new file mode 100644
index 000000000..35b64e662
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-b-27.js
@@ -0,0 +1,53 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-b-27.js
+ * @description Array.prototype.reduce - decreasing length of array causes deleted index property not to be visited
+ */
+
+
+function testcase() {
+
+ var accessed = false;
+ var testResult = true;
+
+ function callbackfn(accum, val, idx, obj) {
+ accessed = true;
+ if (idx === 2) {
+ testResult = false;
+ }
+ }
+
+ var arr = [0, 1, 2, 3];
+
+ Object.defineProperty(arr, "0", {
+ get: function () {
+ arr.length = 2;
+ return 0;
+ },
+ configurable: true
+ });
+
+ arr.reduce(callbackfn, "initialValue");
+
+ return testResult && accessed;
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-b-28.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-b-28.js
new file mode 100644
index 000000000..272f3ecf2
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-b-28.js
@@ -0,0 +1,61 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-b-28.js
+ * @description Array.prototype.reduce - decreasing length of array with prototype property causes prototype index property to be visited
+ */
+
+
+function testcase() {
+
+ var testResult = false;
+
+ function callbackfn(accum, val, idx, obj) {
+ if (idx === 2 && val === "prototype") {
+ testResult = true;
+ }
+ }
+ var arr = [0, 1, 2, 3];
+
+ try {
+ Object.defineProperty(Array.prototype, "2", {
+ get: function () {
+ return "prototype";
+ },
+ configurable: true
+ });
+
+ Object.defineProperty(arr, "0", {
+ get: function () {
+ arr.length = 2;
+ return 1;
+ },
+ configurable: true
+ });
+
+ arr.reduce(callbackfn, "initialValue");
+
+ return testResult;
+ } finally {
+ delete Array.prototype[2];
+ }
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-b-29.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-b-29.js
new file mode 100644
index 000000000..fb0fbebe3
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-b-29.js
@@ -0,0 +1,58 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-b-29.js
+ * @description Array.prototype.reduce - decreasing length of array does not delete non-configurable properties
+ */
+
+
+function testcase() {
+
+ var testResult = false;
+
+ function callbackfn(accum, val, idx, obj) {
+ if (idx === 2 && val === "unconfigurable") {
+ testResult = true;
+ }
+ }
+
+ var arr = [0, 1, 2, 3];
+
+ Object.defineProperty(arr, "2", {
+ get: function () {
+ return "unconfigurable";
+ },
+ configurable: false
+ });
+
+ Object.defineProperty(arr, "0", {
+ get: function () {
+ arr.length = 2;
+ return 1;
+ },
+ configurable: true
+ });
+
+ arr.reduce(callbackfn, "initialValue");
+
+ return testResult;
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-b-3.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-b-3.js
new file mode 100644
index 000000000..b20d34ee9
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-b-3.js
@@ -0,0 +1,53 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-b-3.js
+ * @description Array.prototype.reduce - deleted properties in step 2 are visible here
+ */
+
+
+function testcase() {
+
+ var accessed = false;
+ var testResult = true;
+
+ function callbackfn(accum, val, idx, obj) {
+ accessed = true;
+ if (idx === 2) {
+ testResult = false;
+ }
+ }
+
+ var obj = { 2: "2", 3: 10 };
+
+ Object.defineProperty(obj, "length", {
+ get: function () {
+ delete obj[2];
+ return 5;
+ },
+ configurable: true
+ });
+
+ Array.prototype.reduce.call(obj, callbackfn, "initialValue");
+
+ return accessed && testResult;
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-b-4.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-b-4.js
new file mode 100644
index 000000000..c229e3d77
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-b-4.js
@@ -0,0 +1,55 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-b-4.js
+ * @description Array.prototype.reduce - properties added into own object in step 8 are visited on an Array-like object
+ */
+
+
+function testcase() {
+
+ var testResult = false;
+
+ function callbackfn(accum, val, idx, obj) {
+ if (idx === 3 && val === 3) {
+ testResult = true;
+ }
+ }
+
+ var obj = { length: 5 };
+
+ Object.defineProperty(obj, "1", {
+ get: function () {
+ Object.defineProperty(obj, "3", {
+ get: function () {
+ return 3;
+ },
+ configurable: true
+ });
+ return 1;
+ },
+ configurable: true
+ });
+
+ Array.prototype.reduce.call(obj, callbackfn);
+ return testResult;
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-b-5.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-b-5.js
new file mode 100644
index 000000000..3f1e9896c
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-b-5.js
@@ -0,0 +1,55 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-b-5.js
+ * @description Array.prototype.reduce - properties added into own object in step 8 are visited on an Array
+ */
+
+
+function testcase() {
+
+ var testResult = false;
+
+ function callbackfn(accum, val, idx, obj) {
+ if (idx === 1 && val === 1) {
+ testResult = true;
+ }
+ }
+
+ var arr = [0, , 2];
+
+ Object.defineProperty(arr, "0", {
+ get: function () {
+ Object.defineProperty(arr, "1", {
+ get: function () {
+ return 1;
+ },
+ configurable: true
+ });
+ return 0;
+ },
+ configurable: true
+ });
+
+ arr.reduce(callbackfn);
+ return testResult;
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-b-6.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-b-6.js
new file mode 100644
index 000000000..caa0f36ab
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-b-6.js
@@ -0,0 +1,59 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-b-6.js
+ * @description Array.prototype.reduce - properties added to prototype in step 8 are visited on an Array-like object
+ */
+
+
+function testcase() {
+
+ var testResult = false;
+
+ function callbackfn(accum, val, idx, obj) {
+ if (idx === 1 && val === 6.99) {
+ testResult = true;
+ }
+ }
+
+ var obj = { length: 6 };
+
+ Object.defineProperty(obj, "0", {
+ get: function () {
+ Object.defineProperty(Object.prototype, "1", {
+ get: function () {
+ return 6.99;
+ },
+ configurable: true
+ });
+ return 0;
+ },
+ configurable: true
+ });
+
+ try {
+ Array.prototype.reduce.call(obj, callbackfn);
+ return testResult;
+ } finally {
+ delete Object.prototype[1];
+ }
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-b-7.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-b-7.js
new file mode 100644
index 000000000..806a34ae4
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-b-7.js
@@ -0,0 +1,59 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-b-7.js
+ * @description Array.prototype.reduce - properties added to prototype in step 8 are visited on an Array
+ */
+
+
+function testcase() {
+
+ var testResult = false;
+
+ function callbackfn(accum, val, idx, obj) {
+ if (idx === 1 && val === 6.99) {
+ testResult = true;
+ }
+ }
+
+ var arr = [0, , 2];
+
+ Object.defineProperty(arr, "0", {
+ get: function () {
+ Object.defineProperty(Array.prototype, "1", {
+ get: function () {
+ return 6.99;
+ },
+ configurable: true
+ });
+ return 0;
+ },
+ configurable: true
+ });
+
+ try {
+ arr.reduce(callbackfn);
+ return testResult;
+ } finally {
+ delete Array.prototype[1];
+ }
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-b-8.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-b-8.js
new file mode 100644
index 000000000..87603f280
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-b-8.js
@@ -0,0 +1,59 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-b-8.js
+ * @description Array.prototype.reduce - deleting own property in step 8 causes deleted index property not to be visited on an Array-like object
+ */
+
+
+function testcase() {
+
+ var accessed = false;
+ var testResult = true;
+
+ function callbackfn(accum, val, idx, obj) {
+ accessed = true;
+ if (idx === 1) {
+ testResult = false;
+ }
+ }
+
+ var obj = { 5: 10, length: 10 };
+
+ Object.defineProperty(obj, "1", {
+ get: function () {
+ return 6.99;
+ },
+ configurable: true
+ });
+
+ Object.defineProperty(obj, "0", {
+ get: function () {
+ delete obj[1];
+ return 0;
+ },
+ configurable: true
+ });
+
+ Array.prototype.reduce.call(obj, callbackfn);
+ return testResult && accessed;
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-b-9.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-b-9.js
new file mode 100644
index 000000000..a68a69522
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-b-9.js
@@ -0,0 +1,52 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-b-9.js
+ * @description Array.prototype.reduce - deleting own property in step 8 causes deleted index property not to be visited on an Array
+ */
+
+
+function testcase() {
+
+ var accessed = false;
+ var testResult = true;
+
+ function callbackfn(accum, val, idx, obj) {
+ accessed = true;
+ if (idx === 1) {
+ testResult = false;
+ }
+ }
+
+ var arr = [1, 2, 4];
+
+ Object.defineProperty(arr, "0", {
+ get: function () {
+ delete arr[1];
+ return 0;
+ },
+ configurable: true
+ });
+
+ arr.reduce(callbackfn);
+ return testResult && accessed;
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-1.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-1.js
new file mode 100644
index 000000000..11c187d95
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-1.js
@@ -0,0 +1,41 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-1.js
+ * @description Array.prototype.reduce - callbackfn not called for indexes never been assigned values
+ */
+
+
+function testcase() {
+
+ var callCnt = 0;
+ function callbackfn(prevVal, curVal, idx, obj)
+ {
+ callCnt++;
+ return curVal;
+ }
+
+ var arr = new Array(10);
+ arr[0] = arr[1] = undefined; //explicitly assigning a value
+ if( arr.reduce(callbackfn) === undefined && callCnt === 1)
+ return true;
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-i-1.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-i-1.js
new file mode 100644
index 000000000..c1c214df8
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-i-1.js
@@ -0,0 +1,41 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-i-1.js
+ * @description Array.prototype.reduce - element to be retrieved is own data property on an Array-like object
+ */
+
+
+function testcase() {
+
+ var testResult = false;
+ var initialValue = 0;
+ function callbackfn(prevVal, curVal, idx, obj) {
+ if (idx === 1) {
+ testResult = (curVal === 1);
+ }
+ }
+
+ var obj = { 0: 0, 1: 1, 2: 2, length: 2 };
+ Array.prototype.reduce.call(obj, callbackfn, initialValue);
+ return testResult;
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-i-10.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-i-10.js
new file mode 100644
index 000000000..8ad19c21c
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-i-10.js
@@ -0,0 +1,49 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-i-10.js
+ * @description Array.prototype.reduce - element to be retrieved is own accessor property on an Array
+ */
+
+
+function testcase() {
+
+ var testResult = false;
+ var initialValue = 0;
+ function callbackfn(prevVal, curVal, idx, obj) {
+ if (idx === 1) {
+ testResult = (curVal === 1);
+ }
+ }
+
+ var arr = [0, , 2];
+
+ Object.defineProperty(arr, "1", {
+ get: function () {
+ return 1;
+ },
+ configurable: true
+ });
+
+ arr.reduce(callbackfn, initialValue);
+ return testResult;
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-i-11.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-i-11.js
new file mode 100644
index 000000000..181f20b94
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-i-11.js
@@ -0,0 +1,55 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-i-11.js
+ * @description Array.prototype.reduce - element to be retrieved is own accessor property that overrides an inherited data property on an Array-like object
+ */
+
+
+function testcase() {
+
+ var testResult = false;
+ var initialValue = 0;
+ function callbackfn(prevVal, curVal, idx, obj) {
+ if (idx === 1) {
+ testResult = (curVal === "11");
+ }
+ }
+
+ var proto = { 0: 0, 1: 1, 2: 2 };
+
+ var Con = function () { };
+ Con.prototype = proto;
+
+ var child = new Con();
+ child.length = 3;
+
+ Object.defineProperty(child, "1", {
+ get: function () {
+ return "11";
+ },
+ configurable: true
+ });
+
+ Array.prototype.reduce.call(child, callbackfn, initialValue);
+ return testResult;
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-i-12.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-i-12.js
new file mode 100644
index 000000000..c67e73dd8
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-i-12.js
@@ -0,0 +1,55 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-i-12.js
+ * @description Array.prototype.reduce - element to be retrieved is own accessor property that overrides an inherited data property on an Array
+ */
+
+
+function testcase() {
+
+ var testResult = false;
+ var initialValue = 0;
+ function callbackfn(prevVal, curVal, idx, obj) {
+ if (idx === 1) {
+ testResult = (curVal === "11");
+ }
+ }
+
+ try {
+ Array.prototype[1] = 1;
+ var arr = [0, ,2];
+
+ Object.defineProperty(arr, "1", {
+ get: function () {
+ return "11";
+ },
+ configurable: true
+ });
+
+ arr.reduce(callbackfn, initialValue);
+ return testResult;
+
+ } finally {
+ delete Array.prototype[1];
+ }
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-i-13.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-i-13.js
new file mode 100644
index 000000000..cdafc4172
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-i-13.js
@@ -0,0 +1,62 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-i-13.js
+ * @description Array.prototype.reduce - element to be retrieved is own accessor property that overrides an inherited accessor property on an Array-like object
+ */
+
+
+function testcase() {
+
+ var testResult = false;
+ var initialValue = 0;
+ function callbackfn(prevVal, curVal, idx, obj) {
+ if (idx === 1) {
+ testResult = (curVal === "11");
+ }
+ }
+
+ var proto = { 0: 0, 2: 2};
+
+ Object.defineProperty(proto, "1", {
+ get: function () {
+ return 1;
+ },
+ configurable: true
+ });
+
+ var Con = function () { };
+ Con.prototype = proto;
+
+ var child = new Con();
+ child.length = 3;
+
+ Object.defineProperty(child, "1", {
+ get: function () {
+ return "11";
+ },
+ configurable: true
+ });
+
+ Array.prototype.reduce.call(child, callbackfn, initialValue);
+ return testResult;
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-i-14.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-i-14.js
new file mode 100644
index 000000000..4c6cc7f3d
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-i-14.js
@@ -0,0 +1,60 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-i-14.js
+ * @description Array.prototype.reduce - element to be retrieved is own accessor property that overrides an inherited accessor property on an Array
+ */
+
+
+function testcase() {
+
+ var testResult = false;
+ var initialValue = 0;
+ function callbackfn(prevVal, curVal, idx, obj) {
+ if (idx === 1) {
+ testResult = (curVal === "11");
+ }
+ }
+
+ try {
+ Object.defineProperty(Array.prototype, "1", {
+ get: function () {
+ return 1;
+ },
+ configurable: true
+ });
+
+ var arr = [0, ,2];
+
+ Object.defineProperty(arr, "1", {
+ get: function () {
+ return "11";
+ },
+ configurable: true
+ });
+ arr.reduce(callbackfn, initialValue);
+ return testResult;
+
+ } finally {
+ delete Array.prototype[1];
+ }
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-i-15.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-i-15.js
new file mode 100644
index 000000000..0ec61b222
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-i-15.js
@@ -0,0 +1,55 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-i-15.js
+ * @description Array.prototype.reduce - element to be retrieved is inherited accessor property on an Array-like object
+ */
+
+
+function testcase() {
+
+ var testResult = false;
+ var initialValue = 0;
+ function callbackfn(prevVal, curVal, idx, obj) {
+ if (idx === 1) {
+ testResult = (curVal === 1);
+ }
+ }
+
+ var proto = { 0: 0, 2: 2 };
+
+ Object.defineProperty(proto, "1", {
+ get: function () {
+ return 1;
+ },
+ configurable: true
+ });
+
+ var Con = function () { };
+ Con.prototype = proto;
+
+ var child = new Con();
+ child.length = 3;
+
+ Array.prototype.reduce.call(child, callbackfn, initialValue);
+ return testResult;
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-i-16.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-i-16.js
new file mode 100644
index 000000000..771f155cb
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-i-16.js
@@ -0,0 +1,54 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-i-16.js
+ * @description Array.prototype.reduce - element to be retrieved is inherited accessor property on an Array
+ */
+
+
+function testcase() {
+
+ var testResult = false;
+ var initialValue = 0;
+ function callbackfn(prevVal, curVal, idx, obj) {
+ if (idx === 1) {
+ testResult = (curVal === 1);
+ }
+ }
+
+ try {
+ Object.defineProperty(Array.prototype, "1", {
+ get: function () {
+ return 1;
+ },
+ configurable: true
+ });
+
+ var arr = [0, , 2, ];
+
+ arr.reduce(callbackfn, initialValue);
+ return testResult;
+
+ } finally {
+ delete Array.prototype[1];
+ }
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-i-17.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-i-17.js
new file mode 100644
index 000000000..0f21c1c7b
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-i-17.js
@@ -0,0 +1,47 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-i-17.js
+ * @description Array.prototype.reduce - element to be retrieved is own accessor property without a get function on an Array-like object
+ */
+
+
+function testcase() {
+
+ var testResult = false;
+ var initialValue = 0;
+ function callbackfn(prevVal, curVal, idx, obj) {
+ if (idx === 1) {
+ testResult = (curVal === undefined);
+ }
+ }
+
+ var obj = { 0: 0, 2: 2, length: 3 };
+
+ Object.defineProperty(obj, "1", {
+ set: function () { },
+ configurable: true
+ });
+
+ Array.prototype.reduce.call(obj, callbackfn, initialValue);
+ return testResult;
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-i-18.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-i-18.js
new file mode 100644
index 000000000..6f1653a77
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-i-18.js
@@ -0,0 +1,48 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-i-18.js
+ * @description Array.prototype.reduce - element to be retrieved is own accessor property without a get function on an Array
+ */
+
+
+function testcase() {
+
+ var testResult = false;
+ var initialValue = 0;
+ function callbackfn(prevVal, curVal, idx, obj) {
+ if (idx === 1) {
+ testResult = (curVal === undefined);
+ }
+ }
+
+ var arr = [0, , 2];
+
+ Object.defineProperty(arr, "1", {
+ set: function () { },
+ configurable: true
+ });
+
+ arr.reduce(callbackfn, initialValue);
+ return testResult;
+
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-i-19.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-i-19.js
new file mode 100644
index 000000000..b0122f222
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-i-19.js
@@ -0,0 +1,58 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-i-19.js
+ * @description Array.prototype.reduce - element to be retrieved is own accessor property without a get function that overrides an inherited accessor property on an Array-like object
+ */
+
+
+function testcase() {
+
+ var testResult = false;
+ var initialValue = 0;
+ function callbackfn(prevVal, curVal, idx, obj) {
+ if (idx === 1) {
+ testResult = (curVal === undefined);
+ }
+ }
+
+ try {
+ Object.defineProperty(Object.prototype, "1", {
+ get: function () {
+ return 1;
+ },
+ configurable: true
+ });
+
+ var obj = { 0: 0, 2: 2, length: 3 };
+
+ Object.defineProperty(obj, "1", {
+ set: function () { },
+ configurable: true
+ });
+
+ Array.prototype.reduce.call(obj, callbackfn, initialValue);
+ return testResult;
+ } finally {
+ delete Object.prototype[1];
+ }
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-i-2.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-i-2.js
new file mode 100644
index 000000000..11b8aefe9
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-i-2.js
@@ -0,0 +1,41 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-i-2.js
+ * @description Array.prototype.reduce - element to be retrieved is own data property on an Array
+ */
+
+
+function testcase() {
+
+ var testResult = false;
+ var initialValue = 0;
+ function callbackfn(prevVal, curVal, idx, obj) {
+ if (idx === 1) {
+ testResult = (curVal === 1);
+ }
+ }
+
+ var arr = [0, 1];
+ arr.reduce(callbackfn, initialValue);
+ return testResult;
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-i-20.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-i-20.js
new file mode 100644
index 000000000..037f55d4f
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-i-20.js
@@ -0,0 +1,58 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-i-20.js
+ * @description Array.prototype.reduce - element to be retrieved is own accessor property without a get function that overrides an inherited accessor property on an Array
+ */
+
+
+function testcase() {
+
+ var testResult = false;
+ var initialValue = 0;
+ function callbackfn(prevVal, curVal, idx, obj) {
+ if (idx === 1) {
+ testResult = (curVal === undefined);
+ }
+ }
+
+ try {
+ Object.defineProperty(Array.prototype, "1", {
+ get: function () {
+ return 11;
+ },
+ configurable: true
+ });
+
+ var arr = [0, , 2];
+ Object.defineProperty(arr, "1", {
+ set: function () { },
+ configurable: true
+ });
+
+ arr.reduce(callbackfn, initialValue);
+ return testResult;
+
+ } finally {
+ delete Array.prototype[1];
+ }
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-i-21.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-i-21.js
new file mode 100644
index 000000000..e8f2c318c
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-i-21.js
@@ -0,0 +1,53 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-i-21.js
+ * @description Array.prototype.reduce - element to be retrieved is inherited accessor property without a get function on an Array-like object
+ */
+
+
+function testcase() {
+
+ var testResult = false;
+ var initialValue = 0;
+ function callbackfn(prevVal, curVal, idx, obj) {
+ if (idx === 1) {
+ testResult = (curVal === undefined);
+ }
+ }
+
+ var proto = { 0: 0, 2: 2 };
+
+ Object.defineProperty(proto, "1", {
+ set: function () { },
+ configurable: true
+ });
+
+ var Con = function () { };
+ Con.prototype = proto;
+
+ var child = new Con();
+ child.length = 3;
+
+ Array.prototype.reduce.call(child, callbackfn, initialValue);
+ return testResult;
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-i-22.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-i-22.js
new file mode 100644
index 000000000..b766bb8d6
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-i-22.js
@@ -0,0 +1,52 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-i-22.js
+ * @description Array.prototype.reduce - element to be retrieved is inherited accessor property without a get function on an Array
+ */
+
+
+function testcase() {
+
+ var testResult = false;
+ var initialValue = 0;
+ function callbackfn(prevVal, curVal, idx, obj) {
+ if (idx === 1) {
+ testResult = (curVal === undefined);
+ }
+ }
+
+ try {
+ Object.defineProperty(Array.prototype, "1", {
+ set: function () { },
+ configurable: true
+ });
+
+ var arr = [0, , 2];
+
+ arr.reduce(callbackfn, initialValue);
+ return testResult;
+
+ } finally {
+ delete Array.prototype[1];
+ }
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-i-23.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-i-23.js
new file mode 100644
index 000000000..986170f66
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-i-23.js
@@ -0,0 +1,52 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-i-23.js
+ * @description Array.prototype.reduce - This object is the global object which contains index property
+ */
+
+
+function testcase() {
+
+ var testResult = false;
+ var initialValue = 0;
+ function callbackfn(prevVal, curVal, idx, obj) {
+ if (idx === 1) {
+ testResult = (curVal === 1);
+ }
+ }
+
+ try {
+ var oldLen = fnGlobalObject().length;
+ fnGlobalObject()[0] = 0;
+ fnGlobalObject()[1] = 1;
+ fnGlobalObject().length = 2;
+
+ Array.prototype.reduce.call(fnGlobalObject(), callbackfn, initialValue);
+ return testResult;
+
+ } finally {
+ delete fnGlobalObject()[0];
+ delete fnGlobalObject()[1];
+ fnGlobalObject().length = oldLen;
+ }
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-i-25.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-i-25.js
new file mode 100644
index 000000000..ebf755b9f
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-i-25.js
@@ -0,0 +1,44 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-i-25.js
+ * @description Array.prototype.reduce - This object is the Arguments object which implements its own property get method (number of arguments is less than number of parameters)
+ */
+
+
+function testcase() {
+
+ var testResult = false;
+ var initialValue = 0;
+ function callbackfn(prevVal, curVal, idx, obj) {
+ if (idx === 1) {
+ testResult = (curVal === 1);
+ }
+ }
+
+ var func = function (a, b, c) {
+ Array.prototype.reduce.call(arguments, callbackfn, initialValue);
+ };
+
+ func(0, 1);
+ return testResult;
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-i-26.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-i-26.js
new file mode 100644
index 000000000..3d6f81d1c
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-i-26.js
@@ -0,0 +1,44 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-i-26.js
+ * @description Array.prototype.reduce - This object is the Arguments object which implements its own property get method (number of arguments equals number of parameters)
+ */
+
+
+function testcase() {
+
+ var testResult = false;
+ var initialValue = 0;
+ function callbackfn(prevVal, curVal, idx, obj) {
+ if (idx === 2) {
+ testResult = (curVal === 2);
+ }
+ }
+
+ var func = function (a, b, c) {
+ Array.prototype.reduce.call(arguments, callbackfn, initialValue);
+ };
+
+ func(0, 1, 2);
+ return testResult;
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-i-27.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-i-27.js
new file mode 100644
index 000000000..9c375bc36
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-i-27.js
@@ -0,0 +1,44 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-i-27.js
+ * @description Array.prototype.reduce - This object is the Arguments object which implements its own property get method (number of arguments is greater than number of parameters)
+ */
+
+
+function testcase() {
+
+ var testResult = false;
+ var initialValue = 0;
+ function callbackfn(prevVal, curVal, idx, obj) {
+ if (idx === 3) {
+ testResult = (curVal === 3);
+ }
+ }
+
+ var func = function (a, b, c) {
+ Array.prototype.reduce.call(arguments, callbackfn, initialValue);
+ };
+
+ func(0, 1, 2, 3);
+ return testResult;
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-i-28.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-i-28.js
new file mode 100644
index 000000000..c3f987d11
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-i-28.js
@@ -0,0 +1,43 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-i-28.js
+ * @description Array.prototype.reduce - applied to String object, which implements its own property get method
+ */
+
+
+function testcase() {
+
+ var testResult = false;
+ var initialValue = 0;
+ function callbackfn(prevVal, curVal, idx, obj) {
+ if (idx === 1) {
+ testResult = (curVal === "1");
+ }
+ }
+
+ var str = new String("012");
+
+ Array.prototype.reduce.call(str, callbackfn, initialValue);
+ return testResult;
+
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-i-29.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-i-29.js
new file mode 100644
index 000000000..fdea67dce
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-i-29.js
@@ -0,0 +1,48 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-i-29.js
+ * @description Array.prototype.reduce - applied to Function object which implements its own property get method
+ */
+
+
+function testcase() {
+
+ var testResult = false;
+ var initialValue = 0;
+ function callbackfn(prevVal, curVal, idx, obj) {
+ if (idx === 1) {
+ testResult = (curVal === 1);
+ }
+ }
+
+ var obj = function (a, b, c) {
+ return a + b + c;
+ };
+ obj[0] = 0;
+ obj[1] = 1;
+ obj[2] = 2;
+ obj[3] = 3;
+
+ Array.prototype.reduce.call(obj, callbackfn, initialValue);
+ return testResult;
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-i-3.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-i-3.js
new file mode 100644
index 000000000..5d1212d53
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-i-3.js
@@ -0,0 +1,50 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-i-3.js
+ * @description Array.prototype.reduce - element to be retrieved is own data property that overrides an inherited data property on an Array-like object
+ */
+
+
+function testcase() {
+
+ var testResult = false;
+ var initialValue = 0;
+ function callbackfn(prevVal, curVal, idx, obj) {
+ if (idx === 1) {
+ testResult = (curVal === "11");
+ }
+ }
+
+ var proto = { 0: 0, 1: 1, 2: 2, length: 2 };
+ var Con = function () { };
+ Con.prototype = proto;
+
+ var child = new Con();
+ child[1] = "11";
+ child[2] = "22";
+ child.length = 3;
+
+ Array.prototype.reduce.call(child, callbackfn, initialValue);
+ return testResult;
+
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-i-30.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-i-30.js
new file mode 100644
index 000000000..0f46f75b8
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-i-30.js
@@ -0,0 +1,62 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-i-30.js
+ * @description Array.prototype.reduce - element changed by getter on previous iterations is observed on an Array
+ */
+
+
+function testcase() {
+
+ var testResult = false;
+ var initialValue = 0;
+ function callbackfn(prevVal, curVal, idx, obj) {
+ if (idx === 1) {
+ testResult = (curVal === 1);
+ }
+ }
+
+ var arr = [, , 2];
+ var preIterVisible = false;
+
+ Object.defineProperty(arr, "0", {
+ get: function () {
+ preIterVisible = true;
+ return 0;
+ },
+ configurable: true
+ });
+
+ Object.defineProperty(arr, "1", {
+ get: function () {
+ if (preIterVisible) {
+ return 1;
+ } else {
+ return 100;
+ }
+ },
+ configurable: true
+ });
+
+ arr.reduce(callbackfn, initialValue);
+ return testResult;
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-i-31.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-i-31.js
new file mode 100644
index 000000000..844b938d1
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-i-31.js
@@ -0,0 +1,63 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-i-31.js
+ * @description Array.prototype.reduce - element changed by getter on previous iterations is observed on an Array-like object
+ */
+
+
+function testcase() {
+
+ var testResult = false;
+ var initialValue = 0;
+ function callbackfn(prevVal, curVal, idx, obj) {
+ if (idx === 1) {
+ testResult = (curVal === 1);
+ }
+ }
+
+ var obj = { 2: 2, length: 3 };
+ var preIterVisible = false;
+
+ Object.defineProperty(obj, "0", {
+ get: function () {
+ preIterVisible = true;
+ return 0;
+ },
+ configurable: true
+ });
+
+ Object.defineProperty(obj, "1", {
+ get: function () {
+ if (preIterVisible) {
+ return 1;
+ } else {
+ return "11";
+ }
+ },
+ configurable: true
+ });
+
+ Array.prototype.reduce.call(obj, callbackfn, initialValue);
+ return testResult;
+
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-i-32.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-i-32.js
new file mode 100644
index 000000000..fce48cb72
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-i-32.js
@@ -0,0 +1,54 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-i-32.js
+ * @description Array.prototype.reduce - unnhandled exceptions happened in getter terminate iteration on an Array-like object
+ */
+
+
+function testcase() {
+
+ var accessed = false;
+ var testResult = false;
+ var initialValue = 0;
+ function callbackfn(prevVal, curVal, idx, obj) {
+ if (idx >= 1) {
+ accessed = true;
+ testResult = (curVal >= 1);
+ }
+ }
+
+ var obj = { 0: 0, 2: 2, length: 3 };
+ Object.defineProperty(obj, "1", {
+ get: function () {
+ throw new RangeError("unhandle exception happened in getter");
+ },
+ configurable: true
+ });
+
+ try {
+ Array.prototype.reduce.call(obj, callbackfn, initialValue);
+ return false;
+ } catch (ex) {
+ return (ex instanceof RangeError) && !accessed && !testResult;
+ }
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-i-33.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-i-33.js
new file mode 100644
index 000000000..01636f36d
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-i-33.js
@@ -0,0 +1,55 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-i-33.js
+ * @description Array.prototype.reduce - unnhandled exceptions happened in getter terminate iteration on an Array
+ */
+
+
+function testcase() {
+
+ var accessed = false;
+ var testResult = false;
+ var initialValue = 0;
+ function callbackfn(prevVal, curVal, idx, obj) {
+ if (idx >= 1) {
+ accessed = true;
+ testResult = (curVal >= 1);
+ }
+ }
+
+ var arr = [0, , 2];
+
+ Object.defineProperty(arr, "1", {
+ get: function () {
+ throw new RangeError("unhandle exception happened in getter");
+ },
+ configurable: true
+ });
+
+ try {
+ arr.reduce(callbackfn, initialValue);
+ return false;
+ } catch (ex) {
+ return (ex instanceof RangeError) && !accessed && !testResult;
+ }
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-i-4.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-i-4.js
new file mode 100644
index 000000000..789229ef5
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-i-4.js
@@ -0,0 +1,45 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-i-4.js
+ * @description Array.prototype.reduce - element to be retrieved is own data property that overrides an inherited data property on an Array
+ */
+
+
+function testcase() {
+
+ var testResult = false;
+ var initialValue = 0;
+ function callbackfn(prevVal, curVal, idx, obj) {
+ if (idx === 1) {
+ testResult = (curVal === 1);
+ }
+ }
+
+ try {
+ Array.prototype[1] = "3";
+ [0, 1, 2].reduce(callbackfn, initialValue);
+ return testResult;
+ } finally {
+ delete Array.prototype[1];
+ }
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-i-5.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-i-5.js
new file mode 100644
index 000000000..4172b492d
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-i-5.js
@@ -0,0 +1,62 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-i-5.js
+ * @description Array.prototype.reduce - element to be retrieved is own data property that overrides an inherited accessor property on an Array-like object
+ */
+
+
+function testcase() {
+
+ var testResult = false;
+ var initialValue = 0;
+ function callbackfn(prevVal, curVal, idx, obj) {
+ if (idx === 0) {
+ testResult = (curVal === "9");
+ }
+ }
+
+ var proto = {};
+
+ Object.defineProperty(proto, "0", {
+ get: function () {
+ return 0;
+ },
+ configurable: true
+ });
+
+ var Con = function () { };
+ Con.prototype = proto;
+
+ var child = new Con();
+ child.length = 2;
+
+ Object.defineProperty(child, "0", {
+ value: "9",
+ configurable: true
+ });
+
+ child[1] = "1";
+
+ Array.prototype.reduce.call(child, callbackfn, initialValue);
+ return testResult;
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-i-6.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-i-6.js
new file mode 100644
index 000000000..de49ad7e6
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-i-6.js
@@ -0,0 +1,52 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-i-6.js
+ * @description Array.prototype.reduce - element to be retrieved is own data property that overrides an inherited accessor property on an Array
+ */
+
+
+function testcase() {
+
+ var testResult = false;
+ var initialValue = 0;
+ function callbackfn(prevVal, curVal, idx, obj) {
+ if (idx === 1) {
+ testResult = (curVal === 1);
+ }
+ }
+
+ try {
+ Object.defineProperty(Array.prototype, "1", {
+ get: function () {
+ return "9";
+ },
+ configurable: true
+ });
+ [0, 1, 2].reduce(callbackfn, initialValue);
+ return testResult;
+
+ } finally {
+ delete Array.prototype[1];
+ }
+
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-i-7.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-i-7.js
new file mode 100644
index 000000000..77fecc7f8
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-i-7.js
@@ -0,0 +1,47 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-i-7.js
+ * @description Array.prototype.reduce - element to be retrieved is inherited data property on an Array-like object
+ */
+
+
+function testcase() {
+
+ var testResult = false;
+ var initialValue = 0;
+ function callbackfn(prevVal, curVal, idx, obj) {
+ if (idx === 1) {
+ testResult = (curVal === 1);
+ }
+ }
+
+ var proto = { 0: 0, 1: 1, 2: 2, length: 3 };
+ var Con = function () { };
+ Con.prototype = proto;
+
+ var child = new Con();
+ child.length = 3;
+
+ Array.prototype.reduce.call(child, callbackfn, initialValue);
+ return testResult;
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-i-8.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-i-8.js
new file mode 100644
index 000000000..1ad682219
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-i-8.js
@@ -0,0 +1,50 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-i-8.js
+ * @description Array.prototype.reduce - element to be retrieved is inherited data property on an Array
+ */
+
+
+function testcase() {
+
+ var testResult = false;
+ var initialValue = 0;
+ function callbackfn(prevVal, curVal, idx, obj) {
+ if (idx === 1) {
+ testResult = (curVal === 1);
+ }
+ }
+
+ try {
+ Array.prototype[0] = 0;
+ Array.prototype[1] = 1;
+ Array.prototype[2] = 2;
+ [, , , ].reduce(callbackfn, initialValue);
+
+ return testResult;
+ } finally {
+ delete Array.prototype[0];
+ delete Array.prototype[1];
+ delete Array.prototype[2];
+ }
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-i-9.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-i-9.js
new file mode 100644
index 000000000..476a6a3d1
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-i-9.js
@@ -0,0 +1,49 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-i-9.js
+ * @description Array.prototype.reduce - element to be retrieved is own accessor property on an Array-like object
+ */
+
+
+function testcase() {
+
+ var testResult = false;
+ var initialValue = 0;
+ function callbackfn(prevVal, curVal, idx, obj) {
+ if (idx === 1) {
+ testResult = (curVal === 1);
+ }
+ }
+
+ var obj = { 0: 0, 2: 2, length: 3 };
+ Object.defineProperty(obj, "1", {
+ get: function () {
+ return 1;
+ },
+ configurable: true
+ });
+
+ Array.prototype.reduce.call(obj, callbackfn, initialValue);
+ return testResult;
+
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-ii-1.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-ii-1.js
new file mode 100644
index 000000000..669f1b7a4
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-ii-1.js
@@ -0,0 +1,41 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-ii-1.js
+ * @description Array.prototype.reduce - callbackfn called with correct parameters (initialvalue not passed)
+ */
+
+
+function testcase() {
+
+ function callbackfn(prevVal, curVal, idx, obj)
+ {
+ if(idx > 0 && obj[idx] === curVal && obj[idx-1] === prevVal)
+ return curVal;
+ else
+ return false;
+ }
+
+ var arr = [0,1,true,null,new Object(),"five"];
+ if( arr.reduce(callbackfn) === "five")
+ return true;
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-ii-10.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-ii-10.js
new file mode 100644
index 000000000..36c7df88a
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-ii-10.js
@@ -0,0 +1,37 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-ii-10.js
+ * @description Array.prototype.reduce - callbackfn is called with 1 formal parameter
+ */
+
+
+function testcase() {
+
+ var result = false;
+ function callbackfn(prevVal) {
+ result = (prevVal === 1);
+ }
+
+ [11].reduce(callbackfn, 1);
+ return result;
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-ii-11.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-ii-11.js
new file mode 100644
index 000000000..f3ba06cd0
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-ii-11.js
@@ -0,0 +1,37 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-ii-11.js
+ * @description Array.prototype.reduce - callbackfn is called with 2 formal parameter
+ */
+
+
+function testcase() {
+
+ var result = false;
+ function callbackfn(prevVal, curVal) {
+ result = (curVal > 10 && 1 === prevVal);
+ }
+
+ [11].reduce(callbackfn, 1);
+ return result;
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-ii-12.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-ii-12.js
new file mode 100644
index 000000000..f5196336f
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-ii-12.js
@@ -0,0 +1,37 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-ii-12.js
+ * @description Array.prototype.reduce - callbackfn is called with 3 formal parameter
+ */
+
+
+function testcase() {
+
+ var result = false;
+ function callbackfn(prevVal, curVal, idx) {
+ result = (prevVal === 1 && arguments[3][idx] === curVal);
+ }
+
+ [11].reduce(callbackfn, 1);
+ return result;
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-ii-13.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-ii-13.js
new file mode 100644
index 000000000..15c526e3b
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-ii-13.js
@@ -0,0 +1,37 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-ii-13.js
+ * @description Array.prototype.reduce - callbackfn is called with 4 formal parameter
+ */
+
+
+function testcase() {
+
+ var result = false;
+ function callbackfn(prevVal, curVal, idx, obj) {
+ result = (prevVal === 1 && obj[idx] === curVal);
+ }
+
+ [11].reduce(callbackfn, 1);
+ return result;
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-ii-14.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-ii-14.js
new file mode 100644
index 000000000..6198995b1
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-ii-14.js
@@ -0,0 +1,37 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-ii-14.js
+ * @description Array.prototype.reduce - callbackfn that uses arguments
+ */
+
+
+function testcase() {
+
+ var result = false;
+ function callbackfn() {
+ result = (arguments[0] === 1 && arguments[3][arguments[2]] === arguments[1]);
+ }
+
+ [11].reduce(callbackfn, 1);
+ return result;
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-ii-16.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-ii-16.js
new file mode 100644
index 000000000..26b37b028
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-ii-16.js
@@ -0,0 +1,49 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-ii-16.js
+ * @description Array.prototype.reduce - non-indexed properties are not called
+ */
+
+
+function testcase() {
+
+ var accessed = false;
+ var result1 = true;
+ var result2 = true;
+
+ function callbackfn(prevVal, curVal, idx, obj) {
+ accessed = true;
+ if (curVal === 8) {
+ result1 = false;
+ }
+
+ if (prevVal === 8) {
+ result2 = false;
+ }
+ }
+
+ var obj = { 0: 11, 10: 12, non_index_property: 8, length: 20 };
+
+ Array.prototype.reduce.call(obj, callbackfn, 1);
+ return result1 && result2 && accessed;
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-ii-17.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-ii-17.js
new file mode 100644
index 000000000..c7cb6e970
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-ii-17.js
@@ -0,0 +1,44 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-ii-17.js
+ * @description Array.prototype.reduce - 'accumulator' used for current iteration is the result of previous iteration on an Array
+ */
+
+
+function testcase() {
+
+ var result = true;
+ var accessed = false;
+ var preIteration = 1;
+ function callbackfn(prevVal, curVal, idx, obj) {
+ accessed = true;
+ if (preIteration !== prevVal) {
+ result = false;
+ }
+ preIteration = curVal;
+ return curVal;
+ }
+
+ [11, 12, 13].reduce(callbackfn, 1);
+ return result && accessed;
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-ii-18.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-ii-18.js
new file mode 100644
index 000000000..a1016c648
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-ii-18.js
@@ -0,0 +1,41 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-ii-18.js
+ * @description Array.prototype.reduce - value of 'accumulator' used for first iteration is the value of 'initialValue' when it is present on an Array-like object
+ */
+
+
+function testcase() {
+
+ var result = false;
+ function callbackfn(prevVal, curVal, idx, obj) {
+ if (idx === 0) {
+ result = (arguments[0] === 1);
+ }
+ }
+
+ var obj = { 0: 11, 1: 9, length: 2 };
+
+ Array.prototype.reduce.call(obj, callbackfn, 1);
+ return result;
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-ii-19.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-ii-19.js
new file mode 100644
index 000000000..9d26bd713
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-ii-19.js
@@ -0,0 +1,41 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-ii-19.js
+ * @description Array.prototype.reduce - value of 'accumulator' used for first iteration is the value of least index property which is not undefined when 'initialValue' is not present on an Array
+ */
+
+
+function testcase() {
+
+ var called = 0;
+ var result = false;
+ function callbackfn(prevVal, curVal, idx, obj) {
+ called++;
+ if (idx === 1) {
+ result = (prevVal === 11) && curVal === 9;
+ }
+ }
+
+ [11, 9].reduce(callbackfn);
+ return result && called === 1;
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-ii-2.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-ii-2.js
new file mode 100644
index 000000000..f8bc8fdbf
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-ii-2.js
@@ -0,0 +1,45 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-ii-2.js
+ * @description Array.prototype.reduce - callbackfn called with correct parameters (initialvalue passed)
+ */
+
+
+function testcase() {
+
+ var bParCorrect = false;
+ function callbackfn(prevVal, curVal, idx, obj)
+ {
+ if(idx === 0 && obj[idx] === curVal && prevVal === initialValue)
+ return curVal;
+ else if(idx > 0 && obj[idx] === curVal && obj[idx-1] === prevVal)
+ return curVal;
+ else
+ return false;
+ }
+
+ var arr = [0,1,true,null,new Object(),"five"];
+ var initialValue = 5.5;
+ if( arr.reduce(callbackfn,initialValue) === "five")
+ return true;
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-ii-20.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-ii-20.js
new file mode 100644
index 000000000..3cc836255
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-ii-20.js
@@ -0,0 +1,39 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-ii-20.js
+ * @description Array.prototype.reduce - undefined can be used as accumulator
+ */
+
+
+function testcase() {
+
+ var accessed = false;
+ function callbackfn(prevVal, curVal, idx, obj) {
+ accessed = true;
+ return typeof prevVal === "undefined";
+ }
+
+ var obj = { 0: 11, length: 1 };
+
+ return Array.prototype.reduce.call(obj, callbackfn, undefined) === true && accessed;
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-ii-21.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-ii-21.js
new file mode 100644
index 000000000..00bf7d608
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-ii-21.js
@@ -0,0 +1,39 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-ii-21.js
+ * @description Array.prototype.reduce - null can be used as accumulator
+ */
+
+
+function testcase() {
+
+ var accessed = false;
+ function callbackfn(prevVal, curVal, idx, obj) {
+ accessed = true;
+ return prevVal === null;
+ }
+
+ var obj = { 0: 11, length: 1 };
+
+ return Array.prototype.reduce.call(obj, callbackfn, null) === true && accessed;
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-ii-22.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-ii-22.js
new file mode 100644
index 000000000..5c395da19
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-ii-22.js
@@ -0,0 +1,39 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-ii-22.js
+ * @description Array.prototype.reduce - boolean primitive can be used as accumulator
+ */
+
+
+function testcase() {
+
+ var accessed = false;
+ function callbackfn(prevVal, curVal, idx, obj) {
+ accessed = true;
+ return prevVal === false;
+ }
+
+ var obj = { 0: 11, length: 1 };
+
+ return Array.prototype.reduce.call(obj, callbackfn, false) === true && accessed;
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-ii-23.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-ii-23.js
new file mode 100644
index 000000000..987b3a1e4
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-ii-23.js
@@ -0,0 +1,39 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-ii-23.js
+ * @description Array.prototype.reduce - number primitive can be used as accumulator
+ */
+
+
+function testcase() {
+
+ var accessed = false;
+ function callbackfn(prevVal, curVal, idx, obj) {
+ accessed = true;
+ return prevVal === 12;
+ }
+
+ var obj = { 0: 11, length: 1 };
+
+ return Array.prototype.reduce.call(obj, callbackfn, 12) === true && accessed;
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-ii-24.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-ii-24.js
new file mode 100644
index 000000000..bb829e082
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-ii-24.js
@@ -0,0 +1,39 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-ii-24.js
+ * @description Array.prototype.reduce - string primitive can be used as accumulator
+ */
+
+
+function testcase() {
+
+ var accessed = false;
+ function callbackfn(prevVal, curVal, idx, obj) {
+ accessed = true;
+ return prevVal === "hello_";
+ }
+
+ var obj = { 0: 11, length: 1 };
+
+ return Array.prototype.reduce.call(obj, callbackfn, "hello_") === true && accessed;
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-ii-25.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-ii-25.js
new file mode 100644
index 000000000..ed536d35c
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-ii-25.js
@@ -0,0 +1,41 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-ii-25.js
+ * @description Array.prototype.reduce - Function object can be used as accumulator
+ */
+
+
+function testcase() {
+
+ var objFunction = function () { };
+
+ var accessed = false;
+ function callbackfn(prevVal, curVal, idx, obj) {
+ accessed = true;
+ return prevVal === objFunction;
+ }
+
+ var obj = { 0: 11, length: 1 };
+
+ return Array.prototype.reduce.call(obj, callbackfn, objFunction) === true && accessed;
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-ii-26.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-ii-26.js
new file mode 100644
index 000000000..648d4ed27
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-ii-26.js
@@ -0,0 +1,41 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-ii-26.js
+ * @description Array.prototype.reduce - Array object can be used as accumulator
+ */
+
+
+function testcase() {
+
+ var objArray = new Array(10);
+
+ var accessed = false;
+ function callbackfn(prevVal, curVal, idx, obj) {
+ accessed = true;
+ return prevVal === objArray;
+ }
+
+ var obj = { 0: 11, length: 1 };
+
+ return Array.prototype.reduce.call(obj, callbackfn, objArray) === true && accessed;
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-ii-27.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-ii-27.js
new file mode 100644
index 000000000..c6ee4fc1b
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-ii-27.js
@@ -0,0 +1,41 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-ii-27.js
+ * @description Array.prototype.reduce - String object can be used as accumulator
+ */
+
+
+function testcase() {
+
+ var objString = new String();
+
+ var accessed = false;
+ function callbackfn(prevVal, curVal, idx, obj) {
+ accessed = true;
+ return prevVal === objString;
+ }
+
+ var obj = { 0: 11, length: 1 };
+
+ return Array.prototype.reduce.call(obj, callbackfn, objString) === true && accessed;
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-ii-28.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-ii-28.js
new file mode 100644
index 000000000..69524eca6
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-ii-28.js
@@ -0,0 +1,41 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-ii-28.js
+ * @description Array.prototype.reduce - Boolean object can be used as accumulator
+ */
+
+
+function testcase() {
+
+ var objBoolean = new Boolean();
+
+ var accessed = false;
+ function callbackfn(prevVal, curVal, idx, obj) {
+ accessed = true;
+ return prevVal === objBoolean;
+ }
+
+ var obj = { 0: 11, length: 1 };
+
+ return Array.prototype.reduce.call(obj, callbackfn, objBoolean) === true && accessed;
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-ii-29.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-ii-29.js
new file mode 100644
index 000000000..702feb895
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-ii-29.js
@@ -0,0 +1,41 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-ii-29.js
+ * @description Array.prototype.reduce - Number object can be used as accumulator
+ */
+
+
+function testcase() {
+
+ var objNumber = new Number();
+
+ var accessed = false;
+ function callbackfn(prevVal, curVal, idx, obj) {
+ accessed = true;
+ return prevVal === objNumber;
+ }
+
+ var obj = { 0: 11, length: 1 };
+
+ return Array.prototype.reduce.call(obj, callbackfn, objNumber) === true && accessed;
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-ii-3.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-ii-3.js
new file mode 100644
index 000000000..06bde6ade
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-ii-3.js
@@ -0,0 +1,42 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-ii-3.js
+ * @description Array.prototype.reduce - callbackfn takes 4 arguments
+ */
+
+
+function testcase() {
+
+ var bCalled = false;
+ function callbackfn(prevVal, curVal, idx, obj)
+ {
+ bCalled = true;
+ if(prevVal === true && arguments.length === 4)
+ return true;
+ else
+ return false;
+ }
+ var arr = [0,1,2,3,4,5,6,7,8,9];
+ if(arr.reduce(callbackfn,true) === true && bCalled === true)
+ return true;
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-ii-30.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-ii-30.js
new file mode 100644
index 000000000..064970772
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-ii-30.js
@@ -0,0 +1,39 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-ii-30.js
+ * @description Array.prototype.reduce - the Math object can be used as accumulator
+ */
+
+
+function testcase() {
+
+ var accessed = false;
+ function callbackfn(prevVal, curVal, idx, obj) {
+ accessed = true;
+ return prevVal === Math;
+ }
+
+ var obj = { 0: 11, length: 1 };
+
+ return Array.prototype.reduce.call(obj, callbackfn, Math) === true && accessed;
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-ii-31.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-ii-31.js
new file mode 100644
index 000000000..b95ac620d
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-ii-31.js
@@ -0,0 +1,41 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-ii-31.js
+ * @description Array.prototype.reduce - Date object can be used as accumulator
+ */
+
+
+function testcase() {
+
+ var objDate = new Date();
+
+ var accessed = false;
+ function callbackfn(prevVal, curVal, idx, obj) {
+ accessed = true;
+ return prevVal === objDate;
+ }
+
+ var obj = { 0: 11, length: 1 };
+
+ return Array.prototype.reduce.call(obj, callbackfn, objDate) === true && accessed;
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-ii-32.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-ii-32.js
new file mode 100644
index 000000000..92b5b8182
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-ii-32.js
@@ -0,0 +1,41 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-ii-32.js
+ * @description Array.prototype.reduce - RegExp object can be used as accumulator
+ */
+
+
+function testcase() {
+
+ var objRegExp = new RegExp();
+
+ var accessed = false;
+ function callbackfn(prevVal, curVal, idx, obj) {
+ accessed = true;
+ return prevVal === objRegExp;
+ }
+
+ var obj = { 0: 11, length: 1 };
+
+ return Array.prototype.reduce.call(obj, callbackfn, objRegExp) === true && accessed;
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-ii-33.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-ii-33.js
new file mode 100644
index 000000000..c48864fa5
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-ii-33.js
@@ -0,0 +1,39 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-ii-33.js
+ * @description Array.prototype.reduce - the JSON can be used as accumulator
+ */
+
+
+function testcase() {
+
+ var accessed = false;
+ function callbackfn(prevVal, curVal, idx, obj) {
+ accessed = true;
+ return prevVal === JSON;
+ }
+
+ var obj = { 0: 11, length: 1 };
+
+ return Array.prototype.reduce.call(obj, callbackfn, JSON) === true && accessed;
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-ii-34.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-ii-34.js
new file mode 100644
index 000000000..d7e6762b7
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-ii-34.js
@@ -0,0 +1,41 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-ii-34.js
+ * @description Array.prototype.reduce - Error object can be used as accumulator
+ */
+
+
+function testcase() {
+
+ var objError = new RangeError();
+
+ var accessed = false;
+ function callbackfn(prevVal, curVal, idx, obj) {
+ accessed = true;
+ return prevVal === objError;
+ }
+
+ var obj = { 0: 11, length: 1 };
+
+ return Array.prototype.reduce.call(obj, callbackfn, objError) === true && accessed;
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-ii-35.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-ii-35.js
new file mode 100644
index 000000000..96b603ad4
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-ii-35.js
@@ -0,0 +1,45 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-ii-35.js
+ * @description Array.prototype.reduce - the Arguments object can be used as accumulator
+ */
+
+
+function testcase() {
+
+ var accessed = false;
+ var arg;
+
+ function callbackfn(prevVal, curVal, idx, obj) {
+ accessed = true;
+ return prevVal === arg;
+ }
+
+ var obj = { 0: 11, length: 1 };
+
+ (function fun() {
+ arg = arguments;
+ }(10, 11, 12, 13));
+
+ return Array.prototype.reduce.call(obj, callbackfn, arg) === true && accessed;
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-ii-37.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-ii-37.js
new file mode 100644
index 000000000..a4bb98eb2
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-ii-37.js
@@ -0,0 +1,39 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-ii-37.js
+ * @description Array.prototype.reduce - the global object can be used as accumulator
+ */
+
+
+function testcase() {
+
+ var accessed = false;
+ function callbackfn(prevVal, curVal, idx, obj) {
+ accessed = true;
+ return prevVal === fnGlobalObject();
+ }
+
+ var obj = { 0: 11, length: 1 };
+
+ return Array.prototype.reduce.call(obj, callbackfn, fnGlobalObject()) === true && accessed;
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-ii-4-s.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-ii-4-s.js
new file mode 100644
index 000000000..50690074b
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-ii-4-s.js
@@ -0,0 +1,39 @@
+/// Copyright (c) 2010 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-ii-4-s.js
+ * @description Array.prototype.reduce - undefined passed as thisValue to strict callbackfn
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ var innerThisCorrect = false;
+ function callbackfn(prevVal, curVal, idx, obj)
+ {
+ "use strict";
+ innerThisCorrect = this===undefined;
+ return true;
+ }
+ [0].reduce(callbackfn,true);
+ return innerThisCorrect;
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-ii-4.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-ii-4.js
new file mode 100644
index 000000000..a996fa18b
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-ii-4.js
@@ -0,0 +1,46 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-ii-4.js
+ * @description Array.prototype.reduce - k values are passed in acending numeric order on an Array
+ */
+
+
+function testcase() {
+
+ var arr = [0, 1, 2];
+ var lastIdx = 0;
+ var result = true;
+ var accessed = false;
+
+ function callbackfn(prevVal, curVal, idx, obj) {
+ accessed = true;
+ if (lastIdx !== idx) {
+ result = false;
+ } else {
+ lastIdx++;
+ }
+ }
+
+ arr.reduce(callbackfn, 11);
+ return result && accessed;
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-ii-5.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-ii-5.js
new file mode 100644
index 000000000..78643a2ad
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-ii-5.js
@@ -0,0 +1,52 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-ii-5.js
+ * @description Array.prototype.reduce - k values are accessed during each iteration and not prior to starting the loop on an Array
+ */
+
+
+function testcase() {
+
+ var result = true;
+ var kIndex = [];
+ var called = 0;
+
+ //By below way, we could verify that k would be setted as 0, 1, ..., length - 1 in order, and each value will be setted one time.
+ function callbackfn(prevVal, curVal, idx, obj) {
+ //Each position should be visited one time, which means k is accessed one time during iterations.
+ called++;
+ if (typeof kIndex[idx] === "undefined") {
+ //when current position is visited, its previous index should has been visited.
+ if (idx !== 0 && typeof kIndex[idx - 1] === "undefined") {
+ result = false;
+ }
+ kIndex[idx] = 1;
+ } else {
+ result = false;
+ }
+ }
+
+ [11, 12, 13, 14].reduce(callbackfn, 1);
+
+ return result && called === 4;
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-ii-7.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-ii-7.js
new file mode 100644
index 000000000..0ee2b2cf4
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-ii-7.js
@@ -0,0 +1,49 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-ii-7.js
+ * @description Array.prototype.reduce - unhandled exceptions happened in callbackfn terminate iteration
+ */
+
+
+function testcase() {
+
+ var accessed = false;
+
+ function callbackfn(prevVal, curVal, idx, obj) {
+ if (idx > 0) {
+ accessed = true;
+ }
+ if (idx === 0) {
+ throw new Error("Exception occurred in callbackfn");
+ }
+ }
+
+ var obj = { 0: 11, 4: 10, 10: 8, length: 20 };
+
+ try {
+ Array.prototype.reduce.call(obj, callbackfn, 1);
+ return false;
+ } catch (ex) {
+ return (ex instanceof Error) && !accessed;
+ }
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-ii-8.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-ii-8.js
new file mode 100644
index 000000000..f1ebf1f7e
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-ii-8.js
@@ -0,0 +1,45 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-ii-8.js
+ * @description Array.prototype.reduce - element changed by callbackfn on previous iterations is observed
+ */
+
+
+function testcase() {
+
+ var result = false;
+ function callbackfn(prevVal, curVal, idx, obj) {
+ if (idx === 0) {
+ obj[idx + 1] = 8;
+ }
+
+ if (idx === 1) {
+ result = (curVal === 8);
+ }
+ }
+
+ var obj = { 0: 11, 1: 12, length: 2 };
+
+ Array.prototype.reduce.call(obj, callbackfn, 1);
+ return result;
+ }
+runTestCase(testcase);
diff --git a/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-ii-9.js b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-ii-9.js
new file mode 100644
index 000000000..dcded8145
--- /dev/null
+++ b/external/contributions/Microsoft/ietcLatest/TestCases/ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-ii-9.js
@@ -0,0 +1,37 @@
+/// Copyright (c) 2009 Microsoft Corporation
+///
+/// Redistribution and use in source and binary forms, with or without modification, are permitted provided
+/// that the following conditions are met:
+/// * Redistributions of source code must retain the above copyright notice, this list of conditions and
+/// the following disclaimer.
+/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+/// the following disclaimer in the documentation and/or other materials provided with the distribution.
+/// * Neither the name of Microsoft nor the names of its contributors may be used to
+/// endorse or promote products derived from this software without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/**
+ * @path ch15/15.4/15.4.4/15.4.4.21/15.4.4.21-9-c-ii-9.js
+ * @description Array.prototype.reduce - callbackfn is called with 0 formal parameter
+ */
+
+
+function testcase() {
+
+ var called = 0;
+ function callbackfn() {
+ called++;
+ }
+
+ [11, 12].reduce(callbackfn, 1);
+ return 2 === called;
+ }
+runTestCase(testcase);