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"
}
]
}
}
|