aboutsummaryrefslogtreecommitdiffstats
path: root/website/resources/scripts/testcases2/15.4.4.10_Array_prototype_slice.json
blob: 2c4131defa1b73aa4b1759c7ee282cf330b3bfff (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
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
{
 "testCollection": {
  "name": "15.4.4.10_Array_prototype_slice",
  "numTests": 48,
  "tests": [
   {
    "section": "15.4.4.10",
    "description": "length > end > start = 0",
    "test": "var x = [0,1,2,3,4];\nvar arr = x.slice(0,3);\n\n//CHECK#1\narr.getClass = Object.prototype.toString;\nif (arr.getClass() !== \"[object \" + \"Array\" + \"]\") {\n  $ERROR('#1: var x = [0,1,2,3,4]; var arr = x.slice(0,3); arr is Array object. Actual: ' + (arr.getClass()));\n}\n\n//CHECK#2\nif (arr.length !== 3) {\n  $ERROR('#2: var x = [0,1,2,3,4]; var arr = x.slice(0,3); arr.length === 3. Actual: ' + (arr.length));\n}      \n\n//CHECK#3\nif (arr[0] !== 0) {\n  $ERROR('#3: var x = [0,1,2,3,4]; var arr = x.slice(0,3); arr[0] === 0. Actual: ' + (arr[0]));\n}\n\n//CHECK#4\nif (arr[1] !== 1) {\n  $ERROR('#4: var x = [0,1,2,3,4]; var arr = x.slice(0,3); arr[1] === 1. Actual: ' + (arr[1]));\n}      \n\n//CHECK#5\nif (arr[2] !== 2) {\n  $ERROR('#5: var x = [0,1,2,3,4]; var arr = x.slice(0,3); arr[2] === 2. Actual: ' + (arr[2]));\n}   \n\n//CHECK#6\nif (arr[3] !== undefined) {\n  $ERROR('#6: var x = [0,1,2,3,4]; var arr = x.slice(0,3); arr[3] === undefined. Actual: ' + (arr[3]));\n}   \n",
    "id": "S15.4.4.10_A1.1_T1"
   },
   {
    "section": "15.4.4.10",
    "description": "length > end = start > 0",
    "test": "var x = [0,1,2,3,4];\nvar arr = x.slice(3,3);\n\n//CHECK#1\narr.getClass = Object.prototype.toString;\nif (arr.getClass() !== \"[object \" + \"Array\" + \"]\") {\n  $ERROR('#1: var x = [0,1,2,3,4]; var arr = x.slice(3,3); arr is Array object. Actual: ' + (arr.getClass()));\n}\n\n//CHECK#2\nif (arr.length !== 0) {\n  $ERROR('#2: var x = [0,1,2,3,4]; var arr = x.slice(3,3); arr.length === 0. Actual: ' + (arr.length));\n}      \n\n//CHECK#3\nif (arr[0] !== undefined) {\n  $ERROR('#3: var x = [0,1,2,3,4]; var arr = x.slice(3,3); arr[0] === undefined. Actual: ' + (arr[0]));\n}\n",
    "id": "S15.4.4.10_A1.1_T2"
   },
   {
    "section": "15.4.4.10",
    "description": "length > start > end > 0",
    "test": "var x = [0,1,2,3,4];\nvar arr = x.slice(4,3);\n\n//CHECK#1\narr.getClass = Object.prototype.toString;\nif (arr.getClass() !== \"[object \" + \"Array\" + \"]\") {\n  $ERROR('#1: var x = [0,1,2,3,4]; var arr = x.slice(4,3); arr is Array object. Actual: ' + (arr.getClass()));\n}\n\n//CHECK#2\nif (arr.length !== 0) {\n  $ERROR('#2: var x = [0,1,2,3,4]; var arr = x.slice(4,3); arr.length === 0. Actual: ' + (arr.length));\n}      \n\n//CHECK#3\nif (arr[0] !== undefined) {\n  $ERROR('#3: var x = [0,1,2,3,4]; var arr = x.slice(4,3); arr[0] === undefined. Actual: ' + (arr[0]));\n}\n",
    "id": "S15.4.4.10_A1.1_T3"
   },
   {
    "section": "15.4.4.10",
    "description": "length = end = start > 0",
    "test": "var x = [0,1,2,3,4];\nvar arr = x.slice(5,5);\n\n//CHECK#1\narr.getClass = Object.prototype.toString;\nif (arr.getClass() !== \"[object \" + \"Array\" + \"]\") {\n  $ERROR('#1: var x = [0,1,2,3,4]; var arr = x.slice(5,5); arr is Array object. Actual: ' + (arr.getClass()));\n}\n\n//CHECK#2\nif (arr.length !== 0) {\n  $ERROR('#2: var x = [0,1,2,3,4]; var arr = x.slice(5,5); arr.length === 0. Actual: ' + (arr.length));\n}      \n\n//CHECK#3\nif (arr[0] !== undefined) {\n  $ERROR('#3: var x = [0,1,2,3,4]; var arr = x.slice(5,5); arr[0] === undefined. Actual: ' + (arr[0]));\n}\n",
    "id": "S15.4.4.10_A1.1_T4"
   },
   {
    "section": "15.4.4.10",
    "description": "length = end > start > 0",
    "test": "var x = [0,1,2,3,4];\nvar arr = x.slice(3,5);\n\n//CHECK#1\narr.getClass = Object.prototype.toString;\nif (arr.getClass() !== \"[object \" + \"Array\" + \"]\") {\n  $ERROR('#1: var x = [0,1,2,3,4]; var arr = x.slice(3,5); arr is Array object. Actual: ' + (arr.getClass()));\n}\n\n//CHECK#2\nif (arr.length !== 2) {\n  $ERROR('#2: var x = [0,1,2,3,4]; var arr = x.slice(3,5); arr.length === 2. Actual: ' + (arr.length));\n}      \n\n//CHECK#3\nif (arr[0] !== 3) {\n  $ERROR('#3: var x = [0,1,2,3,4]; var arr = x.slice(3,5); arr[0] === 3. Actual: ' + (arr[0]));\n}\n\n//CHECK#4\nif (arr[1] !== 4) {\n  $ERROR('#4: var x = [0,1,2,3,4]; var arr = x.slice(3,5); arr[1] === 4. Actual: ' + (arr[1]));\n}      \n\n//CHECK#5\nif (arr[3] !== undefined) {\n  $ERROR('#5: var x = [0,1,2,3,4]; var arr = x.slice(3,5); arr[3] === undefined. Actual: ' + (arr[3]));\n}   \n",
    "id": "S15.4.4.10_A1.1_T5"
   },
   {
    "section": "15.4.4.10",
    "description": ": length > end > start > 0;",
    "test": "var x = [0,1,2,3,4];\nvar arr = x.slice(2,4);\n\n//CHECK#1\narr.getClass = Object.prototype.toString;\nif (arr.getClass() !== \"[object \" + \"Array\" + \"]\") {\n  $ERROR('#1: var x = [0,1,2,3,4]; var arr = x.slice(2,4); arr is Array object. Actual: ' + (arr.getClass()));\n}\n\n//CHECK#2\nif (arr.length !== 2) {\n  $ERROR('#2: var x = [0,1,2,3,4]; var arr = x.slice(2,4); arr.length === 2. Actual: ' + (arr.length));\n}      \n\n//CHECK#3\nif (arr[0] !== 2) {\n  $ERROR('#3: var x = [0,1,2,3,4]; var arr = x.slice(2,4); arr[0] === 2. Actual: ' + (arr[0]));\n}\n\n//CHECK#4\nif (arr[1] !== 3) {\n  $ERROR('#4: var x = [0,1,2,3,4]; var arr = x.slice(2,4); arr[1] === 3. Actual: ' + (arr[1]));\n}      \n\n//CHECK#5\nif (arr[3] !== undefined) {\n  $ERROR('#5: var x = [0,1,2,3,4]; var arr = x.slice(2,4); arr[3] === undefined. Actual: ' + (arr[3]));\n}   \n",
    "id": "S15.4.4.10_A1.1_T6"
   },
   {
    "section": "15.4.4.10",
    "description": "end > length > start > 0",
    "test": "var x = [0,1,2,3,4];\nvar arr = x.slice(3,6);\n\n//CHECK#1\narr.getClass = Object.prototype.toString;\nif (arr.getClass() !== \"[object \" + \"Array\" + \"]\") {\n  $ERROR('#1: var x = [0,1,2,3,4]; var arr = x.slice(3,6); arr is Array object. Actual: ' + (arr.getClass()));\n}\n\n//CHECK#2\nif (arr.length !== 2) {\n  $ERROR('#2: var x = [0,1,2,3,4]; var arr = x.slice(3,6); arr.length === 2. Actual: ' + (arr.length));\n}      \n\n//CHECK#3\nif (arr[0] !== 3) {\n  $ERROR('#3: var x = [0,1,2,3,4]; var arr = x.slice(3,6); arr[0] === 3. Actual: ' + (arr[0]));\n}\n\n//CHECK#4\nif (arr[1] !== 4) {\n  $ERROR('#4: var x = [0,1,2,3,4]; var arr = x.slice(3,6); arr[1] === 4. Actual: ' + (arr[1]));\n}      \n\n//CHECK#5\nif (arr[3] !== undefined) {\n  $ERROR('#5: var x = [0,1,2,3,4]; var arr = x.slice(3,6); arr[3] === undefined. Actual: ' + (arr[3]));\n}   \n",
    "id": "S15.4.4.10_A1.1_T7"
   },
   {
    "section": "15.4.4.10",
    "description": "length > end = abs(start), start < 0",
    "test": "var x = [0,1,2,3,4];\nvar arr = x.slice(-3,3);\n\n//CHECK#1\narr.getClass = Object.prototype.toString;\nif (arr.getClass() !== \"[object \" + \"Array\" + \"]\") {\n  $ERROR('#1: var x = [0,1,2,3,4]; var arr = x.slice(-3,3); arr is Array object. Actual: ' + (arr.getClass()));\n}\n\n//CHECK#2\nif (arr.length !== 1) {\n  $ERROR('#2: var x = [0,1,2,3,4]; var arr = x.slice(-3,3); arr.length === 1. Actual: ' + (arr.length));\n}      \n\n//CHECK#3\nif (arr[0] !== 2) {\n  $ERROR('#3: var x = [0,1,2,3,4]; var arr = x.slice(-3,3); arr[0] === 2. Actual: ' + (arr[0]));\n}\n\n//CHECK#4\nif (arr[1] !== undefined) {\n  $ERROR('#4: var x = [0,1,2,3,4]; var arr = x.slice(-3,3); arr[1] === undefined. Actual: ' + (arr[1]));\n}   \n",
    "id": "S15.4.4.10_A1.2_T1"
   },
   {
    "section": "15.4.4.10",
    "description": "length = end > abs(start), start < 0",
    "test": "var x = [0,1,2,3,4];\nvar arr = x.slice(-1,5);\n\n//CHECK#1\narr.getClass = Object.prototype.toString;\nif (arr.getClass() !== \"[object \" + \"Array\" + \"]\") {\n  $ERROR('#1: var x = [0,1,2,3,4]; var arr = x.slice(-1,5); arr is Array object. Actual: ' + (arr.getClass()));\n}\n\n//CHECK#2\nif (arr.length !== 1) {\n  $ERROR('#2: var x = [0,1,2,3,4]; var arr = x.slice(-1,5); arr.length === 1. Actual: ' + (arr.length));\n}      \n\n//CHECK#3\nif (arr[0] !== 4) {\n  $ERROR('#3: var x = [0,1,2,3,4]; var arr = x.slice(-1,5); arr[0] === 4. Actual: ' + (arr[0]));\n}\n\n//CHECK#4\nif (arr[1] !== undefined) {\n  $ERROR('#4: var x = [0,1,2,3,4]; var arr = x.slice(-1,5); arr[1] === undefined. Actual: ' + (arr[1]));\n}   \n",
    "id": "S15.4.4.10_A1.2_T2"
   },
   {
    "section": "15.4.4.10",
    "description": "abs(start) = length > end > 0, start < 0",
    "test": "var x = [0,1,2,3,4];\nvar arr = x.slice(-5,1);\n\n//CHECK#1\narr.getClass = Object.prototype.toString;\nif (arr.getClass() !== \"[object \" + \"Array\" + \"]\") {\n  $ERROR('#1: var x = [0,1,2,3,4]; var arr = x.slice(-5,1); arr is Array object. Actual: ' + (arr.getClass()));\n}\n\n//CHECK#2\nif (arr.length !== 1) {\n  $ERROR('#2: var x = [0,1,2,3,4]; var arr = x.slice(-5,1); arr.length === 1. Actual: ' + (arr.length));\n}      \n\n//CHECK#3\nif (arr[0] !== 0) {\n  $ERROR('#3: var x = [0,1,2,3,4]; var arr = x.slice(-5,1); arr[0] === 0. Actual: ' + (arr[0]));\n}\n\n//CHECK#4\nif (arr[1] !== undefined) {\n  $ERROR('#4: var x = [0,1,2,3,4]; var arr = x.slice(-5,1); arr[1] === undefined. Actual: ' + (arr[1]));\n}   \n",
    "id": "S15.4.4.10_A1.2_T3"
   },
   {
    "section": "15.4.4.10",
    "description": "abs(start) > length = end > 0, start < 0",
    "test": "var x = [0,1,2,3,4];\nvar arr = x.slice(-9,5);\n\n//CHECK#1\narr.getClass = Object.prototype.toString;\nif (arr.getClass() !== \"[object \" + \"Array\" + \"]\") {\n  $ERROR('#1: var x = [0,1,2,3,4]; var arr = x.slice(-9,5); arr is Array object. Actual: ' + (arr.getClass()));\n}\n\n//CHECK#2\nif (arr.length !== 5) {\n  $ERROR('#2: var x = [0,1,2,3,4]; var arr = x.slice(-9,5); arr.length === 5. Actual: ' + (arr.length));\n}      \n\n//CHECK#3\nif (arr[0] !== 0) {\n  $ERROR('#3: var x = [0,1,2,3,4]; var arr = x.slice(-9,5); arr[0] === 0. Actual: ' + (arr[0]));\n}\n\n//CHECK#4\nif (arr[1] !== 1) {\n  $ERROR('#4: var x = [0,1,2,3,4]; var arr = x.slice(-9,5); arr[1] === 1. Actual: ' + (arr[1]));\n}\n\n//CHECK#5\nif (arr[2] !== 2) {\n  $ERROR('#5: var x = [0,1,2,3,4]; var arr = x.slice(-9,5); arr[2] === 2. Actual: ' + (arr[2]));\n}\n\n//CHECK#6\nif (arr[3] !== 3) {\n  $ERROR('#6: var x = [0,1,2,3,4]; var arr = x.slice(-9,5); arr[3] === 3. Actual: ' + (arr[3]));\n}\n\n//CHECK#7\nif (arr[4] !== 4) {\n  $ERROR('#7: var x = [0,1,2,3,4]; var arr = x.slice(-9,5); arr[4] === 4. Actual: ' + (arr[4]));\n}\n\n//CHECK#8\nif (arr[5] !== undefined) {\n  $ERROR('#8: var x = [0,1,2,3,4]; var arr = x.slice(-9,5); arr[5] === undefined. Actual: ' + (arr[5]));\n}   \n",
    "id": "S15.4.4.10_A1.2_T4"
   },
   {
    "section": "15.4.4.10",
    "description": "length > abs(end) > start = 0, end < 0",
    "test": "var x = [0,1,2,3,4];\nvar arr = x.slice(0,-2);\n\n//CHECK#1\narr.getClass = Object.prototype.toString;\nif (arr.getClass() !== \"[object \" + \"Array\" + \"]\") {\n  $ERROR('#1: var x = [0,1,2,3,4]; var arr = x.slice(0,-2); arr is Array object. Actual: ' + (arr.getClass()));\n}\n\n//CHECK#2\nif (arr.length !== 3) {\n  $ERROR('#2: var x = [0,1,2,3,4]; var arr = x.slice(0,-2); arr.length === 3. Actual: ' + (arr.length));\n}      \n\n//CHECK#3\nif (arr[0] !== 0) {\n  $ERROR('#3: var x = [0,1,2,3,4]; var arr = x.slice(0,-2); arr[0] === 0. Actual: ' + (arr[0]));\n}\n\n//CHECK#4\nif (arr[1] !== 1) {\n  $ERROR('#4: var x = [0,1,2,3,4]; var arr = x.slice(0,-2); arr[1] === 1. Actual: ' + (arr[1]));\n}      \n\n//CHECK#5\nif (arr[2] !== 2) {\n  $ERROR('#5: var x = [0,1,2,3,4]; var arr = x.slice(0,-2); arr[2] === 2. Actual: ' + (arr[2]));\n}   \n\n//CHECK#6\nif (arr[3] !== undefined) {\n  $ERROR('#6: var x = [0,1,2,3,4]; var arr = x.slice(0,-2); arr[3] === undefined. Actual: ' + (arr[3]));\n}   \n",
    "id": "S15.4.4.10_A1.3_T1"
   },
   {
    "section": "15.4.4.10",
    "description": "length > abs(end) > start > 0, end < 0",
    "test": "var x = [0,1,2,3,4];\nvar arr = x.slice(1,-4);\n\n//CHECK#1\narr.getClass = Object.prototype.toString;\nif (arr.getClass() !== \"[object \" + \"Array\" + \"]\") {\n  $ERROR('#1: var x = [0,1,2,3,4]; var arr = x.slice(1,-4); arr is Array object. Actual: ' + (arr.getClass()));\n}\n\n//CHECK#2\nif (arr.length !== 0) {\n  $ERROR('#2: var x = [0,1,2,3,4]; var arr = x.slice(1,-4); arr.length === 0. Actual: ' + (arr.length));\n}      \n\n//CHECK#3\nif (arr[0] !== undefined) {\n  $ERROR('#3: var x = [0,1,2,3,4]; var arr = x.slice(1,-4); arr[0] === undefined. Actual: ' + (arr[0]));\n}\n",
    "id": "S15.4.4.10_A1.3_T2"
   },
   {
    "section": "15.4.4.10",
    "description": "length = abs(end) > start = 0, end < 0",
    "test": "var x = [0,1,2,3,4];\nvar arr = x.slice(0,-5);\n\n//CHECK#1\narr.getClass = Object.prototype.toString;\nif (arr.getClass() !== \"[object \" + \"Array\" + \"]\") {\n  $ERROR('#1: var x = [0,1,2,3,4]; var arr = x.slice(0,-5); arr is Array object. Actual: ' + (arr.getClass()));\n}\n\n//CHECK#2\nif (arr.length !== 0) {\n  $ERROR('#2: var x = [0,1,2,3,4]; var arr = x.slice(0,-5); arr.length === 0. Actual: ' + (arr.length));\n}      \n\n//CHECK#3\nif (arr[0] !== undefined) {\n  $ERROR('#3: var x = [0,1,2,3,4]; var arr = x.slice(0,-5); arr[0] === undefined. Actual: ' + (arr[0]));\n}\n",
    "id": "S15.4.4.10_A1.3_T3"
   },
   {
    "section": "15.4.4.10",
    "description": "abs(end) > length > start > 0, end < 0",
    "test": "var x = [0,1,2,3,4];\nvar arr = x.slice(4,-9);\n\n//CHECK#1\narr.getClass = Object.prototype.toString;\nif (arr.getClass() !== \"[object \" + \"Array\" + \"]\") {\n  $ERROR('#1: var x = [0,1,2,3,4]; var arr = x.slice(4,-9); arr is Array object. Actual: ' + (arr.getClass()));\n}\n\n//CHECK#2\nif (arr.length !== 0) {\n  $ERROR('#2: var x = [0,1,2,3,4]; var arr = x.slice(4,-9); arr.length === 0. Actual: ' + (arr.length));\n}      \n\n//CHECK#3\nif (arr[0] !== undefined) {\n  $ERROR('#3: var x = [0,1,2,3,4]; var arr = x.slice(4,-9); arr[0] === undefined. Actual: ' + (arr[0]));\n}\n",
    "id": "S15.4.4.10_A1.3_T4"
   },
   {
    "section": "15.4.4.10",
    "description": "-length = start < end < 0",
    "test": "var x = [0,1,2,3,4];\nvar arr = x.slice(-5,-2);\n\n//CHECK#1\narr.getClass = Object.prototype.toString;\nif (arr.getClass() !== \"[object \" + \"Array\" + \"]\") {\n  $ERROR('#1: var x = [0,1,2,3,4]; var arr = x.slice(-5,-2); arr is Array object. Actual: ' + (arr.getClass()));\n}\n\n//CHECK#2\nif (arr.length !== 3) {\n  $ERROR('#2: var x = [0,1,2,3,4]; var arr = x.slice(-5,-2); arr.length === 3. Actual: ' + (arr.length));\n}      \n\n//CHECK#3\nif (arr[0] !== 0) {\n  $ERROR('#3: var x = [0,1,2,3,4]; var arr = x.slice(-5,-2); arr[0] === 0. Actual: ' + (arr[0]));\n}\n\n//CHECK#4\nif (arr[1] !== 1) {\n  $ERROR('#4: var x = [0,1,2,3,4]; var arr = x.slice(-5,-2); arr[1] === 1. Actual: ' + (arr[1]));\n}      \n\n//CHECK#5\nif (arr[2] !== 2) {\n  $ERROR('#5: var x = [0,1,2,3,4]; var arr = x.slice(-5,-2); arr[2] === 2. Actual: ' + (arr[2]));\n}   \n\n//CHECK#6\nif (arr[3] !== undefined) {\n  $ERROR('#6: var x = [0,1,2,3,4]; var arr = x.slice(-5,-2); arr[3] === undefined. Actual: ' + (arr[3]));\n}   \n",
    "id": "S15.4.4.10_A1.4_T1"
   },
   {
    "section": "15.4.4.10",
    "description": "-length < start < end < 0",
    "test": "var x = [0,1,2,3,4];\nvar arr = x.slice(-3,-1);\n\n//CHECK#1\narr.getClass = Object.prototype.toString;\nif (arr.getClass() !== \"[object \" + \"Array\" + \"]\") {\n  $ERROR('#1: var x = [0,1,2,3,4]; var arr = x.slice(-3,-1); arr is Array object. Actual: ' + (arr.getClass()));\n}\n\n//CHECK#2\nif (arr.length !== 2) {\n  $ERROR('#2: var x = [0,1,2,3,4]; var arr = x.slice(-3,-1); arr.length === 2. Actual: ' + (arr.length));\n}      \n\n//CHECK#3\nif (arr[0] !== 2) {\n  $ERROR('#3: var x = [0,1,2,3,4]; var arr = x.slice(-3,-1); arr[0] === 2. Actual: ' + (arr[0]));\n}\n\n//CHECK#4\nif (arr[1] !== 3) {\n  $ERROR('#4: var x = [0,1,2,3,4]; var arr = x.slice(-3,-1); arr[1] === 3. Actual: ' + (arr[1]));\n}      \n\n//CHECK#5\nif (arr[2] !== undefined) {\n  $ERROR('#5: var x = [0,1,2,3,4]; var arr = x.slice(-3,-1); arr[2] === undefined. Actual: ' + (arr[2]));\n}   \n",
    "id": "S15.4.4.10_A1.4_T2"
   },
   {
    "section": "15.4.4.10",
    "description": "start < -length < end < 0",
    "test": "var x = [0,1,2,3,4];\nvar arr = x.slice(-9,-1);\n\n//CHECK#1\narr.getClass = Object.prototype.toString;\nif (arr.getClass() !== \"[object \" + \"Array\" + \"]\") {\n  $ERROR('#1: var x = [0,1,2,3,4]; var arr = x.slice(-9,-1); arr is Array object. Actual: ' + (arr.getClass()));\n}\n\n//CHECK#2\nif (arr.length !== 4) {\n  $ERROR('#2: var x = [0,1,2,3,4]; var arr = x.slice(-9,-1); arr.length === 4. Actual: ' + (arr.length));\n}      \n\n//CHECK#3\nif (arr[0] !== 0) {\n  $ERROR('#3: var x = [0,1,2,3,4]; var arr = x.slice(-9,-1); arr[0] === 0. Actual: ' + (arr[0]));\n}\n\n//CHECK#4\nif (arr[1] !== 1) {\n  $ERROR('#4: var x = [0,1,2,3,4]; var arr = x.slice(-9,-1); arr[1] === 1. Actual: ' + (arr[1]));\n}\n\n//CHECK#5\nif (arr[2] !== 2) {\n  $ERROR('#5: var x = [0,1,2,3,4]; var arr = x.slice(-9,-1); arr[2] === 2. Actual: ' + (arr[2]));\n}      \n\n//CHECK#6\nif (arr[3] !== 3) {\n  $ERROR('#6: var x = [0,1,2,3,4]; var arr = x.slice(-9,-1); arr[3] === 3. Actual: ' + (arr[3]));\n}      \n      \n//CHECK#7\nif (arr[4] !== undefined) {\n  $ERROR('#7: var x = [0,1,2,3,4]; var arr = x.slice(-9,-1); arr[4] === undefined. Actual: ' + (arr[4]));\n}   \n",
    "id": "S15.4.4.10_A1.4_T3"
   },
   {
    "section": "15.4.4.10",
    "description": "start = end < -length",
    "test": "var x = [0,1,2,3,4];\nvar arr = x.slice(-6,-6);\n\n//CHECK#1\narr.getClass = Object.prototype.toString;\nif (arr.getClass() !== \"[object \" + \"Array\" + \"]\") {\n  $ERROR('#1: var x = [0,1,2,3,4]; var arr = x.slice(-6,-6); arr is Array object. Actual: ' + (arr.getClass()));\n}\n\n//CHECK#2\nif (arr.length !== 0) {\n  $ERROR('#2: var x = [0,1,2,3,4]; var arr = x.slice(-6,-6); arr.length === 0. Actual: ' + (arr.length));\n}      \n\n//CHECK#3\nif (arr[0] !== undefined) {\n  $ERROR('#3: var x = [0,1,2,3,4]; var arr = x.slice(-6,-6); arr[0] === undefined. Actual: ' + (arr[0]));\n}\n",
    "id": "S15.4.4.10_A1.4_T4"
   },
   {
    "section": "15.4.4.10",
    "description": "end === undefined",
    "test": "var x = [0,1,2,3,4];\nvar arr = x.slice(3, undefined);\n\n//CHECK#1\narr.getClass = Object.prototype.toString;\nif (arr.getClass() !== \"[object \" + \"Array\" + \"]\") {\n  $ERROR('#1: var x = [0,1,2,3,4]; var arr = x.slice(3, undefined); arr is Array object. Actual: ' + (arr.getClass()));\n}\n\n//CHECK#2\nif (arr.length !== 2) {\n  $ERROR('#2: var x = [0,1,2,3,4]; var arr = x.slice(3, undefined); arr.length === 2. Actual: ' + (arr.length));\n}      \n\n//CHECK#3\nif (arr[0] !== 3) {\n  $ERROR('#3: var x = [0,1,2,3,4]; var arr = x.slice(3, undefined); arr[0] === 3. Actual: ' + (arr[0]));\n}\n\n//CHECK#4\nif (arr[1] !== 4) {\n  $ERROR('#4: var x = [0,1,2,3,4]; var arr = x.slice(3, undefined); arr[1] === 4. Actual: ' + (arr[1]));\n}\n\n//CHECK#5\nif (arr[2] !== undefined) {\n  $ERROR('#5: var x = [0,1,2,3,4]; var arr = x.slice(3, undefined); arr[2] === undefined. Actual: ' + (arr[2]));\n} \n",
    "id": "S15.4.4.10_A1.5_T1"
   },
   {
    "section": "15.4.4.10",
    "description": "end is absent",
    "test": "var x = [0,1,2,3,4];\nvar arr = x.slice(-2);\n\n//CHECK#1\narr.getClass = Object.prototype.toString;\nif (arr.getClass() !== \"[object \" + \"Array\" + \"]\") {\n  $ERROR('#1: var x = [0,1,2,3,4]; var arr = x.slice(-2); arr is Array object. Actual: ' + (arr.getClass()));\n}\n\n//CHECK#2\nif (arr.length !== 2) {\n  $ERROR('#2: var x = [0,1,2,3,4]; var arr = x.slice(-2); arr.length === 2. Actual: ' + (arr.length));\n}      \n\n//CHECK#3\nif (arr[0] !== 3) {\n  $ERROR('#3: var x = [0,1,2,3,4]; var arr = x.slice(-2); arr[0] === 3. Actual: ' + (arr[0]));\n}\n\n//CHECK#4\nif (arr[1] !== 4) {\n  $ERROR('#4: var x = [0,1,2,3,4]; var arr = x.slice(-2); arr[1] === 4. Actual: ' + (arr[1]));\n}\n\n//CHECK#5\nif (arr[2] !== undefined) {\n  $ERROR('#5: var x = [0,1,2,3,4]; var arr = x.slice(-2); arr[2] === undefined. Actual: ' + (arr[2]));\n} \n",
    "id": "S15.4.4.10_A1.5_T2"
   },
   {
    "section": "15.4.4.10",
    "description": "start is not integer",
    "test": "var x = [0,1,2,3,4];\nvar arr = x.slice(2.5,4);\n\n//CHECK#1\narr.getClass = Object.prototype.toString;\nif (arr.getClass() !== \"[object \" + \"Array\" + \"]\") {\n  $ERROR('#1: var x = [0,1,2,3,4]; var arr = x.slice(2.5,4); arr is Array object. Actual: ' + (arr.getClass()));\n}\n\n//CHECK#2\nif (arr.length !== 2) {\n  $ERROR('#2: var x = [0,1,2,3,4]; var arr = x.slice(2.5,4); arr.length === 2. Actual: ' + (arr.length));\n}      \n\n//CHECK#3\nif (arr[0] !== 2) {\n  $ERROR('#3: var x = [0,1,2,3,4]; var arr = x.slice(2.5,4); arr[0] === 2. Actual: ' + (arr[0]));\n}\n\n//CHECK#4\nif (arr[1] !== 3) {\n  $ERROR('#4: var x = [0,1,2,3,4]; var arr = x.slice(2.5,4); arr[1] === 3. Actual: ' + (arr[1]));\n}      \n\n//CHECK#5\nif (arr[3] !== undefined) {\n  $ERROR('#5: var x = [0,1,2,3,4]; var arr = x.slice(2.5,4); arr[3] === undefined. Actual: ' + (arr[3]));\n} \n",
    "id": "S15.4.4.10_A2.1_T1"
   },
   {
    "section": "15.4.4.10",
    "description": "start = NaN",
    "test": "var x = [0,1,2,3,4];\nvar arr = x.slice(NaN,3);\n\n//CHECK#1\narr.getClass = Object.prototype.toString;\nif (arr.getClass() !== \"[object \" + \"Array\" + \"]\") {\n  $ERROR('#1: var x = [0,1,2,3,4]; var arr = x.slice(NaN,3); arr is Array object. Actual: ' + (arr.getClass()));\n}\n\n//CHECK#2\nif (arr.length !== 3) {\n  $ERROR('#2: var x = [0,1,2,3,4]; var arr = x.slice(NaN,3); arr.length === 3. Actual: ' + (arr.length));\n}      \n\n//CHECK#3\nif (arr[0] !== 0) {\n  $ERROR('#3: var x = [0,1,2,3,4]; var arr = x.slice(NaN,3); arr[0] === 0. Actual: ' + (arr[0]));\n}\n\n//CHECK#4\nif (arr[1] !== 1) {\n  $ERROR('#4: var x = [0,1,2,3,4]; var arr = x.slice(NaN,3); arr[1] === 1. Actual: ' + (arr[1]));\n}      \n\n//CHECK#5\nif (arr[2] !== 2) {\n  $ERROR('#5: var x = [0,1,2,3,4]; var arr = x.slice(NaN,3); arr[2] === 2. Actual: ' + (arr[2]));\n}   \n\n//CHECK#6\nif (arr[3] !== undefined) {\n  $ERROR('#6: var x = [0,1,2,3,4]; var arr = x.slice(NaN,3); arr[3] === undefined. Actual: ' + (arr[3]));\n}   \n",
    "id": "S15.4.4.10_A2.1_T2"
   },
   {
    "section": "15.4.4.10",
    "description": "start = Infinity",
    "test": "var x = [0,1,2,3,4];\nvar arr = x.slice(Number.POSITIVE_INFINITY,3);\n\n//CHECK#1\narr.getClass = Object.prototype.toString;\nif (arr.getClass() !== \"[object \" + \"Array\" + \"]\") {\n  $ERROR('#1: var x = [0,1,2,3,4]; var arr = x.slice(Number.POSITIVE_INFINITY,3); arr is Array object. Actual: ' + (arr.getClass()));\n}\n\n//CHECK#2\nif (arr.length !== 0) {\n  $ERROR('#2: var x = [0,1,2,3,4]; var arr = x.slice(Number.POSITIVE_INFINITY,3); arr.length === 0. Actual: ' + (arr.length));\n}      \n\n//CHECK#3\nif (arr[0] !== undefined) {\n  $ERROR('#3: var x = [0,1,2,3,4]; var arr = x.slice(Number.POSITIVE_INFINITY,3); arr[0] === undefined. Actual: ' + (arr[0]));\n}\n",
    "id": "S15.4.4.10_A2.1_T3"
   },
   {
    "section": "15.4.4.10",
    "description": "start = -Infinity",
    "test": "var x = [0,1,2,3,4];\nvar arr = x.slice(Number.NEGATIVE_INFINITY,3);\n\n//CHECK#1\narr.getClass = Object.prototype.toString;\nif (arr.getClass() !== \"[object \" + \"Array\" + \"]\") {\n  $ERROR('#1: var x = [0,1,2,3,4]; var arr = x.slice(Number.NEGATIVE_INFINITY,3); arr is Array object. Actual: ' + (arr.getClass()));\n}\n\n//CHECK#2\nif (arr.length !== 3) {\n  $ERROR('#2: var x = [0,1,2,3,4]; var arr = x.slice(Number.NEGATIVE_INFINITY,3); arr.length === 3. Actual: ' + (arr.length));\n}      \n\n//CHECK#3\nif (arr[0] !== 0) {\n  $ERROR('#3: var x = [0,1,2,3,4]; var arr = x.slice(Number.NEGATIVE_INFINITY,3); arr[0] === 0. Actual: ' + (arr[0]));\n}\n\n//CHECK#4\nif (arr[1] !== 1) {\n  $ERROR('#4: var x = [0,1,2,3,4]; var arr = x.slice(Number.NEGATIVE_INFINITY,3); arr[1] === 1. Actual: ' + (arr[1]));\n}      \n\n//CHECK#5\nif (arr[2] !== 2) {\n  $ERROR('#5: var x = [0,1,2,3,4]; var arr = x.slice(Number.NEGATIVE_INFINITY,3); arr[2] === 2. Actual: ' + (arr[2]));\n}   \n\n//CHECK#6\nif (arr[3] !== undefined) {\n  $ERROR('#6: var x = [0,1,2,3,4]; var arr = x.slice(Number.NEGATIVE_INFINITY,3); arr[3] === undefined. Actual: ' + (arr[3]));\n}   \n",
    "id": "S15.4.4.10_A2.1_T4"
   },
   {
    "section": "15.4.4.10",
    "description": "ToInteger use ToNumber",
    "test": "var x = [0,1,2,3,4];\nvar arr = x.slice({valueOf: function() {return 0}, toString: function() {return 3}},3);\n\n//CHECK#1\narr.getClass = Object.prototype.toString;\nif (arr.getClass() !== \"[object \" + \"Array\" + \"]\") {\n  $ERROR('#1: var x = [0,1,2,3,4]; var arr = x.slice({valueOf: function() {return 0}, toString: function() {return 3}},3); arr is Array object. Actual: ' + (arr.getClass()));\n}\n\n//CHECK#2\nif (arr.length !== 3) {\n  $ERROR('#2: var x = [0,1,2,3,4]; var arr = x.slice({valueOf: function() {return 0}, toString: function() {return 3}},3); arr.length === 3. Actual: ' + (arr.length));\n}      \n\n//CHECK#3\nif (arr[0] !== 0) {\n  $ERROR('#3: var x = [0,1,2,3,4]; var arr = x.slice({valueOf: function() {return 0}, toString: function() {return 3}},3); arr[0] === 0. Actual: ' + (arr[0]));\n}\n\n//CHECK#4\nif (arr[1] !== 1) {\n  $ERROR('#4: var x = [0,1,2,3,4]; var arr = x.slice({valueOf: function() {return 0}, toString: function() {return 3}},3); arr[1] === 1. Actual: ' + (arr[1]));\n}      \n\n//CHECK#5\nif (arr[2] !== 2) {\n  $ERROR('#5: var x = [0,1,2,3,4]; var arr = x.slice({valueOf: function() {return 0}, toString: function() {return 3}},3); arr[2] === 2. Actual: ' + (arr[2]));\n}   \n\n//CHECK#6\nif (arr[3] !== undefined) {\n  $ERROR('#6: var x = [0,1,2,3,4]; var arr = x.slice({valueOf: function() {return 0}, toString: function() {return 3}},3); arr[3] === undefined. Actual: ' + (arr[3]));\n}   \n",
    "id": "S15.4.4.10_A2.1_T5"
   },
   {
    "section": "15.4.4.10",
    "description": "end is not integer",
    "test": "var x = [0,1,2,3,4];\nvar arr = x.slice(2,4.5);\n\n//CHECK#1\narr.getClass = Object.prototype.toString;\nif (arr.getClass() !== \"[object \" + \"Array\" + \"]\") {\n  $ERROR('#1: var x = [0,1,2,3,4]; var arr = x.slice(2,4.5); arr is Array object. Actual: ' + (arr.getClass()));\n}\n\n//CHECK#2\nif (arr.length !== 2) {\n  $ERROR('#2: var x = [0,1,2,3,4]; var arr = x.slice(2,4.5); arr.length === 2. Actual: ' + (arr.length));\n}      \n\n//CHECK#3\nif (arr[0] !== 2) {\n  $ERROR('#3: var x = [0,1,2,3,4]; var arr = x.slice(2,4.5); arr[0] === 2. Actual: ' + (arr[0]));\n}\n\n//CHECK#4\nif (arr[1] !== 3) {\n  $ERROR('#4: var x = [0,1,2,3,4]; var arr = x.slice(2,4.5); arr[1] === 3. Actual: ' + (arr[1]));\n}      \n\n//CHECK#5\nif (arr[3] !== undefined) {\n  $ERROR('#5: var x = [0,1,2,3,4]; var arr = x.slice(2,4.5); arr[3] === undefined. Actual: ' + (arr[3]));\n} \n",
    "id": "S15.4.4.10_A2.2_T1"
   },
   {
    "section": "15.4.4.10",
    "description": "end = NaN",
    "test": "var x = [0,1,2,3,4];\nvar arr = x.slice(0,NaN);\n\n//CHECK#1\narr.getClass = Object.prototype.toString;\nif (arr.getClass() !== \"[object \" + \"Array\" + \"]\") {\n  $ERROR('#1: var x = [0,1,2,3,4]; var arr = x.slice(0,NaN); arr is Array object. Actual: ' + (arr.getClass()));\n}\n\n//CHECK#2\nif (arr.length !== 0) {\n  $ERROR('#2: var x = [0,1,2,3,4]; var arr = x.slice(0,NaN); arr.length === 0. Actual: ' + (arr.length));\n}      \n\n//CHECK#3\nif (arr[0] !== undefined) {\n  $ERROR('#3: var x = [0,1,2,3,4]; var arr = x.slice(0,NaN); arr[0] === undefined. Actual: ' + (arr[0]));\n}\n",
    "id": "S15.4.4.10_A2.2_T2"
   },
   {
    "section": "15.4.4.10",
    "description": "end = Infinity",
    "test": "var x = [0,1,2,3,4];\nvar arr = x.slice(0,Number.POSITIVE_INFINITY);\n\n//CHECK#1\narr.getClass = Object.prototype.toString;\nif (arr.getClass() !== \"[object \" + \"Array\" + \"]\") {\n  $ERROR('#1: var x = [0,1,2,3,4]; var arr = x.slice(0,Number.POSITIVE_INFINITY); arr is Array object. Actual: ' + (arr.getClass()));\n}\n\n//CHECK#2\nif (arr.length !== 5) {\n  $ERROR('#2: var x = [0,1,2,3,4]; var arr = x.slice(0,Number.POSITIVE_INFINITY); arr.length === 5. Actual: ' + (arr.length));\n}      \n\n//CHECK#3\nif (arr[0] !== 0) {\n  $ERROR('#3: var x = [0,1,2,3,4]; var arr = x.slice(0,Number.POSITIVE_INFINITY); arr[0] === 0. Actual: ' + (arr[0]));\n}\n\n//CHECK#4\nif (arr[1] !== 1) {\n  $ERROR('#4: var x = [0,1,2,3,4]; var arr = x.slice(0,Number.POSITIVE_INFINITY); arr[1] === 1. Actual: ' + (arr[1]));\n}\n\n//CHECK#5\nif (arr[2] !== 2) {\n  $ERROR('#5: var x = [0,1,2,3,4]; var arr = x.slice(0,Number.POSITIVE_INFINITY); arr[2] === 2. Actual: ' + (arr[2]));\n}\n\n//CHECK#6\nif (arr[3] !== 3) {\n  $ERROR('#6: var x = [0,1,2,3,4]; var arr = x.slice(0,Number.POSITIVE_INFINITY); arr[3] === 3. Actual: ' + (arr[3]));\n}\n\n//CHECK#7\nif (arr[4] !== 4) {\n  $ERROR('#7: var x = [0,1,2,3,4]; var arr = x.slice(0,Number.POSITIVE_INFINITY); arr[4] === 4. Actual: ' + (arr[4]));\n}\n\n//CHECK#8\nif (arr[5] !== undefined) {\n  $ERROR('#8: var x = [0,1,2,3,4]; var arr = x.slice(0,Number.POSITIVE_INFINITY); arr[5] === undefined. Actual: ' + (arr[5]));\n} \n",
    "id": "S15.4.4.10_A2.2_T3"
   },
   {
    "section": "15.4.4.10",
    "description": "end = -Infinity",
    "test": "var x = [0,1,2,3,4];\nvar arr = x.slice(0,Number.NEGATIVE_INFINITY);\n\n//CHECK#1\narr.getClass = Object.prototype.toString;\nif (arr.getClass() !== \"[object \" + \"Array\" + \"]\") {\n  $ERROR('#1: var x = [0,1,2,3,4]; var arr = x.slice(0,Number.NEGATIVE_INFINITY); arr is Array object. Actual: ' + (arr.getClass()));\n}\n\n//CHECK#2\nif (arr.length !== 0) {\n  $ERROR('#2: var x = [0,1,2,3,4]; var arr = x.slice(0,Number.NEGATIVE_INFINITY); arr.length === 0. Actual: ' + (arr.length));\n}      \n\n//CHECK#3\nif (arr[0] !== undefined) {\n  $ERROR('#3: var x = [0,1,2,3,4]; var arr = x.slice(0,Number.NEGATIVE_INFINITY); arr[0] === undefined. Actual: ' + (arr[0]));\n}\n",
    "id": "S15.4.4.10_A2.2_T4"
   },
   {
    "section": "15.4.4.10",
    "description": "ToInteger use ToNumber",
    "test": "var x = [0,1,2,3,4];\nvar arr = x.slice(0,{valueOf: function() {return 3}, toString: function() {return 0}});\n\n//CHECK#1\narr.getClass = Object.prototype.toString;\nif (arr.getClass() !== \"[object \" + \"Array\" + \"]\") {\n  $ERROR('#1: var x = [0,1,2,3,4]; var arr = x.slice(0,{valueOf: function() {return 3}, toString: function() {return 0}}); arr is Array object. Actual: ' + (arr.getClass()));\n}\n\n//CHECK#2\nif (arr.length !== 3) {\n  $ERROR('#2: var x = [0,1,2,3,4]; var arr = x.slice(0,{valueOf: function() {return 3}, toString: function() {return 0}}); arr.length === 3. Actual: ' + (arr.length));\n}      \n\n//CHECK#3\nif (arr[0] !== 0) {\n  $ERROR('#3: var x = [0,1,2,3,4]; var arr = x.slice(0,{valueOf: function() {return 3}, toString: function() {return 0}}); arr[0] === 0. Actual: ' + (arr[0]));\n}\n\n//CHECK#4\nif (arr[1] !== 1) {\n  $ERROR('#4: var x = [0,1,2,3,4]; var arr = x.slice(0,{valueOf: function() {return 3}, toString: function() {return 0}}); arr[1] === 1. Actual: ' + (arr[1]));\n}      \n\n//CHECK#5\nif (arr[2] !== 2) {\n  $ERROR('#5: var x = [0,1,2,3,4]; var arr = x.slice(0,{valueOf: function() {return 3}, toString: function() {return 0}}); arr[2] === 2. Actual: ' + (arr[2]));\n}   \n\n//CHECK#6\nif (arr[3] !== undefined) {\n  $ERROR('#6: var x = [0,1,2,3,4]; var arr = x.slice(0,{valueOf: function() {return 3}, toString: function() {return 0}}); arr[3] === undefined. Actual: ' + (arr[3]));\n}   \n",
    "id": "S15.4.4.10_A2.2_T5"
   },
   {
    "section": "15.4.4.10",
    "description": "If start is positive, use min(start, length).\nIf end is positive, use min(end, length)",
    "test": "var obj = {};\nobj.slice = Array.prototype.slice;\nobj[0] = 0;\nobj[1] = 1;\nobj[2] = 2;\nobj[3] = 3;\nobj[4] = 4;\nobj.length = 5;\nvar arr = obj.slice(0,3);\n\n//CHECK#1\narr.getClass = Object.prototype.toString;\nif (arr.getClass() !== \"[object \" + \"Array\" + \"]\") {\n  $ERROR('#1: var obj = {}; obj.slice = Array.prototype.slice; obj[0] = 0; obj[1] = 1; obj[2] = 2; obj[3] = 3; obj[4] = 4; obj.length = 5; var arr = obj.slice(0,3); arr is Array object. Actual: ' + (arr.getClass()));\n}\n\n//CHECK#2\nif (arr.length !== 3) {\n  $ERROR('#2: var obj = {}; obj.slice = Array.prototype.slice; obj[0] = 0; obj[1] = 1; obj[2] = 2; obj[3] = 3; obj[4] = 4; obj.length = 5; var arr = obj.slice(0,3); arr.length === 3. Actual: ' + (arr.length));\n}      \n\n//CHECK#3\nif (arr[0] !== 0) {\n  $ERROR('#3: var obj = {}; obj.slice = Array.prototype.slice; obj[0] = 0; obj[1] = 1; obj[2] = 2; obj[3] = 3; obj[4] = 4; obj.length = 5; var arr = obj.slice(0,3); arr[0] === 0. Actual: ' + (arr[0]));\n}\n\n//CHECK#4\nif (arr[1] !== 1) {\n  $ERROR('#4: var obj = {}; obj.slice = Array.prototype.slice; obj[0] = 0; obj[1] = 1; obj[2] = 2; obj[3] = 3; obj[4] = 4; obj.length = 5; var arr = obj.slice(0,3); arr[1] === 1. Actual: ' + (arr[1]));\n}      \n\n//CHECK#5\nif (arr[2] !== 2) {\n  $ERROR('#5: var obj = {}; obj.slice = Array.prototype.slice; obj[0] = 0; obj[1] = 1; obj[2] = 2; obj[3] = 3; obj[4] = 4; obj.length = 5; var arr = obj.slice(0,3); arr[2] === 2. Actual: ' + (arr[2]));\n}   \n\n//CHECK#6\nif (arr[3] !== undefined) {\n  $ERROR('#6: var obj = {}; obj.slice = Array.prototype.slice; obj[0] = 0; obj[1] = 1; obj[2] = 2; obj[3] = 3; obj[4] = 4; obj.length = 5; var arr = obj.slice(0,3); arr[3] === undefined. Actual: ' + (arr[3]));\n}   \n",
    "id": "S15.4.4.10_A2_T1"
   },
   {
    "section": "15.4.4.10",
    "description": "If start is negative, use max(start + length, 0).\nIf end is positive, use min(end, length)",
    "test": "var obj = {};\nobj.slice = Array.prototype.slice;\nobj[0] = 0;\nobj[1] = 1;\nobj[2] = 2;\nobj[3] = 3;\nobj[4] = 4;\nobj.length = 5;\nvar arr = obj.slice(-5,3);\n\n//CHECK#1\narr.getClass = Object.prototype.toString;\nif (arr.getClass() !== \"[object \" + \"Array\" + \"]\") {\n  $ERROR('#1: var obj = {}; obj.slice = Array.prototype.slice; obj[0] = 0; obj[1] = 1; obj[2] = 2; obj[3] = 3; obj[4] = 4; obj.length = 5; var arr = obj.slice(-5,3); arr is Array object. Actual: ' + (arr.getClass()));\n}\n\n//CHECK#2\nif (arr.length !== 3) {\n  $ERROR('#2: var obj = {}; obj.slice = Array.prototype.slice; obj[0] = 0; obj[1] = 1; obj[2] = 2; obj[3] = 3; obj[4] = 4; obj.length = 5; var arr = obj.slice(-5,3); arr.length === 3. Actual: ' + (arr.length));\n}      \n\n//CHECK#3\nif (arr[0] !== 0) {\n  $ERROR('#3: var obj = {}; obj.slice = Array.prototype.slice; obj[0] = 0; obj[1] = 1; obj[2] = 2; obj[3] = 3; obj[4] = 4; obj.length = 5; var arr = obj.slice(-5,3); arr[0] === 0. Actual: ' + (arr[0]));\n}\n\n//CHECK#4\nif (arr[1] !== 1) {\n  $ERROR('#4: var obj = {}; obj.slice = Array.prototype.slice; obj[0] = 0; obj[1] = 1; obj[2] = 2; obj[3] = 3; obj[4] = 4; obj.length = 5; var arr = obj.slice(-5,3); arr[1] === 1. Actual: ' + (arr[1]));\n}      \n\n//CHECK#5\nif (arr[2] !== 2) {\n  $ERROR('#5: var obj = {}; obj.slice = Array.prototype.slice; obj[0] = 0; obj[1] = 1; obj[2] = 2; obj[3] = 3; obj[4] = 4; obj.length = 5; var arr = obj.slice(-5,3); arr[2] === 2. Actual: ' + (arr[2]));\n}   \n\n//CHECK#6\nif (arr[3] !== undefined) {\n  $ERROR('#6: var obj = {}; obj.slice = Array.prototype.slice; obj[0] = 0; obj[1] = 1; obj[2] = 2; obj[3] = 3; obj[4] = 4; obj.length = 5; var arr = obj.slice(-5,3); arr[3] === undefined. Actual: ' + (arr[3]));\n}   \n",
    "id": "S15.4.4.10_A2_T2"
   },
   {
    "section": "15.4.4.10",
    "description": "If start is positive, use min(start, length).\nIf end is negative, use max(end + length, 0)",
    "test": "var obj = {};\nobj.slice = Array.prototype.slice;\nobj[0] = 0;\nobj[1] = 1;\nobj[2] = 2;\nobj[3] = 3;\nobj[4] = 4;\nobj.length = 5;\nvar arr = obj.slice(0,-2);\n\n//CHECK#1\narr.getClass = Object.prototype.toString;\nif (arr.getClass() !== \"[object \" + \"Array\" + \"]\") {\n  $ERROR('#1: var obj = {}; obj.slice = Array.prototype.slice; obj[0] = 0; obj[1] = 1; obj[2] = 2; obj[3] = 3; obj[4] = 4; obj.length = 5; var arr = obj.slice(0,-2); arr is Array object. Actual: ' + (arr.getClass()));\n}\n\n//CHECK#2\nif (arr.length !== 3) {\n  $ERROR('#2: var obj = {}; obj.slice = Array.prototype.slice; obj[0] = 0; obj[1] = 1; obj[2] = 2; obj[3] = 3; obj[4] = 4; obj.length = 5; var arr = obj.slice(0,-2); arr.length === 3. Actual: ' + (arr.length));\n}      \n\n//CHECK#3\nif (arr[0] !== 0) {\n  $ERROR('#3: var obj = {}; obj.slice = Array.prototype.slice; obj[0] = 0; obj[1] = 1; obj[2] = 2; obj[3] = 3; obj[4] = 4; obj.length = 5; var arr = obj.slice(0,-2); arr[0] === 0. Actual: ' + (arr[0]));\n}\n\n//CHECK#4\nif (arr[1] !== 1) {\n  $ERROR('#4: var obj = {}; obj.slice = Array.prototype.slice; obj[0] = 0; obj[1] = 1; obj[2] = 2; obj[3] = 3; obj[4] = 4; obj.length = 5; var arr = obj.slice(0,-2); arr[1] === 1. Actual: ' + (arr[1]));\n}      \n\n//CHECK#5\nif (arr[2] !== 2) {\n  $ERROR('#5: var obj = {}; obj.slice = Array.prototype.slice; obj[0] = 0; obj[1] = 1; obj[2] = 2; obj[3] = 3; obj[4] = 4; obj.length = 5; var arr = obj.slice(0,-2); arr[2] === 2. Actual: ' + (arr[2]));\n}   \n\n//CHECK#6\nif (arr[3] !== undefined) {\n  $ERROR('#6: var obj = {}; obj.slice = Array.prototype.slice; obj[0] = 0; obj[1] = 1; obj[2] = 2; obj[3] = 3; obj[4] = 4; obj.length = 5; var arr = obj.slice(0,-2); arr[3] === undefined. Actual: ' + (arr[3]));\n}   \n",
    "id": "S15.4.4.10_A2_T3"
   },
   {
    "section": "15.4.4.10",
    "description": "If start is negative, use max(start + length, 0).\nIf end is negative, use max(end + length, 0)",
    "test": "var obj = {};\nobj.slice = Array.prototype.slice;\nobj[0] = 0;\nobj[1] = 1;\nobj[2] = 2;\nobj[3] = 3;\nobj[4] = 4;\nobj.length = 5;\nvar arr = obj.slice(-5,-2);\n\n//CHECK#1\narr.getClass = Object.prototype.toString;\nif (arr.getClass() !== \"[object \" + \"Array\" + \"]\") {\n  $ERROR('#1: var obj = {}; obj.slice = Array.prototype.slice; obj[0] = 0; obj[1] = 1; obj[2] = 2; obj[3] = 3; obj[4] = 4; obj.length = 5; var arr = obj.slice(-5,-2); arr is Array object. Actual: ' + (arr.getClass()));\n}\n\n//CHECK#2\nif (arr.length !== 3) {\n  $ERROR('#2: var obj = {}; obj.slice = Array.prototype.slice; obj[0] = 0; obj[1] = 1; obj[2] = 2; obj[3] = 3; obj[4] = 4; obj.length = 5; var arr = obj.slice(-5,-2); arr.length === 3. Actual: ' + (arr.length));\n}      \n\n//CHECK#3\nif (arr[0] !== 0) {\n  $ERROR('#3: var obj = {}; obj.slice = Array.prototype.slice; obj[0] = 0; obj[1] = 1; obj[2] = 2; obj[3] = 3; obj[4] = 4; obj.length = 5; var arr = obj.slice(-5,-2); arr[0] === 0. Actual: ' + (arr[0]));\n}\n\n//CHECK#4\nif (arr[1] !== 1) {\n  $ERROR('#4: var obj = {}; obj.slice = Array.prototype.slice; obj[0] = 0; obj[1] = 1; obj[2] = 2; obj[3] = 3; obj[4] = 4; obj.length = 5; var arr = obj.slice(-5,-2); arr[1] === 1. Actual: ' + (arr[1]));\n}      \n\n//CHECK#5\nif (arr[2] !== 2) {\n  $ERROR('#5: var obj = {}; obj.slice = Array.prototype.slice; obj[0] = 0; obj[1] = 1; obj[2] = 2; obj[3] = 3; obj[4] = 4; obj.length = 5; var arr = obj.slice(-5,-2); arr[2] === 2. Actual: ' + (arr[2]));\n}   \n\n//CHECK#6\nif (arr[3] !== undefined) {\n  $ERROR('#6: var obj = {}; obj.slice = Array.prototype.slice; obj[0] = 0; obj[1] = 1; obj[2] = 2; obj[3] = 3; obj[4] = 4; obj.length = 5; var arr = obj.slice(-5,-2); arr[3] === undefined. Actual: ' + (arr[3]));\n}   \n",
    "id": "S15.4.4.10_A2_T4"
   },
   {
    "section": "15.4.4.10",
    "description": "If end is undefined use length",
    "test": "var obj = {};\nobj.slice = Array.prototype.slice;\nobj[0] = 0;\nobj[1] = 1;\nobj[2] = 2;\nobj[3] = 3;\nobj[4] = 4;\nobj.length = 5;\nvar arr = obj.slice(2);\n\n//CHECK#1\narr.getClass = Object.prototype.toString;\nif (arr.getClass() !== \"[object \" + \"Array\" + \"]\") {\n  $ERROR('#1: var obj = {}; obj.slice = Array.prototype.slice; obj[0] = 0; obj[1] = 1; obj[2] = 2; obj[3] = 3; obj[4] = 4; obj.length = 5; var arr = obj.slice(2); arr is Array object. Actual: ' + (arr.getClass()));\n}\n\n//CHECK#2\nif (arr.length !== 3) {\n  $ERROR('#2: var obj = {}; obj.slice = Array.prototype.slice; obj[0] = 0; obj[1] = 1; obj[2] = 2; obj[3] = 3; obj[4] = 4; obj.length = 5; var arr = obj.slice(2); arr.length === 3. Actual: ' + (arr.length));\n}      \n\n//CHECK#3\nif (arr[0] !== 2) {\n  $ERROR('#3: var obj = {}; obj.slice = Array.prototype.slice; obj[0] = 0; obj[1] = 1; obj[2] = 2; obj[3] = 3; obj[4] = 4; obj.length = 5; var arr = obj.slice(2); arr[0] === 2. Actual: ' + (arr[0]));\n}\n\n//CHECK#4\nif (arr[1] !== 3) {\n  $ERROR('#4: var obj = {}; obj.slice = Array.prototype.slice; obj[0] = 0; obj[1] = 1; obj[2] = 2; obj[3] = 3; obj[4] = 4; obj.length = 5; var arr = obj.slice(2); arr[1] === 3. Actual: ' + (arr[1]));\n}      \n\n//CHECK#5\nif (arr[2] !== 4) {\n  $ERROR('#5: var obj = {}; obj.slice = Array.prototype.slice; obj[0] = 0; obj[1] = 1; obj[2] = 2; obj[3] = 3; obj[4] = 4; obj.length = 5; var arr = obj.slice(2); arr[2] === 4. Actual: ' + (arr[2]));\n}   \n\n//CHECK#6\nif (arr[3] !== undefined) {\n  $ERROR('#6: var obj = {}; obj.slice = Array.prototype.slice; obj[0] = 0; obj[1] = 1; obj[2] = 2; obj[3] = 3; obj[4] = 4; obj.length = 5; var arr = obj.slice(2); arr[3] === undefined. Actual: ' + (arr[3]));\n}   \n",
    "id": "S15.4.4.10_A2_T5"
   },
   {
    "section": "15.4.4.10",
    "description": "If end is undefined use length",
    "test": "var obj = {};\nobj.slice = Array.prototype.slice;\nobj[0] = 0;\nobj[1] = 1;\nobj[2] = 2;\nobj[3] = 3;\nobj[4] = 4;\nobj.length = 5;\nvar arr = obj.slice(2, undefined);\n\n//CHECK#1\narr.getClass = Object.prototype.toString;\nif (arr.getClass() !== \"[object \" + \"Array\" + \"]\") {\n  $ERROR('#1: var obj = {}; obj.slice = Array.prototype.slice; obj[0] = 0; obj[1] = 1; obj[2] = 2; obj[3] = 3; obj[4] = 4; obj.length = 5; var arr = obj.slice(2, undefined); arr is Array object. Actual: ' + (arr.getClass()));\n}\n\n//CHECK#2\nif (arr.length !== 3) {\n  $ERROR('#2: var obj = {}; obj.slice = Array.prototype.slice; obj[0] = 0; obj[1] = 1; obj[2] = 2; obj[3] = 3; obj[4] = 4; obj.length = 5; var arr = obj.slice(2, undefined); arr.length === 3. Actual: ' + (arr.length));\n}      \n\n//CHECK#3\nif (arr[0] !== 2) {\n  $ERROR('#3: var obj = {}; obj.slice = Array.prototype.slice; obj[0] = 0; obj[1] = 1; obj[2] = 2; obj[3] = 3; obj[4] = 4; obj.length = 5; var arr = obj.slice(2, undefined); arr[0] === 2. Actual: ' + (arr[0]));\n}\n\n//CHECK#4\nif (arr[1] !== 3) {\n  $ERROR('#4: var obj = {}; obj.slice = Array.prototype.slice; obj[0] = 0; obj[1] = 1; obj[2] = 2; obj[3] = 3; obj[4] = 4; obj.length = 5; var arr = obj.slice(2, undefined); arr[1] === 3. Actual: ' + (arr[1]));\n}      \n\n//CHECK#5\nif (arr[2] !== 4) {\n  $ERROR('#5: var obj = {}; obj.slice = Array.prototype.slice; obj[0] = 0; obj[1] = 1; obj[2] = 2; obj[3] = 3; obj[4] = 4; obj.length = 5; var arr = obj.slice(2, undefined); arr[2] === 4. Actual: ' + (arr[2]));\n}   \n\n//CHECK#6\nif (arr[3] !== undefined) {\n  $ERROR('#6: var obj = {}; obj.slice = Array.prototype.slice; obj[0] = 0; obj[1] = 1; obj[2] = 2; obj[3] = 3; obj[4] = 4; obj.length = 5; var arr = obj.slice(2, undefined); arr[3] === undefined. Actual: ' + (arr[3]));\n}   \n",
    "id": "S15.4.4.10_A2_T6"
   },
   {
    "section": "15.4.4.10",
    "description": "length = 4294967296",
    "test": "var obj = {};\nobj.slice = Array.prototype.slice;\nobj[0] = \"x\";\nobj[4294967295] = \"y\";\nobj.length = 4294967296;\nvar arr = obj.slice(0,4294967296);\n\n//CHECK#1\nif (arr.length !== 0) {\n  $ERROR('#1: var obj = {}; obj.slice = Array.prototype.slice; obj[0] = \"x\"; obj[4294967295] = \"y\"; obj.length = 4294967296; var arr = obj.slice(0,4294967296); arr.length === 0. Actual: ' + (arr.length));\n}\n\n//CHECK#2\nif (arr[0] !== undefined) {\n   $ERROR('#2: var obj = {}; obj.slice = Array.prototype.slice; obj[0] = \"x\"; obj[4294967295] = \"y\"; obj.length = 4294967296; var arr = obj.slice(0,4294967296); arr[0] === undefined. Actual: ' + (arr[0]));\n}  \n\n//CHECK#3\nif (arr[4294967295] !== undefined) {\n   $ERROR('#3: var obj = {}; obj.slice = Array.prototype.slice; obj[0] = \"x\"; obj[4294967295] = \"y\"; obj.length = 4294967296; var arr = obj.slice(0,4294967296); arr[4294967295] === undefined. Actual: ' + (arr[4294967295]));\n}  \n",
    "id": "S15.4.4.10_A3_T1"
   },
   {
    "section": "15.4.4.10",
    "description": "length = 4294967297",
    "test": "var obj = {};\nobj.slice = Array.prototype.slice;\nobj[0] = \"x\";\nobj[4294967296] = \"y\";\nobj.length = 4294967297;\nvar arr = obj.slice(0,4294967297);\n\n//CHECK#1\nif (arr.length !== 1) {\n  $ERROR('#1: var obj = {}; obj.slice = Array.prototype.slice; obj[0] = \"x\"; obj[4294967296] = \"y\"; obj.length = 4294967297; var arr = obj.slice(0,4294967297); arr.length === 1. Actual: ' + (arr.length));\n}\n\n//CHECK#2\nif (arr[0] !== \"x\") {\n   $ERROR('#2: var obj = {}; obj.slice = Array.prototype.slice; obj[0] = \"x\"; obj[4294967296] = \"y\"; obj.length = 4294967297; var arr = obj.slice(0,4294967297); arr[0] === \"x\". Actual: ' + (arr[0]));\n}\n\n//CHECK#3\nif (arr[4294967296] !== undefined) {\n   $ERROR('#3: var obj = {}; obj.slice = Array.prototype.slice; obj[0] = \"x\"; obj[4294967296] = \"y\"; obj.length = 4294967297; var arr = obj.slice(0,4294967297); arr[4294967296] === undefined. Actual: ' + (arr[4294967296]));\n}  \n",
    "id": "S15.4.4.10_A3_T2"
   },
   {
    "section": "15.4.4.10",
    "description": "length = -1",
    "test": "var obj = {};\nobj.slice = Array.prototype.slice;\nobj[4294967294] = \"x\";\nobj.length = -1;\nvar arr = obj.slice(4294967294,4294967295);\n\n//CHECK#1\nif (arr.length !== 1) {\n  $ERROR('#1: var obj = {}; obj.slice = Array.prototype.slice; obj[4294967294] = \"x\"; obj.length = 4294967295; var arr = obj.slice(4294967294,4294967295); arr.length === 1. Actual: ' + (arr.length));\n}\n\n//CHECK#3\nif (arr[0] !== \"x\") {\n   $ERROR('#3: var obj = {}; obj.slice = Array.prototype.slice; obj[4294967294] = \"x\"; obj.length = 4294967295; var arr = obj.slice(4294967294,4294967295); arr[0] === \"x\". Actual: ' + (arr[0]));\n}  \n",
    "id": "S15.4.4.10_A3_T3"
   },
   {
    "section": "15.4.4.10, 8.6.2.1, 15.2.4.5",
    "description": "[[Prototype]] of Array instance is Array.prototype",
    "test": "Array.prototype[1] = 1;\nvar x = [0];\nx.length = 2;\nvar arr = x.slice();\n\n//CHECK#1\nif (arr[0] !== 0) {  \n  $ERROR('#1: Array.prototype[1] = 1; x = [0]; x.length = 2; var arr = x.slice(); arr[0] === 0. Actual: ' + (arr[0]));    \n}\n\n//CHECK#2\nif (arr[1] !== 1) {  \n  $ERROR('#2: Array.prototype[1] = 1; x = [0]; x.length = 2; var arr = x.slice(); arr[1] === 1. Actual: ' + (arr[1]));    \n}\n\n//CHECK#3\nif (arr.hasOwnProperty('1') !== true) {  \n  $ERROR('#3: Array.prototype[1] = 1; x = [0]; x.length = 2; var arr = x.slice(); arr.hasOwnProperty(\\'1\\') === true. Actual: ' + (arr.hasOwnProperty('1')));    \n}\n",
    "id": "S15.4.4.10_A4_T1"
   },
   {
    "section": "15.4.4.10, 15.2.4.7, 12.6.4",
    "description": "Checking use propertyIsEnumerable, for-in",
    "test": "//CHECK#1\nif (Array.prototype.slice.propertyIsEnumerable('length') !== false) {\n  $ERROR('#1: Array.prototype.slice.propertyIsEnumerable(\\'length\\') === false. Actual: ' + (Array.prototype.slice.propertyIsEnumerable('length')));\n}\n\n//CHECK#2\nvar result = true;\nfor (var p in Array.slice){\n  if (p === \"length\") {\n    result = false;\n  }  \n}\n\nif (result !== true) {\n  $ERROR('#2: result = true; for (p in Array.slice) { if (p === \"length\") result = false; }  result === true;');\n}\n\n",
    "id": "S15.4.4.10_A5.1"
   },
   {
    "section": "15.4.4.10, 15.2.4.5, 11.4.1",
    "description": "Checking use hasOwnProperty, delete",
    "test": "//CHECK#1\nif (Array.prototype.slice.hasOwnProperty('length') !== true) {\n  $FAIL('#1: Array.prototype.slice.hasOwnProperty(\\'length\\') === true. Actual: ' + (Array.prototype.slice.hasOwnProperty('length')));\n}\n\ndelete Array.prototype.slice.length;\n\n//CHECK#2\nif (Array.prototype.slice.hasOwnProperty('length') !== true) {\n  $ERROR('#2: delete Array.prototype.slice.length; Array.prototype.slice.hasOwnProperty(\\'length\\') === true. Actual: ' + (Array.prototype.slice.hasOwnProperty('length')));\n}\n\n//CHECK#3\nif (Array.prototype.slice.length === undefined) {\n  $ERROR('#3: delete Array.prototype.slice.length; Array.prototype.slice.length !== undefined');\n}\n\n\n",
    "id": "S15.4.4.10_A5.2"
   },
   {
    "section": "15.4.4.10",
    "description": "Checking if varying the length property fails",
    "strict_mode_negative": "",
    "test": "//CHECK#1\nvar x = Array.prototype.slice.length;\nArray.prototype.slice.length = Infinity;\nif (Array.prototype.slice.length !== x) {\n  $ERROR('#1: x = Array.prototype.slice.length; Array.prototype.slice.length = Infinity; Array.prototypeslice.length === x. Actual: ' + (Array.prototypeslice.length));\n}\n\n",
    "id": "S15.4.4.10_A5.3",
    "strict_only": ""
   },
   {
    "section": "15.4.4.10",
    "description": "slice.length === 2",
    "test": "//CHECK#1\nif (Array.prototype.slice.length !== 2) {\n  $ERROR('#1: Array.prototype.slice.length === 2. Actual: ' + (Array.prototype.slice.length));\n}\n\n",
    "id": "S15.4.4.10_A5.4"
   },
   {
    "section": "15.4.4.10, 15.2.4.7, 12.6.4",
    "description": "Checking use propertyIsEnumerable, for-in",
    "test": "//CHECK#1\nif (Array.propertyIsEnumerable('slice') !== false) {\n  $ERROR('#1: Array.propertyIsEnumerable(\\'slice\\') === false. Actual: ' + (Array.propertyIsEnumerable('slice')));\n}\n\n//CHECK#2\nvar result = true;\nfor (var p in Array){\n  if (p === \"slice\") {\n    result = false;\n  }  \n}\n\nif (result !== true) {\n  $ERROR('#2: result = true; for (p in Array) { if (p === \"slice\") result = false; }  result === true;');\n}\n\n",
    "id": "S15.4.4.10_A5.5"
   },
   {
    "section": "15.4.4.10",
    "description": "Checking Array.prototype.slice.prototype",
    "test": "//CHECK#1\nif (Array.prototype.slice.prototype !== undefined) {\n  $ERROR('#1: Array.prototype.slice.prototype === undefined. Actual: ' + (Array.prototype.slice.prototype));\n}\n",
    "id": "S15.4.4.10_A5.6"
   },
   {
    "section": "15.4.4.10, 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.slice();\n  $ERROR('#1.1: new Array.prototype.slice() throw TypeError. Actual: ' + (new Array.prototype.slice()));\n} catch (e) {\n  if ((e instanceof TypeError) !== true) {\n    $ERROR('#1.2: new Array.prototype.slice() throw TypeError. Actual: ' + (e));\n  }\n}\n",
    "id": "S15.4.4.10_A5.7"
   }
  ]
 }
}