aboutsummaryrefslogtreecommitdiffstats
path: root/website/resources/scripts/testcases2/15.4.4.8_Array_prototype_reverse.json
blob: ac4492418fab295547187fb65d5c14a36ea6d91f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
{
 "testCollection": {
  "name": "15.4.4.8_Array_prototype_reverse",
  "numTests": 17,
  "tests": [
   {
    "section": "15.4.4.8",
    "description": "Checking case when reverse is given no arguments or one argument",
    "test": "//CHECK#1\nvar x = [];\nvar reverse = x.reverse();\nif (reverse !== x) {\n  $ERROR('#1: x = []; x.reverse() === x. Actual: ' + (reverse));\n}  \n\n//CHECK#2\nx = [];\nx[0] = 1;\nvar reverse = x.reverse();\nif (reverse !== x) {\n  $ERROR('#2: x = []; x[0] = 1; x.reverse() === x. Actual: ' + (reverse));\n}\n\n//CHECK#3\nx = new Array(1,2);\nvar reverse = x.reverse();\nif (reverse !== x) {\n  $ERROR('#3: x = new Array(1,2); x.reverse() === x. Actual: ' + (reverse));\n}\n\n//CHECK#4\nif (x[0] !== 2) {\n  $ERROR('#4: x = new Array(1,2); x.reverse(); x[0] === 2. Actual: ' + (x[0]));\n}\n\n//CHECK#5\nif (x[1] !== 1) {\n  $ERROR('#5: x = new Array(1,2); x.reverse(); x[1] === 1. Actual: ' + (x[1]));\n} \n\n//CHECK#6\nif (x.length !== 2) {\n  $ERROR('#6: x = new Array(1,2); x.reverse(); x.length === 2. Actual: ' + (x.length));\n}              \n",
    "id": "S15.4.4.8_A1_T1"
   },
   {
    "section": "15.4.4.8",
    "description": "Checking this algorithm, elements are objects and primitives",
    "test": "//CHECK#1\nvar x = [];\nx[0] = true;\nx[2] = Infinity;\nx[4] = undefined;\nx[5] = undefined;\nx[8] = \"NaN\";\nx[9] = \"-1\";\n\nvar reverse = x.reverse();\nif (reverse !== x) {\n  $ERROR('#1: x = []; x[0] = true; x[2] = Infinity; x[4] = undefined; x[5] = undefined; x[8] = \"NaN\"; x[9] = \"-1\"; x.reverse() === x. Actual: ' + (reverse));\n}\n\n//CHECK#2\nif (x[0] !== \"-1\") {\n   $ERROR('#2: x = []; x[0] = true; x[2] = Infinity; x[4] = undefined; x[5] = undefined; x[8] = \"NaN\"; x[9] = \"-1\"; x.reverse(); x[0] === \"-1\". Actual: ' + (x[0]));\n}\n\n//CHECK#3\nif (x[1] !== \"NaN\") {\n   $ERROR('#3: x = []; x[0] = true; x[2] = Infinity; x[4] = undefined; x[5] = undefined; x[8] = \"NaN\"; x[9] = \"-1\"; x.reverse(); x[1] === \"NaN\". Actual: ' + (x[1]));\n}    \n\n//CHECK#4\nif (x[2] !== undefined) {\n   $ERROR('#4: x = []; x[0] = true; x[2] = Infinity; x[4] = undefined; x[5] = undefined; x[8] = \"NaN\"; x[9] = \"-1\"; x.reverse(); x[2] === undefined. Actual: ' + (x[2]));\n}\n\n//CHECK#5\nif (x[3] !== undefined) {\n   $ERROR('#5: x = []; x[0] = true; x[2] = Infinity; x[4] = undefined; x[5] = undefined; x[8] = \"NaN\"; x[9] = \"-1\"; x.reverse(); x[3] === undefined. Actual: ' + (x[3]));\n}    \n\n//CHECK#6\nif (x[4] !== undefined) {\n   $ERROR('#6: x = []; x[0] = true; x[2] = Infinity; x[4] = undefined; x[5] = undefined; x[8] = \"NaN\"; x[9] = \"-1\"; x.reverse(); x[4] === undefined. Actual: ' + (x[4]));\n}\n\n//CHECK#7\nif (x[5] !== undefined) {\n   $ERROR('#7: x = []; x[0] = true; x[2] = Infinity; x[4] = undefined; x[5] = undefined; x[8] = \"NaN\"; x[9] = \"-1\"; x.reverse(); x[5] === undefined. Actual: ' + (x[5]));\n}\n\n//CHECK#8\nif (x[6] !== undefined) {\n   $ERROR('#8: x = []; x[0] = true; x[2] = Infinity; x[4] = undefined; x[5] = undefined; x[8] = \"NaN\"; x[9] = \"-1\"; x.reverse(); x[6] === undefined. Actual: ' + (x[6]));\n}      \n\n//CHECK#9\nif (x[7] !== Infinity) {\n   $ERROR('#9: x = []; x[0] = true; x[2] = Infinity; x[4] = undefined; x[5] = undefined; x[8] = \"NaN\"; x[9] = \"-1\"; x.reverse(); x[7] === Infinity. Actual: ' + (x[7]));\n}\n\n//CHECK#10\nif (x[8] !== undefined) {\n   $ERROR('#10: x = []; x[0] = true; x[2] = Infinity; x[4] = undefined; x[5] = undefined; x[8] = \"NaN\"; x[9] = \"-1\"; x.reverse(); x[8] === undefined. Actual: ' + (x[8]));\n}\n\n//CHECK#11\nif (x[9] !== true) {\n   $ERROR('#11: x = []; x[0] = true; x[2] = Infinity; x[4] = undefined; x[5] = undefined; x[8] = \"NaN\"; x[9] = \"-1\"; x.reverse(); x[9] === true. Actual: ' + (x[9]));\n}   \n\nx.length = 9;\n\nvar reverse = x.reverse();\nif (reverse !== x) {\n  $ERROR('#1: x = []; x[0] = true; x[2] = Infinity; x[4] = undefined; x[5] = undefined; x[8] = \"NaN\"; x[9] = \"-1\"; x.reverse(); x.length = 9; x.reverse() === x. Actual: ' + (reverse));\n}\n\n//CHECK#12\nif (x[0] !== undefined) {\n   $ERROR('#12: x = []; x[0] = true; x[2] = Infinity; x[4] = undefined; x[5] = undefined; x[8] = \"NaN\"; x[9] = \"-1\"; x.reverse(); x.length = 9; x.reverse(); x[0] === undefined. Actual: ' + (x[0]));\n}\n\n//CHECK#13\nif (x[1] !== Infinity) {\n   $ERROR('#13: x = []; x[0] = true; x[2] = Infinity; x[4] = undefined; x[5] = undefined; x[8] = \"NaN\"; x[9] = \"-1\"; x.reverse(); x.length = 9; x.reverse(); x[1] === Infinity. Actual: ' + (x[1]));\n}    \n\n//CHECK#14\nif (x[2] !== undefined) {\n   $ERROR('#14: x = []; x[0] = true; x[2] = Infinity; x[4] = undefined; x[5] = undefined; x[8] = \"NaN\"; x[9] = \"-1\"; x.reverse(); x.length = 9; x.reverse(); x[2] === undefined. Actual: ' + (x[2]));\n}\n\n//CHECK#15\nif (x[3] !== undefined) {\n   $ERROR('#15: x = []; x[0] = true; x[2] = Infinity; x[4] = undefined; x[5] = undefined; x[8] = \"NaN\"; x[9] = \"-1\"; x.reverse(); x.length = 9; x.reverse(); x[3] === undefined. Actual: ' + (x[3]));\n}    \n\n//CHECK#16\nif (x[4] !== undefined) {\n   $ERROR('#16: x = []; x[0] = true; x[2] = Infinity; x[4] = undefined; x[5] = undefined; x[8] = \"NaN\"; x[9] = \"-1\"; x.reverse(); x.length = 9; x.reverse(); x[4] === undefined. Actual: ' + (x[4]));\n}\n\n//CHECK#17\nif (x[5] !== undefined) {\n   $ERROR('#17: x = []; x[0] = true; x[2] = Infinity; x[4] = undefined; x[5] = undefined; x[8] = \"NaN\"; x[9] = \"-1\"; x.reverse(); x.length = 9; x.reverse(); x[5] === undefined. Actual: ' + (x[5]));\n}\n\n//CHECK#18\nif (x[6] !== undefined) {\n   $ERROR('#18: x = []; x[0] = true; x[2] = Infinity; x[4] = undefined; x[5] = undefined; x[8] = \"NaN\"; x[9] = \"-1\"; x.reverse(); x.length = 9; x.reverse(); x[6] === undefined. Actual: ' + (x[6]));\n}      \n\n//CHECK#19\nif (x[7] !== \"NaN\") {\n   $ERROR('#19: x = []; x[0] = true; x[2] = Infinity; x[4] = undefined; x[5] = undefined; x[8] = \"NaN\"; x[9] = \"-1\"; x.reverse(); x.length = 9; x.reverse(); x[7] === \"NaN\". Actual: ' + (x[7]));\n}\n\n//CHECK#20\nif (x[8] !== \"-1\") {\n   $ERROR('#20: x = []; x[0] = true; x[2] = Infinity; x[4] = undefined; x[5] = undefined; x[8] = \"NaN\"; x[9] = \"-1\"; x.reverse(); x.length = 9; x.reverse(); x[8] === \"-1\". Actual: ' + (x[8]));\n}\n    \n",
    "id": "S15.4.4.8_A1_T2"
   },
   {
    "section": "15.4.4.8",
    "description": "Checking this for Object object, elements are objects and primitives, length is integer",
    "test": "//CHECK#1\nvar obj = {};\nobj.length = 10;\nobj.reverse = Array.prototype.reverse;\n\nobj[0] = true;\nobj[2] = Infinity;\nobj[4] = undefined;\nobj[5] = undefined;\nobj[8] = \"NaN\";\nobj[9] = \"-1\";\n\nvar reverse = obj.reverse();\nif (reverse !== obj) {\n  $ERROR('#1: var obj = {}; obj.reverse = Array.prototype.reverse; obj.length = 10; obj[0] = true; obj[2] = Infinity; obj[4] = undefined; obj[5] = undefined; obj[8] = \"NaN\"; obj[9] = \"-1\"; obj.reverse() === obj. Actual: ' + (reverse));\n}\n\n//CHECK#2\nif (obj[0] !== \"-1\") {\n   $ERROR('#2: var obj = {}; obj.reverse = Array.prototype.reverse; obj.length = 10; obj[0] = true; obj[2] = Infinity; obj[4] = undefined; obj[5] = undefined; obj[8] = \"NaN\"; obj[9] = \"-1\"; obj.reverse(); obj[0] === \"-1\". Actual: ' + (obj[0]));\n}\n\n//CHECK#3\nif (obj[1] !== \"NaN\") {\n   $ERROR('#3: var obj = {}; obj.reverse = Array.prototype.reverse; obj.length = 10; obj[0] = true; obj[2] = Infinity; obj[4] = undefined; obj[5] = undefined; obj[8] = \"NaN\"; obj[9] = \"-1\"; obj.reverse(); obj[1] === \"NaN\". Actual: ' + (obj[1]));\n}    \n\n//CHECK#4\nif (obj[2] !== undefined) {\n   $ERROR('#4: var obj = {}; obj.reverse = Array.prototype.reverse; obj.length = 10; obj[0] = true; obj[2] = Infinity; obj[4] = undefined; obj[5] = undefined; obj[8] = \"NaN\"; obj[9] = \"-1\"; obj.reverse(); obj[2] === undefined. Actual: ' + (obj[2]));\n}\n\n//CHECK#5\nif (obj[3] !== undefined) {\n   $ERROR('#5: var obj = {}; obj.reverse = Array.prototype.reverse; obj.length = 10; obj[0] = true; obj[2] = Infinity; obj[4] = undefined; obj[5] = undefined; obj[8] = \"NaN\"; obj[9] = \"-1\"; obj.reverse(); obj[3] === undefined. Actual: ' + (obj[3]));\n}    \n\n//CHECK#6\nif (obj[4] !== undefined) {\n   $ERROR('#6: var obj = {}; obj.reverse = Array.prototype.reverse; obj.length = 10; obj[0] = true; obj[2] = Infinity; obj[4] = undefined; obj[5] = undefined; obj[8] = \"NaN\"; obj[9] = \"-1\"; obj.reverse(); obj[4] === undefined. Actual: ' + (obj[4]));\n}\n\n//CHECK#7\nif (obj[5] !== undefined) {\n   $ERROR('#7: var obj = {}; obj.reverse = Array.prototype.reverse; obj.length = 10; obj[0] = true; obj[2] = Infinity; obj[4] = undefined; obj[5] = undefined; obj[8] = \"NaN\"; obj[9] = \"-1\"; obj.reverse(); obj[5] === undefined. Actual: ' + (obj[5]));\n}\n\n//CHECK#8\nif (obj[6] !== undefined) {\n   $ERROR('#8: var obj = {}; obj.reverse = Array.prototype.reverse; obj.length = 10; obj[0] = true; obj[2] = Infinity; obj[4] = undefined; obj[5] = undefined; obj[8] = \"NaN\"; obj[9] = \"-1\"; obj.reverse(); obj[6] === undefined. Actual: ' + (obj[6]));\n}      \n\n//CHECK#9\nif (obj[7] !== Infinity) {\n   $ERROR('#9: var obj = {}; obj.reverse = Array.prototype.reverse; obj.length = 10; obj[0] = true; obj[2] = Infinity; obj[4] = undefined; obj[5] = undefined; obj[8] = \"NaN\"; obj[9] = \"-1\"; obj.reverse(); obj[7] === Infinity. Actual: ' + (obj[7]));\n}\n\n//CHECK#10\nif (obj[8] !== undefined) {\n   $ERROR('#10: var obj = {}; obj.reverse = Array.prototype.reverse; obj.length = 10; obj[0] = true; obj[2] = Infinity; obj[4] = undefined; obj[5] = undefined; obj[8] = \"NaN\"; obj[9] = \"-1\"; obj.reverse(); obj[8] === undefined. Actual: ' + (obj[8]));\n}\n\n//CHECK#11\nif (obj[9] !== true) {\n   $ERROR('#11: var obj = {}; obj.reverse = Array.prototype.reverse; obj.length = 10; obj[0] = true; obj[2] = Infinity; obj[4] = undefined; obj[5] = undefined; obj[8] = \"NaN\"; obj[9] = \"-1\"; obj.reverse(); obj[9] === true. Actual: ' + (obj[9]));\n}   \n\nobj.length = 9;\n\nvar reverse = obj.reverse();\nif (reverse !== obj) {\n  $ERROR('#1: var obj = {}; obj.reverse = Array.prototype.reverse; obj.length = 10; obj[0] = true; obj[2] = Infinity; obj[4] = undefined; obj[5] = undefined; obj[8] = \"NaN\"; obj[9] = \"-1\"; obj.reverse(); obj.length = 9; obj.reverse() === obj. Actual: ' + (reverse));\n}\n\n//CHECK#12\nif (obj[0] !== undefined) {\n   $ERROR('#12: var obj = {}; obj.reverse = Array.prototype.reverse; obj.length = 10; obj[0] = true; obj[2] = Infinity; obj[4] = undefined; obj[5] = undefined; obj[8] = \"NaN\"; obj[9] = \"-1\"; obj.reverse(); obj.length = 9; obj.reverse(); obj[0] === undefined. Actual: ' + (obj[0]));\n}\n\n//CHECK#13\nif (obj[1] !== Infinity) {\n   $ERROR('#13: var obj = {}; obj.reverse = Array.prototype.reverse; obj.length = 10; obj[0] = true; obj[2] = Infinity; obj[4] = undefined; obj[5] = undefined; obj[8] = \"NaN\"; obj[9] = \"-1\"; obj.reverse(); obj.length = 9; obj.reverse(); obj[1] === Infinity. Actual: ' + (obj[1]));\n}    \n\n//CHECK#14\nif (obj[2] !== undefined) {\n   $ERROR('#14: var obj = {}; obj.reverse = Array.prototype.reverse; obj.length = 10; obj[0] = true; obj[2] = Infinity; obj[4] = undefined; obj[5] = undefined; obj[8] = \"NaN\"; obj[9] = \"-1\"; obj.reverse(); obj.length = 9; obj.reverse(); obj[2] === undefined. Actual: ' + (obj[2]));\n}\n\n//CHECK#15\nif (obj[3] !== undefined) {\n   $ERROR('#15: var obj = {}; obj.reverse = Array.prototype.reverse; obj.length = 10; obj[0] = true; obj[2] = Infinity; obj[4] = undefined; obj[5] = undefined; obj[8] = \"NaN\"; obj[9] = \"-1\"; obj.reverse(); obj.length = 9; obj.reverse(); obj[3] === undefined. Actual: ' + (obj[3]));\n}    \n\n//CHECK#16\nif (obj[4] !== undefined) {\n   $ERROR('#16: var obj = {}; obj.reverse = Array.prototype.reverse; obj.length = 10; obj[0] = true; obj[2] = Infinity; obj[4] = undefined; obj[5] = undefined; obj[8] = \"NaN\"; obj[9] = \"-1\"; obj.reverse(); obj.length = 9; obj.reverse(); obj[4] === undefined. Actual: ' + (obj[4]));\n}\n\n//CHECK#17\nif (obj[5] !== undefined) {\n   $ERROR('#17: var obj = {}; obj.reverse = Array.prototype.reverse; obj.length = 10; obj[0] = true; obj[2] = Infinity; obj[4] = undefined; obj[5] = undefined; obj[8] = \"NaN\"; obj[9] = \"-1\"; obj.reverse(); obj.length = 9; obj.reverse(); obj[5] === undefined. Actual: ' + (obj[5]));\n}\n\n//CHECK#18\nif (obj[6] !== undefined) {\n   $ERROR('#18: var obj = {}; obj.reverse = Array.prototype.reverse; obj.length = 10; obj[0] = true; obj[2] = Infinity; obj[4] = undefined; obj[5] = undefined; obj[8] = \"NaN\"; obj[9] = \"-1\"; obj.reverse(); obj.length = 9; obj.reverse(); obj[6] === undefined. Actual: ' + (obj[6]));\n}      \n\n//CHECK#19\nif (obj[7] !== \"NaN\") {\n   $ERROR('#19: var obj = {}; obj.reverse = Array.prototype.reverse; obj.length = 10; obj[0] = true; obj[2] = Infinity; obj[4] = undefined; obj[5] = undefined; obj[8] = \"NaN\"; obj[9] = \"-1\"; obj.reverse(); obj.length = 9; obj.reverse(); obj[7] === \"NaN\". Actual: ' + (obj[7]));\n}\n\n//CHECK#20\nif (obj[8] !== \"-1\") {\n   $ERROR('#20: var obj = {}; obj.reverse = Array.prototype.reverse; obj.length = 10; obj[0] = true; obj[2] = Infinity; obj[4] = undefined; obj[5] = undefined; obj[8] = \"NaN\"; obj[9] = \"-1\"; obj.reverse(); obj.length = 9; obj.reverse(); obj[8] === \"-1\". Actual: ' + (obj[8]));\n}\n",
    "id": "S15.4.4.8_A2_T1"
   },
   {
    "section": "15.4.4.8",
    "description": "Checking this for Object object, elements are objects and primitives, length is not integer",
    "test": "//CHECK#1\nvar obj = {};\nobj.length = 10.5;\nobj.reverse = Array.prototype.reverse;\n\nobj[0] = true;\nobj[2] = Infinity;\nobj[4] = undefined;\nobj[5] = undefined;\nobj[8] = \"NaN\";\nobj[9] = \"-1\";\n\nvar reverse = obj.reverse();\nif (reverse !== obj) {\n  $ERROR('#1: var obj = {}; obj.reverse = Array.prototype.reverse; obj.length = 10.5; obj[0] = true; obj[2] = Infinity; obj[4] = undefined; obj[5] = undefined; obj[8] = \"NaN\"; obj[9] = \"-1\"; obj.reverse() === obj. Actual: ' + (reverse));\n}\n\n//CHECK#2\nif (obj[0] !== \"-1\") {\n   $ERROR('#2: var obj = {}; obj.reverse = Array.prototype.reverse; obj.length = 10.5; obj[0] = true; obj[2] = Infinity; obj[4] = undefined; obj[5] = undefined; obj[8] = \"NaN\"; obj[9] = \"-1\"; obj.reverse(); obj[0] === \"-1\". Actual: ' + (obj[0]));\n}\n\n//CHECK#3\nif (obj[1] !== \"NaN\") {\n   $ERROR('#3: var obj = {}; obj.reverse = Array.prototype.reverse; obj.length = 10.5; obj[0] = true; obj[2] = Infinity; obj[4] = undefined; obj[5] = undefined; obj[8] = \"NaN\"; obj[9] = \"-1\"; obj.reverse(); obj[1] === \"NaN\". Actual: ' + (obj[1]));\n}    \n\n//CHECK#4\nif (obj[2] !== undefined) {\n   $ERROR('#4: var obj = {}; obj.reverse = Array.prototype.reverse; obj.length = 10.5; obj[0] = true; obj[2] = Infinity; obj[4] = undefined; obj[5] = undefined; obj[8] = \"NaN\"; obj[9] = \"-1\"; obj.reverse(); obj[2] === undefined. Actual: ' + (obj[2]));\n}\n\n//CHECK#5\nif (obj[3] !== undefined) {\n   $ERROR('#5: var obj = {}; obj.reverse = Array.prototype.reverse; obj.length = 10.5; obj[0] = true; obj[2] = Infinity; obj[4] = undefined; obj[5] = undefined; obj[8] = \"NaN\"; obj[9] = \"-1\"; obj.reverse(); obj[3] === undefined. Actual: ' + (obj[3]));\n}    \n\n//CHECK#6\nif (obj[4] !== undefined) {\n   $ERROR('#6: var obj = {}; obj.reverse = Array.prototype.reverse; obj.length = 10.5; obj[0] = true; obj[2] = Infinity; obj[4] = undefined; obj[5] = undefined; obj[8] = \"NaN\"; obj[9] = \"-1\"; obj.reverse(); obj[4] === undefined. Actual: ' + (obj[4]));\n}\n\n//CHECK#7\nif (obj[5] !== undefined) {\n   $ERROR('#7: var obj = {}; obj.reverse = Array.prototype.reverse; obj.length = 10.5; obj[0] = true; obj[2] = Infinity; obj[4] = undefined; obj[5] = undefined; obj[8] = \"NaN\"; obj[9] = \"-1\"; obj.reverse(); obj[5] === undefined. Actual: ' + (obj[5]));\n}\n\n//CHECK#8\nif (obj[6] !== undefined) {\n   $ERROR('#8: var obj = {}; obj.reverse = Array.prototype.reverse; obj.length = 10.5; obj[0] = true; obj[2] = Infinity; obj[4] = undefined; obj[5] = undefined; obj[8] = \"NaN\"; obj[9] = \"-1\"; obj.reverse(); obj[6] === undefined. Actual: ' + (obj[6]));\n}      \n\n//CHECK#9\nif (obj[7] !== Infinity) {\n   $ERROR('#9: var obj = {}; obj.reverse = Array.prototype.reverse; obj.length = 10.5; obj[0] = true; obj[2] = Infinity; obj[4] = undefined; obj[5] = undefined; obj[8] = \"NaN\"; obj[9] = \"-1\"; obj.reverse(); obj[7] === Infinity. Actual: ' + (obj[7]));\n}\n\n//CHECK#10\nif (obj[8] !== undefined) {\n   $ERROR('#10: var obj = {}; obj.reverse = Array.prototype.reverse; obj.length = 10.5; obj[0] = true; obj[2] = Infinity; obj[4] = undefined; obj[5] = undefined; obj[8] = \"NaN\"; obj[9] = \"-1\"; obj.reverse(); obj[8] === undefined. Actual: ' + (obj[8]));\n}\n\n//CHECK#11\nif (obj[9] !== true) {\n   $ERROR('#11: var obj = {}; obj.reverse = Array.prototype.reverse; obj.length = 10.5; obj[0] = true; obj[2] = Infinity; obj[4] = undefined; obj[5] = undefined; obj[8] = \"NaN\"; obj[9] = \"-1\"; obj.reverse(); obj[9] === true. Actual: ' + (obj[9]));\n}   \n\nobj.length = new Number(9.5);\n\nvar reverse = obj.reverse();\nif (reverse !== obj) {\n  $ERROR('#1: var obj = {}; obj.reverse = Array.prototype.reverse; obj.length = 10.5; obj[0] = true; obj[2] = Infinity; obj[4] = undefined; obj[5] = undefined; obj[8] = \"NaN\"; obj[9] = \"-1\"; obj.reverse(); obj.length = new Number(9.5); obj.reverse() === obj. Actual: ' + (reverse));\n}\n\n//CHECK#12\nif (obj[0] !== undefined) {\n   $ERROR('#12: var obj = {}; obj.reverse = Array.prototype.reverse; obj.length = 10.5; obj[0] = true; obj[2] = Infinity; obj[4] = undefined; obj[5] = undefined; obj[8] = \"NaN\"; obj[9] = \"-1\"; obj.reverse(); obj.length = new Number(9.5); obj.reverse(); obj[0] === undefined. Actual: ' + (obj[0]));\n}\n\n//CHECK#13\nif (obj[1] !== Infinity) {\n   $ERROR('#13: var obj = {}; obj.reverse = Array.prototype.reverse; obj.length = 10.5; obj[0] = true; obj[2] = Infinity; obj[4] = undefined; obj[5] = undefined; obj[8] = \"NaN\"; obj[9] = \"-1\"; obj.reverse(); obj.length = new Number(9.5); obj.reverse(); obj[1] === Infinity. Actual: ' + (obj[1]));\n}    \n\n//CHECK#14\nif (obj[2] !== undefined) {\n   $ERROR('#14: var obj = {}; obj.reverse = Array.prototype.reverse; obj.length = 10.5; obj[0] = true; obj[2] = Infinity; obj[4] = undefined; obj[5] = undefined; obj[8] = \"NaN\"; obj[9] = \"-1\"; obj.reverse(); obj.length = new Number(9.5); obj.reverse(); obj[2] === undefined. Actual: ' + (obj[2]));\n}\n\n//CHECK#15\nif (obj[3] !== undefined) {\n   $ERROR('#15: var obj = {}; obj.reverse = Array.prototype.reverse; obj.length = 10.5; obj[0] = true; obj[2] = Infinity; obj[4] = undefined; obj[5] = undefined; obj[8] = \"NaN\"; obj[9] = \"-1\"; obj.reverse(); obj.length = new Number(9.5); obj.reverse(); obj[3] === undefined. Actual: ' + (obj[3]));\n}    \n\n//CHECK#16\nif (obj[4] !== undefined) {\n   $ERROR('#16: var obj = {}; obj.reverse = Array.prototype.reverse; obj.length = 10.5; obj[0] = true; obj[2] = Infinity; obj[4] = undefined; obj[5] = undefined; obj[8] = \"NaN\"; obj[9] = \"-1\"; obj.reverse(); obj.length = new Number(9.5); obj.reverse(); obj[4] === undefined. Actual: ' + (obj[4]));\n}\n\n//CHECK#17\nif (obj[5] !== undefined) {\n   $ERROR('#17: var obj = {}; obj.reverse = Array.prototype.reverse; obj.length = 10.5; obj[0] = true; obj[2] = Infinity; obj[4] = undefined; obj[5] = undefined; obj[8] = \"NaN\"; obj[9] = \"-1\"; obj.reverse(); obj.length = new Number(9.5); obj.reverse(); obj[5] === undefined. Actual: ' + (obj[5]));\n}\n\n//CHECK#18\nif (obj[6] !== undefined) {\n   $ERROR('#18: var obj = {}; obj.reverse = Array.prototype.reverse; obj.length = 10.5; obj[0] = true; obj[2] = Infinity; obj[4] = undefined; obj[5] = undefined; obj[8] = \"NaN\"; obj[9] = \"-1\"; obj.reverse(); obj.length = new Number(9.5); obj.reverse(); obj[6] === undefined. Actual: ' + (obj[6]));\n}      \n\n//CHECK#19\nif (obj[7] !== \"NaN\") {\n   $ERROR('#19: var obj = {}; obj.reverse = Array.prototype.reverse; obj.length = 10.5; obj[0] = true; obj[2] = Infinity; obj[4] = undefined; obj[5] = undefined; obj[8] = \"NaN\"; obj[9] = \"-1\"; obj.reverse(); obj.length = new Number(9.5); obj.reverse(); obj[7] === \"NaN\". Actual: ' + (obj[7]));\n}\n\n//CHECK#20\nif (obj[8] !== \"-1\") {\n   $ERROR('#20: var obj = {}; obj.reverse = Array.prototype.reverse; obj.length = 10.5; obj[0] = true; obj[2] = Infinity; obj[4] = undefined; obj[5] = undefined; obj[8] = \"NaN\"; obj[9] = \"-1\"; obj.reverse(); obj.length = new Number(9.5); obj.reverse(); obj[8] === \"-1\". Actual: ' + (obj[8]));\n}\n",
    "id": "S15.4.4.8_A2_T2"
   },
   {
    "section": "15.4.4.8",
    "description": "Checking this for Object object, elements are objects and primitives, length is string",
    "test": "//CHECK#1\nvar obj = {};\nobj.length = \"10\";\nobj.reverse = Array.prototype.reverse;\n\nobj[0] = true;\nobj[2] = Infinity;\nobj[4] = undefined;\nobj[5] = undefined;\nobj[8] = \"NaN\";\nobj[9] = \"-1\";\n\nvar reverse = obj.reverse();\nif (reverse !== obj) {\n  $ERROR('#1: var obj = {}; obj.reverse = Array.prototype.reverse; obj.length = \"10\"; obj[0] = true; obj[2] = Infinity; obj[4] = undefined; obj[5] = undefined; obj[8] = \"NaN\"; obj[9] = \"-1\"; obj.reverse() === obj. Actual: ' + (reverse));\n}\n\n//CHECK#2\nif (obj[0] !== \"-1\") {\n   $ERROR('#2: var obj = {}; obj.reverse = Array.prototype.reverse; obj.length = \"10\"; obj[0] = true; obj[2] = Infinity; obj[4] = undefined; obj[5] = undefined; obj[8] = \"NaN\"; obj[9] = \"-1\"; obj.reverse(); obj[0] === \"-1\". Actual: ' + (obj[0]));\n}\n\n//CHECK#3\nif (obj[1] !== \"NaN\") {\n   $ERROR('#3: var obj = {}; obj.reverse = Array.prototype.reverse; obj.length = \"10\"; obj[0] = true; obj[2] = Infinity; obj[4] = undefined; obj[5] = undefined; obj[8] = \"NaN\"; obj[9] = \"-1\"; obj.reverse(); obj[1] === \"NaN\". Actual: ' + (obj[1]));\n}    \n\n//CHECK#4\nif (obj[2] !== undefined) {\n   $ERROR('#4: var obj = {}; obj.reverse = Array.prototype.reverse; obj.length = \"10\"; obj[0] = true; obj[2] = Infinity; obj[4] = undefined; obj[5] = undefined; obj[8] = \"NaN\"; obj[9] = \"-1\"; obj.reverse(); obj[2] === undefined. Actual: ' + (obj[2]));\n}\n\n//CHECK#5\nif (obj[3] !== undefined) {\n   $ERROR('#5: var obj = {}; obj.reverse = Array.prototype.reverse; obj.length = \"10\"; obj[0] = true; obj[2] = Infinity; obj[4] = undefined; obj[5] = undefined; obj[8] = \"NaN\"; obj[9] = \"-1\"; obj.reverse(); obj[3] === undefined. Actual: ' + (obj[3]));\n}    \n\n//CHECK#6\nif (obj[4] !== undefined) {\n   $ERROR('#6: var obj = {}; obj.reverse = Array.prototype.reverse; obj.length = \"10\"; obj[0] = true; obj[2] = Infinity; obj[4] = undefined; obj[5] = undefined; obj[8] = \"NaN\"; obj[9] = \"-1\"; obj.reverse(); obj[4] === undefined. Actual: ' + (obj[4]));\n}\n\n//CHECK#7\nif (obj[5] !== undefined) {\n   $ERROR('#7: var obj = {}; obj.reverse = Array.prototype.reverse; obj.length = \"10\"; obj[0] = true; obj[2] = Infinity; obj[4] = undefined; obj[5] = undefined; obj[8] = \"NaN\"; obj[9] = \"-1\"; obj.reverse(); obj[5] === undefined. Actual: ' + (obj[5]));\n}\n\n//CHECK#8\nif (obj[6] !== undefined) {\n   $ERROR('#8: var obj = {}; obj.reverse = Array.prototype.reverse; obj.length = \"10\"; obj[0] = true; obj[2] = Infinity; obj[4] = undefined; obj[5] = undefined; obj[8] = \"NaN\"; obj[9] = \"-1\"; obj.reverse(); obj[6] === undefined. Actual: ' + (obj[6]));\n}      \n\n//CHECK#9\nif (obj[7] !== Infinity) {\n   $ERROR('#9: var obj = {}; obj.reverse = Array.prototype.reverse; obj.length = \"10\"; obj[0] = true; obj[2] = Infinity; obj[4] = undefined; obj[5] = undefined; obj[8] = \"NaN\"; obj[9] = \"-1\"; obj.reverse(); obj[7] === Infinity. Actual: ' + (obj[7]));\n}\n\n//CHECK#10\nif (obj[8] !== undefined) {\n   $ERROR('#10: var obj = {}; obj.reverse = Array.prototype.reverse; obj.length = \"10\"; obj[0] = true; obj[2] = Infinity; obj[4] = undefined; obj[5] = undefined; obj[8] = \"NaN\"; obj[9] = \"-1\"; obj.reverse(); obj[8] === undefined. Actual: ' + (obj[8]));\n}\n\n//CHECK#11\nif (obj[9] !== true) {\n   $ERROR('#11: var obj = {}; obj.reverse = Array.prototype.reverse; obj.length = \"10\"; obj[0] = true; obj[2] = Infinity; obj[4] = undefined; obj[5] = undefined; obj[8] = \"NaN\"; obj[9] = \"-1\"; obj.reverse(); obj[9] === true. Actual: ' + (obj[9]));\n}   \n\nobj.length = new String(\"9\");\n\nvar reverse = obj.reverse();\nif (reverse !== obj) {\n  $ERROR('#1: var obj = {}; obj.reverse = Array.prototype.reverse; obj.length = \"10\"; obj[0] = true; obj[2] = Infinity; obj[4] = undefined; obj[5] = undefined; obj[8] = \"NaN\"; obj[9] = \"-1\"; obj.reverse(); obj.length = new String(\"9\"); obj.reverse() === obj. Actual: ' + (reverse));\n}\n\n//CHECK#12\nif (obj[0] !== undefined) {\n   $ERROR('#12: var obj = {}; obj.reverse = Array.prototype.reverse; obj.length = \"10\"; obj[0] = true; obj[2] = Infinity; obj[4] = undefined; obj[5] = undefined; obj[8] = \"NaN\"; obj[9] = \"-1\"; obj.reverse(); obj.length = new String(\"9\"); obj.reverse(); obj[0] === undefined. Actual: ' + (obj[0]));\n}\n\n//CHECK#13\nif (obj[1] !== Infinity) {\n   $ERROR('#13: var obj = {}; obj.reverse = Array.prototype.reverse; obj.length = \"10\"; obj[0] = true; obj[2] = Infinity; obj[4] = undefined; obj[5] = undefined; obj[8] = \"NaN\"; obj[9] = \"-1\"; obj.reverse(); obj.length = new String(\"9\"); obj.reverse(); obj[1] === Infinity. Actual: ' + (obj[1]));\n}    \n\n//CHECK#14\nif (obj[2] !== undefined) {\n   $ERROR('#14: var obj = {}; obj.reverse = Array.prototype.reverse; obj.length = \"10\"; obj[0] = true; obj[2] = Infinity; obj[4] = undefined; obj[5] = undefined; obj[8] = \"NaN\"; obj[9] = \"-1\"; obj.reverse(); obj.length = new String(\"9\"); obj.reverse(); obj[2] === undefined. Actual: ' + (obj[2]));\n}\n\n//CHECK#15\nif (obj[3] !== undefined) {\n   $ERROR('#15: var obj = {}; obj.reverse = Array.prototype.reverse; obj.length = \"10\"; obj[0] = true; obj[2] = Infinity; obj[4] = undefined; obj[5] = undefined; obj[8] = \"NaN\"; obj[9] = \"-1\"; obj.reverse(); obj.length = new String(\"9\"); obj.reverse(); obj[3] === undefined. Actual: ' + (obj[3]));\n}    \n\n//CHECK#16\nif (obj[4] !== undefined) {\n   $ERROR('#16: var obj = {}; obj.reverse = Array.prototype.reverse; obj.length = \"10\"; obj[0] = true; obj[2] = Infinity; obj[4] = undefined; obj[5] = undefined; obj[8] = \"NaN\"; obj[9] = \"-1\"; obj.reverse(); obj.length = new String(\"9\"); obj.reverse(); obj[4] === undefined. Actual: ' + (obj[4]));\n}\n\n//CHECK#17\nif (obj[5] !== undefined) {\n   $ERROR('#17: var obj = {}; obj.reverse = Array.prototype.reverse; obj.length = \"10\"; obj[0] = true; obj[2] = Infinity; obj[4] = undefined; obj[5] = undefined; obj[8] = \"NaN\"; obj[9] = \"-1\"; obj.reverse(); obj.length = new String(\"9\"); obj.reverse(); obj[5] === undefined. Actual: ' + (obj[5]));\n}\n\n//CHECK#18\nif (obj[6] !== undefined) {\n   $ERROR('#18: var obj = {}; obj.reverse = Array.prototype.reverse; obj.length = \"10\"; obj[0] = true; obj[2] = Infinity; obj[4] = undefined; obj[5] = undefined; obj[8] = \"NaN\"; obj[9] = \"-1\"; obj.reverse(); obj.length = new String(\"9\"); obj.reverse(); obj[6] === undefined. Actual: ' + (obj[6]));\n}      \n\n//CHECK#19\nif (obj[7] !== \"NaN\") {\n   $ERROR('#19: var obj = {}; obj.reverse = Array.prototype.reverse; obj.length = \"10\"; obj[0] = true; obj[2] = Infinity; obj[4] = undefined; obj[5] = undefined; obj[8] = \"NaN\"; obj[9] = \"-1\"; obj.reverse(); obj.length = new String(\"9\"); obj.reverse(); obj[7] === \"NaN\". Actual: ' + (obj[7]));\n}\n\n//CHECK#20\nif (obj[8] !== \"-1\") {\n   $ERROR('#20: var obj = {}; obj.reverse = Array.prototype.reverse; obj.length = \"10\"; obj[0] = true; obj[2] = Infinity; obj[4] = undefined; obj[5] = undefined; obj[8] = \"NaN\"; obj[9] = \"-1\"; obj.reverse(); obj.length = new String(\"9\"); obj.reverse(); obj[8] === \"-1\". Actual: ' + (obj[8]));\n}\n",
    "id": "S15.4.4.8_A2_T3"
   },
   {
    "section": "15.4.4.8",
    "description": "length = 4294967296",
    "test": "var obj = {};\nobj.reverse = Array.prototype.reverse;\nobj[0] = \"x\";\nobj[4294967295] = \"y\";\nobj.length = 4294967296;\n\n//CHECK#1\nvar reverse = obj.reverse();\nif (reverse !== obj) {\n  $ERROR('#1: var obj = {}; obj.reverse = Array.prototype.reverse; obj[0] = \"x\"; obj[4294967295] = \"y\"; obj.length = 4294967296; obj.reverse() === obj. Actual: ' + (reverse));\n}\n\n//CHECK#2\nif (obj.length !== 4294967296) {\n  $ERROR('#2: var obj = {}; obj.reverse = Array.prototype.reverse; obj[0] = \"x\"; obj[4294967295] = \"y\"; obj.length = 4294967296; obj.reverse(); obj.length === 4294967296. Actual: ' + (obj.length));\n}\n\n//CHECK#3\nif (obj[0] !== \"x\") {\n  $ERROR('#3: var obj = {}; obj.reverse = Array.prototype.reverse; obj[0] = \"x\"; obj[4294967295] = \"y\"; obj.length = 4294967296; obj.reverse(); obj[0] == \"x\"');\n}\n\n//CHECK#4\nif (obj[4294967295] !== \"y\") {\n  $ERROR('#4: var obj = {}; obj.reverse = Array.prototype.reverse; obj[] = \"x\"; obj[4294967295] = \"y\"; obj.length = 4294967296; obj.reverse(); obj[4294967295] == \"y\"');\n}\n",
    "id": "S15.4.4.8_A3_T1"
   },
   {
    "section": "15.4.4.8",
    "description": "length = 4294967298",
    "test": "var obj = {};\nobj.reverse = Array.prototype.reverse;\nobj[0] = \"x\";\nobj[1] = \"y\";\nobj[4294967297] = \"z\";\nobj.length = 4294967298;\n\n//CHECK#1\nvar reverse = obj.reverse();\nif (reverse !== obj) {\n  $ERROR('#1: var obj = {}; obj.reverse = Array.prototype.reverse; obj[0] = \"x\"; obj[1] = \"y\"; obj[4294967297] = \"z\"; obj.length = 4294967298; obj.reverse() === obj. Actual: ' + (reverse));\n}\n\n//CHECK#2\nif (obj.length !== 4294967298) {\n  $ERROR('#2: var obj = {}; obj.reverse = Array.prototype.reverse; obj[0] = \"x\"; obj[1] = \"y\"; obj[4294967297] = \"z\"; obj.length = 4294967298; obj.reverse(); obj.length === 4294967298. Actual: ' + (obj.length));\n}\n\n//CHECK#3\nif (obj[0] !== \"y\") {\n  $ERROR('#3: var obj = {}; obj.reverse = Array.prototype.reverse; obj[0] = \"x\"; obj[1] = \"y\"; obj[4294967297] = \"z\"; obj.length = 4294967298; obj.reverse(); obj[0] === \"y\". Actual: ' + (obj[0]));\n}   \n\n//CHECK#4\nif (obj[1] !== \"x\") {\n  $ERROR('#4: var obj = {}; obj.reverse = Array.prototype.reverse; obj[0] = \"x\"; obj[1] = \"y\"; obj[4294967297] = \"z\"; obj.length = 4294967298; obj.reverse(); obj[1] === \"x\". Actual: ' + (obj[1]));\n} \n\n//CHECK#5\nif (obj[4294967297] !== \"z\") {\n  $ERROR('#5: var obj = {}; obj.reverse = Array.prototype.reverse; obj[0] = \"x\"; obj[1] = \"y\"; obj[4294967297] = \"z\"; obj.length = 4294967298; obj.reverse(); obj[4294967297] === \"z\". Actual: ' + (obj[4294967297]));\n} \n",
    "id": "S15.4.4.8_A3_T2"
   },
   {
    "section": "15.4.4.8",
    "description": "length = -4294967294",
    "test": "var obj = {};\nobj.reverse = Array.prototype.reverse;\nobj[0] = \"x\";\nobj[1] = \"y\";\nobj[2] = \"z\";\nobj.length = -4294967294;\n\n//CHECK#1\nvar reverse = obj.reverse();\nif (reverse !== obj) {\n  $ERROR('#1: var obj = {}; obj.reverse = Array.prototype.reverse; obj[0] = \"x\"; obj[1] = \"y\"; obj[2] = \"z\"; obj.length = -4294967294; obj.reverse() === obj. Actual: ' + (reverse));\n}\n\n//CHECK#2\nif (obj.length !== -4294967294) {\n  $ERROR('#2: var obj = {}; obj.reverse = Array.prototype.reverse; obj[0] = \"x\"; obj[1] = \"y\"; obj[2] = \"z\"; obj.length = -4294967294; obj.reverse(); obj.length === -4294967294. Actual: ' + (obj.length));\n}\n\n//CHECK#3\nif (obj[0] !== \"y\") {\n  $ERROR('#3: var obj = {}; obj.reverse = Array.prototype.reverse; obj[0] = \"x\"; obj[1] = \"y\"; obj[2] = \"z\"; obj.length = -4294967294; obj.reverse(); obj[0] === \"y\". Actual: ' + (obj[0]));\n}   \n\n//CHECK#4\nif (obj[1] !== \"x\") {\n  $ERROR('#4: var obj = {}; obj.reverse = Array.prototype.reverse; obj[0] = \"x\"; obj[1] = \"y\"; obj[2] = \"z\"; obj.length = -4294967294; obj.reverse(); obj[1] === \"x\". Actual: ' + (obj[1]));\n} \n\n//CHECK#5\nif (obj[2] !== \"z\") {\n  $ERROR('#5: var obj = {}; obj.reverse = Array.prototype.reverse; obj[0] = \"x\"; obj[1] = \"y\"; obj[2] = \"z\"; obj.length = -4294967294; obj.reverse(); obj[2] === \"z\". Actual: ' + (obj[2]));\n}  \n",
    "id": "S15.4.4.8_A3_T3"
   },
   {
    "section": "15.4.4.8, 8.6.2.1, 8.6.2.5",
    "description": "[[Prototype]] of Array instance is Array.prototype, [[Prototype] of Array.prototype is Object.prototype",
    "test": "Array.prototype[1] = 1;\nvar x = [0];\nx.length = 2;\nx.reverse();\n\n//CHECK#1\nif (x[0] !== 1) {  \n  $ERROR('#1: Array.prototype[1] = 1; x = [0]; x.length = 2; x.reverse(); x[0] === 1. Actual: ' + (x[0]));    \n}\n\n//CHECK#2\nif (x[1] !== 0) {  \n  $ERROR('#2: Array.prototype[1] = 1; x = [0]; x.length = 2; x.reverse(); x[1] === 0. Actual: ' + (x[1]));    \n}\n\nx.length = 0;\n\n//CHECK#3\nif (x[0] !== undefined) {  \n  $ERROR('#3: Array.prototype[1] = 1; x = [0]; x.length = 2; x.reverse(); x.length = 0; x[0] === undefined. Actual: ' + (x[0]));    \n}\n\n//CHECK#4\nif (x[1] !== 1) {  \n  $ERROR('#4: Array.prototype[1] = 1; x = [0]; x.length = 2; x.reverse(); x.length = 0; x[1] === 1. Actual: ' + (x[1]));    \n}\n\nObject.prototype[1] = 1;\nObject.prototype.length = 2;\nObject.prototype.reverse = Array.prototype.reverse;\nx = {0:0};\nx.reverse();\n\n//CHECK#5\nif (x[0] !== 1) {  \n  $ERROR('#5: Object.prototype[1] = 1; Object.prototype.length = 2; Object.prototype.reverse = Array.prototype.reverse; x = {0:0}; x.reverse(); x[0] === 0. Actual: ' + (x[0]));    \n}\n\n//CHECK#6\nif (x[1] !== 0) {  \n  $ERROR('#6: Object.prototype[1] = 1; Object.prototype.length = 2; Object.prototype.reverse = Array.prototype.reverse; x = {0:0}; x.reverse(); x[1] === 0. Actual: ' + (x[1]));    \n}\n\ndelete x[0];\ndelete x[1];\n\n//CHECK#7\nif (x[0] !== undefined) {  \n  $ERROR('#7: Object.prototype[1] = 1; Object.prototype.length = 2; Object.prototype.reverse = Array.prototype.reverse; x = {0:0}; x.reverse(); delete x[0]; delete x[1]; x[0] === undefined. Actual: ' + (x[0]));    \n}\n\n//CHECK#8\nif (x[1] !== 1) {  \n  $ERROR('#8: Object.prototype[1] = 1; Object.prototype.length = 2; Object.prototype.reverse = Array.prototype.reverse; x = {0:0}; x.reverse(); delete x[0]; delete x[1]; x[1] === 1. Actual: ' + (x[1]));    \n}\n",
    "id": "S15.4.4.8_A4_T1"
   },
   {
    "section": "15.4.4.8, 8.6.2.1, 8.6.2.5",
    "description": "[[Prototype]] of Array instance is Array.prototype, [[Prototype] of Array.prototype is Object.prototype",
    "test": "Array.prototype[1] = -1;\nvar x = [0,1];\nx.length = 2;\nx.reverse();\n\n//CHECK#1\nif (x[0] !== 1) {  \n  $ERROR('#1: Array.prototype[1] = -1; x = [0,1]; x.length = 2; x.reverse(); x[0] === 1. Actual: ' + (x[0]));    \n}\n\n//CHECK#2\nif (x[1] !== 0) {  \n  $ERROR('#2: Array.prototype[1] = -1; x = [0,1]; x.length = 2; x.reverse(); x[1] === 0. Actual: ' + (x[1]));    \n}\n\nx.length = 0;\n\n//CHECK#3\nif (x[0] !== undefined) {  \n  $ERROR('#3: Array.prototype[1] = -1; x = [0,1]; x.length = 2; x.reverse(); x.length = 0; x[0] === undefined. Actual: ' + (x[0]));    \n}\n\n//CHECK#4\nif (x[1] !== -1) {  \n  $ERROR('#4: Array.prototype[1] = -1; x = [0,1]; x.length = 2; x.reverse(); x.length = 0; x[1] === -1. Actual: ' + (x[1]));    \n}\n\nObject.prototype[1] = -1;\nObject.prototype.length = 2;\nObject.prototype.reverse = Array.prototype.reverse;\nx = {0:0,1:1};\nx.reverse();\n\n//CHECK#5\nif (x[0] !== 1) {  \n  $ERROR('#5: Object.prototype[1] = -1; Object.prototype.length = 2; Object.prototype.reverse = Array.prototype.reverse; x = {0:0,1:1}; x.reverse(); x[0] === 0. Actual: ' + (x[0]));    \n}\n\n//CHECK#6\nif (x[1] !== 0) {  \n  $ERROR('#6: Object.prototype[1] = -1; Object.prototype.length = 2; Object.prototype.reverse = Array.prototype.reverse; x = {0:0,1:1}; x.reverse(); x[1] === 0. Actual: ' + (x[1]));    \n}\n\ndelete x[0];\ndelete x[1];\n\n//CHECK#7\nif (x[0] !== undefined) {  \n  $ERROR('#7: Object.prototype[1] = -1; Object.prototype.length = 2; Object.prototype.reverse = Array.prototype.reverse; x = {0:0,1:1}; x.reverse(); delete x[0]; delete x[1]; x[0] === undefined. Actual: ' + (x[0]));    \n}\n\n//CHECK#8\nif (x[1] !== -1) {  \n  $ERROR('#8: Object.prototype[1] = -1; Object.prototype.length = 2; Object.prototype.reverse = Array.prototype.reverse; x = {0:0,1:1}; x.reverse(); delete x[0]; delete x[1]; x[1] === -1. Actual: ' + (x[1]));    \n}\n",
    "id": "S15.4.4.8_A4_T2"
   },
   {
    "section": "15.4.4.8, 15.2.4.7, 12.6.4",
    "description": "Checking use propertyIsEnumerable, for-in",
    "test": "//CHECK#1\nif (Array.prototype.reverse.propertyIsEnumerable('length') !== false) {\n  $ERROR('#1: Array.prototype.reverse.propertyIsEnumerable(\\'length\\') === false. Actual: ' + (Array.prototype.reverse.propertyIsEnumerable('length')));\n}\n\n//CHECK#2\nvar result = true;\nfor (p in Array.reverse){\n  if (p === \"length\") {\n    var result = false;\n  }  \n}\n\nif (result !== true) {\n  $ERROR('#2: result = true; for (p in Array.reverse) { if (p === \"length\") result = false; }  result === true;');\n}\n\n",
    "id": "S15.4.4.8_A5.1"
   },
   {
    "section": "15.4.4.8, 15.2.4.5, 11.4.1",
    "description": "Checking use hasOwnProperty, delete",
    "strict_mode_negative": "",
    "test": "//CHECK#1\nif (Array.prototype.reverse.hasOwnProperty('length') !== true) {\n  $FAIL('#1: Array.prototype.reverse.hasOwnProperty(\\'length\\') === true. Actual: ' + (Array.prototype.reverse.hasOwnProperty('length')));\n}\n\ndelete Array.prototype.reverse.length;\n\n//CHECK#2\nif (Array.prototype.reverse.hasOwnProperty('length') !== true) {\n  $ERROR('#2: delete Array.prototype.reverse.length; Array.prototype.reverse.hasOwnProperty(\\'length\\') === true. Actual: ' + (Array.prototype.reverse.hasOwnProperty('length')));\n}\n\n//CHECK#3\nif (Array.prototype.reverse.length === undefined) {\n  $ERROR('#3: delete Array.prototype.reverse.length; Array.prototype.reverse.length !== undefined');\n}\n\n\n",
    "id": "S15.4.4.8_A5.2",
    "strict_only": ""
   },
   {
    "section": "15.4.4.8",
    "description": "Checking if varying the length property fails",
    "strict_mode_negative": "",
    "test": "//CHECK#1\nvar x = Array.prototype.reverse.length;\nArray.prototype.reverse.length = Infinity;\nif (Array.prototype.reverse.length !== x) {\n  $ERROR('#1: x = Array.prototype.reverse.length; Array.prototype.reverse.length = Infinity; Array.prototype.reverse.length === x. Actual: ' + (Array.prototype.reverse.length));\n}\n\n",
    "id": "S15.4.4.8_A5.3",
    "strict_only": ""
   },
   {
    "section": "15.4.4.8",
    "description": "reverse.length === 1",
    "test": "//CHECK#1\nif (Array.prototype.reverse.length !== 0) {\n  $ERROR('#1: Array.prototype.reverse.length === 0. Actual: ' + (Array.prototype.reverse.length));\n}\n\n",
    "id": "S15.4.4.8_A5.4"
   },
   {
    "section": "15.4.4.8, 15.2.4.7, 12.6.4",
    "description": "Checking use propertyIsEnumerable, for-in",
    "test": "//CHECK#1\nif (Array.propertyIsEnumerable('reverse') !== false) {\n  $ERROR('#1: Array.propertyIsEnumerable(\\'reverse\\') === false. Actual: ' + (Array.propertyIsEnumerable('reverse')));\n}\n\n//CHECK#2\nvar result = true;\nfor (var p in Array){\n  if (p === \"reverse\") {\n    result = false;\n  }  \n}\n\nif (result !== true) {\n  $ERROR('#2: result = true; for (p in Array) { if (p === \"reverse\") result = false; }  result === true;');\n}\n\n",
    "id": "S15.4.4.8_A5.5"
   },
   {
    "section": "15.4.4.8",
    "description": "Checking Array.prototype.reverse.prototype",
    "test": "//CHECK#1\nif (Array.prototype.reverse.prototype !== undefined) {\n  $ERROR('#1: Array.prototype.reverse.prototype === undefined. Actual: ' + (Array.prototype.reverse.prototype));\n}\n",
    "id": "S15.4.4.8_A5.6"
   },
   {
    "section": "15.4.4.8, 11.2.2",
    "description": "If property does not implement the internal [[Construct]] method, throw a TypeError exception",
    "test": "//CHECK#1\n\ntry {\n  new Array.prototype.reverse();\n  $ERROR('#1.1: new Array.prototype.reverse() throw TypeError. Actual: ' + (new Array.prototype.reverse()));\n} catch (e) {\n  if ((e instanceof TypeError) !== true) {\n    $ERROR('#1.2: new Array.prototype.reverse() throw TypeError. Actual: ' + (e));\n  }\n}\n",
    "id": "S15.4.4.8_A5.7"
   }
  ]
 }
}