aboutsummaryrefslogtreecommitdiffstats
path: root/website/resources/scripts/testcases2/15.4.4.10_Array_prototype_slice.json
diff options
context:
space:
mode:
Diffstat (limited to 'website/resources/scripts/testcases2/15.4.4.10_Array_prototype_slice.json')
-rw-r--r--website/resources/scripts/testcases2/15.4.4.10_Array_prototype_slice.json298
1 files changed, 298 insertions, 0 deletions
diff --git a/website/resources/scripts/testcases2/15.4.4.10_Array_prototype_slice.json b/website/resources/scripts/testcases2/15.4.4.10_Array_prototype_slice.json
new file mode 100644
index 000000000..2c4131def
--- /dev/null
+++ b/website/resources/scripts/testcases2/15.4.4.10_Array_prototype_slice.json
@@ -0,0 +1,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"
+ }
+ ]
+ }
+}