diff --git a/test/built-ins/Array/prototype/concat/15.4.4.4-5-b-iii-3-b-1.js b/test/built-ins/Array/prototype/concat/15.4.4.4-5-b-iii-3-b-1.js
index 6213da0002199cee53cc98ce9422e7fb0d718d9a..5d7c7ad6a7ab047b8119d8b11881733f2c13c044 100644
--- a/test/built-ins/Array/prototype/concat/15.4.4.4-5-b-iii-3-b-1.js
+++ b/test/built-ins/Array/prototype/concat/15.4.4.4-5-b-iii-3-b-1.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.4-5-b-iii-3-b-1
 description: >
     Array.prototype.concat will concat an Array when index property
     (read-only) exists in Array.prototype (Step 5.b.iii.3.b)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-        try {
             Object.defineProperty(Array.prototype, "0", {
                 value: 100,
                 writable: false,
@@ -39,9 +36,7 @@ function testcase() {
             delete newArr[0];
             verifyConfigurable = newArr.hasOwnProperty("0");
 
-            return verifyValue && !verifyConfigurable && verifyEnumerable && verifyWritable;
-        } finally {
-            delete Array.prototype[0];
-        }
-    }
-runTestCase(testcase);
+assert(verifyValue, 'verifyValue !== true');
+assert.sameValue(verifyConfigurable, false, 'verifyConfigurable');
+assert(verifyEnumerable, 'verifyEnumerable !== true');
+assert(verifyWritable, 'verifyWritable !== true');
diff --git a/test/built-ins/Array/prototype/concat/15.4.4.4-5-c-i-1.js b/test/built-ins/Array/prototype/concat/15.4.4.4-5-c-i-1.js
index f9b0a95d1e5614abb2676d42b99b1d970e91b85e..ffbe3c161eefa09899c3244ce1089df9fcce09eb 100644
--- a/test/built-ins/Array/prototype/concat/15.4.4.4-5-c-i-1.js
+++ b/test/built-ins/Array/prototype/concat/15.4.4.4-5-c-i-1.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.4-5-c-i-1
 description: >
     Array.prototype.concat will concat an Array when index property
     (read-only) exists in Array.prototype (Step 5.c.i)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-        try {
             Object.defineProperty(Array.prototype, "0", {
                 value: 100,
                 writable: false,
@@ -41,11 +38,9 @@ function testcase() {
             delete newArr[0];
             verifyConfigurable = newArr.hasOwnProperty("0");
 
-            return hasProperty && instanceOfVerify && verifyValue && !verifyConfigurable && verifyEnumerable && verifyWritable;
-	
-
-        } finally {
-            delete Array.prototype[0];
-        }
-    }
-runTestCase(testcase);
+assert(hasProperty, 'hasProperty !== true');
+assert(instanceOfVerify, 'instanceOfVerify !== true');
+assert(verifyValue, 'verifyValue !== true');
+assert.sameValue(verifyConfigurable, false, 'verifyConfigurable');
+assert(verifyEnumerable, 'verifyEnumerable !== true');
+assert(verifyWritable, 'verifyWritable !== true');
diff --git a/test/built-ins/Array/prototype/every/15.4.4.16-1-10.js b/test/built-ins/Array/prototype/every/15.4.4.16-1-10.js
index eae3883e3b53be6f15c567eb6bb36b0c9aac5769..862cc58062aa53b7d00320b3054fcabf93e028d5 100644
--- a/test/built-ins/Array/prototype/every/15.4.4.16-1-10.js
+++ b/test/built-ins/Array/prototype/every/15.4.4.16-1-10.js
@@ -4,21 +4,13 @@
 /*---
 es5id: 15.4.4.16-1-10
 description: Array.prototype.every applied to the Math object
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         function callbackfn(val, idx, obj) {
             return ('[object Math]' !== Object.prototype.toString.call(obj));
         }
 
-        try {
             Math.length = 1;
             Math[0] = 1;
-            return !Array.prototype.every.call(Math, callbackfn);
-        } finally {
-            delete Math[0];
-            delete Math.length;
-        }
-    }
-runTestCase(testcase);
+
+assert.sameValue(Array.prototype.every.call(Math, callbackfn), false, 'Array.prototype.every.call(Math, callbackfn)');
diff --git a/test/built-ins/Array/prototype/every/15.4.4.16-1-13.js b/test/built-ins/Array/prototype/every/15.4.4.16-1-13.js
index a3ef08822e0e725c30bf50eb42c1a2c51c0250b9..99a2a65c939213a6d1a9029f2ac212954b35e556 100644
--- a/test/built-ins/Array/prototype/every/15.4.4.16-1-13.js
+++ b/test/built-ins/Array/prototype/every/15.4.4.16-1-13.js
@@ -4,21 +4,13 @@
 /*---
 es5id: 15.4.4.16-1-13
 description: Array.prototype.every applied to the JSON object
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         function callbackfn(val, idx, obj) {
             return ('[object JSON]' !== Object.prototype.toString.call(obj));
         }
 
-        try {
             JSON.length = 1;
             JSON[0] = 1;
-            return !Array.prototype.every.call(JSON, callbackfn);
-        } finally {
-            delete JSON.length;
-            delete JSON[0];
-        }
-    }
-runTestCase(testcase);
+
+assert.sameValue(Array.prototype.every.call(JSON, callbackfn), false, 'Array.prototype.every.call(JSON, callbackfn)');
diff --git a/test/built-ins/Array/prototype/every/15.4.4.16-1-3.js b/test/built-ins/Array/prototype/every/15.4.4.16-1-3.js
index 63ec4d5cee3bef222105a5578174ac9250ae3ba5..f0aa17de37f8291aadc64b996159d17a21e24477 100644
--- a/test/built-ins/Array/prototype/every/15.4.4.16-1-3.js
+++ b/test/built-ins/Array/prototype/every/15.4.4.16-1-3.js
@@ -4,11 +4,8 @@
 /*---
 es5id: 15.4.4.16-1-3
 description: Array.prototype.every applied to boolean primitive
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var accessed = false;
 
         function callbackfn(val, idx, obj) {
@@ -16,13 +13,8 @@ function testcase() {
             return obj instanceof Boolean;
         }
 
-        try {
             Boolean.prototype[0] = 1;
             Boolean.prototype.length = 1;
-            return Array.prototype.every.call(false, callbackfn) && accessed;
-        } finally {
-            delete Boolean.prototype[0];
-            delete Boolean.prototype.length;
-        }
-    }
-runTestCase(testcase);
+
+assert(Array.prototype.every.call(false, callbackfn), 'Array.prototype.every.call(false, callbackfn) !== true');
+assert(accessed, 'accessed !== true');
diff --git a/test/built-ins/Array/prototype/every/15.4.4.16-1-5.js b/test/built-ins/Array/prototype/every/15.4.4.16-1-5.js
index 894af85c4576420a29e1c7941693bfb6826c6512..1cb7632234a9901a1aa4ed599bdba1dfb0e2e485 100644
--- a/test/built-ins/Array/prototype/every/15.4.4.16-1-5.js
+++ b/test/built-ins/Array/prototype/every/15.4.4.16-1-5.js
@@ -4,23 +4,16 @@
 /*---
 es5id: 15.4.4.16-1-5
 description: Array.prototype.every applied to number primitive
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var accessed = false;
         function callbackfn(val, idx, obj) {
             accessed = true;
             return obj instanceof Number;
         }
 
-        try {
             Number.prototype[0] = 1;
             Number.prototype.length = 1;
-            return Array.prototype.every.call(2.5, callbackfn) && accessed;
-        } finally {
-            delete Number.prototype[0];
-            delete Number.prototype.length;
-        }
-    }
-runTestCase(testcase);
+
+assert(Array.prototype.every.call(2.5, callbackfn), 'Array.prototype.every.call(2.5, callbackfn) !== true');
+assert(accessed, 'accessed !== true');
diff --git a/test/built-ins/Array/prototype/every/15.4.4.16-2-12.js b/test/built-ins/Array/prototype/every/15.4.4.16-2-12.js
index 0fa99092d4e676451a35a19281bfb8ca3c275065..b6c2fbf28e8b684fa52d95ed3ea50e9190722ee5 100644
--- a/test/built-ins/Array/prototype/every/15.4.4.16-2-12.js
+++ b/test/built-ins/Array/prototype/every/15.4.4.16-2-12.js
@@ -6,10 +6,8 @@ es5id: 15.4.4.16-2-12
 description: >
     Array.prototype.every - 'length' is own accessor property without
     a get function that overrides an inherited accessor property
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var accessed = false;
 
         function callbackfn(val, idx, obj) {
@@ -17,7 +15,6 @@ function testcase() {
             return val > 10;
         }
 
-        try {
             Object.defineProperty(Object.prototype, "length", {
                 get: function () {
                     return 2;
@@ -31,10 +28,5 @@ function testcase() {
                 configurable: true
             });
 
-            return Array.prototype.every.call(obj, callbackfn) && !accessed;
-        } finally {
-            delete Object.prototype.length;
-        }
-
-    }
-runTestCase(testcase);
+assert(Array.prototype.every.call(obj, callbackfn), 'Array.prototype.every.call(obj, callbackfn) !== true');
+assert.sameValue(accessed, false, 'accessed');
diff --git a/test/built-ins/Array/prototype/every/15.4.4.16-2-15.js b/test/built-ins/Array/prototype/every/15.4.4.16-2-15.js
index d6770afebb5a984814b499de14d3e3142a96fa17..e8e4f71116774e7a0ceb1f1949e3358b459fb2ee 100644
--- a/test/built-ins/Array/prototype/every/15.4.4.16-2-15.js
+++ b/test/built-ins/Array/prototype/every/15.4.4.16-2-15.js
@@ -4,12 +4,9 @@
 /*---
 es5id: 15.4.4.16-2-15
 description: Array.prototype.every - 'length' is property of the global object
-includes:
-    - runTestCase.js
-    - fnGlobalObject.js
+includes: [fnGlobalObject.js]
 ---*/
 
-function testcase() {
         function callbackfn1(val, idx, obj) {
             return val > 10;
         }
@@ -18,19 +15,11 @@ function testcase() {
             return val > 11;
         }
 
-        try {
             var oldLen = fnGlobalObject().length;
             fnGlobalObject()[0] = 12;
             fnGlobalObject()[1] = 11;
             fnGlobalObject()[2] = 9;
             fnGlobalObject().length = 2;
-            return Array.prototype.every.call(fnGlobalObject(), callbackfn1) &&
-                !Array.prototype.every.call(fnGlobalObject(), callbackfn2);
-        } finally {
-            delete fnGlobalObject()[0];
-            delete fnGlobalObject()[1];
-            delete fnGlobalObject()[2];
-            fnGlobalObject().length = oldLen;
-        }
-    }
-runTestCase(testcase);
+
+assert(Array.prototype.every.call(fnGlobalObject(), callbackfn1), 'Array.prototype.every.call(fnGlobalObject(), callbackfn1) !== true');
+assert.sameValue(Array.prototype.every.call(fnGlobalObject(), callbackfn2), false, 'Array.prototype.every.call(fnGlobalObject(), callbackfn2)');
diff --git a/test/built-ins/Array/prototype/every/15.4.4.16-2-18.js b/test/built-ins/Array/prototype/every/15.4.4.16-2-18.js
index c0fdf9bfa951a69c4fdbbc9739fbf1dc5ec995df..de0fb94e0dab778d7c9fdfdb6ee386b01f8517bd 100644
--- a/test/built-ins/Array/prototype/every/15.4.4.16-2-18.js
+++ b/test/built-ins/Array/prototype/every/15.4.4.16-2-18.js
@@ -6,10 +6,8 @@ es5id: 15.4.4.16-2-18
 description: >
     Array.prototype.every applied to String object, which implements
     its own property get method
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         function callbackfn1(val, idx, obj) {
             return parseInt(val, 10) > 1;
         }
@@ -19,12 +17,8 @@ function testcase() {
         }
 
         var str = new String("432");
-        try {
+
             String.prototype[3] = "1";
-            return Array.prototype.every.call(str, callbackfn1) &&
-            !Array.prototype.every.call(str, callbackfn2);
-        } finally {
-            delete String.prototype[3];
-        }
-    }
-runTestCase(testcase);
+
+assert(Array.prototype.every.call(str, callbackfn1), 'Array.prototype.every.call(str, callbackfn1) !== true');
+assert.sameValue(Array.prototype.every.call(str, callbackfn2), false, 'Array.prototype.every.call(str, callbackfn2)');
diff --git a/test/built-ins/Array/prototype/every/15.4.4.16-2-2.js b/test/built-ins/Array/prototype/every/15.4.4.16-2-2.js
index d0fac1906c41a7a65867ca78dbff6021e995a186..c9a1d4459d14a077ea55475cfb7c2259e18eaed6 100644
--- a/test/built-ins/Array/prototype/every/15.4.4.16-2-2.js
+++ b/test/built-ins/Array/prototype/every/15.4.4.16-2-2.js
@@ -4,10 +4,8 @@
 /*---
 es5id: 15.4.4.16-2-2
 description: Array.prototype.every - 'length' is own data property on an Array
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         function callbackfn1(val, idx, obj) {
             return val > 10;
         }
@@ -16,13 +14,7 @@ function testcase() {
             return val > 11;
         }
 
-        try {
             Array.prototype[2] = 9;
 
-            return [12, 11].every(callbackfn1) &&
-                ![12, 11].every(callbackfn2);
-        } finally {
-            delete Array.prototype[2];
-        }
-    }
-runTestCase(testcase);
+assert([12, 11].every(callbackfn1), '[12, 11].every(callbackfn1) !== true');
+assert.sameValue([12, 11].every(callbackfn2), false, '[12, 11].every(callbackfn2)');
diff --git a/test/built-ins/Array/prototype/every/15.4.4.16-2-4.js b/test/built-ins/Array/prototype/every/15.4.4.16-2-4.js
index b034070d9dc51a295f92e883a8572f3aeb8f8107..1538d8c711a29d6874f34c490498a46c2fc2229c 100644
--- a/test/built-ins/Array/prototype/every/15.4.4.16-2-4.js
+++ b/test/built-ins/Array/prototype/every/15.4.4.16-2-4.js
@@ -6,10 +6,8 @@ es5id: 15.4.4.16-2-4
 description: >
     Array.prototype.every - 'length' is own data property that
     overrides an inherited data property on an Array
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var arrProtoLen = 0;
         function callbackfn1(val, idx, obj) {
             return val > 10;
@@ -19,17 +17,9 @@ function testcase() {
             return val > 11;
         }
 
-        try {
             arrProtoLen = Array.prototype.length;
             Array.prototype.length = 0;
             Array.prototype[2] = 9;
 
-            return [12, 11].every(callbackfn1) &&
-                ![12, 11].every(callbackfn2);
-        } finally {
-            Array.prototype.length = arrProtoLen;
-            delete Array.prototype[2];
-        }
-
-    }
-runTestCase(testcase);
+assert([12, 11].every(callbackfn1), '[12, 11].every(callbackfn1) !== true');
+assert.sameValue([12, 11].every(callbackfn2), false, '[12, 11].every(callbackfn2)');
diff --git a/test/built-ins/Array/prototype/every/15.4.4.16-7-b-10.js b/test/built-ins/Array/prototype/every/15.4.4.16-7-b-10.js
index 6143011cbd058ffafde7290fd60cdbecf16efb58..938d3ba2bfa9c1a80ab94df583fab1a72258b673 100644
--- a/test/built-ins/Array/prototype/every/15.4.4.16-7-b-10.js
+++ b/test/built-ins/Array/prototype/every/15.4.4.16-7-b-10.js
@@ -6,10 +6,8 @@ es5id: 15.4.4.16-7-b-10
 description: >
     Array.prototype.every - deleting property of prototype causes
     prototype index property not to be visited on an Array-like Object
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var accessed = false;
         function callbackfn(val, idx, obj) {
             accessed = true;
@@ -25,11 +23,7 @@ function testcase() {
             configurable: true
         });
 
-        try {
             Object.prototype[1] = 1;
-            return Array.prototype.every.call(arr, callbackfn) && accessed;
-        } finally {
-            delete Object.prototype[1];
-        }
-    }
-runTestCase(testcase);
+
+assert(Array.prototype.every.call(arr, callbackfn), 'Array.prototype.every.call(arr, callbackfn) !== true');
+assert(accessed, 'accessed !== true');
diff --git a/test/built-ins/Array/prototype/every/15.4.4.16-7-b-11.js b/test/built-ins/Array/prototype/every/15.4.4.16-7-b-11.js
index 88fa11342ac594e4f94a190dc9ffe6f3e7f91c1e..8bd0b1c8edf6e591fe031317a8f93d62ab3e15d5 100644
--- a/test/built-ins/Array/prototype/every/15.4.4.16-7-b-11.js
+++ b/test/built-ins/Array/prototype/every/15.4.4.16-7-b-11.js
@@ -6,10 +6,8 @@ es5id: 15.4.4.16-7-b-11
 description: >
     Array.prototype.every - deleting property of prototype causes
     prototype index property not to be visited on an Array
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var accessed = false;
         function callbackfn(val, idx, obj) {
             accessed = true;
@@ -25,11 +23,7 @@ function testcase() {
             configurable: true
         });
 
-        try {
             Array.prototype[1] = 1;
-            return arr.every(callbackfn) && accessed;
-        } finally {
-            delete Array.prototype[1];
-        }
-    }
-runTestCase(testcase);
+
+assert(arr.every(callbackfn), 'arr.every(callbackfn) !== true');
+assert(accessed, 'accessed !== true');
diff --git a/test/built-ins/Array/prototype/every/15.4.4.16-7-b-12.js b/test/built-ins/Array/prototype/every/15.4.4.16-7-b-12.js
index 27a3ee00b80f992c174792982104167338f59a31..6c2fecf4aa8043f51c830dafff9a405cc13168fa 100644
--- a/test/built-ins/Array/prototype/every/15.4.4.16-7-b-12.js
+++ b/test/built-ins/Array/prototype/every/15.4.4.16-7-b-12.js
@@ -7,10 +7,8 @@ description: >
     Array.prototype.every - deleting own property with prototype
     property causes prototype index property to be visited on an
     Array-like object
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         function callbackfn(val, idx, obj) {
             if (idx === 1 && val === 1) {
                 return false;
@@ -28,11 +26,6 @@ function testcase() {
             configurable: true
         });
 
-        try {
             Object.prototype[1] = 1;
-            return !Array.prototype.every.call(arr, callbackfn);
-        } finally {
-            delete Object.prototype[1];
-        }
-    }
-runTestCase(testcase);
+
+assert.sameValue(Array.prototype.every.call(arr, callbackfn), false, 'Array.prototype.every.call(arr, callbackfn)');
diff --git a/test/built-ins/Array/prototype/every/15.4.4.16-7-b-13.js b/test/built-ins/Array/prototype/every/15.4.4.16-7-b-13.js
index 62ee946464824b37ebb3899f5f78535d5763028f..868218c9551a79dcc7993fc685391ce7c43c6c2c 100644
--- a/test/built-ins/Array/prototype/every/15.4.4.16-7-b-13.js
+++ b/test/built-ins/Array/prototype/every/15.4.4.16-7-b-13.js
@@ -6,10 +6,8 @@ es5id: 15.4.4.16-7-b-13
 description: >
     Array.prototype.every - deleting own property with prototype
     property causes prototype index property to be visited on an Array
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         function callbackfn(val, idx, obj) {
             if (idx === 1 && val === 1) {
                 return false;
@@ -27,11 +25,6 @@ function testcase() {
             configurable: true
         });
 
-        try {
             Array.prototype[1] = 1;
-            return !arr.every(callbackfn);
-        } finally {
-            delete Array.prototype[1];
-        }
-    }
-runTestCase(testcase);
+
+assert.sameValue(arr.every(callbackfn), false, 'arr.every(callbackfn)');
diff --git a/test/built-ins/Array/prototype/every/15.4.4.16-7-b-15.js b/test/built-ins/Array/prototype/every/15.4.4.16-7-b-15.js
index 49aef9a9c5b450242ebddb3baadadcc63f919b16..4696de85a4b52555ee724aa6e369b8f4d27f7df1 100644
--- a/test/built-ins/Array/prototype/every/15.4.4.16-7-b-15.js
+++ b/test/built-ins/Array/prototype/every/15.4.4.16-7-b-15.js
@@ -6,10 +6,8 @@ es5id: 15.4.4.16-7-b-15
 description: >
     Array.prototype.every - decreasing length of array with prototype
     property causes prototype index property to be visited
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         function callbackfn(val, idx, obj) {
             if (idx === 2 && val === "prototype") {
                 return false;
@@ -19,7 +17,6 @@ function testcase() {
         }
         var arr = [0, 1, 2];
 
-        try {
             Object.defineProperty(Array.prototype, "2", {
                 get: function () {
                     return "prototype";
@@ -35,9 +32,4 @@ function testcase() {
                 configurable: true
             });
 
-            return !arr.every(callbackfn);
-        } finally {
-            delete Array.prototype[2];
-        }
-    }
-runTestCase(testcase);
+assert.sameValue(arr.every(callbackfn), false, 'arr.every(callbackfn)');
diff --git a/test/built-ins/Array/prototype/every/15.4.4.16-7-b-6.js b/test/built-ins/Array/prototype/every/15.4.4.16-7-b-6.js
index ee189be49fb3f11a837a555dc4757466c7459816..a3e937b837ca4263805b1a9e4e500c7c8c0de0a2 100644
--- a/test/built-ins/Array/prototype/every/15.4.4.16-7-b-6.js
+++ b/test/built-ins/Array/prototype/every/15.4.4.16-7-b-6.js
@@ -6,10 +6,8 @@ es5id: 15.4.4.16-7-b-6
 description: >
     Array.prototype.every - properties can be added to prototype after
     current position are visited on an Array-like object
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         function callbackfn(val, idx, obj) {
             if (idx === 1 && val === 6.99) {
                 return false;
@@ -32,10 +30,4 @@ function testcase() {
             configurable: true
         });
 
-        try {
-            return !Array.prototype.every.call(arr, callbackfn);
-        } finally {
-            delete Object.prototype[1];
-        }
-    }
-runTestCase(testcase);
+assert.sameValue(Array.prototype.every.call(arr, callbackfn), false, 'Array.prototype.every.call(arr, callbackfn)');
diff --git a/test/built-ins/Array/prototype/every/15.4.4.16-7-b-7.js b/test/built-ins/Array/prototype/every/15.4.4.16-7-b-7.js
index f1f40c869c85181379994efac7249becf358db7c..1ce29f83db86a87ee17bc6aaf9d1482c9d3ae91c 100644
--- a/test/built-ins/Array/prototype/every/15.4.4.16-7-b-7.js
+++ b/test/built-ins/Array/prototype/every/15.4.4.16-7-b-7.js
@@ -6,10 +6,8 @@ es5id: 15.4.4.16-7-b-7
 description: >
     Array.prototype.every - properties can be added to prototype after
     current position are visited on an Array
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         function callbackfn(val, idx, obj) {
             if (idx === 1 && val === 6.99) {
                 return false;
@@ -32,10 +30,4 @@ function testcase() {
             configurable: true
         });
 
-        try {
-            return !arr.every(callbackfn);
-        } finally {
-            delete Array.prototype[1];
-        }
-    }
-runTestCase(testcase);
+assert.sameValue(arr.every(callbackfn), false, 'arr.every(callbackfn)');
diff --git a/test/built-ins/Array/prototype/every/15.4.4.16-7-c-i-12.js b/test/built-ins/Array/prototype/every/15.4.4.16-7-c-i-12.js
index 6d75b595c8bd97fac5aec17709fea5e840c6f9c1..19bb52286a99c4ffe478e6f6f5ad6ef6ec7e2398 100644
--- a/test/built-ins/Array/prototype/every/15.4.4.16-7-c-i-12.js
+++ b/test/built-ins/Array/prototype/every/15.4.4.16-7-c-i-12.js
@@ -6,10 +6,8 @@ es5id: 15.4.4.16-7-c-i-12
 description: >
     Array.prototype.every - element to be retrieved is own accessor
     property that overrides an inherited data property on an Array
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         function callbackfn(val, idx, obj) {
             if (idx === 0) {
                 return val === 10;
@@ -19,7 +17,7 @@ function testcase() {
         }
 
         var arr = [];
-        try {
+
             Array.prototype[0] = 10;
 
             Object.defineProperty(arr, "0", {
@@ -29,9 +27,4 @@ function testcase() {
                 configurable: true
             });
 
-            return !arr.every(callbackfn);
-        } finally {
-            delete Array.prototype[0];
-        }
-    }
-runTestCase(testcase);
+assert.sameValue(arr.every(callbackfn), false, 'arr.every(callbackfn)');
diff --git a/test/built-ins/Array/prototype/every/15.4.4.16-7-c-i-14.js b/test/built-ins/Array/prototype/every/15.4.4.16-7-c-i-14.js
index 46ee18b941e8014329b35672ab356655bc282143..6e7c7cc88bf09c90f220eca6a3630f0d6d464ed6 100644
--- a/test/built-ins/Array/prototype/every/15.4.4.16-7-c-i-14.js
+++ b/test/built-ins/Array/prototype/every/15.4.4.16-7-c-i-14.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.16-7-c-i-14
 description: >
     Array.prototype.every - element to be retrieved is own accessor
     property that overrides an inherited accessor property on an Array
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         function callbackfn(val, idx, obj) {
             if (idx === 0) {
                 return val === 5;
@@ -20,7 +17,7 @@ function testcase() {
         }
 
         var arr = [];
-        try {
+
             Object.defineProperty(Array.prototype, "0", {
                 get: function () {
                     return 5;
@@ -35,9 +32,4 @@ function testcase() {
                 configurable: true
             });
 
-            return !arr.every(callbackfn);
-        } finally {
-            delete Array.prototype[0];
-        }
-    }
-runTestCase(testcase);
+assert.sameValue(arr.every(callbackfn), false, 'arr.every(callbackfn)');
diff --git a/test/built-ins/Array/prototype/every/15.4.4.16-7-c-i-16.js b/test/built-ins/Array/prototype/every/15.4.4.16-7-c-i-16.js
index 083f71cc3de29391447c56dc5b79507ddacb0d07..532ff09ded743bea0859f199c9c8f445c87644c7 100644
--- a/test/built-ins/Array/prototype/every/15.4.4.16-7-c-i-16.js
+++ b/test/built-ins/Array/prototype/every/15.4.4.16-7-c-i-16.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.16-7-c-i-16
 description: >
     Array.prototype.every - element to be retrieved is inherited
     accessor property on an Array
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         function callbackfn(val, idx, obj) {
             if (idx === 0) {
                 return val !== 11;
@@ -19,7 +16,6 @@ function testcase() {
             }
         }
 
-        try {
             Object.defineProperty(Array.prototype, "0", {
                 get: function () {
                     return 11;
@@ -27,9 +23,4 @@ function testcase() {
                 configurable: true
             });
 
-            return ![, , , ].every(callbackfn);
-        } finally {
-            delete Array.prototype[0];
-        }
-    }
-runTestCase(testcase);
+assert.sameValue([, , , ].every(callbackfn), false, '[, , , ].every(callbackfn)');
diff --git a/test/built-ins/Array/prototype/every/15.4.4.16-7-c-i-19.js b/test/built-ins/Array/prototype/every/15.4.4.16-7-c-i-19.js
index ccc919361f3bc05dc677ab74db641be9c93ca41d..88fffa5cede825bf1d3cce7220c77b98a6290926 100644
--- a/test/built-ins/Array/prototype/every/15.4.4.16-7-c-i-19.js
+++ b/test/built-ins/Array/prototype/every/15.4.4.16-7-c-i-19.js
@@ -7,11 +7,8 @@ description: >
     Array.prototype.every - element to be retrieved is own accessor
     property without a get function that overrides an inherited
     accessor property on an Array-like object
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var accessed = false;
 
         function callbackfn(val, idx, obj) {
@@ -24,11 +21,8 @@ function testcase() {
             set: function () { },
             configurable: true
         });
-        try {
+
             Object.prototype[1] = 10;
-            return Array.prototype.every.call(obj, callbackfn) && accessed;
-        } finally {
-            delete Object.prototype[1];
-        }
-    }
-runTestCase(testcase);
+
+assert(Array.prototype.every.call(obj, callbackfn), 'Array.prototype.every.call(obj, callbackfn) !== true');
+assert(accessed, 'accessed !== true');
diff --git a/test/built-ins/Array/prototype/every/15.4.4.16-7-c-i-20.js b/test/built-ins/Array/prototype/every/15.4.4.16-7-c-i-20.js
index b4d136af25ff93ae8d060d731536d20c04e35131..4a98ce795c9012050bb72ecb37aceddf3655b324 100644
--- a/test/built-ins/Array/prototype/every/15.4.4.16-7-c-i-20.js
+++ b/test/built-ins/Array/prototype/every/15.4.4.16-7-c-i-20.js
@@ -7,11 +7,8 @@ description: >
     Array.prototype.every - element to be retrieved is own accessor
     property without a get function that overrides an inherited
     accessor property on an Array
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var accessed = false;
 
         function callbackfn(val, idx, obj) {
@@ -26,11 +23,7 @@ function testcase() {
             configurable: true
         });
 
-        try {
             Array.prototype[0] = 100;
-            return arr.every(callbackfn) && accessed;
-        } finally {
-            delete Array.prototype[0];
-        }
-    }
-runTestCase(testcase);
+
+assert(arr.every(callbackfn), 'arr.every(callbackfn) !== true');
+assert(accessed, 'accessed !== true');
diff --git a/test/built-ins/Array/prototype/every/15.4.4.16-7-c-i-22.js b/test/built-ins/Array/prototype/every/15.4.4.16-7-c-i-22.js
index b45076a25a8afd1b15ef89839c7800965f18ece0..0fbf17c5fa2c9f83440bc4713e4e7f27cd327974 100644
--- a/test/built-ins/Array/prototype/every/15.4.4.16-7-c-i-22.js
+++ b/test/built-ins/Array/prototype/every/15.4.4.16-7-c-i-22.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.16-7-c-i-22
 description: >
     Array.prototype.every - element to be retrieved is inherited
     accessor property without a get function on an Array
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var accessed = false;
 
         function callbackfn(val, idx, obj) {
@@ -18,16 +15,10 @@ function testcase() {
             return typeof val === "undefined";
         }
 
-        try {
             Object.defineProperty(Array.prototype, "0", {
                 set: function () { },
                 configurable: true
             });
 
-            return [, ].every(callbackfn) && accessed;
-        } finally {
-            delete Array.prototype[0];
-        }
-
-    }
-runTestCase(testcase);
+assert([, ].every(callbackfn), '[, ].every(callbackfn) !== true');
+assert(accessed, 'accessed !== true');
diff --git a/test/built-ins/Array/prototype/every/15.4.4.16-7-c-i-23.js b/test/built-ins/Array/prototype/every/15.4.4.16-7-c-i-23.js
index 84d1818f7c289e1d40c8417d0b8ef42dbdbd260d..5dcc93e3a3e903016a3796b17336ff2c30abf95c 100644
--- a/test/built-ins/Array/prototype/every/15.4.4.16-7-c-i-23.js
+++ b/test/built-ins/Array/prototype/every/15.4.4.16-7-c-i-23.js
@@ -6,13 +6,9 @@ es5id: 15.4.4.16-7-c-i-23
 description: >
     Array.prototype.every - This object is an global object which
     contains index property
-includes:
-    - runTestCase.js
-    - fnGlobalObject.js
+includes: [fnGlobalObject.js]
 ---*/
 
-function testcase() {
-
         function callbackfn(val, idx, obj) {
             if (idx === 0) {
                 return val !== 11;
@@ -21,14 +17,8 @@ function testcase() {
             }
         }
 
-        try {
             var oldLen = fnGlobalObject().length;
             fnGlobalObject()[0] = 11;
             fnGlobalObject().length = 1;
-            return !Array.prototype.every.call(fnGlobalObject(), callbackfn);
-        } finally {
-            delete fnGlobalObject()[0];
-            fnGlobalObject().length = oldLen;
-        }
-    }
-runTestCase(testcase);
+
+assert.sameValue(Array.prototype.every.call(fnGlobalObject(), callbackfn), false, 'Array.prototype.every.call(fnGlobalObject(), callbackfn)');
diff --git a/test/built-ins/Array/prototype/every/15.4.4.16-7-c-i-4.js b/test/built-ins/Array/prototype/every/15.4.4.16-7-c-i-4.js
index 4ca15dde71c463f9d4e7a21cc930e9512a1cb620..dfdcc49eb7892ad4368a081706746fba210636f4 100644
--- a/test/built-ins/Array/prototype/every/15.4.4.16-7-c-i-4.js
+++ b/test/built-ins/Array/prototype/every/15.4.4.16-7-c-i-4.js
@@ -6,24 +6,16 @@ es5id: 15.4.4.16-7-c-i-4
 description: >
     Array.prototype.every - element to be retrieved is own data
     property that overrides an inherited data property on an Array
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var called = 0;
         function callbackfn(val, idx, obj) {
             called++;
             return val === 12;
         }
 
-        try {
             Array.prototype[0] = 11;
             Array.prototype[1] = 11;
 
-            return [12, 12].every(callbackfn) && called === 2;
-        } finally {
-            delete Array.prototype[0];
-            delete Array.prototype[1];
-        }
-    }
-runTestCase(testcase);
+assert([12, 12].every(callbackfn), '[12, 12].every(callbackfn) !== true');
+assert.sameValue(called, 2, 'called');
diff --git a/test/built-ins/Array/prototype/every/15.4.4.16-7-c-i-6.js b/test/built-ins/Array/prototype/every/15.4.4.16-7-c-i-6.js
index a7dc6772abc90d9913400f29cbfcf7d1c555b607..58101ea1558241f77c8a21f832141a1411ca2c9d 100644
--- a/test/built-ins/Array/prototype/every/15.4.4.16-7-c-i-6.js
+++ b/test/built-ins/Array/prototype/every/15.4.4.16-7-c-i-6.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.16-7-c-i-6
 description: >
     Array.prototype.every - element to be retrieved is own data
     property that overrides an inherited accessor property on an Array
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var accessed = false;
 
         function callbackfn(val, idx, obj) {
@@ -18,16 +15,12 @@ function testcase() {
             return val === 11;
         }
 
-        try {
             Object.defineProperty(Array.prototype, "0", {
                 get: function () {
                     return 9;
                 },
                 configurable: true
             });
-            return [11].every(callbackfn) && accessed;
-        } finally {
-            delete Array.prototype[0];
-        }
-    }
-runTestCase(testcase);
+
+assert([11].every(callbackfn), '[11].every(callbackfn) !== true');
+assert(accessed, 'accessed !== true');
diff --git a/test/built-ins/Array/prototype/every/15.4.4.16-7-c-i-8.js b/test/built-ins/Array/prototype/every/15.4.4.16-7-c-i-8.js
index 158d7d4cbf0280cd5f06194026dc297122ff2dd6..5122c0159cf6ae8cb7e620c57519a75e19101983 100644
--- a/test/built-ins/Array/prototype/every/15.4.4.16-7-c-i-8.js
+++ b/test/built-ins/Array/prototype/every/15.4.4.16-7-c-i-8.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.16-7-c-i-8
 description: >
     Array.prototype.every - element to be retrieved is inherited data
     property on an Array
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         function callbackfn(val, idx, obj) {
             if (idx === 1) {
                 return val !== 13;
@@ -19,11 +16,6 @@ function testcase() {
             }
         }
 
-        try {
             Array.prototype[1] = 13;
-            return ![, , , ].every(callbackfn);
-        } finally {
-            delete Array.prototype[1];
-        }
-    }
-runTestCase(testcase);
+
+assert.sameValue([, , , ].every(callbackfn), false, '[, , , ].every(callbackfn)');
diff --git a/test/built-ins/Array/prototype/filter/15.4.4.20-1-10.js b/test/built-ins/Array/prototype/filter/15.4.4.20-1-10.js
index f37a264d5128068304182397c6bf351a4087b07a..7e04a5d22f5fb1ed6252f604f40932c9e12627cb 100644
--- a/test/built-ins/Array/prototype/filter/15.4.4.20-1-10.js
+++ b/test/built-ins/Array/prototype/filter/15.4.4.20-1-10.js
@@ -4,22 +4,14 @@
 /*---
 es5id: 15.4.4.20-1-10
 description: Array.prototype.filter applied to the Math object
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         function callbackfn(val, idx, obj) {
             return '[object Math]' === Object.prototype.toString.call(obj);
         }
 
-        try {
             Math.length = 1;
             Math[0] = 1;
             var newArr = Array.prototype.filter.call(Math, callbackfn);
-            return newArr[0] === 1;
-        } finally {
-            delete Math[0];
-            delete Math.length;
-        }
-    }
-runTestCase(testcase);
+
+assert.sameValue(newArr[0], 1, 'newArr[0]');
diff --git a/test/built-ins/Array/prototype/filter/15.4.4.20-1-13.js b/test/built-ins/Array/prototype/filter/15.4.4.20-1-13.js
index 5fe44bc8ea8b76020f0fc84f1500f1bdd3c6d5ef..01d90636ba8dffb664619527939dc972e61bbc7b 100644
--- a/test/built-ins/Array/prototype/filter/15.4.4.20-1-13.js
+++ b/test/built-ins/Array/prototype/filter/15.4.4.20-1-13.js
@@ -4,23 +4,14 @@
 /*---
 es5id: 15.4.4.20-1-13
 description: Array.prototype.filter applied to the JSON object
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         function callbackfn(val, idx, obj) {
             return '[object JSON]' === Object.prototype.toString.call(JSON);
         }
 
-        try {
             JSON.length = 1;
             JSON[0] = 1;
             var newArr = Array.prototype.filter.call(JSON, callbackfn);
-            return newArr[0] === 1;
-        } finally {
-            delete JSON.length;
-            delete JSON[0];
-        }
-    }
-runTestCase(testcase);
+
+assert.sameValue(newArr[0], 1, 'newArr[0]');
diff --git a/test/built-ins/Array/prototype/filter/15.4.4.20-1-3.js b/test/built-ins/Array/prototype/filter/15.4.4.20-1-3.js
index e28ad21f8caad8d343a47c51c8a9e682aadd4e08..206fc72ec298656859341c2e909fc6db5f69174c 100644
--- a/test/built-ins/Array/prototype/filter/15.4.4.20-1-3.js
+++ b/test/built-ins/Array/prototype/filter/15.4.4.20-1-3.js
@@ -4,24 +4,15 @@
 /*---
 es5id: 15.4.4.20-1-3
 description: Array.prototype.filter applied to boolean primitive
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         function callbackfn(val, idx, obj) {
             return obj instanceof Boolean;
         }
 
-        try {
             Boolean.prototype[0] = true;
             Boolean.prototype.length = 1;
 
             var newArr = Array.prototype.filter.call(false, callbackfn);
-            return newArr[0] === true;
 
-        } finally {
-            delete Boolean.prototype[0];
-            delete Boolean.prototype.length;
-        }
-    }
-runTestCase(testcase);
+assert.sameValue(newArr[0], true, 'newArr[0]');
diff --git a/test/built-ins/Array/prototype/filter/15.4.4.20-1-5.js b/test/built-ins/Array/prototype/filter/15.4.4.20-1-5.js
index 57b05bfd72f557095affdab361a7092b141212f0..2259c056e93be7bd8f7c14d0246f499e8cd082f6 100644
--- a/test/built-ins/Array/prototype/filter/15.4.4.20-1-5.js
+++ b/test/built-ins/Array/prototype/filter/15.4.4.20-1-5.js
@@ -4,23 +4,15 @@
 /*---
 es5id: 15.4.4.20-1-5
 description: Array.prototype.filter applied to number primitive
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         function callbackfn(val, idx, obj) {
             return obj instanceof Number;
         }
 
-        try {
             Number.prototype[0] = 1;
             Number.prototype.length = 1;
 
             var newArr = Array.prototype.filter.call(2.5, callbackfn);
-            return newArr[0] === 1;
-        } finally {
-            delete Number.prototype[0];
-            delete Number.prototype.length;
-        }
-    }
-runTestCase(testcase);
+
+assert.sameValue(newArr[0], 1, 'newArr[0]');
diff --git a/test/built-ins/Array/prototype/filter/15.4.4.20-2-12.js b/test/built-ins/Array/prototype/filter/15.4.4.20-2-12.js
index 7e2e1c9a87d3b882aa3c7ff4ea5926f7bb083f8e..d7feb9fe71bc519335bd1e5e3bee9d129c4fae0c 100644
--- a/test/built-ins/Array/prototype/filter/15.4.4.20-2-12.js
+++ b/test/built-ins/Array/prototype/filter/15.4.4.20-2-12.js
@@ -6,18 +6,14 @@ es5id: 15.4.4.20-2-12
 description: >
     Array.prototype.filter - 'length' is own accessor property without
     a get function that overrides an inherited accessor property
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var accessed = false;
         function callbackfn(val, idx, obj) {
             accessed = true;
             return true;
         }
 
-        try {
             Object.defineProperty(Object.prototype, "length", {
                 get: function () {
                     return 2;
@@ -32,9 +28,6 @@ function testcase() {
             });
 
             var newArr = Array.prototype.filter.call(obj, callbackfn);
-            return newArr.length === 0 && !accessed;
-        } finally {
-            delete Object.prototype.length;
-        }
-    }
-runTestCase(testcase);
+
+assert.sameValue(newArr.length, 0, 'newArr.length');
+assert.sameValue(accessed, false, 'accessed');
diff --git a/test/built-ins/Array/prototype/filter/15.4.4.20-2-15.js b/test/built-ins/Array/prototype/filter/15.4.4.20-2-15.js
index 0c1de8b5af8301628e2ef3d1a3fbed149b38f68f..70ab8e9e4c134ab84ec563b9a7baee075aff81ae 100644
--- a/test/built-ins/Array/prototype/filter/15.4.4.20-2-15.js
+++ b/test/built-ins/Array/prototype/filter/15.4.4.20-2-15.js
@@ -4,30 +4,18 @@
 /*---
 es5id: 15.4.4.20-2-15
 description: Array.prototype.filter - 'length' is property of the global object
-includes:
-    - runTestCase.js
-    - fnGlobalObject.js
+includes: [fnGlobalObject.js]
 ---*/
 
-function testcase() {
-       
         function callbackfn(val, idx, obj) {
             return  obj.length === 2;
         }
 
-        try {
             var oldLen = fnGlobalObject().length;
             fnGlobalObject()[0] = 12;
             fnGlobalObject()[1] = 11;
             fnGlobalObject()[2] = 9;
             fnGlobalObject().length = 2;
             var newArr = Array.prototype.filter.call(fnGlobalObject(), callbackfn);
-            return newArr.length === 2;
-        } finally {
-            delete fnGlobalObject()[0];
-            delete fnGlobalObject()[1];
-            delete fnGlobalObject()[2];
-            fnGlobalObject().length = oldLen;
-        }
-    }
-runTestCase(testcase);
+
+assert.sameValue(newArr.length, 2, 'newArr.length');
diff --git a/test/built-ins/Array/prototype/filter/15.4.4.20-2-4.js b/test/built-ins/Array/prototype/filter/15.4.4.20-2-4.js
index f1e276c1315721fd15bc95adc95f85a9985c6815..b36c82c11155491bcd8bcb9781f8c9b08f3c2bbc 100644
--- a/test/built-ins/Array/prototype/filter/15.4.4.20-2-4.js
+++ b/test/built-ins/Array/prototype/filter/15.4.4.20-2-4.js
@@ -6,24 +6,16 @@ es5id: 15.4.4.20-2-4
 description: >
     Array.prototype.filter - 'length' is own data property that
     overrides an inherited data property on an Array
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var arrProtoLen;
 
         function callbackfn(val, idx, obj) {
             return obj.length === 2;
         }
 
-        try {
             arrProtoLen = Array.prototype.length;
             Array.prototype.length = 0;
             var newArr = [12, 11].filter(callbackfn);
-            return newArr.length === 2;
-        } finally {
-            Array.prototype.length = arrProtoLen;
-        }
-    }
-runTestCase(testcase);
+
+assert.sameValue(newArr.length, 2, 'newArr.length');
diff --git a/test/built-ins/Array/prototype/filter/15.4.4.20-9-b-10.js b/test/built-ins/Array/prototype/filter/15.4.4.20-9-b-10.js
index 8f0117671ce01254a6929432466536a99b800bef..5a2b72963de668458c6d0dbe718d0d269824a55d 100644
--- a/test/built-ins/Array/prototype/filter/15.4.4.20-9-b-10.js
+++ b/test/built-ins/Array/prototype/filter/15.4.4.20-9-b-10.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.20-9-b-10
 description: >
     Array.prototype.filter - deleting property of prototype causes
     prototype index property not to be visited on an Array-like Object
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         function callbackfn(val, idx, obj) {
             return true;
         }
@@ -24,13 +21,8 @@ function testcase() {
             configurable: true
         });
 
-        try {
             Object.prototype[1] = 1;
             var newArr = Array.prototype.filter.call(obj, callbackfn);
 
-            return newArr.length === 2 && newArr[1] !== 1;
-        } finally {
-            delete Object.prototype[1];
-        }
-    }
-runTestCase(testcase);
+assert.sameValue(newArr.length, 2, 'newArr.length');
+assert.notSameValue(newArr[1], 1, 'newArr[1]');
diff --git a/test/built-ins/Array/prototype/filter/15.4.4.20-9-b-11.js b/test/built-ins/Array/prototype/filter/15.4.4.20-9-b-11.js
index 91d8425dc5f78260d90a4aad24148396fbe86867..c5beda40a1650dabf97f3d57684c148e315d0455 100644
--- a/test/built-ins/Array/prototype/filter/15.4.4.20-9-b-11.js
+++ b/test/built-ins/Array/prototype/filter/15.4.4.20-9-b-11.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.20-9-b-11
 description: >
     Array.prototype.filter - deleting property of prototype causes
     prototype index property not to be visited on an Array
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         function callbackfn(val, idx, obj) {
             return true;
         }
@@ -24,12 +21,8 @@ function testcase() {
             configurable: true
         });
 
-        try {
             Array.prototype[1] = 1;
             var newArr = arr.filter(callbackfn);
-            return newArr.length === 2 && newArr[1] !== 1;
-        } finally {
-            delete Array.prototype[1];
-        }
-    }
-runTestCase(testcase);
+
+assert.sameValue(newArr.length, 2, 'newArr.length');
+assert.notSameValue(newArr[1], 1, 'newArr[1]');
diff --git a/test/built-ins/Array/prototype/filter/15.4.4.20-9-b-12.js b/test/built-ins/Array/prototype/filter/15.4.4.20-9-b-12.js
index 971d6fb1ace8413c877ea189f1845d0f15d173df..b2795b27571a55fb1ea558e0117861d788ab6ca7 100644
--- a/test/built-ins/Array/prototype/filter/15.4.4.20-9-b-12.js
+++ b/test/built-ins/Array/prototype/filter/15.4.4.20-9-b-12.js
@@ -7,10 +7,8 @@ description: >
     Array.prototype.filter - deleting own property with prototype
     property causes prototype index property to be visited on an
     Array-like object
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         function callbackfn(val, idx, obj) {
             return true;
         }
@@ -24,13 +22,8 @@ function testcase() {
             configurable: true
         });
 
-        try {
             Object.prototype[1] = 1;
             var newArr = Array.prototype.filter.call(obj, callbackfn);
 
-            return newArr.length === 3 && newArr[1] === 1;
-        } finally {
-            delete Object.prototype[1];
-        }
-    }
-runTestCase(testcase);
+assert.sameValue(newArr.length, 3, 'newArr.length');
+assert.sameValue(newArr[1], 1, 'newArr[1]');
diff --git a/test/built-ins/Array/prototype/filter/15.4.4.20-9-b-13.js b/test/built-ins/Array/prototype/filter/15.4.4.20-9-b-13.js
index a2c95dc80fc92bf4ca224a5d88e52c441b7f4d5b..1a6b93b3bc4f64556d296d754418bdcc94e7d8a5 100644
--- a/test/built-ins/Array/prototype/filter/15.4.4.20-9-b-13.js
+++ b/test/built-ins/Array/prototype/filter/15.4.4.20-9-b-13.js
@@ -6,10 +6,8 @@ es5id: 15.4.4.20-9-b-13
 description: >
     Array.prototype.filter - deleting own property with prototype
     property causes prototype index property to be visited on an Array
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         function callbackfn(val, idx, obj) {
             return val < 3 ? true : false;
         }
@@ -23,13 +21,8 @@ function testcase() {
             configurable: true
         });
 
-        try {
             Array.prototype[1] = 1;
             var newArr = arr.filter(callbackfn);
 
-            return newArr.length === 3 && newArr[1] === 1;
-        } finally {
-            delete Array.prototype[1];
-        }
-    }
-runTestCase(testcase);
+assert.sameValue(newArr.length, 3, 'newArr.length');
+assert.sameValue(newArr[1], 1, 'newArr[1]');
diff --git a/test/built-ins/Array/prototype/filter/15.4.4.20-9-b-15.js b/test/built-ins/Array/prototype/filter/15.4.4.20-9-b-15.js
index bfecbab571a524301d0338ceb4c624dcb6671773..6ec65a07858978ef3932cc097b21f86c98316b13 100644
--- a/test/built-ins/Array/prototype/filter/15.4.4.20-9-b-15.js
+++ b/test/built-ins/Array/prototype/filter/15.4.4.20-9-b-15.js
@@ -6,16 +6,13 @@ es5id: 15.4.4.20-9-b-15
 description: >
     Array.prototype.filter - decreasing length of array with prototype
     property causes prototype index property to be visited
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         function callbackfn(val, idx, obj) {
             return true;
         }
         var arr = [0, 1, 2];
 
-        try {
             Object.defineProperty(Array.prototype, "2", {
                 get: function () {
                     return "prototype";
@@ -33,9 +30,5 @@ function testcase() {
 
             var newArr = arr.filter(callbackfn);
 
-            return newArr.length === 3 && newArr[2] === "prototype";
-        } finally {
-            delete Array.prototype[2];
-        }
-    }
-runTestCase(testcase);
+assert.sameValue(newArr.length, 3, 'newArr.length');
+assert.sameValue(newArr[2], "prototype", 'newArr[2]');
diff --git a/test/built-ins/Array/prototype/filter/15.4.4.20-9-b-6.js b/test/built-ins/Array/prototype/filter/15.4.4.20-9-b-6.js
index fb6cb8546bd122e7240d651d65d719f3ecd618ab..0fe3fbe53c45d38f9001fc645121b8e532ebcad1 100644
--- a/test/built-ins/Array/prototype/filter/15.4.4.20-9-b-6.js
+++ b/test/built-ins/Array/prototype/filter/15.4.4.20-9-b-6.js
@@ -6,16 +6,13 @@ es5id: 15.4.4.20-9-b-6
 description: >
     Array.prototype.filter - properties can be added to prototype
     after current position are visited on an Array-like object
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         function callbackfn(val, idx, obj) {
             return true;
         }
         var obj = { length: 2 };
 
-        try {
             Object.defineProperty(obj, "0", {
                 get: function () {
                     Object.defineProperty(Object.prototype, "1", {
@@ -31,9 +28,5 @@ function testcase() {
 
             var newArr = Array.prototype.filter.call(obj, callbackfn);
 
-            return newArr.length === 2 && Array[1] === 6.99;
-        } finally {
-            delete Object.prototype[1];
-        }
-    }
-runTestCase(testcase);
+assert.sameValue(newArr.length, 2, 'newArr.length');
+assert.sameValue(Array[1], 6.99, 'Array[1]');
diff --git a/test/built-ins/Array/prototype/filter/15.4.4.20-9-b-7.js b/test/built-ins/Array/prototype/filter/15.4.4.20-9-b-7.js
index 3f5425bdb21720490da8da77e97b805ece93af74..07895b968addde58c2238430f2200911f89d9b1f 100644
--- a/test/built-ins/Array/prototype/filter/15.4.4.20-9-b-7.js
+++ b/test/built-ins/Array/prototype/filter/15.4.4.20-9-b-7.js
@@ -6,16 +6,13 @@ es5id: 15.4.4.20-9-b-7
 description: >
     Array.prototype.filter - properties can be added to prototype
     after current position are visited on an Array
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         function callbackfn(val, idx, obj) {
             return true;
         }
         var arr = [0, , 2];
 
-        try {
             Object.defineProperty(arr, "0", {
                 get: function () {
                     Object.defineProperty(Array.prototype, "1", {
@@ -31,9 +28,5 @@ function testcase() {
 
             var newArr = arr.filter(callbackfn);
 
-            return newArr.length === 3 && newArr[1] === 6.99;
-        } finally {
-            delete Array.prototype[1];
-        }
-    }
-runTestCase(testcase);
+assert.sameValue(newArr.length, 3, 'newArr.length');
+assert.sameValue(newArr[1], 6.99, 'newArr[1]');
diff --git a/test/built-ins/Array/prototype/filter/15.4.4.20-9-c-i-12.js b/test/built-ins/Array/prototype/filter/15.4.4.20-9-c-i-12.js
index d5de9313b678d3d0d5aef6cecf23238d05e46b41..53fa3c59c8fa35febaa9a5b37a71a0a1eb5c5d48 100644
--- a/test/built-ins/Array/prototype/filter/15.4.4.20-9-c-i-12.js
+++ b/test/built-ins/Array/prototype/filter/15.4.4.20-9-c-i-12.js
@@ -6,16 +6,14 @@ es5id: 15.4.4.20-9-c-i-12
 description: >
     Array.prototype.filter - element to be retrieved is own accessor
     property that overrides an inherited data property on an Array
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         function callbackfn(val, idx, obj) {
             return val === 111 && idx === 0;
         }
 
         var arr = [];
-        try {
+
             Array.prototype[0] = 10;
 
             Object.defineProperty(arr, "0", {
@@ -26,9 +24,5 @@ function testcase() {
             });
             var newArr = arr.filter(callbackfn);
 
-            return newArr.length === 1 && newArr[0] === 111;
-        } finally {
-            delete Array.prototype[0];
-        }
-    }
-runTestCase(testcase);
+assert.sameValue(newArr.length, 1, 'newArr.length');
+assert.sameValue(newArr[0], 111, 'newArr[0]');
diff --git a/test/built-ins/Array/prototype/filter/15.4.4.20-9-c-i-14.js b/test/built-ins/Array/prototype/filter/15.4.4.20-9-c-i-14.js
index e1fc9a360c6aae00062ed5936045a8fb772a3c29..2dbcb59cabe2e41dd84c01ca4b5bfe13e4e79de9 100644
--- a/test/built-ins/Array/prototype/filter/15.4.4.20-9-c-i-14.js
+++ b/test/built-ins/Array/prototype/filter/15.4.4.20-9-c-i-14.js
@@ -6,17 +6,14 @@ es5id: 15.4.4.20-9-c-i-14
 description: >
     Array.prototype.filter - element to be retrieved is own accessor
     property that overrides an inherited accessor property on an Array
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         function callbackfn(val, idx, obj) {
             return idx === 0 && val === 11;
         }
 
         var arr = [];
-        try {
+
             Object.defineProperty(Array.prototype, "0", {
                 get: function () {
                     return 5;
@@ -32,9 +29,5 @@ function testcase() {
             });
             var newArr = arr.filter(callbackfn);
 
-            return newArr.length === 1 && newArr[0] === 11;
-        } finally {
-            delete Array.prototype[0];
-        }
-    }
-runTestCase(testcase);
+assert.sameValue(newArr.length, 1, 'newArr.length');
+assert.sameValue(newArr[0], 11, 'newArr[0]');
diff --git a/test/built-ins/Array/prototype/filter/15.4.4.20-9-c-i-16.js b/test/built-ins/Array/prototype/filter/15.4.4.20-9-c-i-16.js
index bf19222a3d21bffd29de06e81ee65660f0d7739f..d2e1b6a8c951266d67635612f76918e03dc44601 100644
--- a/test/built-ins/Array/prototype/filter/15.4.4.20-9-c-i-16.js
+++ b/test/built-ins/Array/prototype/filter/15.4.4.20-9-c-i-16.js
@@ -6,16 +6,12 @@ es5id: 15.4.4.20-9-c-i-16
 description: >
     Array.prototype.filter - element to be retrieved is inherited
     accessor property on an Array
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         function callbackfn(val, idx, obj) {
             return idx === 0 && val === 11;
         }
 
-        try {
             Object.defineProperty(Array.prototype, "0", {
                 get: function () {
                     return 11;
@@ -24,9 +20,5 @@ function testcase() {
             });
             var newArr = [, , , ].filter(callbackfn);
 
-            return newArr.length === 1 && newArr[0] === 11;
-        } finally {
-            delete Array.prototype[0];
-        }
-    }
-runTestCase(testcase);
+assert.sameValue(newArr.length, 1, 'newArr.length');
+assert.sameValue(newArr[0], 11, 'newArr[0]');
diff --git a/test/built-ins/Array/prototype/filter/15.4.4.20-9-c-i-19.js b/test/built-ins/Array/prototype/filter/15.4.4.20-9-c-i-19.js
index c376762f1ffb7a9c3d8331521aa51aa1945329d3..19f78894162de48752033139db6c30893df9b1cd 100644
--- a/test/built-ins/Array/prototype/filter/15.4.4.20-9-c-i-19.js
+++ b/test/built-ins/Array/prototype/filter/15.4.4.20-9-c-i-19.js
@@ -7,11 +7,8 @@ description: >
     Array.prototype.filter - element to be retrieved is own accessor
     property without a get function that overrides an inherited
     accessor property on an Array-like object
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         function callbackfn(val, idx, obj) {
             return undefined === val && idx === 1;
         }
@@ -21,13 +18,9 @@ function testcase() {
             set: function () { },
             configurable: true
         });
-        try {
+
             Object.prototype[1] = 10;
             var newArr = Array.prototype.filter.call(obj, callbackfn);
 
-            return newArr.length === 1 && newArr[0] === undefined;
-        } finally {
-            delete Object.prototype[1];
-        }
-    }
-runTestCase(testcase);
+assert.sameValue(newArr.length, 1, 'newArr.length');
+assert.sameValue(newArr[0], undefined, 'newArr[0]');
diff --git a/test/built-ins/Array/prototype/filter/15.4.4.20-9-c-i-20.js b/test/built-ins/Array/prototype/filter/15.4.4.20-9-c-i-20.js
index cab605947d7896c70ea22a11419390a3d188a2cc..347c1b2f0aa9d218b085ca70ad714c54f19c2f2f 100644
--- a/test/built-ins/Array/prototype/filter/15.4.4.20-9-c-i-20.js
+++ b/test/built-ins/Array/prototype/filter/15.4.4.20-9-c-i-20.js
@@ -7,11 +7,8 @@ description: >
     Array.prototype.filter - element to be retrieved is own accessor
     property without a get function that overrides an inherited
     accessor property on an Array
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         function callbackfn(val, idx, obj) {
             return undefined === val && idx === 0;
         }
@@ -23,13 +20,8 @@ function testcase() {
             configurable: true
         });
 
-        try {
             Array.prototype[0] = 100;
             var newArr = arr.filter(callbackfn);
 
-            return newArr.length === 1 && newArr[0] === undefined;
-        } finally {
-            delete Array.prototype[0];
-        }
-    }
-runTestCase(testcase);
+assert.sameValue(newArr.length, 1, 'newArr.length');
+assert.sameValue(newArr[0], undefined, 'newArr[0]');
diff --git a/test/built-ins/Array/prototype/filter/15.4.4.20-9-c-i-22.js b/test/built-ins/Array/prototype/filter/15.4.4.20-9-c-i-22.js
index 80dea66bc5a5f01e3263086a932da85b4b58c53d..f1aea69c892668294f379853828d58c2f1ac6439 100644
--- a/test/built-ins/Array/prototype/filter/15.4.4.20-9-c-i-22.js
+++ b/test/built-ins/Array/prototype/filter/15.4.4.20-9-c-i-22.js
@@ -6,25 +6,17 @@ es5id: 15.4.4.20-9-c-i-22
 description: >
     Array.prototype.filter - element to be retrieved is inherited
     accessor property without a get function on an Array
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         function callbackfn(val, idx, obj) {
             return undefined === val && idx === 0;
         }
 
-        try {
             Object.defineProperty(Array.prototype, "0", {
                 set: function () { },
                 configurable: true
             });
             var newArr = [, ].filter(callbackfn);
 
-            return newArr.length === 1 && newArr[0] === undefined;
-        } finally {
-            delete Array.prototype[0];
-        }
-    }
-runTestCase(testcase);
+assert.sameValue(newArr.length, 1, 'newArr.length');
+assert.sameValue(newArr[0], undefined, 'newArr[0]');
diff --git a/test/built-ins/Array/prototype/filter/15.4.4.20-9-c-i-23.js b/test/built-ins/Array/prototype/filter/15.4.4.20-9-c-i-23.js
index 65c70658503500d13e02100e9ea19e4305c78f2b..a6a8070f5487cd0280c38609ffb4a3ad9619fc9d 100644
--- a/test/built-ins/Array/prototype/filter/15.4.4.20-9-c-i-23.js
+++ b/test/built-ins/Array/prototype/filter/15.4.4.20-9-c-i-23.js
@@ -6,26 +6,17 @@ es5id: 15.4.4.20-9-c-i-23
 description: >
     Array.prototype.filter - This object is the global object which
     contains index property
-includes:
-    - runTestCase.js
-    - fnGlobalObject.js
+includes: [fnGlobalObject.js]
 ---*/
 
-function testcase() {
-
         function callbackfn(val, idx, obj) {
             return idx === 0 && val === 11;
         }
 
-        try {
             var oldLen = fnGlobalObject().length;
             fnGlobalObject()[0] = 11;
             fnGlobalObject().length = 1;
             var newArr = Array.prototype.filter.call(fnGlobalObject(), callbackfn);
-            return newArr.length === 1 && newArr[0] === 11;
-        } finally {
-            delete fnGlobalObject()[0];
-            fnGlobalObject().length = oldLen;
-        }
-    }
-runTestCase(testcase);
+
+assert.sameValue(newArr.length, 1, 'newArr.length');
+assert.sameValue(newArr[0], 11, 'newArr[0]');
diff --git a/test/built-ins/Array/prototype/filter/15.4.4.20-9-c-i-4.js b/test/built-ins/Array/prototype/filter/15.4.4.20-9-c-i-4.js
index 8a8df41e4779e419949d52ad7e695c310a0849b3..730f8e654a321f83d1825af65ceed1b1c41064ff 100644
--- a/test/built-ins/Array/prototype/filter/15.4.4.20-9-c-i-4.js
+++ b/test/built-ins/Array/prototype/filter/15.4.4.20-9-c-i-4.js
@@ -6,22 +6,14 @@ es5id: 15.4.4.20-9-c-i-4
 description: >
     Array.prototype.filter - element to be retrieved is own data
     property that overrides an inherited data property on an Array
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         function callbackfn(val, idx, obj) {
             return (idx === 0) && (val === 12);
         }
 
-        try {
             Array.prototype[0] = 11;
             var newArr = [12].filter(callbackfn);
 
-            return newArr.length === 1 && newArr[0] === 12;
-        } finally {
-            delete Array.prototype[0];
-        }
-    }
-runTestCase(testcase);
+assert.sameValue(newArr.length, 1, 'newArr.length');
+assert.sameValue(newArr[0], 12, 'newArr[0]');
diff --git a/test/built-ins/Array/prototype/filter/15.4.4.20-9-c-i-6.js b/test/built-ins/Array/prototype/filter/15.4.4.20-9-c-i-6.js
index 60664f516adf6a587ea1a02b63a59de41924da4e..5442b256830b3b61c9817682aa4999db9b5cc8fa 100644
--- a/test/built-ins/Array/prototype/filter/15.4.4.20-9-c-i-6.js
+++ b/test/built-ins/Array/prototype/filter/15.4.4.20-9-c-i-6.js
@@ -6,16 +6,12 @@ es5id: 15.4.4.20-9-c-i-6
 description: >
     Array.prototype.filter - element to be retrieved is own data
     property that overrides an inherited accessor property on an Array
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         function callbackfn(val, idx, obj) {
             return val === 11;
         }
 
-        try {
             Object.defineProperty(Array.prototype, "0", {
                 get: function () {
                     return 9;
@@ -24,9 +20,5 @@ function testcase() {
             });
             var newArr = [11].filter(callbackfn);
 
-            return newArr.length === 1 && newArr[0] === 11;
-        } finally {
-            delete Array.prototype[0];
-        }
-    }
-runTestCase(testcase);
+assert.sameValue(newArr.length, 1, 'newArr.length');
+assert.sameValue(newArr[0], 11, 'newArr[0]');
diff --git a/test/built-ins/Array/prototype/filter/15.4.4.20-9-c-i-8.js b/test/built-ins/Array/prototype/filter/15.4.4.20-9-c-i-8.js
index 461a5747e04f1ef409c2937e39233fa24dc399c2..24277b86614c8e7b9f672394b919f2a989ac1d63 100644
--- a/test/built-ins/Array/prototype/filter/15.4.4.20-9-c-i-8.js
+++ b/test/built-ins/Array/prototype/filter/15.4.4.20-9-c-i-8.js
@@ -6,22 +6,14 @@ es5id: 15.4.4.20-9-c-i-8
 description: >
     Array.prototype.filter - element to be retrieved is inherited data
     property on an Array
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         function callbackfn(val, idx, obj) {
             return (idx === 1) && (val === 13);
         }
 
-        try {
             Array.prototype[1] = 13;
             var newArr = [, , , ].filter(callbackfn);
 
-            return newArr.length === 1 && newArr[0] === 13;
-        } finally {
-            delete Array.prototype[1];
-        }
-    }
-runTestCase(testcase);
+assert.sameValue(newArr.length, 1, 'newArr.length');
+assert.sameValue(newArr[0], 13, 'newArr[0]');
diff --git a/test/built-ins/Array/prototype/forEach/15.4.4.18-1-10.js b/test/built-ins/Array/prototype/forEach/15.4.4.18-1-10.js
index 1075b71eb0f4ac062fb663ccbadb48df3084d983..aa3e95bc1a85d28ca0c3d1865b2300b3e839297a 100644
--- a/test/built-ins/Array/prototype/forEach/15.4.4.18-1-10.js
+++ b/test/built-ins/Array/prototype/forEach/15.4.4.18-1-10.js
@@ -4,24 +4,16 @@
 /*---
 es5id: 15.4.4.18-1-10
 description: Array.prototype.forEach applied to the Math object
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var result = false;
 
         function callbackfn(val, idx, obj) {
             result = ('[object Math]' === Object.prototype.toString.call(obj));
         }
 
-        try {
             Math.length = 1;
             Math[0] = 1;
             Array.prototype.forEach.call(Math, callbackfn);
-            return result;
-        } finally {
-            delete Math[0];
-            delete Math.length;
-        }
-    }
-runTestCase(testcase);
+
+assert(result, 'result !== true');
diff --git a/test/built-ins/Array/prototype/forEach/15.4.4.18-1-13.js b/test/built-ins/Array/prototype/forEach/15.4.4.18-1-13.js
index a8bd71089030c8b7a16b717fe3637acd58af15d1..f0a8a9fab2dd591d9198d6375bd0c4fe5aaf8424 100644
--- a/test/built-ins/Array/prototype/forEach/15.4.4.18-1-13.js
+++ b/test/built-ins/Array/prototype/forEach/15.4.4.18-1-13.js
@@ -4,23 +4,15 @@
 /*---
 es5id: 15.4.4.18-1-13
 description: Array.prototype.forEach applied to the JSON object
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var result = false;
         function callbackfn(val, idx, obj) {
             result = ('[object JSON]' === Object.prototype.toString.call(obj));
         }
 
-        try {
             JSON.length = 1;
             JSON[0] = 1;
             Array.prototype.forEach.call(JSON, callbackfn);
-            return result;
-        } finally {
-            delete JSON.length;
-            delete JSON[0];
-        }
-    }
-runTestCase(testcase);
+
+assert(result, 'result !== true');
diff --git a/test/built-ins/Array/prototype/forEach/15.4.4.18-1-3.js b/test/built-ins/Array/prototype/forEach/15.4.4.18-1-3.js
index 39f15fb9d4e5fcc427825429272ab048ed4e5cf2..a022e67fd9133c0f6ee9af2fd445f73d3a43ecb1 100644
--- a/test/built-ins/Array/prototype/forEach/15.4.4.18-1-3.js
+++ b/test/built-ins/Array/prototype/forEach/15.4.4.18-1-3.js
@@ -4,26 +4,17 @@
 /*---
 es5id: 15.4.4.18-1-3
 description: Array.prototype.forEach applied to boolean primitive
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var result = false;
 
         function callbackfn(val, idx, obj) {
             result = obj instanceof Boolean;
         }
 
-        try {
             Boolean.prototype[0] = true;
             Boolean.prototype.length = 1;
 
             Array.prototype.forEach.call(false, callbackfn);
-            return result;
 
-        } finally {
-            delete Boolean.prototype[0];
-            delete Boolean.prototype.length;
-        }
-    }
-runTestCase(testcase);
+assert(result, 'result !== true');
diff --git a/test/built-ins/Array/prototype/forEach/15.4.4.18-1-5.js b/test/built-ins/Array/prototype/forEach/15.4.4.18-1-5.js
index 1b5d8581d990bc5063e4e72b06054fe5c4b70932..1d91a9c254308746dfb6ac46e36ed5f5b88c416a 100644
--- a/test/built-ins/Array/prototype/forEach/15.4.4.18-1-5.js
+++ b/test/built-ins/Array/prototype/forEach/15.4.4.18-1-5.js
@@ -4,24 +4,16 @@
 /*---
 es5id: 15.4.4.18-1-5
 description: Array.prototype.forEach applied to number primitive
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var result = false;
         function callbackfn(val, idx, obj) {
             result = obj instanceof Number;
         }
 
-        try {
             Number.prototype[0] = 1;
             Number.prototype.length = 1;
 
             Array.prototype.forEach.call(2.5, callbackfn);
-            return result;
-        } finally {
-            delete Number.prototype[0];
-            delete Number.prototype.length;
-        }
-    }
-runTestCase(testcase);
+
+assert(result, 'result !== true');
diff --git a/test/built-ins/Array/prototype/forEach/15.4.4.18-2-12.js b/test/built-ins/Array/prototype/forEach/15.4.4.18-2-12.js
index e80245d66651f38fd55cec88510140385b43df37..ddfb0705a4a39fdc14ac4a914a38b94a89d2da45 100644
--- a/test/built-ins/Array/prototype/forEach/15.4.4.18-2-12.js
+++ b/test/built-ins/Array/prototype/forEach/15.4.4.18-2-12.js
@@ -7,16 +7,13 @@ description: >
     Array.prototype.forEach - 'length' is own accessor property
     without a get function that overrides an inherited accessor
     property on an Array
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var accessed = false;
         function callbackfn(val, idx, obj) {
             accessed = true;
         }
 
-        try {
             Object.defineProperty(Object.prototype, "length", {
                 get: function () {
                     return 2;
@@ -31,10 +28,5 @@ function testcase() {
             });
 
             Array.prototype.forEach.call(obj, callbackfn);
-            return !accessed;
-        } finally {
-            delete Object.prototype.length;
-        }
 
-    }
-runTestCase(testcase);
+assert.sameValue(accessed, false, 'accessed');
diff --git a/test/built-ins/Array/prototype/forEach/15.4.4.18-2-15.js b/test/built-ins/Array/prototype/forEach/15.4.4.18-2-15.js
index 6405b659a52fba4700715090bf9069b1e2df7168..4ffc305bd0ab4926c4ad15d9483003162e10d2f7 100644
--- a/test/built-ins/Array/prototype/forEach/15.4.4.18-2-15.js
+++ b/test/built-ins/Array/prototype/forEach/15.4.4.18-2-15.js
@@ -4,30 +4,19 @@
 /*---
 es5id: 15.4.4.18-2-15
 description: Array.prototype.forEach - 'length' is property of the global object
-includes:
-    - runTestCase.js
-    - fnGlobalObject.js
+includes: [fnGlobalObject.js]
 ---*/
 
-function testcase() {
         var result = false;
         function callbackfn(val, idx, obj) {
             result = (obj.length === 2);
         }
 
-        try {
             var oldLen = fnGlobalObject().length;
             fnGlobalObject()[0] = 12;
             fnGlobalObject()[1] = 11;
             fnGlobalObject()[2] = 9;
             fnGlobalObject().length = 2;
             Array.prototype.forEach.call(fnGlobalObject(), callbackfn);
-            return result;
-        } finally {
-            delete fnGlobalObject()[0];
-            delete fnGlobalObject()[1];
-            delete fnGlobalObject()[2];
-            fnGlobalObject().length = oldLen;
-        }
-    }
-runTestCase(testcase);
+
+assert(result, 'result !== true');
diff --git a/test/built-ins/Array/prototype/forEach/15.4.4.18-2-4.js b/test/built-ins/Array/prototype/forEach/15.4.4.18-2-4.js
index f2e114247174d89dfd28abbe6570c2b5eb44b9b2..63fab3907714e72cd584cb93dad729ac432ae1cd 100644
--- a/test/built-ins/Array/prototype/forEach/15.4.4.18-2-4.js
+++ b/test/built-ins/Array/prototype/forEach/15.4.4.18-2-4.js
@@ -6,24 +6,16 @@ es5id: 15.4.4.18-2-4
 description: >
     Array.prototype.forEach - 'length' is own data property that
     overrides an inherited data property on an Array
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var result = false;
         var arrProtoLen;
         function callbackfn(val, idx, obj) {
             result = (obj.length === 2);
         }
 
-        try {
             arrProtoLen = Array.prototype.length;
             Array.prototype.length = 0;
             [12, 11].forEach(callbackfn);
-            return result;
-        } finally {
-            Array.prototype.length = arrProtoLen;
-        }
 
-    }
-runTestCase(testcase);
+assert(result, 'result !== true');
diff --git a/test/built-ins/Array/prototype/forEach/15.4.4.18-7-b-10.js b/test/built-ins/Array/prototype/forEach/15.4.4.18-7-b-10.js
index 4d2baaba64db48dd5920e7ba6f517872fd96f24e..5decb3084f49ac0e7c8f9165742da4d73c72c01d 100644
--- a/test/built-ins/Array/prototype/forEach/15.4.4.18-7-b-10.js
+++ b/test/built-ins/Array/prototype/forEach/15.4.4.18-7-b-10.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.18-7-b-10
 description: >
     Array.prototype.forEach - deleting property of prototype causes
     prototype index property not to be visited on an Array-like Object
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var accessed = false;
         var testResult = true;
 
@@ -31,12 +28,8 @@ function testcase() {
             configurable: true
         });
 
-        try {
             Object.prototype[1] = 1;
             Array.prototype.forEach.call(obj, callbackfn);
-            return testResult && accessed;
-        } finally {
-            delete Object.prototype[1];
-        }
-    }
-runTestCase(testcase);
+
+assert(testResult, 'testResult !== true');
+assert(accessed, 'accessed !== true');
diff --git a/test/built-ins/Array/prototype/forEach/15.4.4.18-7-b-11.js b/test/built-ins/Array/prototype/forEach/15.4.4.18-7-b-11.js
index c035e4cf0cdae16571b3b0c307bd931ab635fa72..3b9d3e7265024182d7ee27c0c63af25f5023fc3d 100644
--- a/test/built-ins/Array/prototype/forEach/15.4.4.18-7-b-11.js
+++ b/test/built-ins/Array/prototype/forEach/15.4.4.18-7-b-11.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.18-7-b-11
 description: >
     Array.prototype.forEach - deleting property of prototype causes
     prototype index property not to be visited on an Array
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var accessed = false;
         var testResult = true;
 
@@ -31,12 +28,8 @@ function testcase() {
             configurable: true
         });
 
-        try {
             Array.prototype[1] = 1;
             arr.forEach(callbackfn);
-            return testResult && accessed;
-        } finally {
-            delete Array.prototype[1];
-        }
-    }
-runTestCase(testcase);
+
+assert(testResult, 'testResult !== true');
+assert(accessed, 'accessed !== true');
diff --git a/test/built-ins/Array/prototype/forEach/15.4.4.18-7-b-12.js b/test/built-ins/Array/prototype/forEach/15.4.4.18-7-b-12.js
index 97fa5dd6bf1ccd65d359f1f399c391cd85866611..fbb3fc5f6bce8e4a65b8ca4cb20b630ce0e92e68 100644
--- a/test/built-ins/Array/prototype/forEach/15.4.4.18-7-b-12.js
+++ b/test/built-ins/Array/prototype/forEach/15.4.4.18-7-b-12.js
@@ -7,11 +7,8 @@ description: >
     Array.prototype.forEach - deleting own property with prototype
     property causes prototype index property to be visited on an
     Array-like object
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var testResult = false;
 
         function callbackfn(val, idx, obj) {
@@ -30,12 +27,7 @@ function testcase() {
             configurable: true
         });
 
-        try {
             Object.prototype[1] = 1;
             Array.prototype.forEach.call(obj, callbackfn);
-            return testResult;
-        } finally {
-            delete Object.prototype[1];
-        }
-    }
-runTestCase(testcase);
+
+assert(testResult, 'testResult !== true');
diff --git a/test/built-ins/Array/prototype/forEach/15.4.4.18-7-b-13.js b/test/built-ins/Array/prototype/forEach/15.4.4.18-7-b-13.js
index 47e607672703977fbde5aecd380adddcdcab2d19..2aeb3d93b7b264ff58418d6f102741b225f3414a 100644
--- a/test/built-ins/Array/prototype/forEach/15.4.4.18-7-b-13.js
+++ b/test/built-ins/Array/prototype/forEach/15.4.4.18-7-b-13.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.18-7-b-13
 description: >
     Array.prototype.forEach - deleting own property with prototype
     property causes prototype index property to be visited on an Array
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var testResult = false;
 
         function callbackfn(val, idx, obj) {
@@ -28,12 +25,7 @@ function testcase() {
             configurable: true
         });
 
-        try {
             Array.prototype[1] = 1;
             arr.forEach(callbackfn);
-            return testResult;
-        } finally {
-            delete Array.prototype[1];
-        }
-    }
-runTestCase(testcase);
+
+assert(testResult, 'testResult !== true');
diff --git a/test/built-ins/Array/prototype/forEach/15.4.4.18-7-b-15.js b/test/built-ins/Array/prototype/forEach/15.4.4.18-7-b-15.js
index a9f72665939bda48cd58c176428151028f522499..919cc3f1833fb657f340c44775b7481039c74aab 100644
--- a/test/built-ins/Array/prototype/forEach/15.4.4.18-7-b-15.js
+++ b/test/built-ins/Array/prototype/forEach/15.4.4.18-7-b-15.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.18-7-b-15
 description: >
     Array.prototype.forEach - decreasing length of array with
     prototype property causes prototype index property to be visited
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var testResult = false;
 
         function callbackfn(val, idx, obj) {
@@ -20,7 +17,6 @@ function testcase() {
         }
         var arr = [0, 1, 2];
 
-        try {
             Object.defineProperty(Array.prototype, "2", {
                 get: function () {
                     return "prototype";
@@ -38,9 +34,4 @@ function testcase() {
 
             arr.forEach(callbackfn);
 
-            return testResult;
-        } finally {
-            delete Array.prototype[2];
-        }
-    }
-runTestCase(testcase);
+assert(testResult, 'testResult !== true');
diff --git a/test/built-ins/Array/prototype/forEach/15.4.4.18-7-b-6.js b/test/built-ins/Array/prototype/forEach/15.4.4.18-7-b-6.js
index 5e519a511774f2f869a41673c0def7f62b24fd13..5ee511ca580a1b43918fde5d36906c859fb44a3e 100644
--- a/test/built-ins/Array/prototype/forEach/15.4.4.18-7-b-6.js
+++ b/test/built-ins/Array/prototype/forEach/15.4.4.18-7-b-6.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.18-7-b-6
 description: >
     Array.prototype.forEach - properties can be added to prototype
     after current position are visited on an Array-like object
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var testResult = false;
 
         function callbackfn(val, idx, obj) {
@@ -34,11 +31,6 @@ function testcase() {
             configurable: true
         });
 
-        try {
             Array.prototype.forEach.call(obj, callbackfn);
-            return testResult;
-        } finally {
-            delete Object.prototype[1];
-        }
-    }
-runTestCase(testcase);
+
+assert(testResult, 'testResult !== true');
diff --git a/test/built-ins/Array/prototype/forEach/15.4.4.18-7-b-7.js b/test/built-ins/Array/prototype/forEach/15.4.4.18-7-b-7.js
index 556792dcb74dcef9453460a8a676dfb9c08c5b4f..3c5d7780d8662471955119974527946c43ca049c 100644
--- a/test/built-ins/Array/prototype/forEach/15.4.4.18-7-b-7.js
+++ b/test/built-ins/Array/prototype/forEach/15.4.4.18-7-b-7.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.18-7-b-7
 description: >
     Array.prototype.forEach - properties can be added to prototype
     after current position are visited on an Array
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var testResult = false;
 
         function callbackfn(val, idx, obj) {
@@ -34,11 +31,6 @@ function testcase() {
             configurable: true
         });
 
-        try {
             arr.forEach(callbackfn);
-            return testResult;
-        } finally {
-            delete Array.prototype[1];
-        }
-    }
-runTestCase(testcase);
+
+assert(testResult, 'testResult !== true');
diff --git a/test/built-ins/Array/prototype/forEach/15.4.4.18-7-c-i-12.js b/test/built-ins/Array/prototype/forEach/15.4.4.18-7-c-i-12.js
index 27ac3e1b07c75f8a337ed430d7d12bce3fbfca79..3501d59448e8e8a6f1d301879ba5f4a6e2850bc6 100644
--- a/test/built-ins/Array/prototype/forEach/15.4.4.18-7-c-i-12.js
+++ b/test/built-ins/Array/prototype/forEach/15.4.4.18-7-c-i-12.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.18-7-c-i-12
 description: >
     Array.prototype.forEach - element to be retrieved is own accessor
     property that overrides an inherited data property on an Array
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var testResult = false;
 
         function callbackfn(val, idx, obj) {
@@ -20,7 +17,7 @@ function testcase() {
         }
 
         var arr = [];
-        try {
+
             Array.prototype[0] = 10;
 
             Object.defineProperty(arr, "0", {
@@ -32,9 +29,4 @@ function testcase() {
 
             arr.forEach(callbackfn);
 
-            return testResult;
-        } finally {
-            delete Array.prototype[0];
-        }
-    }
-runTestCase(testcase);
+assert(testResult, 'testResult !== true');
diff --git a/test/built-ins/Array/prototype/forEach/15.4.4.18-7-c-i-14.js b/test/built-ins/Array/prototype/forEach/15.4.4.18-7-c-i-14.js
index 030a7501de07178347fa3e609b7d6fd208a207df..6112a791cc14ebddfb598cca3252c31f99844dfc 100644
--- a/test/built-ins/Array/prototype/forEach/15.4.4.18-7-c-i-14.js
+++ b/test/built-ins/Array/prototype/forEach/15.4.4.18-7-c-i-14.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.18-7-c-i-14
 description: >
     Array.prototype.forEach - element to be retrieved is own accessor
     property that overrides an inherited accessor property on an Array
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var testResult = false;
 
         function callbackfn(val, idx, obj) {
@@ -20,7 +17,7 @@ function testcase() {
         }
 
         var arr = [];
-        try {
+
             Object.defineProperty(Array.prototype, "0", {
                 get: function () {
                     return 5;
@@ -37,9 +34,4 @@ function testcase() {
 
             arr.forEach(callbackfn);
 
-            return testResult;
-        } finally {
-            delete Array.prototype[0];
-        }
-    }
-runTestCase(testcase);
+assert(testResult, 'testResult !== true');
diff --git a/test/built-ins/Array/prototype/forEach/15.4.4.18-7-c-i-16.js b/test/built-ins/Array/prototype/forEach/15.4.4.18-7-c-i-16.js
index 9474fa7ce6d9208b7982af58f1b4c87cc7c1da32..0ac1f6e70b190d9513b90d971c0f429fd51ff051 100644
--- a/test/built-ins/Array/prototype/forEach/15.4.4.18-7-c-i-16.js
+++ b/test/built-ins/Array/prototype/forEach/15.4.4.18-7-c-i-16.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.18-7-c-i-16
 description: >
     Array.prototype.forEach - element to be retrieved is inherited
     accessor property on an Array
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var testResult = false;
 
         function callbackfn(val, idx, obj) {
@@ -19,7 +16,6 @@ function testcase() {
             }
         }
 
-        try {
             Object.defineProperty(Array.prototype, "0", {
                 get: function () {
                     return 11;
@@ -29,9 +25,4 @@ function testcase() {
 
             [, , , ].forEach(callbackfn);
 
-            return testResult;
-        } finally {
-            delete Array.prototype[0];
-        }
-    }
-runTestCase(testcase);
+assert(testResult, 'testResult !== true');
diff --git a/test/built-ins/Array/prototype/forEach/15.4.4.18-7-c-i-19.js b/test/built-ins/Array/prototype/forEach/15.4.4.18-7-c-i-19.js
index 4666928731951e204ae7ee846784a5535ebf20e2..7ac8752f5305acfb4217842c0b05888ac71659de 100644
--- a/test/built-ins/Array/prototype/forEach/15.4.4.18-7-c-i-19.js
+++ b/test/built-ins/Array/prototype/forEach/15.4.4.18-7-c-i-19.js
@@ -7,11 +7,8 @@ description: >
     Array.prototype.forEach - element to be retrieved is own accessor
     property without a get function that overrides an inherited
     accessor property on an Array-like object
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var testResult = false;
 
         function callbackfn(val, idx, obj) {
@@ -27,7 +24,6 @@ function testcase() {
             configurable: true
         });
 
-        try {
             Object.defineProperty(Object.prototype, "1", {
                 get: function () {
                     return 10;
@@ -37,9 +33,4 @@ function testcase() {
 
             Array.prototype.forEach.call(obj, callbackfn);
 
-            return testResult;
-        } finally {
-            delete Object.prototype[1];
-        }
-    }
-runTestCase(testcase);
+assert(testResult, 'testResult !== true');
diff --git a/test/built-ins/Array/prototype/forEach/15.4.4.18-7-c-i-20.js b/test/built-ins/Array/prototype/forEach/15.4.4.18-7-c-i-20.js
index 7b892e14467bf77ca77ab2ce24103dec633b6201..4c5f348214eb0138a955f52c4c2def80c3e0e53a 100644
--- a/test/built-ins/Array/prototype/forEach/15.4.4.18-7-c-i-20.js
+++ b/test/built-ins/Array/prototype/forEach/15.4.4.18-7-c-i-20.js
@@ -7,11 +7,8 @@ description: >
     Array.prototype.forEach - element to be retrieved is own accessor
     property without a get function that overrides an inherited
     accessor property on an Array
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var testResult = false;
 
         function callbackfn(val, idx, obj) {
@@ -27,7 +24,6 @@ function testcase() {
             configurable: true
         });
 
-        try {
             Object.defineProperty(Array.prototype, "0", {
                 get: function () {
                     return 100;
@@ -37,9 +33,4 @@ function testcase() {
 
             arr.forEach(callbackfn);
 
-            return testResult;
-        } finally {
-            delete Array.prototype[0];
-        }
-    }
-runTestCase(testcase);
+assert(testResult, 'testResult !== true');
diff --git a/test/built-ins/Array/prototype/forEach/15.4.4.18-7-c-i-22.js b/test/built-ins/Array/prototype/forEach/15.4.4.18-7-c-i-22.js
index 3ba358eb4e6b3fee4b454a21d02ea69ff94e75dd..4f5b4413254f32b2ce4c73c2ac1676184a78ef3a 100644
--- a/test/built-ins/Array/prototype/forEach/15.4.4.18-7-c-i-22.js
+++ b/test/built-ins/Array/prototype/forEach/15.4.4.18-7-c-i-22.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.18-7-c-i-22
 description: >
     Array.prototype.forEach - element to be retrieved is inherited
     accessor property without a get function on an Array
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var testResult = false;
 
         function callbackfn(val, idx, obj) {
@@ -19,7 +16,6 @@ function testcase() {
             }
         }
 
-        try {
             Object.defineProperty(Array.prototype, "0", {
                 set: function () { },
                 configurable: true
@@ -27,10 +23,4 @@ function testcase() {
 
             [, 1].forEach(callbackfn);
 
-            return testResult;
-        } finally {
-            delete Array.prototype[0];
-        }
-
-    }
-runTestCase(testcase);
+assert(testResult, 'testResult !== true');
diff --git a/test/built-ins/Array/prototype/forEach/15.4.4.18-7-c-i-23.js b/test/built-ins/Array/prototype/forEach/15.4.4.18-7-c-i-23.js
index 55b1339b42ef70c64c60d5cb9b2b74afb4cd0428..7818c59d7d1e02b92a4793b8cf1488f3623e6f26 100644
--- a/test/built-ins/Array/prototype/forEach/15.4.4.18-7-c-i-23.js
+++ b/test/built-ins/Array/prototype/forEach/15.4.4.18-7-c-i-23.js
@@ -6,13 +6,9 @@ es5id: 15.4.4.18-7-c-i-23
 description: >
     Array.prototype.forEach - This object is an global object which
     contains index property
-includes:
-    - runTestCase.js
-    - fnGlobalObject.js
+includes: [fnGlobalObject.js]
 ---*/
 
-function testcase() {
-
         var testResult = false;
 
         function callbackfn(val, idx, obj) {
@@ -21,17 +17,10 @@ function testcase() {
             }
         }
 
-        try {
             var oldLen = fnGlobalObject().length;
             fnGlobalObject()[0] = 11;
             fnGlobalObject().length = 1;
 
             Array.prototype.forEach.call(fnGlobalObject(), callbackfn);
 
-            return testResult;
-        } finally {
-            delete fnGlobalObject()[0];
-            fnGlobalObject().length = oldLen;
-        }
-    }
-runTestCase(testcase);
+assert(testResult, 'testResult !== true');
diff --git a/test/built-ins/Array/prototype/forEach/15.4.4.18-7-c-i-4.js b/test/built-ins/Array/prototype/forEach/15.4.4.18-7-c-i-4.js
index a0259fb98cc4b1dbb073257ee3fa1b99c7c41796..833b519f9777ded6f943a6ca97ad69559c3bba6c 100644
--- a/test/built-ins/Array/prototype/forEach/15.4.4.18-7-c-i-4.js
+++ b/test/built-ins/Array/prototype/forEach/15.4.4.18-7-c-i-4.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.18-7-c-i-4
 description: >
     Array.prototype.forEach - element to be retrieved is own data
     property that overrides an inherited data property on an Array
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var testResult = false;
 
         function callbackfn(val, idx, obj) {
@@ -19,14 +16,8 @@ function testcase() {
             }
         }
 
-        try {
             Array.prototype[0] = 11;
 
             [12].forEach(callbackfn);
 
-            return testResult;
-        } finally {
-            delete Array.prototype[0];
-        }
-    }
-runTestCase(testcase);
+assert(testResult, 'testResult !== true');
diff --git a/test/built-ins/Array/prototype/forEach/15.4.4.18-7-c-i-6.js b/test/built-ins/Array/prototype/forEach/15.4.4.18-7-c-i-6.js
index 5a95ec9653f8da81b066fd7b97e24b6add9cba34..e1a7f9851cf3415440aae9292673a40c6115db9c 100644
--- a/test/built-ins/Array/prototype/forEach/15.4.4.18-7-c-i-6.js
+++ b/test/built-ins/Array/prototype/forEach/15.4.4.18-7-c-i-6.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.18-7-c-i-6
 description: >
     Array.prototype.forEach - element to be retrieved is own data
     property that overrides an inherited accessor property on an Array
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var testResult = false;
 
         function callbackfn(val, idx, obj) {
@@ -19,7 +16,6 @@ function testcase() {
             }
         }
 
-        try {
             Object.defineProperty(Array.prototype, "0", {
                 get: function () {
                     return 9;
@@ -29,9 +25,4 @@ function testcase() {
 
             [11].forEach(callbackfn);
 
-            return testResult;
-        } finally {
-            delete Array.prototype[0];
-        }
-    }
-runTestCase(testcase);
+assert(testResult, 'testResult !== true');
diff --git a/test/built-ins/Array/prototype/forEach/15.4.4.18-7-c-i-8.js b/test/built-ins/Array/prototype/forEach/15.4.4.18-7-c-i-8.js
index d2efd7e9c90b611ac26d9b36b6c49aa1c42b8e89..a213a17a66d3ca106864ec815c792b4043ef8686 100644
--- a/test/built-ins/Array/prototype/forEach/15.4.4.18-7-c-i-8.js
+++ b/test/built-ins/Array/prototype/forEach/15.4.4.18-7-c-i-8.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.18-7-c-i-8
 description: >
     Array.prototype.forEach - element to be retrieved is inherited
     data property on an Array
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var testResult = false;
 
         function callbackfn(val, idx, obj) {
@@ -19,14 +16,8 @@ function testcase() {
             }
         }
 
-        try {
             Array.prototype[1] = 13;
 
             [, , , ].forEach(callbackfn);
 
-            return testResult;
-        } finally {
-            delete Array.prototype[1];
-        }
-    }
-runTestCase(testcase);
+assert(testResult, 'testResult !== true');
diff --git a/test/built-ins/Array/prototype/indexOf/15.4.4.14-1-10.js b/test/built-ins/Array/prototype/indexOf/15.4.4.14-1-10.js
index f77c37a11d0b12cf1a19e05474263fbc8ac96864..dbbcefece9dd4e3c561cccd67858d7321b1188f2 100644
--- a/test/built-ins/Array/prototype/indexOf/15.4.4.14-1-10.js
+++ b/test/built-ins/Array/prototype/indexOf/15.4.4.14-1-10.js
@@ -4,17 +4,9 @@
 /*---
 es5id: 15.4.4.14-1-10
 description: Array.prototype.indexOf applied to the Math object
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-        try {
             Math[1] = true;
             Math.length = 2;
-            return Array.prototype.indexOf.call(Math, true) === 1;
-        } finally {
-            delete Math[1];
-            delete Math.length;
-        }
-    }
-runTestCase(testcase);
+
+assert.sameValue(Array.prototype.indexOf.call(Math, true), 1, 'Array.prototype.indexOf.call(Math, true)');
diff --git a/test/built-ins/Array/prototype/indexOf/15.4.4.14-1-13.js b/test/built-ins/Array/prototype/indexOf/15.4.4.14-1-13.js
index a492656df669e1f17f53273566928b9dbf67fcc2..f04b1089d653aec2578cd66b6d7aa0b7cd89f8bc 100644
--- a/test/built-ins/Array/prototype/indexOf/15.4.4.14-1-13.js
+++ b/test/built-ins/Array/prototype/indexOf/15.4.4.14-1-13.js
@@ -4,18 +4,11 @@
 /*---
 es5id: 15.4.4.14-1-13
 description: Array.prototype.indexOf applied to the JSON object
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var targetObj = {};
-        try {
+
             JSON[3] = targetObj;
             JSON.length = 5;
-            return Array.prototype.indexOf.call(JSON, targetObj) === 3;
-        } finally {
-            delete JSON[3];
-            delete JSON.length;
-        }
-    }
-runTestCase(testcase);
+
+assert.sameValue(Array.prototype.indexOf.call(JSON, targetObj), 3, 'Array.prototype.indexOf.call(JSON, targetObj)');
diff --git a/test/built-ins/Array/prototype/indexOf/15.4.4.14-1-17.js b/test/built-ins/Array/prototype/indexOf/15.4.4.14-1-17.js
index 26a8e4778ba5086ea4b80c0d88ad474b61184a1c..375445d10deeb3f6d8b82a899f8ce91cbd92f7ce 100644
--- a/test/built-ins/Array/prototype/indexOf/15.4.4.14-1-17.js
+++ b/test/built-ins/Array/prototype/indexOf/15.4.4.14-1-17.js
@@ -4,20 +4,11 @@
 /*---
 es5id: 15.4.4.14-1-17
 description: Array.prototype.indexOf applied to the global object
-includes:
-    - runTestCase.js
-    - fnGlobalObject.js
+includes: [fnGlobalObject.js]
 ---*/
 
-function testcase() {
-        try {
             var oldLen = fnGlobalObject().length;
             fnGlobalObject()[1] = true;
             fnGlobalObject().length = 2;
-            return Array.prototype.indexOf.call(fnGlobalObject(), true) === 1;
-        } finally {
-            delete fnGlobalObject()[1];
-            fnGlobalObject().length = oldLen;
-        }
-    }
-runTestCase(testcase);
+
+assert.sameValue(Array.prototype.indexOf.call(fnGlobalObject(), true), 1, 'Array.prototype.indexOf.call(fnGlobalObject(), true)');
diff --git a/test/built-ins/Array/prototype/indexOf/15.4.4.14-1-3.js b/test/built-ins/Array/prototype/indexOf/15.4.4.14-1-3.js
index 70e6ba624b9bd73b0b4163010e847b62594889be..adac07916df97ed7c6fa9bf8022d729f4b8adf3f 100644
--- a/test/built-ins/Array/prototype/indexOf/15.4.4.14-1-3.js
+++ b/test/built-ins/Array/prototype/indexOf/15.4.4.14-1-3.js
@@ -4,19 +4,11 @@
 /*---
 es5id: 15.4.4.14-1-3
 description: Array.prototype.indexOf applied to boolean primitive
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var targetObj = {};
-        try {
+
             Boolean.prototype[1] = targetObj;
             Boolean.prototype.length = 2;
 
-            return Array.prototype.indexOf.call(true, targetObj) === 1;
-        } finally {
-            delete Boolean.prototype[1];
-            delete Boolean.prototype.length;
-        }
-    }
-runTestCase(testcase);
+assert.sameValue(Array.prototype.indexOf.call(true, targetObj), 1, 'Array.prototype.indexOf.call(true, targetObj)');
diff --git a/test/built-ins/Array/prototype/indexOf/15.4.4.14-1-5.js b/test/built-ins/Array/prototype/indexOf/15.4.4.14-1-5.js
index 896156aa9ca87c55f2675ca7cb6a4bcdc554627b..9d0a3f6fa8139c5de87870865ace8f6fbfedc591 100644
--- a/test/built-ins/Array/prototype/indexOf/15.4.4.14-1-5.js
+++ b/test/built-ins/Array/prototype/indexOf/15.4.4.14-1-5.js
@@ -4,19 +4,11 @@
 /*---
 es5id: 15.4.4.14-1-5
 description: Array.prototype.indexOf applied to number primitive
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var targetObj = {};
-        try {
+
             Number.prototype[1] = targetObj;
             Number.prototype.length = 2;
 
-            return Array.prototype.indexOf.call(5, targetObj) === 1;
-        } finally {
-            delete Number.prototype[1];
-            delete Number.prototype.length;
-        }
-    }
-runTestCase(testcase);
+assert.sameValue(Array.prototype.indexOf.call(5, targetObj), 1, 'Array.prototype.indexOf.call(5, targetObj)');
diff --git a/test/built-ins/Array/prototype/indexOf/15.4.4.14-2-12.js b/test/built-ins/Array/prototype/indexOf/15.4.4.14-2-12.js
index cb3f134ef428d06d048b2cece276aab8f6aa8ca9..c38c41d40aeb67f6c76f1491958c6560e6d0756f 100644
--- a/test/built-ins/Array/prototype/indexOf/15.4.4.14-2-12.js
+++ b/test/built-ins/Array/prototype/indexOf/15.4.4.14-2-12.js
@@ -7,11 +7,8 @@ description: >
     Array.prototype.indexOf - 'length' is own accessor property
     without a get function that overrides an inherited accessor
     property
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-        try {
             Object.defineProperty(Object.prototype, "length", {
                 get: function () {
                     return 20;
@@ -25,9 +22,4 @@ function testcase() {
                 configurable: true
             });
 
-            return Array.prototype.indexOf.call(obj, 1) === -1;
-        } finally {
-            delete Object.prototype.length;
-        }
-    }
-runTestCase(testcase);
+assert.sameValue(Array.prototype.indexOf.call(obj, 1), -1, 'Array.prototype.indexOf.call(obj, 1)');
diff --git a/test/built-ins/Array/prototype/indexOf/15.4.4.14-2-18.js b/test/built-ins/Array/prototype/indexOf/15.4.4.14-2-18.js
index e0ba535b5238f7b00d0f2fc7f01bf059c2e27af7..0e0c49fc483db62176e5b47e8587ba23f8f5b38a 100644
--- a/test/built-ins/Array/prototype/indexOf/15.4.4.14-2-18.js
+++ b/test/built-ins/Array/prototype/indexOf/15.4.4.14-2-18.js
@@ -6,17 +6,11 @@ es5id: 15.4.4.14-2-18
 description: >
     Array.prototype.indexOf applied to String object, which implements
     its own property get method
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var str = new String("012");
-        try {
+
             String.prototype[3] = "3";
-            return Array.prototype.indexOf.call(str, "2") === 2 &&
-                Array.prototype.indexOf.call(str, "3") === -1;
-        } finally {
-            delete String.prototype[3];
-        }
-    }
-runTestCase(testcase);
+
+assert.sameValue(Array.prototype.indexOf.call(str, "2"), 2, 'Array.prototype.indexOf.call(str, "2")');
+assert.sameValue(Array.prototype.indexOf.call(str, "3"), -1, 'Array.prototype.indexOf.call(str, "3")');
diff --git a/test/built-ins/Array/prototype/indexOf/15.4.4.14-2-2.js b/test/built-ins/Array/prototype/indexOf/15.4.4.14-2-2.js
index 1c9b02f38e36b6e4d8c322a6d2f359d72413f5a4..fadb62c9acc354607ea7db510100dd0d6aa1a3c1 100644
--- a/test/built-ins/Array/prototype/indexOf/15.4.4.14-2-2.js
+++ b/test/built-ins/Array/prototype/indexOf/15.4.4.14-2-2.js
@@ -4,19 +4,12 @@
 /*---
 es5id: 15.4.4.14-2-2
 description: Array.prototype.indexOf - 'length' is own data property on an Array
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var targetObj = {};
-        try {
+
             Array.prototype[2] = targetObj;
             
-            return [0, targetObj].indexOf(targetObj) === 1 &&
-                [0, 1].indexOf(targetObj) === -1;
 
-        } finally {
-            delete Array.prototype[2];
-        }
-    }
-runTestCase(testcase);
+assert.sameValue([0, targetObj].indexOf(targetObj), 1, '[0, targetObj].indexOf(targetObj)');
+assert.sameValue([0, 1].indexOf(targetObj), -1, '[0, 1].indexOf(targetObj)');
diff --git a/test/built-ins/Array/prototype/indexOf/15.4.4.14-2-4.js b/test/built-ins/Array/prototype/indexOf/15.4.4.14-2-4.js
index 7537df83abc9f23728a9b39db0bd3d4c081bbd35..6614dfd67b7216b9d5d91d1f7e2ea5408a5cf279 100644
--- a/test/built-ins/Array/prototype/indexOf/15.4.4.14-2-4.js
+++ b/test/built-ins/Array/prototype/indexOf/15.4.4.14-2-4.js
@@ -6,23 +6,12 @@ es5id: 15.4.4.14-2-4
 description: >
     Array.prototype.indexOf - 'length' is own data property that
     overrides an inherited data property on an Array
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var targetObj = {};
         var arrProtoLen;
 
-        try {
             arrProtoLen = Array.prototype.length;
             Array.prototype.length = 0;
 
-            return [0, targetObj].indexOf(targetObj) === 1;
-
-        } finally {
-
-            Array.prototype.length = arrProtoLen;
-        }
-    }
-runTestCase(testcase);
+assert.sameValue([0, targetObj].indexOf(targetObj), 1, '[0, targetObj].indexOf(targetObj)');
diff --git a/test/built-ins/Array/prototype/indexOf/15.4.4.14-9-a-10.js b/test/built-ins/Array/prototype/indexOf/15.4.4.14-9-a-10.js
index 2d648413b0f70a62cb6055110250c78e43d4e1da..0613b8931f65a1e17de7dc6642ec5996d3ab167c 100644
--- a/test/built-ins/Array/prototype/indexOf/15.4.4.14-9-a-10.js
+++ b/test/built-ins/Array/prototype/indexOf/15.4.4.14-9-a-10.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.14-9-a-10
 description: >
     Array.prototype.indexOf - properties can be added to prototype
     after current position are visited on an Array
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var arr = [0, , 2];
 
         Object.defineProperty(arr, "0", {
@@ -26,10 +23,4 @@ function testcase() {
             configurable: true
         });
 
-        try {
-            return arr.indexOf(6.99) === 1;
-        } finally {
-            delete Array.prototype[1];
-        }
-    }
-runTestCase(testcase);
+assert.sameValue(arr.indexOf(6.99), 1, 'arr.indexOf(6.99)');
diff --git a/test/built-ins/Array/prototype/indexOf/15.4.4.14-9-a-13.js b/test/built-ins/Array/prototype/indexOf/15.4.4.14-9-a-13.js
index 5cf29466722d51ac5941cfa4a57ec173358ed546..1d0e8b9e3014981de2e892c686234fcc2e35d160 100644
--- a/test/built-ins/Array/prototype/indexOf/15.4.4.14-9-a-13.js
+++ b/test/built-ins/Array/prototype/indexOf/15.4.4.14-9-a-13.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.14-9-a-13
 description: >
     Array.prototype.indexOf - deleting property of prototype causes
     prototype index property not to be visited on an Array-like Object
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var arr = { 2: 2, length: 20 };
 
         Object.defineProperty(arr, "0", {
@@ -21,11 +18,6 @@ function testcase() {
             configurable: true
         });
 
-        try {
             Object.prototype[1] = 1;
-            return -1 === Array.prototype.indexOf.call(arr, 1);
-        } finally {
-            delete Object.prototype[1];
-        }
-    }
-runTestCase(testcase);
+
+assert.sameValue(Array.prototype.indexOf.call(arr, 1), -1, 'Array.prototype.indexOf.call(arr, 1)');
diff --git a/test/built-ins/Array/prototype/indexOf/15.4.4.14-9-a-14.js b/test/built-ins/Array/prototype/indexOf/15.4.4.14-9-a-14.js
index 2c819c849237b62055c5d32d7389c370a49b2db3..441d6548ea1884a69641dc35cce58150490ad6b2 100644
--- a/test/built-ins/Array/prototype/indexOf/15.4.4.14-9-a-14.js
+++ b/test/built-ins/Array/prototype/indexOf/15.4.4.14-9-a-14.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.14-9-a-14
 description: >
     Array.prototype.indexOf - deleting property of prototype causes
     prototype index property not to be visited on an Array
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var arr = [0, , 2];
 
         Object.defineProperty(arr, "0", {
@@ -21,11 +18,6 @@ function testcase() {
             configurable: true
         });
 
-        try {
             Array.prototype[1] = 1;
-            return -1 === arr.indexOf(1);
-        } finally {
-            delete Array.prototype[1];
-        }
-    }
-runTestCase(testcase);
+
+assert.sameValue(arr.indexOf(1), -1, 'arr.indexOf(1)');
diff --git a/test/built-ins/Array/prototype/indexOf/15.4.4.14-9-a-15.js b/test/built-ins/Array/prototype/indexOf/15.4.4.14-9-a-15.js
index be5c7ddf72bddb9c6b526f5adb5e7093b26f2029..c0cdb29c74e864c7185aabf0886cd8ad932cda08 100644
--- a/test/built-ins/Array/prototype/indexOf/15.4.4.14-9-a-15.js
+++ b/test/built-ins/Array/prototype/indexOf/15.4.4.14-9-a-15.js
@@ -7,11 +7,8 @@ description: >
     Array.prototype.indexOf - deleting own property with prototype
     property causes prototype index property to be visited on an
     Array-like object
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var arr = { 0: 0, 1: 111, 2: 2, length: 10 };
         
         Object.defineProperty(arr, "0", {
@@ -22,11 +19,6 @@ function testcase() {
             configurable: true
         });
 
-        try {
             Object.prototype[1] = 1;
-            return 1 === Array.prototype.indexOf.call(arr, 1);
-        } finally {
-            delete Object.prototype[1];
-        }
-    }
-runTestCase(testcase);
+
+assert.sameValue(Array.prototype.indexOf.call(arr, 1), 1, 'Array.prototype.indexOf.call(arr, 1)');
diff --git a/test/built-ins/Array/prototype/indexOf/15.4.4.14-9-a-16.js b/test/built-ins/Array/prototype/indexOf/15.4.4.14-9-a-16.js
index 715c7b2d8132d3b56057d4a64f752cb97e995d39..b0b90e1104d978a3fbbe7e6827dda6ecd671ff2d 100644
--- a/test/built-ins/Array/prototype/indexOf/15.4.4.14-9-a-16.js
+++ b/test/built-ins/Array/prototype/indexOf/15.4.4.14-9-a-16.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.14-9-a-16
 description: >
     Array.prototype.indexOf - deleting own property with prototype
     property causes prototype index property to be visited on an Array
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var arr = [0, 111, 2]; 
         
         Object.defineProperty(arr, "0", {
@@ -21,11 +18,6 @@ function testcase() {
             configurable: true
         });
 
-        try {
             Array.prototype[1] = 1;
-            return 1 === arr.indexOf(1);
-        } finally {
-            delete Array.prototype[1];
-        }
-    }
-runTestCase(testcase);
+
+assert.sameValue(arr.indexOf(1), 1, 'arr.indexOf(1)');
diff --git a/test/built-ins/Array/prototype/indexOf/15.4.4.14-9-a-18.js b/test/built-ins/Array/prototype/indexOf/15.4.4.14-9-a-18.js
index cca19813ba911faa2967509828a4adef2f6efd1a..dba9ebe1281df25a6fda952ef199c772ce0cfc8a 100644
--- a/test/built-ins/Array/prototype/indexOf/15.4.4.14-9-a-18.js
+++ b/test/built-ins/Array/prototype/indexOf/15.4.4.14-9-a-18.js
@@ -6,14 +6,10 @@ es5id: 15.4.4.14-9-a-18
 description: >
     Array.prototype.indexOf - decreasing length of array with
     prototype property causes prototype index property to be visited
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var arr = [0, 1, 2];
 
-        try {
             Object.defineProperty(Array.prototype, "2", {
                 get: function () {
                     return "prototype";
@@ -29,9 +25,4 @@ function testcase() {
                 configurable: true
             });
 
-            return 2 === arr.indexOf("prototype");
-        } finally {
-            delete Array.prototype[2];
-        }
-    }
-runTestCase(testcase);
+assert.sameValue(arr.indexOf("prototype"), 2, 'arr.indexOf("prototype")');
diff --git a/test/built-ins/Array/prototype/indexOf/15.4.4.14-9-a-9.js b/test/built-ins/Array/prototype/indexOf/15.4.4.14-9-a-9.js
index be22ec2e16feb129d509bf646773004b2c8a65f0..946f14516627328ca0144118ed51368ba1ab7ebf 100644
--- a/test/built-ins/Array/prototype/indexOf/15.4.4.14-9-a-9.js
+++ b/test/built-ins/Array/prototype/indexOf/15.4.4.14-9-a-9.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.14-9-a-9
 description: >
     Array.prototype.indexOf - properties can be added to prototype
     after current position are visited on an Array-like object
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var arr = { length: 2 };
 
         Object.defineProperty(arr, "0", {
@@ -26,10 +23,4 @@ function testcase() {
             configurable: true
         });
 
-        try {
-            return Array.prototype.indexOf.call(arr, 6.99) === 1;
-        } finally {
-            delete Object.prototype[1];
-        }
-    }
-runTestCase(testcase);
+assert.sameValue(Array.prototype.indexOf.call(arr, 6.99), 1, 'Array.prototype.indexOf.call(arr, 6.99)');
diff --git a/test/built-ins/Array/prototype/indexOf/15.4.4.14-9-b-i-11.js b/test/built-ins/Array/prototype/indexOf/15.4.4.14-9-b-i-11.js
index 264dee961de27d4bec27f44d1a30644b0ac5d428..91f888fe3ef3a9d2f0ca680af2401a94dbe9d337 100644
--- a/test/built-ins/Array/prototype/indexOf/15.4.4.14-9-b-i-11.js
+++ b/test/built-ins/Array/prototype/indexOf/15.4.4.14-9-b-i-11.js
@@ -6,13 +6,10 @@ es5id: 15.4.4.14-9-b-i-11
 description: >
     Array.prototype.indexOf - element to be retrieved is own accessor
     property that overrides an inherited data property on an Array
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var arr = [];
-        try {
+
             Array.prototype[0] = false;
             Object.defineProperty(arr, "0", {
                 get: function () {
@@ -21,9 +18,4 @@ function testcase() {
                 configurable: true
             });
 
-            return 0 === arr.indexOf(true);
-        } finally {
-            delete Array.prototype[0];
-        }
-    }
-runTestCase(testcase);
+assert.sameValue(arr.indexOf(true), 0, 'arr.indexOf(true)');
diff --git a/test/built-ins/Array/prototype/indexOf/15.4.4.14-9-b-i-12.js b/test/built-ins/Array/prototype/indexOf/15.4.4.14-9-b-i-12.js
index b81c5088740f2a489ffe4ea1c1d6a74ac670fe90..d57984392d1dfa24ea5ee9ac70da29befbf28f7b 100644
--- a/test/built-ins/Array/prototype/indexOf/15.4.4.14-9-b-i-12.js
+++ b/test/built-ins/Array/prototype/indexOf/15.4.4.14-9-b-i-12.js
@@ -7,13 +7,10 @@ description: >
     Array.prototype.indexOf - element to be retrieved is own accessor
     property that overrides an inherited data property on an
     Array-like object
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = { length: 1 };
 
-        try {
             Object.prototype[0] = false;
             Object.defineProperty(obj, "0", {
                 get: function () {
@@ -22,9 +19,4 @@ function testcase() {
                 configurable: true
             });
 
-            return 0 === Array.prototype.indexOf.call(obj, true);
-        } finally {
-            delete Object.prototype[0];
-        }
-    }
-runTestCase(testcase);
+assert.sameValue(Array.prototype.indexOf.call(obj, true), 0, 'Array.prototype.indexOf.call(obj, true)');
diff --git a/test/built-ins/Array/prototype/indexOf/15.4.4.14-9-b-i-13.js b/test/built-ins/Array/prototype/indexOf/15.4.4.14-9-b-i-13.js
index 8b10ac1ce71efee5c53d2921f78ec3c21e378c59..89e660c3a1001a9df6577f6c8319f89db0d8789d 100644
--- a/test/built-ins/Array/prototype/indexOf/15.4.4.14-9-b-i-13.js
+++ b/test/built-ins/Array/prototype/indexOf/15.4.4.14-9-b-i-13.js
@@ -6,13 +6,10 @@ es5id: 15.4.4.14-9-b-i-13
 description: >
     Array.prototype.indexOf - element to be retrieved is own accessor
     property that overrides an inherited accessor property on an Array
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var arr = [];
-        try {
+
             Object.defineProperty(Array.prototype, "0", {
                 get: function () {
                     return false;
@@ -27,9 +24,4 @@ function testcase() {
                 configurable: true
             });
 
-            return 0 === arr.indexOf(true);
-        } finally {
-            delete Array.prototype[0];
-        }
-    }
-runTestCase(testcase);
+assert.sameValue(arr.indexOf(true), 0, 'arr.indexOf(true)');
diff --git a/test/built-ins/Array/prototype/indexOf/15.4.4.14-9-b-i-14.js b/test/built-ins/Array/prototype/indexOf/15.4.4.14-9-b-i-14.js
index 3f11e9c8f4c1664da9420db82ac06de6a8a4ccf8..f7fa2ff9b5b07dec31dedad6a19836543cba5140 100644
--- a/test/built-ins/Array/prototype/indexOf/15.4.4.14-9-b-i-14.js
+++ b/test/built-ins/Array/prototype/indexOf/15.4.4.14-9-b-i-14.js
@@ -7,14 +7,10 @@ description: >
     Array.prototype.indexOf - element to be retrieved is own accessor
     property that overrides an inherited accessor property on an
     Array-like object
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var obj = { length: 1 };
 
-        try {
             Object.defineProperty(Object.prototype, "0", {
                 get: function () {
                     return false;
@@ -29,9 +25,4 @@ function testcase() {
                 configurable: true
             });
 
-            return 0 === Array.prototype.indexOf.call(obj, true);
-        } finally {
-            delete Object.prototype[0];
-        }
-    }
-runTestCase(testcase);
+assert.sameValue(Array.prototype.indexOf.call(obj, true), 0, 'Array.prototype.indexOf.call(obj, true)');
diff --git a/test/built-ins/Array/prototype/indexOf/15.4.4.14-9-b-i-15.js b/test/built-ins/Array/prototype/indexOf/15.4.4.14-9-b-i-15.js
index 9b48b40cab79441e15281d13906bb483f2d248d0..172a32b6b53579dd202031400b459e9df85e09d5 100644
--- a/test/built-ins/Array/prototype/indexOf/15.4.4.14-9-b-i-15.js
+++ b/test/built-ins/Array/prototype/indexOf/15.4.4.14-9-b-i-15.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.14-9-b-i-15
 description: >
     Array.prototype.indexOf - element to be retrieved is inherited
     accessor property on an Array
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-        try {
             Object.defineProperty(Array.prototype, "0", {
                 get: function () {
                     return 10;
@@ -32,13 +29,6 @@ function testcase() {
                 configurable: true
             });
 
-            return 0 === [, , , ].indexOf(10) &&
-                1 === [, , , ].indexOf(20) && 
-                2 === [, , , ].indexOf(30);
-        } finally {
-            delete Array.prototype[0];
-            delete Array.prototype[1]; 
-            delete Array.prototype[2];
-        }
-    }
-runTestCase(testcase);
+assert.sameValue([, , , ].indexOf(10), 0, '[, , , ].indexOf(10)');
+assert.sameValue([, , , ].indexOf(20), 1, '[, , , ].indexOf(20)');
+assert.sameValue([, , , ].indexOf(30), 2, '[, , , ].indexOf(30)');
diff --git a/test/built-ins/Array/prototype/indexOf/15.4.4.14-9-b-i-16.js b/test/built-ins/Array/prototype/indexOf/15.4.4.14-9-b-i-16.js
index 06a2388a104322876781c679ef61cabbbc23ac4f..7aab5413dc223104e6e83b65db3b959722a7163e 100644
--- a/test/built-ins/Array/prototype/indexOf/15.4.4.14-9-b-i-16.js
+++ b/test/built-ins/Array/prototype/indexOf/15.4.4.14-9-b-i-16.js
@@ -6,12 +6,8 @@ es5id: 15.4.4.14-9-b-i-16
 description: >
     Array.prototype.indexOf - element to be retrieved is inherited
     accessor property on an Array-like object
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
-        try {
             Object.defineProperty(Object.prototype, "0", {
                 get: function () {
                     return 10;
@@ -33,13 +29,6 @@ function testcase() {
                 configurable: true
             });
 
-            return 0 === Array.prototype.indexOf.call({ length: 3 }, 10) &&
-                1 === Array.prototype.indexOf.call({ length: 3 }, 20) &&
-                2 === Array.prototype.indexOf.call({ length: 3 }, 30);
-        } finally {
-            delete Object.prototype[0];
-            delete Object.prototype[1];
-            delete Object.prototype[2];
-        }
-    }
-runTestCase(testcase);
+assert.sameValue(Array.prototype.indexOf.call({ length: 3 }, 10), 0, 'Array.prototype.indexOf.call({ length: 3 }, 10)');
+assert.sameValue(Array.prototype.indexOf.call({ length: 3 }, 20), 1, 'Array.prototype.indexOf.call({ length: 3 }, 20)');
+assert.sameValue(Array.prototype.indexOf.call({ length: 3 }, 30), 2, 'Array.prototype.indexOf.call({ length: 3 }, 30)');
diff --git a/test/built-ins/Array/prototype/indexOf/15.4.4.14-9-b-i-19.js b/test/built-ins/Array/prototype/indexOf/15.4.4.14-9-b-i-19.js
index 4fd2ad3ef19cf8541e404b796dd41dac38099575..895c3a2dcc17e27a02451eb39fc127897098b371 100644
--- a/test/built-ins/Array/prototype/indexOf/15.4.4.14-9-b-i-19.js
+++ b/test/built-ins/Array/prototype/indexOf/15.4.4.14-9-b-i-19.js
@@ -7,11 +7,8 @@ description: >
     Array.prototype.indexOf - element to be retrieved is own accessor
     property without a get function that overrides an inherited
     accessor property on an Array
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var arr = [];
 
         Object.defineProperty(arr, "0", {
@@ -19,7 +16,6 @@ function testcase() {
             configurable: true
         });
 
-        try {
             Object.defineProperty(Array.prototype, "0", {
                 get: function () {
                     return 2;
@@ -27,9 +23,4 @@ function testcase() {
                 configurable: true
             });
 
-            return arr.indexOf(undefined) === 0;
-        } finally {
-            delete Array.prototype[0];
-        }
-    }
-runTestCase(testcase);
+assert.sameValue(arr.indexOf(undefined), 0, 'arr.indexOf(undefined)');
diff --git a/test/built-ins/Array/prototype/indexOf/15.4.4.14-9-b-i-21.js b/test/built-ins/Array/prototype/indexOf/15.4.4.14-9-b-i-21.js
index 5dbbdc8a929f5f94940289bdaa06c8f0f331f2ef..da3b000c59930d3f869f6cc333dee33aeb539cf9 100644
--- a/test/built-ins/Array/prototype/indexOf/15.4.4.14-9-b-i-21.js
+++ b/test/built-ins/Array/prototype/indexOf/15.4.4.14-9-b-i-21.js
@@ -6,18 +6,11 @@ es5id: 15.4.4.14-9-b-i-21
 description: >
     Array.prototype.indexOf - element to be retrieved is inherited
     accessor property without a get function on an Array
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-        try {
             Object.defineProperty(Array.prototype, "0", {
                 set: function () { },
                 configurable: true
             });
-            return 0 === [, ].indexOf(undefined);
-        } finally {
-            delete Array.prototype[0];
-        }
-    }
-runTestCase(testcase);
+
+assert.sameValue([, ].indexOf(undefined), 0, '[, ].indexOf(undefined)');
diff --git a/test/built-ins/Array/prototype/indexOf/15.4.4.14-9-b-i-22.js b/test/built-ins/Array/prototype/indexOf/15.4.4.14-9-b-i-22.js
index 437535a958e2dc85aa2325d2ecbd9a28bcb935d6..765ea493448c82d4b17b3943b5638a2fddd14694 100644
--- a/test/built-ins/Array/prototype/indexOf/15.4.4.14-9-b-i-22.js
+++ b/test/built-ins/Array/prototype/indexOf/15.4.4.14-9-b-i-22.js
@@ -6,19 +6,11 @@ es5id: 15.4.4.14-9-b-i-22
 description: >
     Array.prototype.indexOf - element to be retrieved is inherited
     accessor property without a get function on an Array-like object
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
-        try {
             Object.defineProperty(Object.prototype, "0", {
                 set: function () { },
                 configurable: true
             });
-            return 0 === Array.prototype.indexOf.call({ length: 1 }, undefined);
-        } finally {
-            delete Object.prototype[0];
-        }
-    }
-runTestCase(testcase);
+
+assert.sameValue(Array.prototype.indexOf.call({ length: 1 }, undefined), 0, 'Array.prototype.indexOf.call({ length: 1 }, undefined)');
diff --git a/test/built-ins/Array/prototype/indexOf/15.4.4.14-9-b-i-23.js b/test/built-ins/Array/prototype/indexOf/15.4.4.14-9-b-i-23.js
index 048df751e1eec2b1dba07600304cfa99d044bb35..0b4a011aefd33045fa03396dbbb33b47105fd6ff 100644
--- a/test/built-ins/Array/prototype/indexOf/15.4.4.14-9-b-i-23.js
+++ b/test/built-ins/Array/prototype/indexOf/15.4.4.14-9-b-i-23.js
@@ -4,28 +4,17 @@
 /*---
 es5id: 15.4.4.14-9-b-i-23
 description: Array.prototype.indexOf - This object is the global object
-includes:
-    - runTestCase.js
-    - fnGlobalObject.js
+includes: [fnGlobalObject.js]
 ---*/
 
-function testcase() {
-
         var targetObj = {};
-        try {
+
             var oldLen = fnGlobalObject().length;
             fnGlobalObject()[0] = targetObj;
             fnGlobalObject()[100] = "100";
             fnGlobalObject()[200] = "200";
             fnGlobalObject().length = 200;
-            return 0 === Array.prototype.indexOf.call(fnGlobalObject(), targetObj) &&
-                100 === Array.prototype.indexOf.call(fnGlobalObject(), "100") &&
-                -1 === Array.prototype.indexOf.call(fnGlobalObject(), "200");
-        } finally {
-            delete fnGlobalObject()[0];
-            delete fnGlobalObject()[100];
-            delete fnGlobalObject()[200];
-            fnGlobalObject().length = oldLen;
-        }
-    }
-runTestCase(testcase);
+
+assert.sameValue(Array.prototype.indexOf.call(fnGlobalObject(), targetObj), 0, 'Array.prototype.indexOf.call(fnGlobalObject(), targetObj)');
+assert.sameValue(Array.prototype.indexOf.call(fnGlobalObject(), "100"), 100, 'Array.prototype.indexOf.call(fnGlobalObject(), "100")');
+assert.sameValue(Array.prototype.indexOf.call(fnGlobalObject(), "200"), -1, 'Array.prototype.indexOf.call(fnGlobalObject(), "200")');
diff --git a/test/built-ins/Array/prototype/indexOf/15.4.4.14-9-b-i-3.js b/test/built-ins/Array/prototype/indexOf/15.4.4.14-9-b-i-3.js
index 8eed8023966860bda497e6ec37a77ca4277862d6..b25f32a1141859097190a95a7f4ff295f5a7c96d 100644
--- a/test/built-ins/Array/prototype/indexOf/15.4.4.14-9-b-i-3.js
+++ b/test/built-ins/Array/prototype/indexOf/15.4.4.14-9-b-i-3.js
@@ -6,15 +6,8 @@ es5id: 15.4.4.14-9-b-i-3
 description: >
     Array.prototype.indexOf - element to be retrieved is own data
     property that overrides an inherited data property on an Array
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-        try {
             Array.prototype[0] = false;
-            return [true].indexOf(true) === 0;
-        } finally {
-            delete Array.prototype[0];
-        }
-    }
-runTestCase(testcase);
+
+assert.sameValue([true].indexOf(true), 0, '[true].indexOf(true)');
diff --git a/test/built-ins/Array/prototype/indexOf/15.4.4.14-9-b-i-4.js b/test/built-ins/Array/prototype/indexOf/15.4.4.14-9-b-i-4.js
index 2e8f71094ff805693b553cc53f1cf7e4090fbade..050883cf54f0713afb01234f85f2377953d942bc 100644
--- a/test/built-ins/Array/prototype/indexOf/15.4.4.14-9-b-i-4.js
+++ b/test/built-ins/Array/prototype/indexOf/15.4.4.14-9-b-i-4.js
@@ -7,16 +7,8 @@ description: >
     Array.prototype.indexOf - element to be retrieved is own data
     property that overrides an inherited data property on an
     Array-like object
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
-        try {
             Object.prototype[0] = false;
-            return 0 === Array.prototype.indexOf.call({ 0: true, 1: 1, length: 2 }, true);
-        } finally {
-            delete Object.prototype[0];
-        }
-    }
-runTestCase(testcase);
+
+assert.sameValue(Array.prototype.indexOf.call({ 0: true, 1: 1, length: 2 }, true), 0, 'Array.prototype.indexOf.call({ 0: true, 1: 1, length: 2 }, true)');
diff --git a/test/built-ins/Array/prototype/indexOf/15.4.4.14-9-b-i-5.js b/test/built-ins/Array/prototype/indexOf/15.4.4.14-9-b-i-5.js
index 3fd67f5bc8fcd293cb0d508e131e58bb042e9547..865f0bcc785d882ba57cc6acdfe611dae11f6d3c 100644
--- a/test/built-ins/Array/prototype/indexOf/15.4.4.14-9-b-i-5.js
+++ b/test/built-ins/Array/prototype/indexOf/15.4.4.14-9-b-i-5.js
@@ -6,20 +6,13 @@ es5id: 15.4.4.14-9-b-i-5
 description: >
     Array.prototype.indexOf - element to be retrieved is own data
     property that overrides an inherited accessor property on an Array
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-        try {
             Object.defineProperty(Array.prototype, "0", {
                 get: function () {
                     return false;
                 },
                 configurable: true
             });
-            return 0 === [true].indexOf(true);
-        } finally {
-            delete Array.prototype[0];
-        }
-    }
-runTestCase(testcase);
+
+assert.sameValue([true].indexOf(true), 0, '[true].indexOf(true)');
diff --git a/test/built-ins/Array/prototype/indexOf/15.4.4.14-9-b-i-6.js b/test/built-ins/Array/prototype/indexOf/15.4.4.14-9-b-i-6.js
index 7891b45ca6dd67e93c33c1ba7ed8d82b8aea49b2..44fc0764601b15ab1eba33fcb545cc6e134dd5bd 100644
--- a/test/built-ins/Array/prototype/indexOf/15.4.4.14-9-b-i-6.js
+++ b/test/built-ins/Array/prototype/indexOf/15.4.4.14-9-b-i-6.js
@@ -7,21 +7,13 @@ description: >
     Array.prototype.indexOf - element to be retrieved is own data
     property that overrides an inherited accessor property on an
     Array-like object
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
-        try {
             Object.defineProperty(Object.prototype, "0", {
                 get: function () {
                     return false;
                 },
                 configurable: true
             });
-            return 0 === Array.prototype.indexOf.call({ 0: true, 1: 1, length: 2 }, true);
-        } finally {
-            delete Object.prototype[0];
-        }
-    }
-runTestCase(testcase);
+
+assert.sameValue(Array.prototype.indexOf.call({ 0: true, 1: 1, length: 2 }, true), 0, 'Array.prototype.indexOf.call({ 0: true, 1: 1, length: 2 }, true)');
diff --git a/test/built-ins/Array/prototype/indexOf/15.4.4.14-9-b-i-7.js b/test/built-ins/Array/prototype/indexOf/15.4.4.14-9-b-i-7.js
index 24cdc019796e5bb9690ff5926303f4f7d732a8ed..6c2ca2f4c9922f2194c03494766f32fa65c38963 100644
--- a/test/built-ins/Array/prototype/indexOf/15.4.4.14-9-b-i-7.js
+++ b/test/built-ins/Array/prototype/indexOf/15.4.4.14-9-b-i-7.js
@@ -6,21 +6,12 @@ es5id: 15.4.4.14-9-b-i-7
 description: >
     Array.prototype.indexOf - element to be retrieved is inherited
     data property on an Array
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-        try {
             Array.prototype[0] = true;
             Array.prototype[1] = false;
             Array.prototype[2] = "true";
-            return 0 === [, , , ].indexOf(true) &&
-                1 === [, , , ].indexOf(false) &&
-                2 === [, , , ].indexOf("true");
-        } finally {
-            delete Array.prototype[0];
-            delete Array.prototype[1];
-            delete Array.prototype[2];
-        }
-    }
-runTestCase(testcase);
+
+assert.sameValue([, , , ].indexOf(true), 0, '[, , , ].indexOf(true)');
+assert.sameValue([, , , ].indexOf(false), 1, '[, , , ].indexOf(false)');
+assert.sameValue([, , , ].indexOf("true"), 2, '[, , , ].indexOf("true")');
diff --git a/test/built-ins/Array/prototype/indexOf/15.4.4.14-9-b-i-8.js b/test/built-ins/Array/prototype/indexOf/15.4.4.14-9-b-i-8.js
index 8dc554233ee7bf9f8310d8f64aa37df971667d2a..7278aa4e6229c4d4de3a6a37dcf283150184c8a3 100644
--- a/test/built-ins/Array/prototype/indexOf/15.4.4.14-9-b-i-8.js
+++ b/test/built-ins/Array/prototype/indexOf/15.4.4.14-9-b-i-8.js
@@ -6,22 +6,12 @@ es5id: 15.4.4.14-9-b-i-8
 description: >
     Array.prototype.indexOf - element to be retrieved is inherited
     data property on an Array-like object
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
-        try {
             Object.prototype[0] = true;
             Object.prototype[1] = false;
             Object.prototype[2] = "true";
-            return 0 === Array.prototype.indexOf.call({ length: 3 }, true) &&
-                1 === Array.prototype.indexOf.call({ length: 3 }, false) &&
-                2 === Array.prototype.indexOf.call({ length: 3 }, "true");
-        } finally {
-            delete Object.prototype[0];
-            delete Object.prototype[1];
-            delete Object.prototype[2];
-        }
-    }
-runTestCase(testcase);
+
+assert.sameValue(Array.prototype.indexOf.call({ length: 3 }, true), 0, 'Array.prototype.indexOf.call({ length: 3 }, true)');
+assert.sameValue(Array.prototype.indexOf.call({ length: 3 }, false), 1, 'Array.prototype.indexOf.call({ length: 3 }, false)');
+assert.sameValue(Array.prototype.indexOf.call({ length: 3 }, "true"), 2, 'Array.prototype.indexOf.call({ length: 3 }, "true")');
diff --git a/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-1-10.js b/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-1-10.js
index c14fdcdab17dc1f27dfd1c00b7fb4486ba644770..0031493629c77bfe3dc74c1ae3eeb8b0c6c3f90e 100644
--- a/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-1-10.js
+++ b/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-1-10.js
@@ -4,18 +4,9 @@
 /*---
 es5id: 15.4.4.15-1-10
 description: Array.prototype.lastIndexOf applied to the Math object
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-    
-        try {
             Math.length = 2;
             Math[1] = 100;
-            return 1 === Array.prototype.lastIndexOf.call(Math, 100);
-        } finally {
-            delete Math.length;
-            delete Math[1];
-        }
-    }
-runTestCase(testcase);
+
+assert.sameValue(Array.prototype.lastIndexOf.call(Math, 100), 1, 'Array.prototype.lastIndexOf.call(Math, 100)');
diff --git a/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-1-13.js b/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-1-13.js
index 2248f30798d611dbacd0873fc6ae5e9b544038ac..853dc236cff29a1099b5a6d5cb358986589826d6 100644
--- a/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-1-13.js
+++ b/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-1-13.js
@@ -4,19 +4,11 @@
 /*---
 es5id: 15.4.4.15-1-13
 description: Array.prototype.lastIndexOf applied to the JSON object
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var targetObj = {};
-        try {
+
             JSON[3] = targetObj;
             JSON.length = 5;
-            return 3 === Array.prototype.lastIndexOf.call(JSON, targetObj);
-        } finally {
-            delete JSON[3];
-            delete JSON.length;
-        }
-    }
-runTestCase(testcase);
+
+assert.sameValue(Array.prototype.lastIndexOf.call(JSON, targetObj), 3, 'Array.prototype.lastIndexOf.call(JSON, targetObj)');
diff --git a/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-1-17.js b/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-1-17.js
index 86c066c1805b1be2a8efb6e7511eb23010c6d716..d3ce162508b82bda56555ff085f2f314fccaa60d 100644
--- a/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-1-17.js
+++ b/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-1-17.js
@@ -4,21 +4,13 @@
 /*---
 es5id: 15.4.4.15-1-17
 description: Array.prototype.lastIndexOf applied to the global object
-includes:
-    - runTestCase.js
-    - fnGlobalObject.js
+includes: [fnGlobalObject.js]
 ---*/
 
-function testcase() {
         var targetObj = ["global"];
-        try {
+
             var oldLen = fnGlobalObject().length;
             fnGlobalObject()[1] = targetObj;
             fnGlobalObject().length = 3;
-            return 1 === Array.prototype.lastIndexOf.call(fnGlobalObject(), targetObj);
-        } finally {
-            delete fnGlobalObject()[1];
-            fnGlobalObject().length = oldLen;
-        }
-    }
-runTestCase(testcase);
+
+assert.sameValue(Array.prototype.lastIndexOf.call(fnGlobalObject(), targetObj), 1, 'Array.prototype.lastIndexOf.call(fnGlobalObject(), targetObj)');
diff --git a/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-1-3.js b/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-1-3.js
index 003cce69d06ab57a834b7b4715265facacc216b4..a1169423396ca013ee8d9f2b8e5b5b80ca7d1df1 100644
--- a/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-1-3.js
+++ b/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-1-3.js
@@ -4,19 +4,9 @@
 /*---
 es5id: 15.4.4.15-1-3
 description: Array.prototype.lastIndexOf applied to boolean primitive
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
-        try {
             Boolean.prototype[1] = true;
             Boolean.prototype.length = 2;
 
-            return 1 === Array.prototype.lastIndexOf.call(true, true);
-        } finally {
-            delete Boolean.prototype[1];
-            delete Boolean.prototype.length;
-        }
-    }
-runTestCase(testcase);
+assert.sameValue(Array.prototype.lastIndexOf.call(true, true), 1, 'Array.prototype.lastIndexOf.call(true, true)');
diff --git a/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-1-5.js b/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-1-5.js
index b4e63bca83b23c0410cdd042e283d02f49dedb7c..5d8e942143ddd320e89fadb1f9186dbddc6b14d9 100644
--- a/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-1-5.js
+++ b/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-1-5.js
@@ -4,18 +4,9 @@
 /*---
 es5id: 15.4.4.15-1-5
 description: Array.prototype.lastIndexOf applied to number primitive
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
-        try {
                 Number.prototype[1] = isNaN;
                 Number.prototype.length = 2;
-                return 1 === Array.prototype.lastIndexOf.call(5, isNaN);
-            } finally {
-                delete Number.prototype[1];
-                delete Number.prototype.length;
-            }
-    }
-runTestCase(testcase);
+
+assert.sameValue(Array.prototype.lastIndexOf.call(5, isNaN), 1, 'Array.prototype.lastIndexOf.call(5, isNaN)');
diff --git a/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-2-12.js b/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-2-12.js
index d36a4b77d5f834472482f88168d9c7dc86cc977d..d5416b835a05bf257414dfe1dbe4324bc5391f68 100644
--- a/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-2-12.js
+++ b/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-2-12.js
@@ -7,11 +7,8 @@ description: >
     Array.prototype.lastIndexOf - 'length' is own accessor property
     without a get function that overrides an inherited accessor
     property on an Array-like object
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-        try {
             Object.defineProperty(Object.prototype, "length", {
                 get: function () {
                     return 20;
@@ -25,9 +22,4 @@ function testcase() {
                 configurable: true
             });
 
-            return Array.prototype.lastIndexOf.call(obj, 1) === -1;
-        } finally {
-            delete Object.prototype.length;
-        }
-    }
-runTestCase(testcase);
+assert.sameValue(Array.prototype.lastIndexOf.call(obj, 1), -1, 'Array.prototype.lastIndexOf.call(obj, 1)');
diff --git a/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-2-18.js b/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-2-18.js
index 1fc26ab04a8ef23689f7d98e34319572c2efa559..752ca25e17b01b8638253fec1821ade6b4b2d20d 100644
--- a/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-2-18.js
+++ b/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-2-18.js
@@ -6,18 +6,11 @@ es5id: 15.4.4.15-2-18
 description: >
     Array.prototype.lastIndexOf applied to String object which
     implements its own property get method
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var str = new String("012");
-        try {
+
             String.prototype[3] = "3";
-            return Array.prototype.lastIndexOf.call(str, "2") === 2 &&
-                Array.prototype.lastIndexOf.call(str, "3") === -1;
-        } finally {
-            delete String.prototype[3];
-        }
-    }
-runTestCase(testcase);
+
+assert.sameValue(Array.prototype.lastIndexOf.call(str, "2"), 2, 'Array.prototype.lastIndexOf.call(str, "2")');
+assert.sameValue(Array.prototype.lastIndexOf.call(str, "3"), -1, 'Array.prototype.lastIndexOf.call(str, "3")');
diff --git a/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-2-2.js b/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-2-2.js
index 6f1bec1a069b09782f37f56d9d55be62d26a9e60..4bd36ef64bf4f09c1b7dfcaffafd2a33bab644cc 100644
--- a/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-2-2.js
+++ b/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-2-2.js
@@ -6,18 +6,11 @@ es5id: 15.4.4.15-2-2
 description: >
     Array.prototype.lastIndexOf - 'length' is own data property on an
     Array
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var targetObj = {};
-        try {
+
             Array.prototype[2] = targetObj;
 
-            return [0, targetObj].lastIndexOf(targetObj) === 1 &&
-                [0, 1].lastIndexOf(targetObj) === -1;
-        } finally {
-            delete Array.prototype[2];
-        }
-    }
-runTestCase(testcase);
+assert.sameValue([0, targetObj].lastIndexOf(targetObj), 1, '[0, targetObj].lastIndexOf(targetObj)');
+assert.sameValue([0, 1].lastIndexOf(targetObj), -1, '[0, 1].lastIndexOf(targetObj)');
diff --git a/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-2-4.js b/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-2-4.js
index 3e7d765d7a3d2e64e58909f0e47ded3228e63ac2..60676edb7172fdf6874676fcbfdefa31063bd606 100644
--- a/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-2-4.js
+++ b/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-2-4.js
@@ -6,19 +6,12 @@ es5id: 15.4.4.15-2-4
 description: >
     Array.prototype.lastIndexOf when 'length' is own data property
     that overrides an inherited data property on an Array
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var targetObj = {};
         var arrProtoLen;
-        try {
+
             arrProtoLen = Array.prototype.length;
             Array.prototype.length = 0;
-            return [0, targetObj, 2].lastIndexOf(targetObj) === 1;
-        } finally {
-            Array.prototype.length = arrProtoLen;
-        }
-    }
-runTestCase(testcase);
+
+assert.sameValue([0, targetObj, 2].lastIndexOf(targetObj), 1, '[0, targetObj, 2].lastIndexOf(targetObj)');
diff --git a/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-8-a-10.js b/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-8-a-10.js
index 5ec39f5b7526d2dc0b5da701987bfcfbc33495a3..a65561e05cce04ba46c643439adeedd428ede339 100644
--- a/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-8-a-10.js
+++ b/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-8-a-10.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.15-8-a-10
 description: >
     Array.prototype.lastIndexOf - properties can be added to prototype
     after current position are visited on an Array
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var arr = [0, , 2];
 
         Object.defineProperty(arr, "2", {
@@ -26,10 +23,4 @@ function testcase() {
             configurable: true
         });
 
-        try {
-            return arr.lastIndexOf(6.99) === 1;
-        } finally {
-            delete Array.prototype[1];
-        }
-    }
-runTestCase(testcase);
+assert.sameValue(arr.lastIndexOf(6.99), 1, 'arr.lastIndexOf(6.99)');
diff --git a/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-8-a-13.js b/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-8-a-13.js
index 7636e44119ab0042bc350e2dca8a895f3df5067e..916acc55a0dcfe7699ff5ff714424d656f219584 100644
--- a/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-8-a-13.js
+++ b/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-8-a-13.js
@@ -7,11 +7,8 @@ description: >
     Array.prototype.lastIndexOf -  deleting property of prototype
     causes prototype index property not to be visited on an Array-like
     Object
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var arr = { 2: 2, length: 20 };
 
         Object.defineProperty(arr, "3", {
@@ -22,11 +19,6 @@ function testcase() {
             configurable: true
         });
 
-        try {
             Object.prototype[1] = 1;
-            return -1 === Array.prototype.lastIndexOf.call(arr, 1);
-        } finally {
-            delete Object.prototype[1];
-        }
-    }
-runTestCase(testcase);
+
+assert.sameValue(Array.prototype.lastIndexOf.call(arr, 1), -1, 'Array.prototype.lastIndexOf.call(arr, 1)');
diff --git a/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-8-a-14.js b/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-8-a-14.js
index 6a7c0e004883162ac0242c283726ac5998d75fc1..03969578ab073afd65a8f995d5214428287d3488 100644
--- a/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-8-a-14.js
+++ b/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-8-a-14.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.15-8-a-14
 description: >
     Array.prototype.lastIndexOf -  deleting property of prototype
     causes prototype index property not to be visited on an Array
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var arr = [0, , 2];
 
         Object.defineProperty(arr, "20", {
@@ -21,11 +18,6 @@ function testcase() {
             configurable: true
         });
 
-        try {
             Array.prototype[1] = 1;
-            return -1 === arr.lastIndexOf(1);
-        } finally {
-            delete Array.prototype[1];
-        }
-    }
-runTestCase(testcase);
+
+assert.sameValue(arr.lastIndexOf(1), -1, 'arr.lastIndexOf(1)');
diff --git a/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-8-a-15.js b/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-8-a-15.js
index 72d4bcae7c9df571998c2ae66be80da6638edf5e..8d5ca467cb2a74ed95b50b899443d75079b04065 100644
--- a/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-8-a-15.js
+++ b/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-8-a-15.js
@@ -7,11 +7,8 @@ description: >
     Array.prototype.lastIndexOf -  deleting own property with
     prototype property causes prototype index property to be visited
     on an Array-like object
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var arr = { 0: 0, 1: 111, 2: 2, length: 10 };
         
         Object.defineProperty(arr, "6", {
@@ -22,11 +19,6 @@ function testcase() {
             configurable: true
         });
 
-        try {
             Object.prototype[1] = 1;
-            return 1 === Array.prototype.lastIndexOf.call(arr, 1);
-        } finally {
-            delete Object.prototype[1];
-        }
-    }
-runTestCase(testcase);
+
+assert.sameValue(Array.prototype.lastIndexOf.call(arr, 1), 1, 'Array.prototype.lastIndexOf.call(arr, 1)');
diff --git a/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-8-a-16.js b/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-8-a-16.js
index 9cf101b44c9569914f97d7ad86c04ded9308133a..2d54abecb9a98e62d446d2bdd79ce7b99b0f133e 100644
--- a/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-8-a-16.js
+++ b/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-8-a-16.js
@@ -7,11 +7,8 @@ description: >
     Array.prototype.lastIndexOf -  deleting own property with
     prototype property causes prototype index property to be visited
     on an Array
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var arr = [0, 111, 2]; 
         
         Object.defineProperty(arr, "2", {
@@ -22,11 +19,6 @@ function testcase() {
             configurable: true
         });
 
-        try {
             Array.prototype[1] = 1;
-            return 1 === arr.lastIndexOf(1);
-        } finally {
-            delete Array.prototype[1];
-        }
-    }
-runTestCase(testcase);
+
+assert.sameValue(arr.lastIndexOf(1), 1, 'arr.lastIndexOf(1)');
diff --git a/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-8-a-18.js b/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-8-a-18.js
index 3ccde5b66e1c6e11e7cca0dbb46cf9147667cc54..229cf7e5817f06472d383e75bfe7ea1b55dc6655 100644
--- a/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-8-a-18.js
+++ b/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-8-a-18.js
@@ -6,14 +6,10 @@ es5id: 15.4.4.15-8-a-18
 description: >
     Array.prototype.lastIndexOf -  decreasing length of array with
     prototype property causes prototype index property to be visited
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var arr = [0, 1, 2, 3, 4];
 
-        try {
             Object.defineProperty(Array.prototype, "2", {
                 get: function () {
                     return "prototype";
@@ -29,9 +25,4 @@ function testcase() {
                 configurable: true
             });
 
-            return 2 === arr.lastIndexOf("prototype");
-        } finally {
-            delete Array.prototype[2];
-        }
-    }
-runTestCase(testcase);
+assert.sameValue(arr.lastIndexOf("prototype"), 2, 'arr.lastIndexOf("prototype")');
diff --git a/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-8-a-9.js b/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-8-a-9.js
index 0cce8eaeb086e06e460ae2460d45c520402af5b1..64656414304944cccdec779cf21b0978c75fbfc0 100644
--- a/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-8-a-9.js
+++ b/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-8-a-9.js
@@ -7,11 +7,8 @@ description: >
     Array.prototype.lastIndexOf -  properties can be added to
     prototype after current position are visited on an Array-like
     object
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var arr = { length: 9 };
 
         Object.defineProperty(arr, "4", {
@@ -27,10 +24,4 @@ function testcase() {
             configurable: true
         });
 
-        try {
-            return Array.prototype.lastIndexOf.call(arr, Infinity) === 1;
-        } finally {
-            delete Object.prototype[1];
-        }
-    }
-runTestCase(testcase);
+assert.sameValue(Array.prototype.lastIndexOf.call(arr, Infinity), 1, 'Array.prototype.lastIndexOf.call(arr, Infinity)');
diff --git a/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-8-b-i-11.js b/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-8-b-i-11.js
index 806209dd93b4298632e6435a5dcd87819aa6767f..7f88d0691eefbb11bce34e110ea458f6698e3bd0 100644
--- a/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-8-b-i-11.js
+++ b/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-8-b-i-11.js
@@ -7,13 +7,10 @@ description: >
     Array.prototype.lastIndexOf - element to be retrieved is own
     accessor property that overrides an inherited data property on an
     Array
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var arr = [];
-        try {
+
             Array.prototype[0] = false;
             Object.defineProperty(arr, "0", {
                 get: function () {
@@ -22,9 +19,4 @@ function testcase() {
                 configurable: true
             });
 
-            return 0 === arr.lastIndexOf(true);
-        } finally {
-            delete Array.prototype[0]; 
-        }
-    }
-runTestCase(testcase);
+assert.sameValue(arr.lastIndexOf(true), 0, 'arr.lastIndexOf(true)');
diff --git a/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-8-b-i-12.js b/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-8-b-i-12.js
index b67dfe5ed9fad428d8ada36fb9fd8fc2ccbf773d..a699e407796986e7f683787cd35abb5e168265bf 100644
--- a/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-8-b-i-12.js
+++ b/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-8-b-i-12.js
@@ -7,13 +7,10 @@ description: >
     Array.prototype.lastIndexOf - element to be retrieved is own
     accessor property that overrides an inherited data property on an
     Array-like object
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = { length: 1 };
 
-        try {
             Object.prototype[0] = false;
             Object.defineProperty(obj, "0", {
                 get: function () {
@@ -22,9 +19,4 @@ function testcase() {
                 configurable: true
             });
 
-            return 0 === Array.prototype.lastIndexOf.call(obj, true);
-        } finally {
-            delete Object.prototype[0];
-        }
-    }
-runTestCase(testcase);
+assert.sameValue(Array.prototype.lastIndexOf.call(obj, true), 0, 'Array.prototype.lastIndexOf.call(obj, true)');
diff --git a/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-8-b-i-13.js b/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-8-b-i-13.js
index 0b527f82be13d474efc0f2ae4f0528984b3dd160..43c6045bd07b97cb7046f46fd35af66fb5091f41 100644
--- a/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-8-b-i-13.js
+++ b/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-8-b-i-13.js
@@ -7,13 +7,10 @@ description: >
     Array.prototype.lastIndexOf - element to be retrieved is own
     accessor property that overrides an inherited accessor property on
     an Array
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var arr = [];
-        try {
+
             Object.defineProperty(Array.prototype, "0", {
                 get: function () {
                     return false;
@@ -28,9 +25,4 @@ function testcase() {
                 configurable: true
             });
 
-            return 0 === arr.lastIndexOf(true);
-        } finally {
-            delete Array.prototype[0];
-        }
-    }
-runTestCase(testcase);
+assert.sameValue(arr.lastIndexOf(true), 0, 'arr.lastIndexOf(true)');
diff --git a/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-8-b-i-14.js b/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-8-b-i-14.js
index 474ce9b0a40ef74de298ab78d23a1d56bc9b81e8..60245d65f5b5a78b30ed773b8755ab129f53fbc8 100644
--- a/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-8-b-i-14.js
+++ b/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-8-b-i-14.js
@@ -7,14 +7,10 @@ description: >
     Array.prototype.lastIndexOf - element to be retrieved is own
     accessor property that overrides an inherited accessor property on
     an Array-like object
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var obj = { length: 1 };
 
-        try {
             Object.defineProperty(Object.prototype, "0", {
                 get: function () {
                     return false;
@@ -29,9 +25,4 @@ function testcase() {
                 configurable: true
             });
 
-            return 0 === Array.prototype.lastIndexOf.call(obj, true);
-        } finally {
-            delete Object.prototype[0];
-        }
-    }
-runTestCase(testcase);
+assert.sameValue(Array.prototype.lastIndexOf.call(obj, true), 0, 'Array.prototype.lastIndexOf.call(obj, true)');
diff --git a/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-8-b-i-15.js b/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-8-b-i-15.js
index 6ff9ba3d6b7d124168c6c7a17be289ddbb925768..2bdb9cd522ac578fc1a8613444ab2a0a2788dc80 100644
--- a/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-8-b-i-15.js
+++ b/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-8-b-i-15.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.15-8-b-i-15
 description: >
     Array.prototype.lastIndexOf - element to be retrieved is inherited
     accessor property on an Array
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-        try {
             Object.defineProperty(Array.prototype, "0", {
                 get: function () {
                     return 10;
@@ -32,13 +29,6 @@ function testcase() {
                 configurable: true
             });
 
-            return 0 === [, , , ].lastIndexOf(10) &&
-                1 === [, , , ].lastIndexOf(20) &&
-                2 === [, , , ].lastIndexOf(30);
-        } finally {
-            delete Array.prototype[0];
-            delete Array.prototype[1];
-            delete Array.prototype[2];
-        }
-    }
-runTestCase(testcase);
+assert.sameValue([, , , ].lastIndexOf(10), 0, '[, , , ].lastIndexOf(10)');
+assert.sameValue([, , , ].lastIndexOf(20), 1, '[, , , ].lastIndexOf(20)');
+assert.sameValue([, , , ].lastIndexOf(30), 2, '[, , , ].lastIndexOf(30)');
diff --git a/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-8-b-i-16.js b/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-8-b-i-16.js
index ab7348aa8061aae9559e5839ec6b3ac2f91b5f23..9d9696d608c85f17b367b7de7c9ee16270130c17 100644
--- a/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-8-b-i-16.js
+++ b/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-8-b-i-16.js
@@ -6,12 +6,8 @@ es5id: 15.4.4.15-8-b-i-16
 description: >
     Array.prototype.lastIndexOf - element to be retrieved is inherited
     accessor property on an Array-like object
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
-        try {
             Object.defineProperty(Object.prototype, "0", {
                 get: function () {
                     return 10;
@@ -33,13 +29,6 @@ function testcase() {
                 configurable: true
             });
 
-            return 0 === Array.prototype.lastIndexOf.call({ length: 3 }, 10) &&
-                1 === Array.prototype.lastIndexOf.call({ length: 3 }, 20) &&
-                2 === Array.prototype.lastIndexOf.call({ length: 3 }, 30);
-        } finally {
-            delete Object.prototype[0];
-            delete Object.prototype[1];
-            delete Object.prototype[2];
-        }
-    }
-runTestCase(testcase);
+assert.sameValue(Array.prototype.lastIndexOf.call({ length: 3 }, 10), 0, 'Array.prototype.lastIndexOf.call({ length: 3 }, 10)');
+assert.sameValue(Array.prototype.lastIndexOf.call({ length: 3 }, 20), 1, 'Array.prototype.lastIndexOf.call({ length: 3 }, 20)');
+assert.sameValue(Array.prototype.lastIndexOf.call({ length: 3 }, 30), 2, 'Array.prototype.lastIndexOf.call({ length: 3 }, 30)');
diff --git a/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-8-b-i-19.js b/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-8-b-i-19.js
index 71477a04b928adcbbca5d8cf7ad0e3d09ef7fbe8..6ab787b5911d04de0c17640aeedf9bfa2f0cec23 100644
--- a/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-8-b-i-19.js
+++ b/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-8-b-i-19.js
@@ -7,13 +7,10 @@ description: >
     Array.prototype.lastIndexOf - element to be retrieved is own
     accessor property without a get function that overrides an
     inherited accessor property on an Array-like object
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var obj = { length: 1 };
-        try {
+
             Object.defineProperty(Object.prototype, "0", {
                 get: function () {
                     return 20;
@@ -25,9 +22,5 @@ function testcase() {
                 configurable: true
             });
 
-            return obj.hasOwnProperty(0) && 0 === Array.prototype.lastIndexOf.call(obj, undefined);
-        } finally {
-            delete Object.prototype[0];
-        }
-    }
-runTestCase(testcase);
+assert(obj.hasOwnProperty(0), 'obj.hasOwnProperty(0) !== true');
+assert.sameValue(Array.prototype.lastIndexOf.call(obj, undefined), 0, 'Array.prototype.lastIndexOf.call(obj, undefined)');
diff --git a/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-8-b-i-20.js b/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-8-b-i-20.js
index f11603bc842d38d050f453f5cc2a6a8d204547a5..779199dbec28d7040f8a9276064f6e11a94b5e16 100644
--- a/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-8-b-i-20.js
+++ b/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-8-b-i-20.js
@@ -7,13 +7,10 @@ description: >
     Array.prototype.lastIndexOf - element to be retrieved is an own
     accessor property without a get function that overrides an
     inherited accessor property on an Array
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var arr = [, 1];
-        try {
+
             Object.defineProperty(Array.prototype, "0", {
                 get: function () {
                     return 100;
@@ -25,9 +22,5 @@ function testcase() {
                 configurable: true
             });
 
-            return arr.hasOwnProperty(0) && arr.lastIndexOf(undefined) === 0;
-        } finally {
-            delete Array.prototype[0];
-        }
-    }
-runTestCase(testcase);
+assert(arr.hasOwnProperty(0), 'arr.hasOwnProperty(0) !== true');
+assert.sameValue(arr.lastIndexOf(undefined), 0, 'arr.lastIndexOf(undefined)');
diff --git a/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-8-b-i-21.js b/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-8-b-i-21.js
index 5388971f44839fed826dd352ffa4873ce76d3f92..b3a5e120a77cd404ad8231dfbf7c2f6ecc53a24d 100644
--- a/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-8-b-i-21.js
+++ b/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-8-b-i-21.js
@@ -6,18 +6,11 @@ es5id: 15.4.4.15-8-b-i-21
 description: >
     Array.prototype.lastIndexOf - element to be retrieved is inherited
     accessor property without a get function on an Array
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-        try {
             Object.defineProperty(Array.prototype, "0", {
                 set: function () { },
                 configurable: true
             });
-            return [, ].lastIndexOf(undefined) === 0;
-        } finally {
-            delete Array.prototype[0];
-        }
-    }
-runTestCase(testcase);
+
+assert.sameValue([, ].lastIndexOf(undefined), 0, '[, ].lastIndexOf(undefined)');
diff --git a/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-8-b-i-22.js b/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-8-b-i-22.js
index ba1d369b6360157da67bdec423ea9f2743cfc160..0387717f9df860a2bf6283c594654770f0c8ca6b 100644
--- a/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-8-b-i-22.js
+++ b/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-8-b-i-22.js
@@ -6,19 +6,11 @@ es5id: 15.4.4.15-8-b-i-22
 description: >
     Array.prototype.lastIndexOf - element to be retrieved is inherited
     accessor property without a get function on an Array-like object
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
-        try {
             Object.defineProperty(Object.prototype, "0", {
                 set: function () { },
                 configurable: true
             });
-            return 0 === Array.prototype.lastIndexOf.call({ length: 1 }, undefined);
-        } finally {
-            delete Object.prototype[0];
-        }
-    }
-runTestCase(testcase);
+
+assert.sameValue(Array.prototype.lastIndexOf.call({ length: 1 }, undefined), 0, 'Array.prototype.lastIndexOf.call({ length: 1 }, undefined)');
diff --git a/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-8-b-i-23.js b/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-8-b-i-23.js
index 6e703b419fde8917da8cc8c33b9adbe45fc615d0..1cae882267b942b4e9ed9864e043bbf51739ab03 100644
--- a/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-8-b-i-23.js
+++ b/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-8-b-i-23.js
@@ -4,28 +4,17 @@
 /*---
 es5id: 15.4.4.15-8-b-i-23
 description: Array.prototype.lastIndexOf - This object is the global object
-includes:
-    - runTestCase.js
-    - fnGlobalObject.js
+includes: [fnGlobalObject.js]
 ---*/
 
-function testcase() {
-
         var targetObj = {};
-        try {
+
             var oldLen = fnGlobalObject().length;
             fnGlobalObject()[0] = targetObj;
             fnGlobalObject()[100] = "100";
             fnGlobalObject()[200] = "200";
             fnGlobalObject().length = 200;
-            return 0 === Array.prototype.lastIndexOf.call(fnGlobalObject(), targetObj) &&
-                100 === Array.prototype.lastIndexOf.call(fnGlobalObject(), "100") &&
-                -1 === Array.prototype.lastIndexOf.call(fnGlobalObject(), "200");
-        } finally {
-            delete fnGlobalObject()[0];
-            delete fnGlobalObject()[100];
-            delete fnGlobalObject()[200];
-            fnGlobalObject().length = oldLen;
-        }
-    }
-runTestCase(testcase);
+
+assert.sameValue(Array.prototype.lastIndexOf.call(fnGlobalObject(), targetObj), 0, 'Array.prototype.lastIndexOf.call(fnGlobalObject(), targetObj)');
+assert.sameValue(Array.prototype.lastIndexOf.call(fnGlobalObject(), "100"), 100, 'Array.prototype.lastIndexOf.call(fnGlobalObject(), "100")');
+assert.sameValue(Array.prototype.lastIndexOf.call(fnGlobalObject(), "200"), -1, 'Array.prototype.lastIndexOf.call(fnGlobalObject(), "200")');
diff --git a/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-8-b-i-3.js b/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-8-b-i-3.js
index 1c689109155ce845de2e8fc24fe463c18c8a0f9e..9409d4a82c8b172da3688cccb134fd6cd2a1767a 100644
--- a/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-8-b-i-3.js
+++ b/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-8-b-i-3.js
@@ -6,15 +6,8 @@ es5id: 15.4.4.15-8-b-i-3
 description: >
     Array.prototype.lastIndexOf - element to be retrieved is own data
     property that overrides an inherited data property on an Array
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-        try {
             Array.prototype[0] = Object;
-            return [Object.prototype].lastIndexOf(Object.prototype) === 0;
-        } finally {
-            delete Array.prototype[0];
-        }
-    }
-runTestCase(testcase);
+
+assert.sameValue([Object.prototype].lastIndexOf(Object.prototype), 0, '[Object.prototype].lastIndexOf(Object.prototype)');
diff --git a/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-8-b-i-4.js b/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-8-b-i-4.js
index 2bd1212e76e3d880d2cd1adb1e93d2c5fdd4b155..4b1e8873b162f52e38b2631383be67b33c49dd59 100644
--- a/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-8-b-i-4.js
+++ b/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-8-b-i-4.js
@@ -7,16 +7,8 @@ description: >
     Array.prototype.lastIndexOf - element to be retrieved is own data
     property that overrides an inherited data property on an
     Array-like object
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
-        try {
             Object.prototype[0] = false;
-            return 0 === Array.prototype.lastIndexOf.call({ 0: true, 1: 1, length: 2 }, true);
-        } finally {
-            delete Object.prototype[0];
-        }
-    }
-runTestCase(testcase);
+
+assert.sameValue(Array.prototype.lastIndexOf.call({ 0: true, 1: 1, length: 2 }, true), 0, 'Array.prototype.lastIndexOf.call({ 0: true, 1: 1, length: 2 }, true)');
diff --git a/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-8-b-i-5.js b/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-8-b-i-5.js
index ca9741e2ebff1ea2a36e4c8779aee5675749754c..a03864b3a8d2ad078b54eba3f3fb7bf75350492c 100644
--- a/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-8-b-i-5.js
+++ b/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-8-b-i-5.js
@@ -6,20 +6,13 @@ es5id: 15.4.4.15-8-b-i-5
 description: >
     Array.prototype.lastIndexOf - element to be retrieved is own data
     property that overrides an inherited accessor property on an Array
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-        try {
             Object.defineProperty(Array.prototype, "0", {
                 get: function () {
                     return false;
                 },
                 configurable: true
             });
-            return 0 === [Number].lastIndexOf(Number);
-        } finally {
-            delete Array.prototype[0];
-        }
-    }
-runTestCase(testcase);
+
+assert.sameValue([Number].lastIndexOf(Number), 0, '[Number].lastIndexOf(Number)');
diff --git a/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-8-b-i-6.js b/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-8-b-i-6.js
index e5a16ce6fcd53c7eacbd928ce37b0e14cade90f9..112b55bc531a5f161d9e8a351a4e401198cee9ec 100644
--- a/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-8-b-i-6.js
+++ b/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-8-b-i-6.js
@@ -7,21 +7,13 @@ description: >
     Array.prototype.lastIndexOf - element to be retrieved is own data
     property that overrides an inherited accessor property on an
     Array-like object
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
-        try {
             Object.defineProperty(Object.prototype, "0", {
                 get: function () {
                     return false;
                 },
                 configurable: true
             });
-            return 0 === Array.prototype.lastIndexOf.call({ 0: true, 1: 1, length: 2 }, true);
-        } finally {
-            delete Object.prototype[0];
-        }
-    }
-runTestCase(testcase);
+
+assert.sameValue(Array.prototype.lastIndexOf.call({ 0: true, 1: 1, length: 2 }, true), 0, 'Array.prototype.lastIndexOf.call({ 0: true, 1: 1, length: 2 }, true)');
diff --git a/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-8-b-i-7.js b/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-8-b-i-7.js
index 491783e0df1f5afe1add2c67df0108dfe7a32d78..91db94835877c03d36f85f45452d1cfb49fa070f 100644
--- a/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-8-b-i-7.js
+++ b/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-8-b-i-7.js
@@ -6,22 +6,12 @@ es5id: 15.4.4.15-8-b-i-7
 description: >
     Array.prototype.lastIndexOf - element to be retrieved is inherited
     data property on an Array
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
-        try {
             Array.prototype[0] = true;
             Array.prototype[1] = false;
             Array.prototype[2] = "true";
-            return 0 === [, , , ].lastIndexOf(true) &&
-                1 === [, , , ].lastIndexOf(false) &&
-                2 === [, , , ].lastIndexOf("true");
-        } finally {
-            delete Array.prototype[0];
-            delete Array.prototype[1];
-            delete Array.prototype[2];
-        }
-    }
-runTestCase(testcase);
+
+assert.sameValue([, , , ].lastIndexOf(true), 0, '[, , , ].lastIndexOf(true)');
+assert.sameValue([, , , ].lastIndexOf(false), 1, '[, , , ].lastIndexOf(false)');
+assert.sameValue([, , , ].lastIndexOf("true"), 2, '[, , , ].lastIndexOf("true")');
diff --git a/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-8-b-i-8.js b/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-8-b-i-8.js
index 46dee4a0228f0ac0def3a9ec43b5c7bf89d0625a..7bb0a3e3d031aa929ec5b75e9ec9ce0639cab5ca 100644
--- a/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-8-b-i-8.js
+++ b/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-8-b-i-8.js
@@ -6,22 +6,12 @@ es5id: 15.4.4.15-8-b-i-8
 description: >
     Array.prototype.lastIndexOf - element to be retrieved is inherited
     data property on an Array-like object
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
-        try {
             Object.prototype[0] = true;
             Object.prototype[1] = false;
             Object.prototype[2] = "true";
-            return 0 === Array.prototype.lastIndexOf.call({ length: 3 }, true) &&
-                1 === Array.prototype.lastIndexOf.call({ length: 3 }, false) &&
-                2 === Array.prototype.lastIndexOf.call({ length: 3 }, "true");
-        } finally {
-            delete Object.prototype[0];
-            delete Object.prototype[1];
-            delete Object.prototype[2];
-        }
-    }
-runTestCase(testcase);
+
+assert.sameValue(Array.prototype.lastIndexOf.call({ length: 3 }, true), 0, 'Array.prototype.lastIndexOf.call({ length: 3 }, true)');
+assert.sameValue(Array.prototype.lastIndexOf.call({ length: 3 }, false), 1, 'Array.prototype.lastIndexOf.call({ length: 3 }, false)');
+assert.sameValue(Array.prototype.lastIndexOf.call({ length: 3 }, "true"), 2, 'Array.prototype.lastIndexOf.call({ length: 3 }, "true")');
diff --git a/test/built-ins/Array/prototype/map/15.4.4.19-1-10.js b/test/built-ins/Array/prototype/map/15.4.4.19-1-10.js
index 41e50d3f1a3cf8d2af9a2d6a9b462042a0243568..df6724e5e282ee65470776f3eb08c0d0a3750602 100644
--- a/test/built-ins/Array/prototype/map/15.4.4.19-1-10.js
+++ b/test/built-ins/Array/prototype/map/15.4.4.19-1-10.js
@@ -4,22 +4,14 @@
 /*---
 es5id: 15.4.4.19-1-10
 description: Array.prototype.map - applied to the Math object
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         function callbackfn(val, idx, obj) {
             return ('[object Math]' === Object.prototype.toString.call(obj));
         }
-       
-        try {
+
             Math.length = 1;
             Math[0] = 1;
             var testResult = Array.prototype.map.call(Math, callbackfn);
-            return testResult[0] === true;
-        } finally {
-            delete Math[0];
-            delete Math.length;
-        }
-    }
-runTestCase(testcase);
+
+assert.sameValue(testResult[0], true, 'testResult[0]');
diff --git a/test/built-ins/Array/prototype/map/15.4.4.19-1-13.js b/test/built-ins/Array/prototype/map/15.4.4.19-1-13.js
index 7fb75ac180bd135c30a7fa09095a33a8101d4372..b346c70694d8d2d285132f29f3ce5e44115e00af 100644
--- a/test/built-ins/Array/prototype/map/15.4.4.19-1-13.js
+++ b/test/built-ins/Array/prototype/map/15.4.4.19-1-13.js
@@ -4,22 +4,14 @@
 /*---
 es5id: 15.4.4.19-1-13
 description: Array.prototype.map - applied to the JSON object
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         function callbackfn(val, idx, obj) {
             return ('[object JSON]' === Object.prototype.toString.call(obj));
         }
 
-        try {
             JSON.length = 1;
             JSON[0] = 1;
             var testResult = Array.prototype.map.call(JSON, callbackfn);
-            return testResult[0] === true;
-        } finally {
-            delete JSON.length;
-            delete JSON[0];
-        }
-    }
-runTestCase(testcase);
+
+assert.sameValue(testResult[0], true, 'testResult[0]');
diff --git a/test/built-ins/Array/prototype/map/15.4.4.19-1-3.js b/test/built-ins/Array/prototype/map/15.4.4.19-1-3.js
index 6f8186e3e53d3cfc00ad5cd745db841804e66d93..cf445ae5a86e5e05e9508361e4f1d71d1d2278b9 100644
--- a/test/built-ins/Array/prototype/map/15.4.4.19-1-3.js
+++ b/test/built-ins/Array/prototype/map/15.4.4.19-1-3.js
@@ -4,24 +4,15 @@
 /*---
 es5id: 15.4.4.19-1-3
 description: Array.prototype.map - applied to boolean primitive
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         function callbackfn(val, idx, obj) {
             return obj instanceof Boolean;
         }
 
-        try {
             Boolean.prototype[0] = true;
             Boolean.prototype.length = 1;
 
             var testResult = Array.prototype.map.call(false, callbackfn);
-            return testResult[0] === true;
-        } finally {
-            delete Boolean.prototype[0];
-            delete Boolean.prototype.length;
-        }
-    }
-runTestCase(testcase);
+
+assert.sameValue(testResult[0], true, 'testResult[0]');
diff --git a/test/built-ins/Array/prototype/map/15.4.4.19-1-5.js b/test/built-ins/Array/prototype/map/15.4.4.19-1-5.js
index 3902cede49b184a443fd0757e4d63459bbbc36ab..42edb09b81fe31b1b739fb53a70cad38b94d56f0 100644
--- a/test/built-ins/Array/prototype/map/15.4.4.19-1-5.js
+++ b/test/built-ins/Array/prototype/map/15.4.4.19-1-5.js
@@ -4,23 +4,15 @@
 /*---
 es5id: 15.4.4.19-1-5
 description: Array.prototype.map - applied to number primitive
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         function callbackfn(val, idx, obj) {
             return obj instanceof Number;
         }
 
-        try {
             Number.prototype[0] = 1;
             Number.prototype.length = 1;
 
             var testResult = Array.prototype.map.call(2.5, callbackfn);
-            return testResult[0] === true;
-        } finally {
-            delete Number.prototype[0];
-            delete Number.prototype.length;
-        }
-    }
-runTestCase(testcase);
+
+assert.sameValue(testResult[0], true, 'testResult[0]');
diff --git a/test/built-ins/Array/prototype/map/15.4.4.19-2-12.js b/test/built-ins/Array/prototype/map/15.4.4.19-2-12.js
index 12897a9d4a1528a2e42b84348e1c276e25e8f2b3..10d6cd990431b2b87605c6694d4a840185398e34 100644
--- a/test/built-ins/Array/prototype/map/15.4.4.19-2-12.js
+++ b/test/built-ins/Array/prototype/map/15.4.4.19-2-12.js
@@ -7,15 +7,12 @@ description: >
     Array.prototype.map - applied to the Array-like object when
     'length' is own accessor property without a get function that
     overrides an inherited accessor property
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         function callbackfn(val, idx, obj) {
             return val > 10;
         }
 
-        try {
             Object.defineProperty(Object.prototype, "length", {
                 get: function () {
                     return 2;
@@ -30,9 +27,5 @@ function testcase() {
             });
 
             var testResult = Array.prototype.map.call(obj, callbackfn);
-            return testResult.length === 0;
-        } finally {
-            delete Object.prototype.length;
-        }
-    }
-runTestCase(testcase);
+
+assert.sameValue(testResult.length, 0, 'testResult.length');
diff --git a/test/built-ins/Array/prototype/map/15.4.4.19-2-15.js b/test/built-ins/Array/prototype/map/15.4.4.19-2-15.js
index 3c5f2e419229207aebdf8400ed9e13268f376eaa..96ad9dc0d879e59301c51dbc181f54c4937782e8 100644
--- a/test/built-ins/Array/prototype/map/15.4.4.19-2-15.js
+++ b/test/built-ins/Array/prototype/map/15.4.4.19-2-15.js
@@ -6,29 +6,18 @@ es5id: 15.4.4.19-2-15
 description: >
     Array.prototype.map - when 'length' is property of the global
     object
-includes:
-    - runTestCase.js
-    - fnGlobalObject.js
+includes: [fnGlobalObject.js]
 ---*/
 
-function testcase() {
         function callbackfn(val, idx, obj) {
             return val > 10;
         }
 
-        try {
             var oldLen = fnGlobalObject().length;
             fnGlobalObject()[0] = 12;
             fnGlobalObject()[1] = 11;
             fnGlobalObject()[2] = 9;
             fnGlobalObject().length = 2;
             var testResult = Array.prototype.map.call(fnGlobalObject(), callbackfn);
-            return testResult.length === 2;
-        } finally {
-            delete fnGlobalObject()[0];
-            delete fnGlobalObject()[1];
-            delete fnGlobalObject()[2];
-            fnGlobalObject().length = oldLen;
-        }
-    }
-runTestCase(testcase);
+
+assert.sameValue(testResult.length, 2, 'testResult.length');
diff --git a/test/built-ins/Array/prototype/map/15.4.4.19-2-18.js b/test/built-ins/Array/prototype/map/15.4.4.19-2-18.js
index d0b007728a2594018f8ab5bd9827532d1a4cb15d..9a642eb49aac37a1dd0c30cf306c8c53ad33604e 100644
--- a/test/built-ins/Array/prototype/map/15.4.4.19-2-18.js
+++ b/test/built-ins/Array/prototype/map/15.4.4.19-2-18.js
@@ -6,22 +6,15 @@ es5id: 15.4.4.19-2-18
 description: >
     Array.prototype.map - applied to String object, which implements
     its own property get method
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         function callbackfn(val, idx, obj) {
             return parseInt(val, 10) > 1;
         }
 
         var str = new String("432");
-        try {
+
             String.prototype[3] = "1";
             var testResult = Array.prototype.map.call(str, callbackfn);
 
-            return 3 === testResult.length;
-        } finally {
-            delete String.prototype[3];
-        }
-    }
-runTestCase(testcase);
+assert.sameValue(testResult.length, 3, 'testResult.length');
diff --git a/test/built-ins/Array/prototype/map/15.4.4.19-2-4.js b/test/built-ins/Array/prototype/map/15.4.4.19-2-4.js
index 380a48157f05f8b38355062f8e063bb2ec6cdd31..fb092803309530698a4384e49431c93237c2eb91 100644
--- a/test/built-ins/Array/prototype/map/15.4.4.19-2-4.js
+++ b/test/built-ins/Array/prototype/map/15.4.4.19-2-4.js
@@ -6,21 +6,15 @@ es5id: 15.4.4.19-2-4
 description: >
     Array.prototype.map - when 'length' is own data property that
     overrides an inherited data property on an Array
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         function callbackfn(val, idx, obj) {
             return val > 10;
         }
         var arrProtoLen;
-        try {
+
             arrProtoLen = Array.prototype.length;
             Array.prototype.length = 0;
             var testResult = [12, 11].map(callbackfn);
-            return testResult.length === 2;
-        } finally {
-            Array.prototype.length = arrProtoLen;
-        }
-    }
-runTestCase(testcase);
+
+assert.sameValue(testResult.length, 2, 'testResult.length');
diff --git a/test/built-ins/Array/prototype/map/15.4.4.19-5-1.js b/test/built-ins/Array/prototype/map/15.4.4.19-5-1.js
index 348844e732f2a6c806841e1df272ad2b55d971de..8ecad2ed006fd56646655786658c47022c4eb281 100644
--- a/test/built-ins/Array/prototype/map/15.4.4.19-5-1.js
+++ b/test/built-ins/Array/prototype/map/15.4.4.19-5-1.js
@@ -5,14 +5,12 @@
 es5id: 15.4.4.19-5-1
 description: Array.prototype.map - thisArg not passed
 flags: [noStrict]
-includes:
-    - runTestCase.js
-    - fnGlobalObject.js
+includes: [fnGlobalObject.js]
 ---*/
 
-function testcase() {
-  try {
     fnGlobalObject()._15_4_4_19_5_1 = true;
+
+(function() {
     var _15_4_4_19_5_1 = false;
   
     function callbackfn(val, idx, obj) {
@@ -20,13 +18,7 @@ function testcase() {
     }
     var srcArr = [1];
     var resArr = srcArr.map(callbackfn);
-    if( resArr[0] === true)
-      return true;    
-	
-	return false;
-  }
-  finally {
-	delete fnGlobalObject()._15_4_4_19_5_1;
-  }  
- }
-runTestCase(testcase);
+
+assert.sameValue(resArr[0], true, 'resArr[0]');
+
+})();
diff --git a/test/built-ins/Array/prototype/map/15.4.4.19-8-b-10.js b/test/built-ins/Array/prototype/map/15.4.4.19-8-b-10.js
index 878b638347a89346f68c7c962ac15d5e2af9b4b5..e89ff27c09576e422d7c601acf193c91573d1fa4 100644
--- a/test/built-ins/Array/prototype/map/15.4.4.19-8-b-10.js
+++ b/test/built-ins/Array/prototype/map/15.4.4.19-8-b-10.js
@@ -6,10 +6,8 @@ es5id: 15.4.4.19-8-b-10
 description: >
     Array.prototype.map - deleting property of prototype causes
     prototype index property not to be visited on an Array-like Object
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         function callbackfn(val, idx, obj) {
             return idx === 1 && typeof val === "undefined";
         }
@@ -23,12 +21,8 @@ function testcase() {
             configurable: true
         });
 
-        try {
             Object.prototype[1] = 1;
             var testResult = Array.prototype.map.call(obj, callbackfn);
-            return testResult.length === 20 && typeof testResult[1] === "undefined";
-        } finally {
-            delete Object.prototype[1];
-        }
-    }
-runTestCase(testcase);
+
+assert.sameValue(testResult.length, 20, 'testResult.length');
+assert.sameValue(typeof testResult[1], "undefined", 'typeof testResult[1]');
diff --git a/test/built-ins/Array/prototype/map/15.4.4.19-8-b-11.js b/test/built-ins/Array/prototype/map/15.4.4.19-8-b-11.js
index a3642aa3a487cb17b8f44776572ed0edf04081c6..f03c01e7f372a53787463dff1a9e1a6e80d2ff54 100644
--- a/test/built-ins/Array/prototype/map/15.4.4.19-8-b-11.js
+++ b/test/built-ins/Array/prototype/map/15.4.4.19-8-b-11.js
@@ -6,10 +6,8 @@ es5id: 15.4.4.19-8-b-11
 description: >
     Array.prototype.map - deleting property of prototype causes
     prototype index property not to be visited on an Array
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         function callbackfn(val, idx, obj) {
             return idx === 1 && typeof val === "undefined";
         }
@@ -23,12 +21,8 @@ function testcase() {
             configurable: true
         });
 
-        try {
             Array.prototype[1] = 1;
             var testResult = arr.map(callbackfn);
-            return testResult.length === 3 && typeof testResult[1] === "undefined";
-        } finally {
-            delete Array.prototype[1];
-        }
-    }
-runTestCase(testcase);
+
+assert.sameValue(testResult.length, 3, 'testResult.length');
+assert.sameValue(typeof testResult[1], "undefined", 'typeof testResult[1]');
diff --git a/test/built-ins/Array/prototype/map/15.4.4.19-8-b-12.js b/test/built-ins/Array/prototype/map/15.4.4.19-8-b-12.js
index 037a444c0ec6d4c822ec16925572eacce21a7428..8d7e2b7c98fe46cc9c9ccacc7f63a71156621bc5 100644
--- a/test/built-ins/Array/prototype/map/15.4.4.19-8-b-12.js
+++ b/test/built-ins/Array/prototype/map/15.4.4.19-8-b-12.js
@@ -7,10 +7,8 @@ description: >
     Array.prototype.map - deleting own property with prototype
     property causes prototype index property to be visited on an
     Array-like object
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         function callbackfn(val, idx, obj) {
             if (idx === 1 && val === 3) {
                 return false;
@@ -28,12 +26,7 @@ function testcase() {
             configurable: true
         });
 
-        try {
             Object.prototype[1] = 3;
             var testResult = Array.prototype.map.call(obj, callbackfn);
-            return testResult[1] === false; 
-        } finally {
-            delete Object.prototype[1];
-        }
-    }
-runTestCase(testcase);
+
+assert.sameValue(testResult[1], false, 'testResult[1]');
diff --git a/test/built-ins/Array/prototype/map/15.4.4.19-8-b-13.js b/test/built-ins/Array/prototype/map/15.4.4.19-8-b-13.js
index bd9e316b3b2bf9987472e7221315151a557f96fc..f0c563a32b2b37de472cfbdcb20f1cd1ceb4f20e 100644
--- a/test/built-ins/Array/prototype/map/15.4.4.19-8-b-13.js
+++ b/test/built-ins/Array/prototype/map/15.4.4.19-8-b-13.js
@@ -6,10 +6,8 @@ es5id: 15.4.4.19-8-b-13
 description: >
     Array.prototype.map - deleting own property with prototype
     property causes prototype index property to be visited on an Array
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         function callbackfn(val, idx, obj) {
             if (idx === 1 && val === 3) {
                 return false;
@@ -27,12 +25,7 @@ function testcase() {
             configurable: true
         });
 
-        try {
             Array.prototype[1] = 3;
             var testResult = arr.map(callbackfn);
-            return testResult[1] === false;
-        } finally {
-            delete Array.prototype[1];
-        }
-    }
-runTestCase(testcase);
+
+assert.sameValue(testResult[1], false, 'testResult[1]');
diff --git a/test/built-ins/Array/prototype/map/15.4.4.19-8-b-15.js b/test/built-ins/Array/prototype/map/15.4.4.19-8-b-15.js
index 2ed922634b9be8b44eb27fc26d648779a44f24f4..6df5013c8d9ca566a0d80cdc13c18098880d5c4c 100644
--- a/test/built-ins/Array/prototype/map/15.4.4.19-8-b-15.js
+++ b/test/built-ins/Array/prototype/map/15.4.4.19-8-b-15.js
@@ -6,10 +6,8 @@ es5id: 15.4.4.19-8-b-15
 description: >
     Array.prototype.map - decreasing length of array with prototype
     property causes prototype index property to be visited
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         function callbackfn(val, idx, obj) {
             if (idx === 2 && val === "prototype") {
                 return false;
@@ -19,7 +17,6 @@ function testcase() {
         }
         var arr = [0, 1, 2];
 
-        try {
             Object.defineProperty(Array.prototype, "2", {
                 get: function () {
                     return "prototype";
@@ -36,9 +33,6 @@ function testcase() {
             });
 
             var testResult = arr.map(callbackfn);
-            return testResult.length === 3 && testResult[2] === false;
-        } finally {
-            delete Array.prototype[2];
-        }
-    }
-runTestCase(testcase);
+
+assert.sameValue(testResult.length, 3, 'testResult.length');
+assert.sameValue(testResult[2], false, 'testResult[2]');
diff --git a/test/built-ins/Array/prototype/map/15.4.4.19-8-b-6.js b/test/built-ins/Array/prototype/map/15.4.4.19-8-b-6.js
index 9a037a13e2550e04147ef5d951471630f3048b28..effed61537659a574523b87cfdd8367e98f3a819 100644
--- a/test/built-ins/Array/prototype/map/15.4.4.19-8-b-6.js
+++ b/test/built-ins/Array/prototype/map/15.4.4.19-8-b-6.js
@@ -6,10 +6,8 @@ es5id: 15.4.4.19-8-b-6
 description: >
     Array.prototype.map - properties can be added to prototype after
     current position are visited on an Array-like object
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         function callbackfn(val, idx, obj) {
             if (idx === 1 && val === 6.99) {
                 return false;
@@ -32,11 +30,7 @@ function testcase() {
             configurable: true
         });
 
-        try {
             var testResult = Array.prototype.map.call(obj, callbackfn);
-            return testResult[0] === true && testResult[1] === false;
-        } finally {
-            delete Object.prototype[1];
-        }
-    }
-runTestCase(testcase);
+
+assert.sameValue(testResult[0], true, 'testResult[0]');
+assert.sameValue(testResult[1], false, 'testResult[1]');
diff --git a/test/built-ins/Array/prototype/map/15.4.4.19-8-b-7.js b/test/built-ins/Array/prototype/map/15.4.4.19-8-b-7.js
index 2ab6eab8e2e2945ae3737550b5781fd337709492..20a2b97cfca8dd661ef508df36d6deb8bcda476f 100644
--- a/test/built-ins/Array/prototype/map/15.4.4.19-8-b-7.js
+++ b/test/built-ins/Array/prototype/map/15.4.4.19-8-b-7.js
@@ -6,10 +6,8 @@ es5id: 15.4.4.19-8-b-7
 description: >
     Array.prototype.map - properties can be added to prototype after
     current position are visited on an Array
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         function callbackfn(val, idx, obj) {
             if (idx === 1 && val === 6.99) {
                 return false;
@@ -19,7 +17,6 @@ function testcase() {
         }
         var arr = [0, , 2];
 
-        try {
             Object.defineProperty(arr, "0", {
                 get: function () {
                     Object.defineProperty(Array.prototype, "1", {
@@ -34,9 +31,6 @@ function testcase() {
             });
 
             var testResult = arr.map(callbackfn);
-            return testResult[0] === true && testResult[1] === false;
-        } finally {
-            delete Array.prototype[1];
-        }
-    }
-runTestCase(testcase);
+
+assert.sameValue(testResult[0], true, 'testResult[0]');
+assert.sameValue(testResult[1], false, 'testResult[1]');
diff --git a/test/built-ins/Array/prototype/map/15.4.4.19-8-c-i-12.js b/test/built-ins/Array/prototype/map/15.4.4.19-8-c-i-12.js
index 2b8436a92e03af4999f4ecb7b954f0e0bb9587b2..962266bb0d26f1dae81725087714782f3387d23b 100644
--- a/test/built-ins/Array/prototype/map/15.4.4.19-8-c-i-12.js
+++ b/test/built-ins/Array/prototype/map/15.4.4.19-8-c-i-12.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.19-8-c-i-12
 description: >
     Array.prototype.map - element to be retrieved is own accessor
     property that overrides an inherited data property on an Array
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var kValue = "abc";
 
         function callbackfn(val, idx, obj) {
@@ -22,7 +19,6 @@ function testcase() {
 
         var arr = [];
 
-        try {
             Array.prototype[0] = 11;
 
             Object.defineProperty(arr, "0", {
@@ -34,11 +30,4 @@ function testcase() {
 
             var testResult = arr.map(callbackfn);
 
-            return testResult[0] === true;
-        } finally {
-            delete Array.prototype[0];
-        }
-
-
-    }
-runTestCase(testcase);
+assert.sameValue(testResult[0], true, 'testResult[0]');
diff --git a/test/built-ins/Array/prototype/map/15.4.4.19-8-c-i-14.js b/test/built-ins/Array/prototype/map/15.4.4.19-8-c-i-14.js
index 2bef80c0e6f0d472a2a70651ed4903ff4c6e12f2..d8b569e66bbb5cd2eb65afe69455d6445c1afb78 100644
--- a/test/built-ins/Array/prototype/map/15.4.4.19-8-c-i-14.js
+++ b/test/built-ins/Array/prototype/map/15.4.4.19-8-c-i-14.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.19-8-c-i-14
 description: >
     Array.prototype.map - element to be retrieved is own accessor
     property that overrides an inherited accessor property on an Array
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var kValue = "abc";
 
         function callbackfn(val, idx, obj) {
@@ -22,7 +19,6 @@ function testcase() {
 
         var arr = [];
 
-        try {
             Object.defineProperty(Array.prototype, "0", {
                 get: function () {
                     return 11;
@@ -39,9 +35,4 @@ function testcase() {
 
             var testResult = arr.map(callbackfn);
 
-            return testResult[0] === true;
-        } finally {
-            delete Array.prototype[0];
-        }
-    }
-runTestCase(testcase);
+assert.sameValue(testResult[0], true, 'testResult[0]');
diff --git a/test/built-ins/Array/prototype/map/15.4.4.19-8-c-i-16.js b/test/built-ins/Array/prototype/map/15.4.4.19-8-c-i-16.js
index e380db295ae0f2b553a88efa4010fef229e572d5..b699886dc23696861664a483554c1d8df48e2935 100644
--- a/test/built-ins/Array/prototype/map/15.4.4.19-8-c-i-16.js
+++ b/test/built-ins/Array/prototype/map/15.4.4.19-8-c-i-16.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.19-8-c-i-16
 description: >
     Array.prototype.map - element to be retrieved is inherited
     accessor property on an Array
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var kValue = "abc";
 
         function callbackfn(val, idx, obj) {
@@ -20,7 +17,6 @@ function testcase() {
             return false;
         }
 
-        try {
             Object.defineProperty(Array.prototype, "0", {
                 get: function () {
                     return kValue;
@@ -30,11 +26,4 @@ function testcase() {
 
             var testResult = [, ].map(callbackfn);
 
-            return testResult[0] === true;
-        } finally {
-            delete Array.prototype[0];
-        }
-
-
-    }
-runTestCase(testcase);
+assert.sameValue(testResult[0], true, 'testResult[0]');
diff --git a/test/built-ins/Array/prototype/map/15.4.4.19-8-c-i-19.js b/test/built-ins/Array/prototype/map/15.4.4.19-8-c-i-19.js
index a402884f23e5abd095453b12bcfafe4593f28434..1efaff41a6ff8cb4d17727a54ee38c99719084da 100644
--- a/test/built-ins/Array/prototype/map/15.4.4.19-8-c-i-19.js
+++ b/test/built-ins/Array/prototype/map/15.4.4.19-8-c-i-19.js
@@ -7,11 +7,8 @@ description: >
     Array.prototype.map - element to be retrieved is own accessor
     property without a get function that overrides an inherited
     accessor property on an Array
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         function callbackfn(val, idx, obj) {
             if (idx === 0) {
                 return typeof val === "undefined";
@@ -21,7 +18,6 @@ function testcase() {
 
         var arr = [];
 
-        try {
             Object.defineProperty(arr, "0", {
                 set: function () { },
                 configurable: true
@@ -36,9 +32,4 @@ function testcase() {
 
             var testResult = arr.map(callbackfn);
 
-            return testResult[0] === true;
-        } finally {
-            delete Array.prototype[0];
-        }
-    }
-runTestCase(testcase);
+assert.sameValue(testResult[0], true, 'testResult[0]');
diff --git a/test/built-ins/Array/prototype/map/15.4.4.19-8-c-i-22.js b/test/built-ins/Array/prototype/map/15.4.4.19-8-c-i-22.js
index 04ae7f3a0d7c90caabab9610f70f29629dc9bc03..2779c6be15058ec6d1c81746471165a98afa0a01 100644
--- a/test/built-ins/Array/prototype/map/15.4.4.19-8-c-i-22.js
+++ b/test/built-ins/Array/prototype/map/15.4.4.19-8-c-i-22.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.19-8-c-i-22
 description: >
     Array.prototype.map - element to be retrieved is inherited
     accessor property without a get function on an Array
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         function callbackfn(val, idx, obj) {
             if (idx === 0) {
                 return typeof val === "undefined";
@@ -18,7 +15,6 @@ function testcase() {
             return false;
         }
 
-        try {
             Object.defineProperty(Array.prototype, "0", {
                 set: function () { },
                 configurable: true
@@ -26,9 +22,4 @@ function testcase() {
 
             var testResult = [,].map(callbackfn);
 
-            return testResult[0] === true;
-        } finally {
-            delete Array.prototype[0];
-        }
-    }
-runTestCase(testcase);
+assert.sameValue(testResult[0], true, 'testResult[0]');
diff --git a/test/built-ins/Array/prototype/map/15.4.4.19-8-c-i-23.js b/test/built-ins/Array/prototype/map/15.4.4.19-8-c-i-23.js
index b1708513bd164aa71a6c2ae58b82eada9f4238aa..d3cb8edddf06ecea6cf6d0afe71145236cab4a7b 100644
--- a/test/built-ins/Array/prototype/map/15.4.4.19-8-c-i-23.js
+++ b/test/built-ins/Array/prototype/map/15.4.4.19-8-c-i-23.js
@@ -6,13 +6,9 @@ es5id: 15.4.4.19-8-c-i-23
 description: >
     Array.prototype.map - This object is the global object which
     contains index property
-includes:
-    - runTestCase.js
-    - fnGlobalObject.js
+includes: [fnGlobalObject.js]
 ---*/
 
-function testcase() {
-
         var kValue = "abc";
 
         function callbackfn(val, idx, obj) {
@@ -22,17 +18,10 @@ function testcase() {
             return false;
         }
 
-        try {
             var oldLen = fnGlobalObject().length;
             fnGlobalObject()[0] = kValue;
             fnGlobalObject().length = 2;
 
             var testResult = Array.prototype.map.call(fnGlobalObject(), callbackfn);
 
-            return testResult[0] === true;
-        } finally {
-            delete fnGlobalObject()[0];
-            fnGlobalObject().length = oldLen;
-        }
-    }
-runTestCase(testcase);
+assert.sameValue(testResult[0], true, 'testResult[0]');
diff --git a/test/built-ins/Array/prototype/map/15.4.4.19-8-c-i-4.js b/test/built-ins/Array/prototype/map/15.4.4.19-8-c-i-4.js
index 2de5c4a29f096799946e8174acdaf9fb20c5131e..495608a4feb31ffad5d4cb08711f35b7624559fd 100644
--- a/test/built-ins/Array/prototype/map/15.4.4.19-8-c-i-4.js
+++ b/test/built-ins/Array/prototype/map/15.4.4.19-8-c-i-4.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.19-8-c-i-4
 description: >
     Array.prototype.map - element to be retrieved is own data property
     that overrides an inherited data property on an Array
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var kValue = "abc";
 
         function callbackfn(val, idx, obj) {
@@ -20,14 +17,8 @@ function testcase() {
             return false;
         }
 
-        try {
             Array.prototype[0] = 11;
 
             var testResult = [kValue].map(callbackfn);
 
-            return testResult[0] === true;
-        } finally {
-            delete Array.prototype[0];
-        }
-    }
-runTestCase(testcase);
+assert.sameValue(testResult[0], true, 'testResult[0]');
diff --git a/test/built-ins/Array/prototype/map/15.4.4.19-8-c-i-6.js b/test/built-ins/Array/prototype/map/15.4.4.19-8-c-i-6.js
index 2063d22b5027599804f0a45211829acc9c60d7ce..69e6c2b1551b197f55fe80cef2473c484f6b5eb4 100644
--- a/test/built-ins/Array/prototype/map/15.4.4.19-8-c-i-6.js
+++ b/test/built-ins/Array/prototype/map/15.4.4.19-8-c-i-6.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.19-8-c-i-6
 description: >
     Array.prototype.map - element to be retrieved is own data property
     that overrides an inherited accessor property on an Array
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var kValue = "abc";
 
         function callbackfn(val, idx, obj) {
@@ -20,7 +17,6 @@ function testcase() {
             return false;
         }
 
-        try {
             Object.defineProperty(Array.prototype, "0", {
                 get: function () {
                     return 9;
@@ -29,9 +25,5 @@ function testcase() {
             });
 
             var testResult = [kValue].map(callbackfn);
-            return testResult[0] === true;
-        } finally {
-            delete Array.prototype[0];
-        }
-    }
-runTestCase(testcase);
+
+assert.sameValue(testResult[0], true, 'testResult[0]');
diff --git a/test/built-ins/Array/prototype/map/15.4.4.19-8-c-i-8.js b/test/built-ins/Array/prototype/map/15.4.4.19-8-c-i-8.js
index c6bb4d070f3816bc0cfbeb5a13c77a0146af8523..7bb2463d4846b136f96fb7c226e61d85da8f2f51 100644
--- a/test/built-ins/Array/prototype/map/15.4.4.19-8-c-i-8.js
+++ b/test/built-ins/Array/prototype/map/15.4.4.19-8-c-i-8.js
@@ -6,10 +6,8 @@ es5id: 15.4.4.19-8-c-i-8
 description: >
     Array.prototype.map - element to be retrieved is inherited data
     property on an Array
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         function callbackfn(val, idx, obj) {
             if (idx === 1) {
                 return val === 13;
@@ -17,14 +15,8 @@ function testcase() {
             return false;
         }
 
-        try {
             Array.prototype[1] = 13;
 
             var newArr = [, , , ].map(callbackfn);
 
-            return newArr[1] === true;
-        } finally {
-            delete Array.prototype[1];
-        }
-    }
-runTestCase(testcase);
+assert.sameValue(newArr[1], true, 'newArr[1]');
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-1-10.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-1-10.js
index 4b83a862e018324024bcd13a699404f101bfe8ba..c4d43ade4e5f9936dec5fe631d15ad22fdef7f9b 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-1-10.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-1-10.js
@@ -4,22 +4,13 @@
 /*---
 es5id: 15.4.4.21-1-10
 description: Array.prototype.reduce applied to the Math object
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         function callbackfn(prevVal, curVal, idx, obj) {
             return ('[object Math]' === Object.prototype.toString.call(obj));
         }
 
-        try {
             Math.length = 1;
             Math[0] = 1;
-            return Array.prototype.reduce.call(Math, callbackfn, 1);
-        } finally {
-            delete Math[0];
-            delete Math.length;
-        }
-    }
-runTestCase(testcase);
+
+assert(Array.prototype.reduce.call(Math, callbackfn, 1), 'Array.prototype.reduce.call(Math, callbackfn, 1) !== true');
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-1-13.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-1-13.js
index 26fb7198529c1e0114218478a8de870302fc0677..f69286416ce61af23d06493e3a50e291bc766172 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-1-13.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-1-13.js
@@ -4,22 +4,13 @@
 /*---
 es5id: 15.4.4.21-1-13
 description: Array.prototype.reduce applied to the JSON object
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         function callbackfn(prevVal, curVal, idx, obj) {
             return ('[object JSON]' === Object.prototype.toString.call(obj));
         }
 
-        try {
             JSON.length = 1;
             JSON[0] = 1;
-            return Array.prototype.reduce.call(JSON, callbackfn, 1);
-        } finally {
-            delete JSON.length;
-            delete JSON[0];
-        }
-    }
-runTestCase(testcase);
+
+assert(Array.prototype.reduce.call(JSON, callbackfn, 1), 'Array.prototype.reduce.call(JSON, callbackfn, 1) !== true');
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-1-3.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-1-3.js
index 41d0f0f70033a88c504b696e3a9fdcbd5c02b680..fc90a041ff60f89c55d462070399af203e79bcec 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-1-3.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-1-3.js
@@ -4,24 +4,13 @@
 /*---
 es5id: 15.4.4.21-1-3
 description: Array.prototype.reduce applied to boolean primitive
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         function callbackfn(prevVal, curVal, idx, obj) {
             return  obj instanceof Boolean;
         }
 
-        try {
             Boolean.prototype[0] = true;
             Boolean.prototype.length = 1;
 
-            return Array.prototype.reduce.call(false, callbackfn, 1);
-
-        } finally {
-            delete Boolean.prototype[0];
-            delete Boolean.prototype.length;
-        }
-    }
-runTestCase(testcase);
+assert(Array.prototype.reduce.call(false, callbackfn, 1), 'Array.prototype.reduce.call(false, callbackfn, 1) !== true');
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-1-5.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-1-5.js
index b4d6a33f60cf9b487ebf3eb7bf55d3f2e9be20a3..b49b2ed6951b0babe00cf2b4d3444a6a1b85de8c 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-1-5.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-1-5.js
@@ -4,22 +4,13 @@
 /*---
 es5id: 15.4.4.21-1-5
 description: Array.prototype.reduce applied to number primitive
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         function callbackfn(prevVal, curVal, idx, obj) {
             return obj instanceof Number;
         }
 
-        try {
             Number.prototype[0] = 1;
             Number.prototype.length = 1;
 
-            return Array.prototype.reduce.call(2.5, callbackfn, 1);
-        } finally {
-            delete Number.prototype[0];
-            delete Number.prototype.length;
-        }
-    }
-runTestCase(testcase);
+assert(Array.prototype.reduce.call(2.5, callbackfn, 1), 'Array.prototype.reduce.call(2.5, callbackfn, 1) !== true');
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-2-12.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-2-12.js
index 3367bd74d7e9669af7cf0050643299f7ff519dec..d4d464b3780f899760e17a47bee60c173049cd08 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-2-12.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-2-12.js
@@ -7,17 +7,13 @@ description: >
     Array.prototype.reduce - 'length' is own accessor property without
     a get function that overrides an inherited accessor property on an
     Array
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var accessed = false;
         function callbackfn(prevVal, curVal, idx, obj) {
             accessed = true;
         }
 
-        try {
             Object.defineProperty(Object.prototype, "length", {
                 get: function () {
                     return 2;
@@ -31,10 +27,5 @@ function testcase() {
                 configurable: true
             });
 
-            return Array.prototype.reduce.call(obj, callbackfn, 1) === 1 && !accessed;
-        } finally {
-            delete Object.prototype.length;
-        }
-
-    }
-runTestCase(testcase);
+assert.sameValue(Array.prototype.reduce.call(obj, callbackfn, 1), 1, 'Array.prototype.reduce.call(obj, callbackfn, 1)');
+assert.sameValue(accessed, false, 'accessed');
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-2-15.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-2-15.js
index a54963224013c8d0e476576b8412b7afcae17521..136c455d5b2dccff91a4b1cbb9c869abcfbf9880 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-2-15.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-2-15.js
@@ -4,29 +4,17 @@
 /*---
 es5id: 15.4.4.21-2-15
 description: Array.prototype.reduce - 'length' is property of the global object
-includes:
-    - runTestCase.js
-    - fnGlobalObject.js
+includes: [fnGlobalObject.js]
 ---*/
 
-function testcase() {
-
         function callbackfn(prevVal, curVal, idx, obj) {
             return (obj.length === 2);
         }
 
-        try {
             var oldLen = fnGlobalObject().length;
             fnGlobalObject()[0] = 12;
             fnGlobalObject()[1] = 11;
             fnGlobalObject()[2] = 9;
             fnGlobalObject().length = 2;
-            return Array.prototype.reduce.call(fnGlobalObject(), callbackfn, 1) === true;
-        } finally {
-            delete fnGlobalObject()[0];
-            delete fnGlobalObject()[1];
-            delete fnGlobalObject()[2];
-            fnGlobalObject().length = oldLen;
-        }
-    }
-runTestCase(testcase);
+
+assert.sameValue(Array.prototype.reduce.call(fnGlobalObject(), callbackfn, 1), true, 'Array.prototype.reduce.call(fnGlobalObject(), callbackfn, 1)');
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-2-4.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-2-4.js
index 65f6ab980d12db5d607a96cf4cdcbcce7a9b2b52..c81d714b76ba833ffeb9b24d55544ff52d18ecf4 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-2-4.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-2-4.js
@@ -6,23 +6,15 @@ es5id: 15.4.4.21-2-4
 description: >
     Array.prototype.reduce - 'length' is own data property that
     overrides an inherited data property on an Array
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var storeProtoLength;
 
         function callbackfn(prevVal, curVal, idx, obj) {
             return (obj.length === 2);
         }
 
-        try {
             storeProtoLength = Array.prototype.length;
             Array.prototype.length = 0;
 
-            return [12, 11].reduce(callbackfn, 1) === true;
-        } finally {
-            Array.prototype.length = storeProtoLength;
-        }
-    }
-runTestCase(testcase);
+assert.sameValue([12, 11].reduce(callbackfn, 1), true, '[12, 11].reduce(callbackfn, 1)');
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-8-b-iii-1-12.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-8-b-iii-1-12.js
index 5a58617869ce6ec4cbf171aed181387fcfcefe40..c424aec7189196ebcfc29b4e9903390a927e7b9c 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-8-b-iii-1-12.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-8-b-iii-1-12.js
@@ -6,10 +6,8 @@ es5id: 15.4.4.21-8-b-iii-1-12
 description: >
     Array.prototype.reduce - element to be retrieved is own accessor
     property that overrides an inherited data property on an Array
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var testResult = false;
 
         function callbackfn(prevVal, curVal, idx, obj) {
@@ -18,7 +16,6 @@ function testcase() {
             }
         }
 
-        try {
             Array.prototype[0] = 0;
             var arr = [, 1, 2];
 
@@ -30,9 +27,5 @@ function testcase() {
             });
 
             arr.reduce(callbackfn);
-            return testResult;
-        } finally {
-            delete Array.prototype[0];
-        }
-    }
-runTestCase(testcase);
+
+assert(testResult, 'testResult !== true');
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-8-b-iii-1-14.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-8-b-iii-1-14.js
index 890abdb073bbd14176f88591b53392cc51943873..d39a7cae8ab413d23985a6ea9cdb5369039c27c2 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-8-b-iii-1-14.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-8-b-iii-1-14.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.21-8-b-iii-1-14
 description: >
     Array.prototype.reduce - element to be retrieved is own accessor
     property that overrides an inherited accessor property on an Array
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var testResult = false;
         function callbackfn(prevVal, curVal, idx, obj) {
             if (idx === 1) {
@@ -18,7 +15,6 @@ function testcase() {
             }
         }
 
-        try {
             Object.defineProperty(Array.prototype, "0", {
                 get: function () {
                     return 0;
@@ -35,9 +31,5 @@ function testcase() {
             });
 
             arr.reduce(callbackfn);
-            return testResult;
-        } finally {
-            delete Array.prototype[0];
-        }
-    }
-runTestCase(testcase);
+
+assert(testResult, 'testResult !== true');
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-8-b-iii-1-16.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-8-b-iii-1-16.js
index ee48f7229d4a4fac641ccc69cf05afe91a0b9b5a..e55a1f28ff0bdeb73ab47ec47e5621ac9462b3a6 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-8-b-iii-1-16.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-8-b-iii-1-16.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.21-8-b-iii-1-16
 description: >
     Array.prototype.reduce - element to be retrieved is inherited
     accessor property on an Array
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var testResult = false;
         function callbackfn(prevVal, curVal, idx, obj) {
             if (idx === 1) {
@@ -18,7 +15,6 @@ function testcase() {
             }
         }
 
-        try {
             Object.defineProperty(Array.prototype, "0", {
                 get: function () {
                     return 0;
@@ -29,9 +25,5 @@ function testcase() {
             var arr = [, 1, 2];
 
             arr.reduce(callbackfn);
-            return testResult;
-        } finally {
-            delete Array.prototype[0];
-        }
-    }
-runTestCase(testcase);
+
+assert(testResult, 'testResult !== true');
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-8-b-iii-1-19.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-8-b-iii-1-19.js
index aa6858ffa66a0febdcf09ea55820f8662d04f7cd..234bc4733e4d03738d6843925dd96aa3f3b4b7f7 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-8-b-iii-1-19.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-8-b-iii-1-19.js
@@ -7,11 +7,8 @@ description: >
     Array.prototype.reduce - element to be retrieved is own accessor
     property without a get function that overrides an inherited
     accessor property on an Array-like object
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var testResult = false;
         function callbackfn(prevVal, curVal, idx, obj) {
             if (idx === 1) {
@@ -19,7 +16,6 @@ function testcase() {
             }
         }
 
-        try {
             Object.prototype[0] = 0;
 
             var obj = { 1: 1, 2: 2, length: 3 };
@@ -30,9 +26,5 @@ function testcase() {
             });
 
             Array.prototype.reduce.call(obj, callbackfn);
-            return testResult;
-        } finally {
-            delete Object.prototype[0];
-        }
-    }
-runTestCase(testcase);
+
+assert(testResult, 'testResult !== true');
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-8-b-iii-1-20.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-8-b-iii-1-20.js
index f277c76876a7fcc24a447fe12d30e5c7b83ca353..da85e960b23455527fae5000f8e248e67174de19 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-8-b-iii-1-20.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-8-b-iii-1-20.js
@@ -7,11 +7,8 @@ description: >
     Array.prototype.reduce - element to be retrieved is own accessor
     property without a get function that overrides an inherited
     accessor property on an Array
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var testResult = false;
         function callbackfn(prevVal, curVal, idx, obj) {
             if (idx === 1) {
@@ -19,7 +16,6 @@ function testcase() {
             }
         }
 
-        try {
             Array.prototype[0] = 0;
             var arr = [, 1, 2];
             Object.defineProperty(arr, "0", {
@@ -28,10 +24,5 @@ function testcase() {
             });
 
             arr.reduce(callbackfn);
-            return testResult;
 
-        } finally {
-            delete Array.prototype[0];
-        }
-    }
-runTestCase(testcase);
+assert(testResult, 'testResult !== true');
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-8-b-iii-1-22.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-8-b-iii-1-22.js
index 06161f964ceb9ac4662f40b6f6f173d4bc1bd734..45a6b6187bd90821e649e67c5610da981e54ace8 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-8-b-iii-1-22.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-8-b-iii-1-22.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.21-8-b-iii-1-22
 description: >
     Array.prototype.reduce - element to be retrieved is inherited
     accessor property without a get function on an Array
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-    
         var testResult = false;
         function callbackfn(prevVal, curVal, idx, obj) {
             if (idx === 1) {
@@ -18,7 +15,6 @@ function testcase() {
             }
         }
 
-        try {
             Object.defineProperty(Array.prototype, "0", {
                 set: function () { },
                 configurable: true
@@ -27,11 +23,5 @@ function testcase() {
             var arr = [, 1, 2];
 
             arr.reduce(callbackfn);
-            return testResult;
 
-        } finally {
-            delete Array.prototype[0];
-        }
-
-    }
-runTestCase(testcase);
+assert(testResult, 'testResult !== true');
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-8-b-iii-1-23.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-8-b-iii-1-23.js
index a7950d53fa45e6f633aabf34dc537f3c1989b908..bd3aee02e113eca2056a29cae1267e304cdb085c 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-8-b-iii-1-23.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-8-b-iii-1-23.js
@@ -6,13 +6,9 @@ es5id: 15.4.4.21-8-b-iii-1-23
 description: >
     Array.prototype.reduce - This object is the global object which
     contains index property
-includes:
-    - runTestCase.js
-    - fnGlobalObject.js
+includes: [fnGlobalObject.js]
 ---*/
 
-function testcase() {
-
         var testResult = false;
         function callbackfn(prevVal, curVal, idx, obj) {
             if (idx === 1) {
@@ -20,7 +16,6 @@ function testcase() {
             }
         }
 
-        try {
             var oldLen = fnGlobalObject().length;
             fnGlobalObject()[0] = 0;
             fnGlobalObject()[1] = 1;
@@ -28,13 +23,5 @@ function testcase() {
             fnGlobalObject().length = 3;
 
             Array.prototype.reduce.call(fnGlobalObject(), callbackfn);
-            return testResult;
 
-        } finally {
-            delete fnGlobalObject()[0];
-            delete fnGlobalObject()[1];
-            delete fnGlobalObject()[2];
-            fnGlobalObject().length = oldLen;
-        }
-    }
-runTestCase(testcase);
+assert(testResult, 'testResult !== true');
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-8-b-iii-1-4.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-8-b-iii-1-4.js
index a7fb1aef7574ca95f4fec75deca94f6990385767..6ae2de2f6322c97a340f6fec35f30c308c07ae99 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-8-b-iii-1-4.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-8-b-iii-1-4.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.21-8-b-iii-1-4
 description: >
     Array.prototype.reduce - element to be retrieved is own data
     property that overrides an inherited data property on an Array
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var testResult = false;
         function callbackfn(prevVal, curVal, idx, obj) {
             if (idx === 1) {
@@ -18,13 +15,7 @@ function testcase() {
             }
         }
 
-        try {
             Array.prototype[0] = "9";
             [0, 1, 2].reduce(callbackfn);
-            return testResult;
 
-        } finally {
-            delete Array.prototype[0];
-        }
-    }
-runTestCase(testcase);
+assert(testResult, 'testResult !== true');
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-8-b-iii-1-6.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-8-b-iii-1-6.js
index 61e59a16f9d7b6bed15322e4e4bb149f6a817d26..d22b5dfcb3982f84c756c66606922b00acfcdfc8 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-8-b-iii-1-6.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-8-b-iii-1-6.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.21-8-b-iii-1-6
 description: >
     Array.prototype.reduce - element to be retrieved is own data
     property that overrides an inherited accessor property on an Array
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var testResult = false;
         function callbackfn(prevVal, curVal, idx, obj) {
             if (idx === 1) {
@@ -18,7 +15,6 @@ function testcase() {
             }
         }
 
-        try {
             Object.defineProperty(Array.prototype, "0", {
                 get: function () {
                     return "5";
@@ -27,9 +23,5 @@ function testcase() {
             });
 
             [0, 1, 2].reduce(callbackfn);
-            return testResult;
-        } finally {
-            delete Array.prototype[0];
-        }
-    }
-runTestCase(testcase);
+
+assert(testResult, 'testResult !== true');
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-8-b-iii-1-8.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-8-b-iii-1-8.js
index f95968531cd00fe7feeb2b5f0ba0d2eddb486339..65385bf3a12b5ff3078f97ada185eb2a262c1fb7 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-8-b-iii-1-8.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-8-b-iii-1-8.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.21-8-b-iii-1-8
 description: >
     Array.prototype.reduce - element to be retrieved is inherited data
     property on an Array
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var testResult = false;
         function callbackfn(prevVal, curVal, idx, obj) {
             if (idx === 1) {
@@ -18,16 +15,9 @@ function testcase() {
             }
         }
 
-        try {
             Array.prototype[0] = 0;
             Array.prototype[1] = 1;
             Array.prototype[2] = 2;
             [, , ,].reduce(callbackfn);
-            return testResult;
-        } finally {
-            delete Array.prototype[0];
-            delete Array.prototype[1];
-            delete Array.prototype[2];
-        }
-    }
-runTestCase(testcase);
+
+assert(testResult, 'testResult !== true');
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-8-c-4.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-8-c-4.js
index d51d654f4c302e03758e2efbf43cc17b0df01bbd..73a14f8160254b646f43f63f578d911dea0b06df 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-8-c-4.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-8-c-4.js
@@ -6,21 +6,13 @@ es5id: 15.4.4.21-8-c-4
 description: >
     Array.prototype.reduce doesn't throw error when array has no own
     properties but prototype contains a single property
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var arr = [, , , ];
 
         try {
             Array.prototype[1] = "prototype";
             arr.reduce(function () { });
-            return true;
-        } catch (ex) {
-            return false;
         } finally {
             delete Array.prototype[1];
         }
-    }
-runTestCase(testcase);
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-9-b-10.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-9-b-10.js
index 364d473a8a262ef056c3db9c8b430a2f6ebdc2ce..94251d584079e9f547f5f7d9c95f38f9ea675592 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-9-b-10.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-9-b-10.js
@@ -7,11 +7,8 @@ description: >
     Array.prototype.reduce - deleting property of prototype in step 8
     causes deleted index property not to be visited on an Array-like
     Object
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var accessed = false;
         var testResult = true;
 
@@ -32,12 +29,8 @@ function testcase() {
             configurable: true
         });
 
-        try {
             Object.prototype[3] = 1;
             Array.prototype.reduce.call(obj, callbackfn);
-            return testResult && accessed;
-        } finally {
-            delete Object.prototype[3];
-        }
-    }
-runTestCase(testcase);
+
+assert(testResult, 'testResult !== true');
+assert(accessed, 'accessed !== true');
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-9-b-11.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-9-b-11.js
index 2e6175b8438a7dd49d898e5f24edcea28a2733e7..571998554b01e84a97383b9c14ff960e729303cf 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-9-b-11.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-9-b-11.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.21-9-b-11
 description: >
     Array.prototype.reduce - deleting property of prototype in step 8
     causes deleted index property not to be visited on an Array
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var accessed = false;
         var testResult = true;
 
@@ -30,12 +27,8 @@ function testcase() {
             configurable: true
         });
 
-        try {
             Array.prototype[1] = 1;
             arr.reduce(callbackfn);
-            return testResult && accessed;
-        } finally {
-            delete Array.prototype[1];
-        }
-    }
-runTestCase(testcase);
+
+assert(testResult, 'testResult !== true');
+assert(accessed, 'accessed !== true');
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-9-b-12.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-9-b-12.js
index 00a571679a476465ef780d16611e00985869e9c6..518230d3840d218c235fdbcc73b36d8f5eddb35f 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-9-b-12.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-9-b-12.js
@@ -7,11 +7,8 @@ description: >
     Array.prototype.reduce - deleting own property with prototype
     property in step 8 causes prototype index property to be visited
     on an Array-like object
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var testResult = false;
 
         function callbackfn(accum, val, idx, obj) {
@@ -30,12 +27,7 @@ function testcase() {
             configurable: true
         });
 
-        try {
             Object.prototype[1] = 1;
             Array.prototype.reduce.call(obj, callbackfn);
-            return testResult;
-        } finally {
-            delete Object.prototype[1];
-        }
-    }
-runTestCase(testcase);
+
+assert(testResult, 'testResult !== true');
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-9-b-13.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-9-b-13.js
index 2a87c6cbaa2567717a16313cb0deb0b69e240368..0ac438a30548f90254087faf3e9c9d5769b5c5e1 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-9-b-13.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-9-b-13.js
@@ -7,11 +7,8 @@ description: >
     Array.prototype.reduce - deleting own property with prototype
     property in step 8 causes prototype index property to be visited
     on an Array
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var testResult = false;
 
         function callbackfn(accum, val, idx, obj) {
@@ -29,12 +26,7 @@ function testcase() {
             configurable: true
         });
 
-        try {
             Array.prototype[1] = 1;
             arr.reduce(callbackfn);
-            return testResult;
-        } finally {
-            delete Array.prototype[1];
-        }
-    }
-runTestCase(testcase);
+
+assert(testResult, 'testResult !== true');
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-9-b-15.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-9-b-15.js
index d617adae4cdcf5401926842b933aa97e67d2a630..cb33ae3b1eb75edcc9360e98ef0a4fb4beafb202 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-9-b-15.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-9-b-15.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.21-9-b-15
 description: >
     Array.prototype.reduce - decreasing length of array with prototype
     property in step 8 causes prototype index property to be visited
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var testResult = false;
 
         function callbackfn(accum, val, idx, obj) {
@@ -20,7 +17,6 @@ function testcase() {
         }
         var arr = [0, 1, 2, 3];
 
-        try {
             Object.defineProperty(Array.prototype, "2", {
                 get: function () {
                     return "prototype";
@@ -38,9 +34,4 @@ function testcase() {
 
             arr.reduce(callbackfn);
 
-            return testResult;
-        } finally {
-            delete Array.prototype[2];
-        }
-    }
-runTestCase(testcase);
+assert(testResult, 'testResult !== true');
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-9-b-19.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-9-b-19.js
index b5ce1f27658b14d60bfc2cfbfddcf2abd0f3498a..25d1b31728245c413b7c501be3b7d2bcb4f74bc9 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-9-b-19.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-9-b-19.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.21-9-b-19
 description: >
     Array.prototype.reduce - properties added to prototype are visited
     on an Array-like object
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var testResult = false;
 
         function callbackfn(accum, val, idx, obj) {
@@ -34,11 +31,6 @@ function testcase() {
             configurable: true
         });
 
-        try {
             Array.prototype.reduce.call(obj, callbackfn, "initialValue");
-            return testResult;
-        } finally {
-            delete Object.prototype[1];
-        }
-    }
-runTestCase(testcase);
+
+assert(testResult, 'testResult !== true');
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-9-b-20.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-9-b-20.js
index 70a64eb374e18878c78986413f7b305176a43141..16ee69830ef10bc85b194032625c5f7957fbffa4 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-9-b-20.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-9-b-20.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.21-9-b-20
 description: >
     Array.prototype.reduce - properties can be added to prototype are
     visited on an Array
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var testResult = false;
 
         function callbackfn(accum, val, idx, obj) {
@@ -34,11 +31,6 @@ function testcase() {
             configurable: true
         });
 
-        try {
             arr.reduce(callbackfn, "initialValue");
-            return testResult;
-        } finally {
-            delete Array.prototype[1];
-        }
-    }
-runTestCase(testcase);
+
+assert(testResult, 'testResult !== true');
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-9-b-23.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-9-b-23.js
index 35fe6ee2231f6818084d5035e790908114b786c9..817c69c8802605d9b70852f01ca9d0e883117d82 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-9-b-23.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-9-b-23.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.21-9-b-23
 description: >
     Array.prototype.reduce - deleting property of prototype causes
     deleted index property not to be visited on an Array-like Object
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var accessed = false;
         var testResult = true;
 
@@ -31,12 +28,8 @@ function testcase() {
             configurable: true
         });
 
-        try {
             Object.prototype[3] = 1;
             Array.prototype.reduce.call(obj, callbackfn, "initialValue");
-            return testResult && accessed;
-        } finally {
-            delete Object.prototype[3];
-        }
-    }
-runTestCase(testcase);
+
+assert(testResult, 'testResult !== true');
+assert(accessed, 'accessed !== true');
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-9-b-24.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-9-b-24.js
index 93f9208c90635322e34d6ef444229b8cebf518fe..177cac34f55c732d242c5f993daa85b2b26c13e3 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-9-b-24.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-9-b-24.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.21-9-b-24
 description: >
     Array.prototype.reduce - deleting property of prototype causes
     deleted index property not to be visited on an Array
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var accessed = false;
         var testResult = true;
 
@@ -30,12 +27,8 @@ function testcase() {
             configurable: true
         });
 
-        try {
             Array.prototype[1] = 1;
             arr.reduce(callbackfn, "initialValue");
-            return testResult && accessed;
-        } finally {
-            delete Array.prototype[1];
-        }
-    }
-runTestCase(testcase);
+
+assert(testResult, 'testResult !== true');
+assert(accessed, 'accessed !== true');
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-9-b-25.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-9-b-25.js
index cfc7ffdb5c49b93c9e0687cb7a5ae016a4794c33..0298579da37373c3fa4722a9f55f7b377176c08b 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-9-b-25.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-9-b-25.js
@@ -7,11 +7,8 @@ description: >
     Array.prototype.reduce - deleting own property with prototype
     property causes prototype index property to be visited on an
     Array-like object
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var testResult = false;
 
         function callbackfn(accum, val, idx, obj) {
@@ -30,12 +27,7 @@ function testcase() {
             configurable: true
         });
 
-        try {
             Object.prototype[1] = 1;
             Array.prototype.reduce.call(obj, callbackfn, "initialValue");
-            return testResult;
-        } finally {
-            delete Object.prototype[1];
-        }
-    }
-runTestCase(testcase);
+
+assert(testResult, 'testResult !== true');
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-9-b-26.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-9-b-26.js
index f27c604230ae09d6cf0ed3063823903f254b3a5f..46b7258488b7c1a05f9714ed921b506fe40851a8 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-9-b-26.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-9-b-26.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.21-9-b-26
 description: >
     Array.prototype.reduce - deleting own property with prototype
     property causes prototype index property to be visited on an Array
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var testResult = false;
 
         function callbackfn(accum, val, idx, obj) {
@@ -28,12 +25,7 @@ function testcase() {
             configurable: true
         });
 
-        try {
             Array.prototype[1] = 1;
             arr.reduce(callbackfn, "initialValue");
-            return testResult;
-        } finally {
-            delete Array.prototype[1];
-        }
-    }
-runTestCase(testcase);
+
+assert(testResult, 'testResult !== true');
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-9-b-28.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-9-b-28.js
index 8bbc583a7758ef6a9d8eb8da80a4ce73313f6ee8..a44efd94acca48f89263eb8756781b1ae8ac6773 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-9-b-28.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-9-b-28.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.21-9-b-28
 description: >
     Array.prototype.reduce - decreasing length of array with prototype
     property causes prototype index property to be visited
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var testResult = false;
 
         function callbackfn(accum, val, idx, obj) {
@@ -20,7 +17,6 @@ function testcase() {
         }
         var arr = [0, 1, 2, 3];
 
-        try {
             Object.defineProperty(Array.prototype, "2", {
                 get: function () {
                     return "prototype";
@@ -38,9 +34,4 @@ function testcase() {
 
             arr.reduce(callbackfn, "initialValue");
 
-            return testResult;
-        } finally {
-            delete Array.prototype[2];
-        }
-    }
-runTestCase(testcase);
+assert(testResult, 'testResult !== true');
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-9-b-6.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-9-b-6.js
index d2c78e07ad069e51048c39f0e6e03147be65dd88..13789a7195da1f5032e79444b5888aeeb0b6cbbc 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-9-b-6.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-9-b-6.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.21-9-b-6
 description: >
     Array.prototype.reduce - properties added to prototype in step 8
     are visited on an Array-like object
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var testResult = false;
 
         function callbackfn(accum, val, idx, obj) {
@@ -34,11 +31,6 @@ function testcase() {
             configurable: true
         });
 
-        try {
             Array.prototype.reduce.call(obj, callbackfn);
-            return testResult;
-        } finally {
-            delete Object.prototype[1];
-        }
-    }
-runTestCase(testcase);
+
+assert(testResult, 'testResult !== true');
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-9-b-7.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-9-b-7.js
index 919a860f6d041bd7be2e4df6630adadbdad9dc32..b0ec14398744e3189047627588b84523aba956ba 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-9-b-7.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-9-b-7.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.21-9-b-7
 description: >
     Array.prototype.reduce - properties added to prototype in step 8
     are visited on an Array
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var testResult = false;
 
         function callbackfn(accum, val, idx, obj) {
@@ -34,11 +31,6 @@ function testcase() {
             configurable: true
         });
 
-        try {
             arr.reduce(callbackfn);
-            return testResult;
-        } finally {
-            delete Array.prototype[1];
-        }
-    }
-runTestCase(testcase);
+
+assert(testResult, 'testResult !== true');
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-i-12.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-i-12.js
index f1ef648573e682ffb15310965604f9c5bd0d9475..db642de13cb97d8ed8bc68d68d03bb1f37c39cf1 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-i-12.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-i-12.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.21-9-c-i-12
 description: >
     Array.prototype.reduce - element to be retrieved is own accessor
     property that overrides an inherited data property on an Array
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var testResult = false;
         var initialValue = 0;
         function callbackfn(prevVal, curVal, idx, obj) {
@@ -19,7 +16,6 @@ function testcase() {
             }
         }
 
-        try {
             Array.prototype[1] = 1;
             var arr = [0, ,2];
 
@@ -31,10 +27,5 @@ function testcase() {
             });
 
             arr.reduce(callbackfn, initialValue);
-            return testResult;
 
-        } finally {
-            delete Array.prototype[1];
-        }
-    }
-runTestCase(testcase);
+assert(testResult, 'testResult !== true');
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-i-14.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-i-14.js
index adf87d01d92ae0e52436072a480cd41966eb2e42..3067ab15e447eafc7703c68ebe6014e9eaed6450 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-i-14.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-i-14.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.21-9-c-i-14
 description: >
     Array.prototype.reduce - element to be retrieved is own accessor
     property that overrides an inherited accessor property on an Array
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var testResult = false;
         var initialValue = 0;
         function callbackfn(prevVal, curVal, idx, obj) {
@@ -19,7 +16,6 @@ function testcase() {
             }
         }
 
-        try {
             Object.defineProperty(Array.prototype, "1", {
                 get: function () {
                     return 1;
@@ -36,10 +32,5 @@ function testcase() {
                 configurable: true
             });
             arr.reduce(callbackfn, initialValue);
-            return testResult;
 
-        } finally {
-            delete Array.prototype[1];
-        }
-    }
-runTestCase(testcase);
+assert(testResult, 'testResult !== true');
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-i-16.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-i-16.js
index 58f4a8472cfa98a5e1fc8258d63fdb58371a3ead..aaacf94e00daa2340e03ab6961944dee1b52f607 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-i-16.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-i-16.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.21-9-c-i-16
 description: >
     Array.prototype.reduce - element to be retrieved is inherited
     accessor property on an Array
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var testResult = false;
         var initialValue = 0;
         function callbackfn(prevVal, curVal, idx, obj) {
@@ -19,7 +16,6 @@ function testcase() {
             }
         }
 
-        try {
             Object.defineProperty(Array.prototype, "1", {
                 get: function () {
                     return 1;
@@ -30,10 +26,5 @@ function testcase() {
             var arr = [0, , 2, ];
 
             arr.reduce(callbackfn, initialValue);
-            return testResult;
 
-        } finally {
-            delete Array.prototype[1];
-        }
-    }
-runTestCase(testcase);
+assert(testResult, 'testResult !== true');
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-i-19.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-i-19.js
index cdc1ba9ff009791f4c26571001428f1f028d6194..8f0fde6b4d83994c71373af3f16af5321eda3b60 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-i-19.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-i-19.js
@@ -7,11 +7,8 @@ description: >
     Array.prototype.reduce - element to be retrieved is own accessor
     property without a get function that overrides an inherited
     accessor property on an Array-like object
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var testResult = false;
         var initialValue = 0;
         function callbackfn(prevVal, curVal, idx, obj) {
@@ -20,7 +17,6 @@ function testcase() {
             }
         }
 
-        try {
             Object.defineProperty(Object.prototype, "1", {
                 get: function () {
                     return 1;
@@ -36,9 +32,5 @@ function testcase() {
             });
 
             Array.prototype.reduce.call(obj, callbackfn, initialValue);
-            return testResult;
-        } finally {
-            delete Object.prototype[1];
-        }
-    }
-runTestCase(testcase);
+
+assert(testResult, 'testResult !== true');
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-i-20.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-i-20.js
index d7948d50b09ee385f185acf8b5e6eaeaf1b6c7db..1e98a7a5511bdb1fdaf9836c104d909c1523fa42 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-i-20.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-i-20.js
@@ -7,11 +7,8 @@ description: >
     Array.prototype.reduce - element to be retrieved is own accessor
     property without a get function that overrides an inherited
     accessor property on an Array
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var testResult = false;
         var initialValue = 0;
         function callbackfn(prevVal, curVal, idx, obj) {
@@ -20,7 +17,6 @@ function testcase() {
             }
         }
 
-        try {
             Object.defineProperty(Array.prototype, "1", {
                 get: function () {
                     return 11;
@@ -35,10 +31,5 @@ function testcase() {
             });
 
             arr.reduce(callbackfn, initialValue);
-            return testResult;
 
-        } finally {
-            delete Array.prototype[1];
-        }
-    }
-runTestCase(testcase);
+assert(testResult, 'testResult !== true');
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-i-22.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-i-22.js
index e4d7ef9b6114dfc0abce21d3f6dd6b7a3b1b695e..ef835d0ac47b3dc75f54c8351d373bef9e675b3c 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-i-22.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-i-22.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.21-9-c-i-22
 description: >
     Array.prototype.reduce - element to be retrieved is inherited
     accessor property without a get function on an Array
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var testResult = false;
         var initialValue = 0;
         function callbackfn(prevVal, curVal, idx, obj) {
@@ -19,7 +16,6 @@ function testcase() {
             }
         }
 
-        try {
             Object.defineProperty(Array.prototype, "1", {
                 set: function () { },
                 configurable: true
@@ -28,10 +24,5 @@ function testcase() {
             var arr = [0, , 2];
 
             arr.reduce(callbackfn, initialValue);
-            return testResult;
 
-        } finally {
-            delete Array.prototype[1];
-        }
-    }
-runTestCase(testcase);
+assert(testResult, 'testResult !== true');
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-i-23.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-i-23.js
index 00113eb514247efc2e65df5cbb9b2a4cdcf19be9..7d8ad83f1c64bc030f1c333a1a49fc0044b87e74 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-i-23.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-i-23.js
@@ -6,13 +6,9 @@ es5id: 15.4.4.21-9-c-i-23
 description: >
     Array.prototype.reduce - This object is the global object which
     contains index property
-includes:
-    - runTestCase.js
-    - fnGlobalObject.js
+includes: [fnGlobalObject.js]
 ---*/
 
-function testcase() {
-
         var testResult = false;
         var initialValue = 0;
         function callbackfn(prevVal, curVal, idx, obj) {
@@ -21,19 +17,11 @@ function testcase() {
             }
         }
 
-        try {
             var oldLen = fnGlobalObject().length;
             fnGlobalObject()[0] = 0;
             fnGlobalObject()[1] = 1;
             fnGlobalObject().length = 2;
 
             Array.prototype.reduce.call(fnGlobalObject(), callbackfn, initialValue);
-            return testResult;
 
-        } finally {
-            delete fnGlobalObject()[0];
-            delete fnGlobalObject()[1];
-            fnGlobalObject().length = oldLen;
-        }
-    }
-runTestCase(testcase);
+assert(testResult, 'testResult !== true');
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-i-4.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-i-4.js
index 41a712ed5e4b74b8401d2ca2e8ae0b94b0a85308..8808f44d1fd2c321ac344ef670b3c51431c57e70 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-i-4.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-i-4.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.21-9-c-i-4
 description: >
     Array.prototype.reduce - element to be retrieved is own data
     property that overrides an inherited data property on an Array
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var testResult = false;
         var initialValue = 0;
         function callbackfn(prevVal, curVal, idx, obj) {
@@ -19,12 +16,7 @@ function testcase() {
             }
         }
 
-        try {
             Array.prototype[1] = "3";
             [0, 1, 2].reduce(callbackfn, initialValue);
-            return testResult;
-        } finally {
-            delete Array.prototype[1];
-        }
-    }
-runTestCase(testcase);
+
+assert(testResult, 'testResult !== true');
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-i-6.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-i-6.js
index 5cecfe04996a13a7df7cad417124f85ee17a7d54..db1c864bd42a11183789e5e157080a3ddb403dde 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-i-6.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-i-6.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.21-9-c-i-6
 description: >
     Array.prototype.reduce - element to be retrieved is own data
     property that overrides an inherited accessor property on an Array
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var testResult = false;
         var initialValue = 0;
         function callbackfn(prevVal, curVal, idx, obj) {
@@ -19,7 +16,6 @@ function testcase() {
             }
         }
 
-        try {
             Object.defineProperty(Array.prototype, "1", {
                 get: function () {
                     return "9";
@@ -27,11 +23,5 @@ function testcase() {
                 configurable: true
             });
             [0, 1, 2].reduce(callbackfn, initialValue);
-            return testResult;
-
-        } finally {
-            delete Array.prototype[1];
-        }
 
-    }
-runTestCase(testcase);
+assert(testResult, 'testResult !== true');
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-i-8.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-i-8.js
index c57e824a21a14e2f1431ffb79ea226d491a17724..1d8b72d9211bba563bcafe674c75263c0d69f63e 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-i-8.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-i-8.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.21-9-c-i-8
 description: >
     Array.prototype.reduce - element to be retrieved is inherited data
     property on an Array
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var testResult = false;
         var initialValue = 0;
         function callbackfn(prevVal, curVal, idx, obj) {
@@ -19,17 +16,9 @@ function testcase() {
             }
         }
 
-        try {
             Array.prototype[0] = 0;
             Array.prototype[1] = 1;
             Array.prototype[2] = 2;
             [, , , ].reduce(callbackfn, initialValue);
 
-            return testResult;
-        } finally {
-            delete Array.prototype[0];
-            delete Array.prototype[1];
-            delete Array.prototype[2];
-        }
-    }
-runTestCase(testcase);
+assert(testResult, 'testResult !== true');
diff --git a/test/built-ins/Array/prototype/reduceRight/15.4.4.22-1-10.js b/test/built-ins/Array/prototype/reduceRight/15.4.4.22-1-10.js
index a146182dfd290205e47ba72fddf41effe117f52f..35b7715bb0ad5518b9229d03d9e8e3f0d8d9512e 100644
--- a/test/built-ins/Array/prototype/reduceRight/15.4.4.22-1-10.js
+++ b/test/built-ins/Array/prototype/reduceRight/15.4.4.22-1-10.js
@@ -4,11 +4,8 @@
 /*---
 es5id: 15.4.4.22-1-10
 description: Array.prototype.reduceRight applied to the Math object
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var accessed = false;
 
         function callbackfn(prevVal, curVal, idx, obj) {
@@ -16,13 +13,8 @@ function testcase() {
             return '[object Math]' === Object.prototype.toString.call(obj);
         }
 
-        try {
             Math.length = 1;
             Math[0] = 1;
-            return Array.prototype.reduceRight.call(Math, callbackfn, 1) && accessed;
-        } finally {
-            delete Math[0];
-            delete Math.length;
-        }
-    }
-runTestCase(testcase);
+
+assert(Array.prototype.reduceRight.call(Math, callbackfn, 1), 'Array.prototype.reduceRight.call(Math, callbackfn, 1) !== true');
+assert(accessed, 'accessed !== true');
diff --git a/test/built-ins/Array/prototype/reduceRight/15.4.4.22-1-13.js b/test/built-ins/Array/prototype/reduceRight/15.4.4.22-1-13.js
index b85fa21ff2c65d5ad48efb9faa8c44e965f88b55..1791e2bc8c6d10f1cb99d5fb3c9a5e989fc2e619 100644
--- a/test/built-ins/Array/prototype/reduceRight/15.4.4.22-1-13.js
+++ b/test/built-ins/Array/prototype/reduceRight/15.4.4.22-1-13.js
@@ -4,11 +4,8 @@
 /*---
 es5id: 15.4.4.22-1-13
 description: Array.prototype.reduceRight applied to the JSON object
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var accessed = false;
 
         function callbackfn(prevVal, curVal, idx, obj) {
@@ -16,13 +13,8 @@ function testcase() {
             return ('[object JSON]' === Object.prototype.toString.call(obj));
         }
 
-        try {
             JSON.length = 1;
             JSON[0] = 1;
-            return Array.prototype.reduceRight.call(JSON, callbackfn, 1) && accessed;
-        } finally {
-            delete JSON.length;
-            delete JSON[0];
-        }
-    }
-runTestCase(testcase);
+
+assert(Array.prototype.reduceRight.call(JSON, callbackfn, 1), 'Array.prototype.reduceRight.call(JSON, callbackfn, 1) !== true');
+assert(accessed, 'accessed !== true');
diff --git a/test/built-ins/Array/prototype/reduceRight/15.4.4.22-1-3.js b/test/built-ins/Array/prototype/reduceRight/15.4.4.22-1-3.js
index 6d932248a9cf959a0753f4af2f9e49872df5b969..22200e7777898f6fa867ce19be2f0cebb77d0f22 100644
--- a/test/built-ins/Array/prototype/reduceRight/15.4.4.22-1-3.js
+++ b/test/built-ins/Array/prototype/reduceRight/15.4.4.22-1-3.js
@@ -4,11 +4,8 @@
 /*---
 es5id: 15.4.4.22-1-3
 description: Array.prototype.reduceRight applied to boolean primitive
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var accessed = false;
 
         function callbackfn(prevVal, curVal, idx, obj) {
@@ -16,13 +13,8 @@ function testcase() {
             return obj instanceof Boolean;
         }
 
-        try {
             Boolean.prototype[0] = 1;
             Boolean.prototype.length = 1;
-            return Array.prototype.reduceRight.call(false, callbackfn, 1) && accessed;
-        } finally {
-            delete Boolean.prototype[0];
-            delete Boolean.prototype.length;
-        }
-    }
-runTestCase(testcase);
+
+assert(Array.prototype.reduceRight.call(false, callbackfn, 1), 'Array.prototype.reduceRight.call(false, callbackfn, 1) !== true');
+assert(accessed, 'accessed !== true');
diff --git a/test/built-ins/Array/prototype/reduceRight/15.4.4.22-1-5.js b/test/built-ins/Array/prototype/reduceRight/15.4.4.22-1-5.js
index e482f0fbd2d85b060d6d701c8807d0d2c3411ff1..16d8c5bbd636d11bfc818a5e636deadb971a5b1a 100644
--- a/test/built-ins/Array/prototype/reduceRight/15.4.4.22-1-5.js
+++ b/test/built-ins/Array/prototype/reduceRight/15.4.4.22-1-5.js
@@ -4,11 +4,8 @@
 /*---
 es5id: 15.4.4.22-1-5
 description: Array.prototype.reduceRight applied to number primitive
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var accessed = false;
 
         function callbackfn(prevVal, curVal, idx, obj) {
@@ -16,13 +13,8 @@ function testcase() {
             return obj instanceof Number;
         }
 
-        try {
             Number.prototype[0] = 1;
             Number.prototype.length = 1;
-            return Array.prototype.reduceRight.call(2.5, callbackfn, 1) && accessed;
-        } finally {
-            delete Number.prototype[0];
-            delete Number.prototype.length;
-        }
-    }
-runTestCase(testcase);
+
+assert(Array.prototype.reduceRight.call(2.5, callbackfn, 1), 'Array.prototype.reduceRight.call(2.5, callbackfn, 1) !== true');
+assert(accessed, 'accessed !== true');
diff --git a/test/built-ins/Array/prototype/reduceRight/15.4.4.22-2-12.js b/test/built-ins/Array/prototype/reduceRight/15.4.4.22-2-12.js
index 55c81f62778eda6cdc18f69f41a4691c4b0e2b59..093e493badee6c64fe8bb48c4b5da172edc1424c 100644
--- a/test/built-ins/Array/prototype/reduceRight/15.4.4.22-2-12.js
+++ b/test/built-ins/Array/prototype/reduceRight/15.4.4.22-2-12.js
@@ -7,11 +7,8 @@ description: >
     Array.prototype.reduceRight - 'length' is own accessor property
     without a get function that overrides an inherited accessor
     property
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var accessed = false;
 
         function callbackfn(prevVal, curVal, idx, obj) {
@@ -19,7 +16,6 @@ function testcase() {
             return typeof obj.length === "undefined";
         }
 
-        try {
             Object.defineProperty(Object.prototype, "length", {
                 get: function () {
                     return 2;
@@ -33,9 +29,5 @@ function testcase() {
                 configurable: true
             });
 
-            return Array.prototype.reduceRight.call(obj, callbackfn, 11) === 11 && !accessed;
-        } finally {
-            delete Object.prototype.length;
-        }
-    }
-runTestCase(testcase);
+assert.sameValue(Array.prototype.reduceRight.call(obj, callbackfn, 11), 11, 'Array.prototype.reduceRight.call(obj, callbackfn, 11)');
+assert.sameValue(accessed, false, 'accessed');
diff --git a/test/built-ins/Array/prototype/reduceRight/15.4.4.22-2-15.js b/test/built-ins/Array/prototype/reduceRight/15.4.4.22-2-15.js
index ae3bf03ab64f83e9949bb1a8fc1dc438afcb4230..78a7ee7e9fc2041df83e06aee36fb4e17eed97bf 100644
--- a/test/built-ins/Array/prototype/reduceRight/15.4.4.22-2-15.js
+++ b/test/built-ins/Array/prototype/reduceRight/15.4.4.22-2-15.js
@@ -6,13 +6,9 @@ es5id: 15.4.4.22-2-15
 description: >
     Array.prototype.reduceRight - 'length' is property of the global
     object
-includes:
-    - runTestCase.js
-    - fnGlobalObject.js
+includes: [fnGlobalObject.js]
 ---*/
 
-function testcase() {
-
         var accessed = false;
 
         function callbackfn(prevVal, curVal, idx, obj) {
@@ -20,18 +16,11 @@ function testcase() {
             return obj.length === fnGlobalObject().length;
         }
 
-        try {
             var oldLen = fnGlobalObject().length;
             fnGlobalObject()[0] = 12;
             fnGlobalObject()[1] = 11;
             fnGlobalObject()[2] = 9;
             fnGlobalObject().length = 2;
-            return Array.prototype.reduceRight.call(fnGlobalObject(), callbackfn, 111) && accessed;
-        } finally {
-            delete fnGlobalObject()[0];
-            delete fnGlobalObject()[1];
-            delete fnGlobalObject()[2];
-            fnGlobalObject().length = oldLen;
-        }
-    }
-runTestCase(testcase);
+
+assert(Array.prototype.reduceRight.call(fnGlobalObject(), callbackfn, 111), 'Array.prototype.reduceRight.call(fnGlobalObject(), callbackfn, 111) !== true');
+assert(accessed, 'accessed !== true');
diff --git a/test/built-ins/Array/prototype/reduceRight/15.4.4.22-2-18.js b/test/built-ins/Array/prototype/reduceRight/15.4.4.22-2-18.js
index af67834e8760474cfd85e32e9fd887ca53531d40..3d3aed32914063d73135812e960a32bf5e4a4822 100644
--- a/test/built-ins/Array/prototype/reduceRight/15.4.4.22-2-18.js
+++ b/test/built-ins/Array/prototype/reduceRight/15.4.4.22-2-18.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.22-2-18
 description: >
     Array.prototype.reduceRight applied to String object, which
     implements its own property get method
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var accessed = false;
         var str = new String("432");
 
@@ -19,11 +16,7 @@ function testcase() {
             return obj.length === 3;
         }
 
-        try {
             String.prototype[3] = "1";
-            return Array.prototype.reduceRight.call(str, callbackfn, 111) && accessed;
-        } finally {
-            delete String.prototype[3];
-        }
-    }
-runTestCase(testcase);
+
+assert(Array.prototype.reduceRight.call(str, callbackfn, 111), 'Array.prototype.reduceRight.call(str, callbackfn, 111) !== true');
+assert(accessed, 'accessed !== true');
diff --git a/test/built-ins/Array/prototype/reduceRight/15.4.4.22-2-4.js b/test/built-ins/Array/prototype/reduceRight/15.4.4.22-2-4.js
index 930853b5c243c2cb7dd7fe13d8f0850c97c54547..3c3a8e6b980717aec3b3be87da6443f154cc59cc 100644
--- a/test/built-ins/Array/prototype/reduceRight/15.4.4.22-2-4.js
+++ b/test/built-ins/Array/prototype/reduceRight/15.4.4.22-2-4.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.22-2-4
 description: >
     Array.prototype.reduceRight - 'length' is own data property that
     overrides an inherited data property on an Array
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var accessed = false;
         var arrProtoLen;
         function callbackfn(prevVal, curVal, idx, obj) {
@@ -18,14 +15,8 @@ function testcase() {
             return obj.length === 2;
         }
 
-        try {
             arrProtoLen = Array.prototype.length;
             Array.prototype.length = 0;
 
-            return [12, 11].reduceRight(callbackfn, 11) && accessed;
-        } finally {
-            Array.prototype.length = arrProtoLen;
-        }
-
-    }
-runTestCase(testcase);
+assert([12, 11].reduceRight(callbackfn, 11), '[12, 11].reduceRight(callbackfn, 11) !== true');
+assert(accessed, 'accessed !== true');
diff --git a/test/built-ins/Array/prototype/reduceRight/15.4.4.22-8-b-iii-1-12.js b/test/built-ins/Array/prototype/reduceRight/15.4.4.22-8-b-iii-1-12.js
index 96616646d145e8986f602292703006ef6bca9e04..884278982867d39ea2d5a05593c6643ae1b7f2c6 100644
--- a/test/built-ins/Array/prototype/reduceRight/15.4.4.22-8-b-iii-1-12.js
+++ b/test/built-ins/Array/prototype/reduceRight/15.4.4.22-8-b-iii-1-12.js
@@ -7,11 +7,8 @@ description: >
     Array.prototype.reduceRight - element to be retrieved is own
     accessor property that overrides an inherited data property on an
     Array
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var testResult = false;
         function callbackfn(prevVal, curVal, idx, obj) {
             if (idx === 1) {
@@ -19,7 +16,6 @@ function testcase() {
             }
         }
 
-        try {
             Array.prototype[2] = 2;
             var arr = [0, 1];
 
@@ -31,10 +27,5 @@ function testcase() {
             });
 
             arr.reduceRight(callbackfn);
-            return testResult;
 
-        } finally {
-            delete Array.prototype[2];
-        }
-    }
-runTestCase(testcase);
+assert(testResult, 'testResult !== true');
diff --git a/test/built-ins/Array/prototype/reduceRight/15.4.4.22-8-b-iii-1-14.js b/test/built-ins/Array/prototype/reduceRight/15.4.4.22-8-b-iii-1-14.js
index f35f43bd61c3f899a70b1913873c47d29fe24a37..bbf447769106549640022a165dbb1f608dd5a3ae 100644
--- a/test/built-ins/Array/prototype/reduceRight/15.4.4.22-8-b-iii-1-14.js
+++ b/test/built-ins/Array/prototype/reduceRight/15.4.4.22-8-b-iii-1-14.js
@@ -7,11 +7,8 @@ description: >
     Array.prototype.reduceRight - element to be retrieved is own
     accessor property that overrides an inherited accessor property on
     an Array
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var testResult = false;
         function callbackfn(prevVal, curVal, idx, obj) {
             if (idx === 1) {
@@ -19,7 +16,6 @@ function testcase() {
             }
         }
 
-        try {
             Object.defineProperty(Array.prototype, "2", {
                 get: function () {
                     return 2;
@@ -37,10 +33,5 @@ function testcase() {
             });
 
             arr.reduceRight(callbackfn);
-            return testResult;
 
-        } finally {
-            delete Array.prototype[2];
-        }
-    }
-runTestCase(testcase);
+assert(testResult, 'testResult !== true');
diff --git a/test/built-ins/Array/prototype/reduceRight/15.4.4.22-8-b-iii-1-16.js b/test/built-ins/Array/prototype/reduceRight/15.4.4.22-8-b-iii-1-16.js
index a7814ef349c15cce462e5b3e46a28e4da9a78145..7e37073a5051489e27f13a5fe281a43271b7e195 100644
--- a/test/built-ins/Array/prototype/reduceRight/15.4.4.22-8-b-iii-1-16.js
+++ b/test/built-ins/Array/prototype/reduceRight/15.4.4.22-8-b-iii-1-16.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.22-8-b-iii-1-16
 description: >
     Array.prototype.reduceRight - element to be retrieved is inherited
     accessor property on an Array
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var testResult = false;
         function callbackfn(prevVal, curVal, idx, obj) {
             if (idx === 1) {
@@ -18,7 +15,6 @@ function testcase() {
             }
         }
 
-        try {
             Object.defineProperty(Array.prototype, "2", {
                 get: function () {
                     return 2;
@@ -29,10 +25,5 @@ function testcase() {
             var arr = [0, 1, , ];
 
             arr.reduceRight(callbackfn);
-            return testResult;
 
-        } finally {
-            delete Array.prototype[2];
-        }
-    }
-runTestCase(testcase);
+assert(testResult, 'testResult !== true');
diff --git a/test/built-ins/Array/prototype/reduceRight/15.4.4.22-8-b-iii-1-19.js b/test/built-ins/Array/prototype/reduceRight/15.4.4.22-8-b-iii-1-19.js
index c0087cdb08e1a45d2d57285dbc211a574260035f..cb28c4bb1c3fcd414b29441eb2cba1a348633c57 100644
--- a/test/built-ins/Array/prototype/reduceRight/15.4.4.22-8-b-iii-1-19.js
+++ b/test/built-ins/Array/prototype/reduceRight/15.4.4.22-8-b-iii-1-19.js
@@ -7,11 +7,8 @@ description: >
     Array.prototype.reduceRight - element to be retrieved is own
     accessor property without a get function that overrides an
     inherited accessor property on an Array-like object
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var testResult = false;
         function callbackfn(prevVal, curVal, idx, obj) {
             if (idx === 1) {
@@ -19,7 +16,6 @@ function testcase() {
             }
         }
 
-        try {
             Object.prototype[2] = 2;
 
             var obj = { 0: 0, 1: 1, length: 3 };
@@ -29,10 +25,5 @@ function testcase() {
             });
 
             Array.prototype.reduceRight.call(obj, callbackfn);
-            return testResult;
-        } finally {
-            delete Object.prototype[2];
-        }
 
-    }
-runTestCase(testcase);
+assert(testResult, 'testResult !== true');
diff --git a/test/built-ins/Array/prototype/reduceRight/15.4.4.22-8-b-iii-1-20.js b/test/built-ins/Array/prototype/reduceRight/15.4.4.22-8-b-iii-1-20.js
index 16d9ea43a66d33cf19bd357d5aedc4dff7924c69..a08f1b962cc7f2126de79efc5d5f2a98204b63da 100644
--- a/test/built-ins/Array/prototype/reduceRight/15.4.4.22-8-b-iii-1-20.js
+++ b/test/built-ins/Array/prototype/reduceRight/15.4.4.22-8-b-iii-1-20.js
@@ -7,11 +7,8 @@ description: >
     Array.prototype.reduceRight - element to be retrieved is own
     accessor property without a get function that overrides an
     inherited accessor property on an Array
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var testResult = false;
         function callbackfn(prevVal, curVal, idx, obj) {
             if (idx === 1) {
@@ -19,7 +16,6 @@ function testcase() {
             }
         }
 
-        try {
             Array.prototype[2] = 2;
             var arr = [0, 1];
             Object.defineProperty(arr, "2", {
@@ -28,10 +24,5 @@ function testcase() {
             });
 
             arr.reduceRight(callbackfn);
-            return testResult;
 
-        } finally {
-            delete Array.prototype[2];
-        }
-    }
-runTestCase(testcase);
+assert(testResult, 'testResult !== true');
diff --git a/test/built-ins/Array/prototype/reduceRight/15.4.4.22-8-b-iii-1-22.js b/test/built-ins/Array/prototype/reduceRight/15.4.4.22-8-b-iii-1-22.js
index c3d2e698b51385ec8b05422f6219a667b5674143..0f687743b51f7f93ed6699c7a166a48e275b1ec9 100644
--- a/test/built-ins/Array/prototype/reduceRight/15.4.4.22-8-b-iii-1-22.js
+++ b/test/built-ins/Array/prototype/reduceRight/15.4.4.22-8-b-iii-1-22.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.22-8-b-iii-1-22
 description: >
     Array.prototype.reduceRight - element to be retrieved is inherited
     accessor property without a get function on an Array
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var testResult = false;
         function callbackfn(prevVal, curVal, idx, obj) {
             if (idx === 1) {
@@ -18,7 +15,6 @@ function testcase() {
             }
         }
 
-        try {
             Object.defineProperty(Array.prototype, "2", {
                 set: function () { },
                 configurable: true
@@ -27,11 +23,5 @@ function testcase() {
             var arr = [0, 1, , ];
 
             arr.reduceRight(callbackfn);
-            return testResult;
-
-        } finally {
-            delete Array.prototype[2];
-        }
 
-    }
-runTestCase(testcase);
+assert(testResult, 'testResult !== true');
diff --git a/test/built-ins/Array/prototype/reduceRight/15.4.4.22-8-b-iii-1-23.js b/test/built-ins/Array/prototype/reduceRight/15.4.4.22-8-b-iii-1-23.js
index dfbd2db0ae432e932445f9b9688ec50b9a3fd2f5..bbe19f73dc66e5838bb58a1cb966f875b9e7e539 100644
--- a/test/built-ins/Array/prototype/reduceRight/15.4.4.22-8-b-iii-1-23.js
+++ b/test/built-ins/Array/prototype/reduceRight/15.4.4.22-8-b-iii-1-23.js
@@ -6,13 +6,9 @@ es5id: 15.4.4.22-8-b-iii-1-23
 description: >
     Array.prototype.reduceRight - This object is the global object
     which contains index property
-includes:
-    - runTestCase.js
-    - fnGlobalObject.js
+includes: [fnGlobalObject.js]
 ---*/
 
-function testcase() {
-
         var testResult = false;
         function callbackfn(prevVal, curVal, idx, obj) {
             if (idx === 1) {
@@ -20,7 +16,6 @@ function testcase() {
             }
         }
 
-        try {
             var oldLen = fnGlobalObject().length;
             fnGlobalObject()[0] = 0;
             fnGlobalObject()[1] = 1;
@@ -28,13 +23,5 @@ function testcase() {
             fnGlobalObject().length = 3;
 
             Array.prototype.reduceRight.call(fnGlobalObject(), callbackfn);
-            return testResult;
 
-        } finally {
-            delete fnGlobalObject()[0];
-            delete fnGlobalObject()[1];
-            delete fnGlobalObject()[2];
-            fnGlobalObject().length = oldLen;
-        }
-    }
-runTestCase(testcase);
+assert(testResult, 'testResult !== true');
diff --git a/test/built-ins/Array/prototype/reduceRight/15.4.4.22-8-b-iii-1-4.js b/test/built-ins/Array/prototype/reduceRight/15.4.4.22-8-b-iii-1-4.js
index b4daf842aeea22a704bfb19f49af4d7eefb6839b..579c346cd71613d5456abfffda5f416a9756fa7d 100644
--- a/test/built-ins/Array/prototype/reduceRight/15.4.4.22-8-b-iii-1-4.js
+++ b/test/built-ins/Array/prototype/reduceRight/15.4.4.22-8-b-iii-1-4.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.22-8-b-iii-1-4
 description: >
     Array.prototype.reduceRight - element to be retrieved is own data
     property that overrides an inherited data property on an Array
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var testResult = false;
         function callbackfn(prevVal, curVal, idx, obj) {
             if (idx === 1) {
@@ -18,13 +15,7 @@ function testcase() {
             }
         }
 
-        try {
             Array.prototype[2] = "11";
             [0, 1, 2].reduceRight(callbackfn);
-            return testResult;
 
-        } finally {
-            delete Array.prototype[2];
-        }
-    }
-runTestCase(testcase);
+assert(testResult, 'testResult !== true');
diff --git a/test/built-ins/Array/prototype/reduceRight/15.4.4.22-8-b-iii-1-6.js b/test/built-ins/Array/prototype/reduceRight/15.4.4.22-8-b-iii-1-6.js
index 6195bef8a4e5ff35e25833ac36c68b42b00f5e05..34ff8e5b31148c67adfc60e70d74f56835ad5932 100644
--- a/test/built-ins/Array/prototype/reduceRight/15.4.4.22-8-b-iii-1-6.js
+++ b/test/built-ins/Array/prototype/reduceRight/15.4.4.22-8-b-iii-1-6.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.22-8-b-iii-1-6
 description: >
     Array.prototype.reduceRight - element to be retrieved is own data
     property that overrides an inherited accessor property on an Array
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var testResult = false;
         function callbackfn(prevVal, curVal, idx, obj) {
             if (idx === 1) {
@@ -18,7 +15,6 @@ function testcase() {
             }
         }
 
-        try {
             Object.defineProperty(Array.prototype, "2", {
                 get: function () {
                     return "2";
@@ -26,11 +22,5 @@ function testcase() {
                 configurable: true
             });
             [0, 1, 2].reduceRight(callbackfn);
-            return testResult;
-
-        } finally {
-            delete Array.prototype[2];
-        }
 
-    }
-runTestCase(testcase);
+assert(testResult, 'testResult !== true');
diff --git a/test/built-ins/Array/prototype/reduceRight/15.4.4.22-8-b-iii-1-8.js b/test/built-ins/Array/prototype/reduceRight/15.4.4.22-8-b-iii-1-8.js
index 3d23c6185a56a9424e56aa3d6e52253200616501..2471f3353d2e8b22f5bd87d1baa0743fdd7a17f4 100644
--- a/test/built-ins/Array/prototype/reduceRight/15.4.4.22-8-b-iii-1-8.js
+++ b/test/built-ins/Array/prototype/reduceRight/15.4.4.22-8-b-iii-1-8.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.22-8-b-iii-1-8
 description: >
     Array.prototype.reduceRight - element to be retrieved is inherited
     data property on an Array
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var testResult = false;
         function callbackfn(prevVal, curVal, idx, obj) {
             if (idx === 1) {
@@ -18,17 +15,9 @@ function testcase() {
             }
         }
 
-        try {
             Array.prototype[0] = 0;
             Array.prototype[1] = 1;
             Array.prototype[2] = 2;
             [, , ,].reduceRight(callbackfn);
-            return testResult;
 
-        } finally {
-            delete Array.prototype[0];
-            delete Array.prototype[1];
-            delete Array.prototype[2];
-        }
-    }
-runTestCase(testcase);
+assert(testResult, 'testResult !== true');
diff --git a/test/built-ins/Array/prototype/reduceRight/15.4.4.22-8-c-4.js b/test/built-ins/Array/prototype/reduceRight/15.4.4.22-8-c-4.js
index 9b1d5fb86ad6a756d7cf10e82323e73afa326b28..2824cfd96044e669217ec4a32b71fca556f139a1 100644
--- a/test/built-ins/Array/prototype/reduceRight/15.4.4.22-8-c-4.js
+++ b/test/built-ins/Array/prototype/reduceRight/15.4.4.22-8-c-4.js
@@ -6,21 +6,13 @@ es5id: 15.4.4.22-8-c-4
 description: >
     Array.prototype.reduceRight doesn't throw error when array has no
     own properties but prototype contains a single property
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var arr = [, , , ];
 
         try {
             Array.prototype[1] = "prototype";
             arr.reduceRight(function () { });
-            return true;
-        } catch (ex) {
-            return false;
         } finally {
             delete Array.prototype[1];
         }
-    }
-runTestCase(testcase);
diff --git a/test/built-ins/Array/prototype/reduceRight/15.4.4.22-9-b-10.js b/test/built-ins/Array/prototype/reduceRight/15.4.4.22-9-b-10.js
index 0467957d7fd353d5684043976373862c6579e5a5..8054929e9bad3e2e5b42deb6250d364fe2e63155 100644
--- a/test/built-ins/Array/prototype/reduceRight/15.4.4.22-9-b-10.js
+++ b/test/built-ins/Array/prototype/reduceRight/15.4.4.22-9-b-10.js
@@ -7,11 +7,8 @@ description: >
     Array.prototype.reduceRight - deleting property of prototype in
     step 8 causes deleted index property not to be visited on an
     Array-like Object
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var accessed = false;
         var testResult = true;
 
@@ -32,12 +29,8 @@ function testcase() {
             configurable: true
         });
 
-        try {
             Object.prototype[3] = 1;
             Array.prototype.reduceRight.call(obj, callbackfn);
-            return testResult && accessed;
-        } finally {
-            delete Object.prototype[3];
-        }
-    }
-runTestCase(testcase);
+
+assert(testResult, 'testResult !== true');
+assert(accessed, 'accessed !== true');
diff --git a/test/built-ins/Array/prototype/reduceRight/15.4.4.22-9-b-11.js b/test/built-ins/Array/prototype/reduceRight/15.4.4.22-9-b-11.js
index b8dd5940e308752214079ff4522779b292d3f50a..c18b3c552b2e5a33d4ff6b52a66d83f0e4ea9c69 100644
--- a/test/built-ins/Array/prototype/reduceRight/15.4.4.22-9-b-11.js
+++ b/test/built-ins/Array/prototype/reduceRight/15.4.4.22-9-b-11.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.22-9-b-11
 description: >
     Array.prototype.reduceRight - deleting property of prototype in
     step 8 causes deleted index property not to be visited on an Array
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var accessed = false;
         var testResult = true;
 
@@ -30,12 +27,8 @@ function testcase() {
             configurable: true
         });
 
-        try {
             Array.prototype[1] = 1;
             arr.reduceRight(callbackfn);
-            return testResult && accessed;
-        } finally {
-            delete Array.prototype[1];
-        }
-    }
-runTestCase(testcase);
+
+assert(testResult, 'testResult !== true');
+assert(accessed, 'accessed !== true');
diff --git a/test/built-ins/Array/prototype/reduceRight/15.4.4.22-9-b-12.js b/test/built-ins/Array/prototype/reduceRight/15.4.4.22-9-b-12.js
index a9d1c21659e70a157a0cf0e98f4fcb5f485eaf84..883290baa072640ed1cbf9522d481912804abb0f 100644
--- a/test/built-ins/Array/prototype/reduceRight/15.4.4.22-9-b-12.js
+++ b/test/built-ins/Array/prototype/reduceRight/15.4.4.22-9-b-12.js
@@ -7,11 +7,8 @@ description: >
     Array.prototype.reduceRight - deleting own property with prototype
     property in step 8 causes prototype index property to be visited
     on an Array-like object
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var testResult = false;
 
         function callbackfn(prevVal, curVal, idx, obj) {
@@ -30,12 +27,7 @@ function testcase() {
             configurable: true
         });
 
-        try {
             Object.prototype[1] = 1;
             Array.prototype.reduceRight.call(obj, callbackfn);
-            return testResult;
-        } finally {
-            delete Object.prototype[1];
-        }
-    }
-runTestCase(testcase);
+
+assert(testResult, 'testResult !== true');
diff --git a/test/built-ins/Array/prototype/reduceRight/15.4.4.22-9-b-13.js b/test/built-ins/Array/prototype/reduceRight/15.4.4.22-9-b-13.js
index 725c3de547b65d168a545d93dfda66a4348ada9d..b4617abc1f712a6bea55d5ae416f2062995d5d45 100644
--- a/test/built-ins/Array/prototype/reduceRight/15.4.4.22-9-b-13.js
+++ b/test/built-ins/Array/prototype/reduceRight/15.4.4.22-9-b-13.js
@@ -7,11 +7,8 @@ description: >
     Array.prototype.reduceRight - deleting own property with prototype
     property in step 8 causes prototype index property to be visited
     on an Array
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var testResult = false;
 
         function callbackfn(prevVal, curVal, idx, obj) {
@@ -29,12 +26,7 @@ function testcase() {
             configurable: true
         });
 
-        try {
             Array.prototype[1] = 1;
             arr.reduceRight(callbackfn);
-            return testResult;
-        } finally {
-            delete Array.prototype[1];
-        }
-    }
-runTestCase(testcase);
+
+assert(testResult, 'testResult !== true');
diff --git a/test/built-ins/Array/prototype/reduceRight/15.4.4.22-9-b-15.js b/test/built-ins/Array/prototype/reduceRight/15.4.4.22-9-b-15.js
index 3fe58488a180cda2e0218a511f4ce5b71d7b2e19..d2c89fe56c059a02ec83c405903b038fb879320d 100644
--- a/test/built-ins/Array/prototype/reduceRight/15.4.4.22-9-b-15.js
+++ b/test/built-ins/Array/prototype/reduceRight/15.4.4.22-9-b-15.js
@@ -7,11 +7,8 @@ description: >
     Array.prototype.reduceRight - decreasing length of array with
     prototype property in step 8 causes prototype index property to be
     visited
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var testResult = false;
 
         function callbackfn(prevVal, curVal, idx, obj) {
@@ -21,7 +18,6 @@ function testcase() {
         }
         var arr = [0, 1, 2, 3];
 
-        try {
             Object.defineProperty(Array.prototype, "2", {
                 get: function () {
                     return "prototype";
@@ -39,9 +35,4 @@ function testcase() {
 
             arr.reduceRight(callbackfn);
 
-            return testResult;
-        } finally {
-            delete Array.prototype[2];
-        }
-    }
-runTestCase(testcase);
+assert(testResult, 'testResult !== true');
diff --git a/test/built-ins/Array/prototype/reduceRight/15.4.4.22-9-b-19.js b/test/built-ins/Array/prototype/reduceRight/15.4.4.22-9-b-19.js
index 9fc059f06023a9b64d51f6f8042934e14401ba62..677fc5218b00cbc126b520496f2349ed960e67ac 100644
--- a/test/built-ins/Array/prototype/reduceRight/15.4.4.22-9-b-19.js
+++ b/test/built-ins/Array/prototype/reduceRight/15.4.4.22-9-b-19.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.22-9-b-19
 description: >
     Array.prototype.reduceRight - properties added to prototype are
     visited on an Array-like object
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var testResult = false;
 
         function callbackfn(prevVal, curVal, idx, obj) {
@@ -34,11 +31,6 @@ function testcase() {
             configurable: true
         });
 
-        try {
             Array.prototype.reduceRight.call(obj, callbackfn, "initialValue");
-            return testResult;
-        } finally {
-            delete Object.prototype[1];
-        }
-    }
-runTestCase(testcase);
+
+assert(testResult, 'testResult !== true');
diff --git a/test/built-ins/Array/prototype/reduceRight/15.4.4.22-9-b-20.js b/test/built-ins/Array/prototype/reduceRight/15.4.4.22-9-b-20.js
index 5d47fd9f1ae8f009661d8ec40f18e411e0925980..4a1c7dcc4723f92919d3038be4d0f17cf41fb020 100644
--- a/test/built-ins/Array/prototype/reduceRight/15.4.4.22-9-b-20.js
+++ b/test/built-ins/Array/prototype/reduceRight/15.4.4.22-9-b-20.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.22-9-b-20
 description: >
     Array.prototype.reduceRight - properties added to prototype can be
     visited on an Array
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var testResult = false;
 
         function callbackfn(prevVal, curVal, idx, obj) {
@@ -34,11 +31,6 @@ function testcase() {
             configurable: true
         });
 
-        try {
             arr.reduceRight(callbackfn, "initialValue");
-            return testResult;
-        } finally {
-            delete Array.prototype[1];
-        }
-    }
-runTestCase(testcase);
+
+assert(testResult, 'testResult !== true');
diff --git a/test/built-ins/Array/prototype/reduceRight/15.4.4.22-9-b-23.js b/test/built-ins/Array/prototype/reduceRight/15.4.4.22-9-b-23.js
index 33f434433604282f68e2b6b5bb6a17304113dae6..6ced9a8166d3ad1601a66e827b9dc8ecc3f88246 100644
--- a/test/built-ins/Array/prototype/reduceRight/15.4.4.22-9-b-23.js
+++ b/test/built-ins/Array/prototype/reduceRight/15.4.4.22-9-b-23.js
@@ -7,11 +7,8 @@ description: >
     Array.prototype.reduceRight - deleting property of prototype
     causes deleted index property not to be visited on an Array-like
     Object
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var accessed = false;
         var testResult = true;
 
@@ -32,12 +29,8 @@ function testcase() {
             configurable: true
         });
 
-        try {
             Object.prototype[3] = 1;
             Array.prototype.reduceRight.call(obj, callbackfn, "initialValue");
-            return testResult && accessed;
-        } finally {
-            delete Object.prototype[3];
-        }
-    }
-runTestCase(testcase);
+
+assert(testResult, 'testResult !== true');
+assert(accessed, 'accessed !== true');
diff --git a/test/built-ins/Array/prototype/reduceRight/15.4.4.22-9-b-24.js b/test/built-ins/Array/prototype/reduceRight/15.4.4.22-9-b-24.js
index 0fee30536bd3b042145f7c510c20190f858c05bd..218340c5f00f352637cf54ca48353f4638d6779b 100644
--- a/test/built-ins/Array/prototype/reduceRight/15.4.4.22-9-b-24.js
+++ b/test/built-ins/Array/prototype/reduceRight/15.4.4.22-9-b-24.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.22-9-b-24
 description: >
     Array.prototype.reduceRight - deleting property of prototype
     causes deleted index property not to be visited on an Array
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var accessed = false;
         var testResult = true;
 
@@ -30,12 +27,8 @@ function testcase() {
             configurable: true
         });
 
-        try {
             Array.prototype[1] = 1;
             arr.reduceRight(callbackfn, "initialValue");
-            return testResult && accessed;
-        } finally {
-            delete Array.prototype[1];
-        }
-    }
-runTestCase(testcase);
+
+assert(testResult, 'testResult !== true');
+assert(accessed, 'accessed !== true');
diff --git a/test/built-ins/Array/prototype/reduceRight/15.4.4.22-9-b-25.js b/test/built-ins/Array/prototype/reduceRight/15.4.4.22-9-b-25.js
index 5234c19580435f586090e8eb735732229dd82108..ab59c0780cd61e2a5d327804065da064722b1873 100644
--- a/test/built-ins/Array/prototype/reduceRight/15.4.4.22-9-b-25.js
+++ b/test/built-ins/Array/prototype/reduceRight/15.4.4.22-9-b-25.js
@@ -7,11 +7,8 @@ description: >
     Array.prototype.reduceRight - deleting own property with prototype
     property causes prototype index property to be visited on an
     Array-like object
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var testResult = false;
 
         function callbackfn(prevVal, curVal, idx, obj) {
@@ -30,12 +27,7 @@ function testcase() {
             configurable: true
         });
 
-        try {
             Object.prototype[1] = 1;
             Array.prototype.reduceRight.call(obj, callbackfn, "initialValue");
-            return testResult;
-        } finally {
-            delete Object.prototype[1];
-        }
-    }
-runTestCase(testcase);
+
+assert(testResult, 'testResult !== true');
diff --git a/test/built-ins/Array/prototype/reduceRight/15.4.4.22-9-b-26.js b/test/built-ins/Array/prototype/reduceRight/15.4.4.22-9-b-26.js
index 96ecdf625b45cfe67dafd00341349c290ac316a6..08231b2e4638a8c1e07b8e1fcfe8be148e30c5c9 100644
--- a/test/built-ins/Array/prototype/reduceRight/15.4.4.22-9-b-26.js
+++ b/test/built-ins/Array/prototype/reduceRight/15.4.4.22-9-b-26.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.22-9-b-26
 description: >
     Array.prototype.reduceRight - deleting own property with prototype
     property causes prototype index property to be visited on an Array
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var testResult = false;
 
         function callbackfn(prevVal, curVal, idx, obj) {
@@ -28,12 +25,7 @@ function testcase() {
             configurable: true
         });
 
-        try {
             Array.prototype[1] = 1;
             arr.reduceRight(callbackfn, "initialValue");
-            return testResult;
-        } finally {
-            delete Array.prototype[1];
-        }
-    }
-runTestCase(testcase);
+
+assert(testResult, 'testResult !== true');
diff --git a/test/built-ins/Array/prototype/reduceRight/15.4.4.22-9-b-28.js b/test/built-ins/Array/prototype/reduceRight/15.4.4.22-9-b-28.js
index e77cae3653c50e5e5574929420a30f53f0dc8ba6..7c3743976adf99b1cdd61838b017a1548fe56076 100644
--- a/test/built-ins/Array/prototype/reduceRight/15.4.4.22-9-b-28.js
+++ b/test/built-ins/Array/prototype/reduceRight/15.4.4.22-9-b-28.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.22-9-b-28
 description: >
     Array.prototype.reduceRight - decreasing length of array with
     prototype property causes prototype index property to be visited
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var testResult = false;
 
         function callbackfn(prevVal, curVal, idx, obj) {
@@ -20,7 +17,6 @@ function testcase() {
         }
         var arr = [0, 1, 2, 3];
 
-        try {
             Object.defineProperty(Array.prototype, "2", {
                 get: function () {
                     return "prototype";
@@ -38,9 +34,4 @@ function testcase() {
 
             arr.reduceRight(callbackfn, "initialValue");
 
-            return testResult;
-        } finally {
-            delete Array.prototype[2];
-        }
-    }
-runTestCase(testcase);
+assert(testResult, 'testResult !== true');
diff --git a/test/built-ins/Array/prototype/reduceRight/15.4.4.22-9-b-6.js b/test/built-ins/Array/prototype/reduceRight/15.4.4.22-9-b-6.js
index 8f96ac4840cc9d4eec9ef8f07bd7b318307f30e8..db4e3977d708b39605b9340dc235d16157a407b3 100644
--- a/test/built-ins/Array/prototype/reduceRight/15.4.4.22-9-b-6.js
+++ b/test/built-ins/Array/prototype/reduceRight/15.4.4.22-9-b-6.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.22-9-b-6
 description: >
     Array.prototype.reduceRight - properties added to prototype in
     step 8 visited on an Array-like object
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var testResult = false;
 
         function callbackfn(preVal, curVal, idx, obj) {
@@ -34,11 +31,6 @@ function testcase() {
             configurable: true
         });
 
-        try {
             Array.prototype.reduceRight.call(obj, callbackfn);
-            return testResult;
-        } finally {
-            delete Object.prototype[1];
-        }
-    }
-runTestCase(testcase);
+
+assert(testResult, 'testResult !== true');
diff --git a/test/built-ins/Array/prototype/reduceRight/15.4.4.22-9-b-7.js b/test/built-ins/Array/prototype/reduceRight/15.4.4.22-9-b-7.js
index c83e459fbccd65555a9781fb12d9e44527b61cd9..9dd8692bdf7558997fe598326ee42978b80c0389 100644
--- a/test/built-ins/Array/prototype/reduceRight/15.4.4.22-9-b-7.js
+++ b/test/built-ins/Array/prototype/reduceRight/15.4.4.22-9-b-7.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.22-9-b-7
 description: >
     Array.prototype.reduceRight - properties added to prototype in
     step 8 visited on an Array
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var testResult = false;
 
         function callbackfn(preVal, curVal, idx, obj) {
@@ -34,11 +31,6 @@ function testcase() {
             configurable: true
         });
 
-        try {
             arr.reduceRight(callbackfn);
-            return testResult;
-        } finally {
-            delete Array.prototype[1];
-        }
-    }
-runTestCase(testcase);
+
+assert(testResult, 'testResult !== true');
diff --git a/test/built-ins/Array/prototype/reduceRight/15.4.4.22-9-c-i-12.js b/test/built-ins/Array/prototype/reduceRight/15.4.4.22-9-c-i-12.js
index d62bfc9d5742d78d896a8b912265f83ecb8b4278..495ed104052dc721bdfb04c8d0e0650a11760623 100644
--- a/test/built-ins/Array/prototype/reduceRight/15.4.4.22-9-c-i-12.js
+++ b/test/built-ins/Array/prototype/reduceRight/15.4.4.22-9-c-i-12.js
@@ -7,11 +7,8 @@ description: >
     Array.prototype.reduceRight - element to be retrieved is own
     accessor property that overrides an inherited data property on an
     Array
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-        
         var testResult = false;
         function callbackfn(prevVal, curVal, idx, obj) {
             if (idx === 1) {
@@ -19,7 +16,6 @@ function testcase() {
             }
         }
 
-        try {
             Array.prototype[1] = 11;
             var arr = [0, ,2];
 
@@ -31,10 +27,5 @@ function testcase() {
             });
 
             arr.reduceRight(callbackfn, "initialValue");
-            return testResult;
 
-        } finally {
-            delete Array.prototype[1];
-        }
-    }
-runTestCase(testcase);
+assert(testResult, 'testResult !== true');
diff --git a/test/built-ins/Array/prototype/reduceRight/15.4.4.22-9-c-i-14.js b/test/built-ins/Array/prototype/reduceRight/15.4.4.22-9-c-i-14.js
index f9a8c8adad59e76e56dd6b4cbec1a5367adbfaf4..80e358bc94f9fcb281f05db2d8311d8b5e77555e 100644
--- a/test/built-ins/Array/prototype/reduceRight/15.4.4.22-9-c-i-14.js
+++ b/test/built-ins/Array/prototype/reduceRight/15.4.4.22-9-c-i-14.js
@@ -7,11 +7,8 @@ description: >
     Array.prototype.reduceRight - element to be retrieved is own
     accessor property that overrides an inherited accessor property on
     an Array
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var testResult = false;
         function callbackfn(prevVal, curVal, idx, obj) {
             if (idx === 1) {
@@ -19,7 +16,6 @@ function testcase() {
             }
         }
 
-        try {
             Object.defineProperty(Array.prototype, "1", {
                 get: function () {
                     return 11;
@@ -36,10 +32,5 @@ function testcase() {
                 configurable: true
             });
             arr.reduceRight(callbackfn, "initialValue");
-            return testResult;
 
-        } finally {
-            delete Array.prototype[1];
-        }
-    }
-runTestCase(testcase);
+assert(testResult, 'testResult !== true');
diff --git a/test/built-ins/Array/prototype/reduceRight/15.4.4.22-9-c-i-16.js b/test/built-ins/Array/prototype/reduceRight/15.4.4.22-9-c-i-16.js
index ced9ca9bfc8af1bc98cbcd731d8e4cdfd8f79f5a..494abf8029dfeb6ca9f977d4a6a1b547e2fce34a 100644
--- a/test/built-ins/Array/prototype/reduceRight/15.4.4.22-9-c-i-16.js
+++ b/test/built-ins/Array/prototype/reduceRight/15.4.4.22-9-c-i-16.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.22-9-c-i-16
 description: >
     Array.prototype.reduceRight - element to be retrieved is inherited
     accessor property on an Array
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var testResult = false;
         function callbackfn(prevVal, curVal, idx, obj) {
             if (idx === 1) {
@@ -18,7 +15,6 @@ function testcase() {
             }
         }
 
-        try {
             Object.defineProperty(Array.prototype, "1", {
                 get: function () {
                     return 1;
@@ -29,10 +25,5 @@ function testcase() {
             var arr = [0, , 2];
 
             arr.reduceRight(callbackfn, "initialValue");
-            return testResult;
 
-        } finally {
-            delete Array.prototype[1];
-        }
-    }
-runTestCase(testcase);
+assert(testResult, 'testResult !== true');
diff --git a/test/built-ins/Array/prototype/reduceRight/15.4.4.22-9-c-i-19.js b/test/built-ins/Array/prototype/reduceRight/15.4.4.22-9-c-i-19.js
index b93bb45e00db3ac44be405a8b2a64195cd2d365e..a5c367dd859bad2bcf8e79ea7146f56254bf4e10 100644
--- a/test/built-ins/Array/prototype/reduceRight/15.4.4.22-9-c-i-19.js
+++ b/test/built-ins/Array/prototype/reduceRight/15.4.4.22-9-c-i-19.js
@@ -7,11 +7,8 @@ description: >
     Array.prototype.reduceRight - element to be retrieved is own
     accessor property without a get function that overrides an
     inherited accessor property on an Array-like object
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var testResult = false;
         function callbackfn(prevVal, curVal, idx, obj) {
             if (idx === 1) {
@@ -19,7 +16,6 @@ function testcase() {
             }
         }
 
-        try {
             Object.prototype[1] = 1;
 
             var obj = { 0: 0, 2: 2, length: 3 };
@@ -29,10 +25,5 @@ function testcase() {
             });
 
             Array.prototype.reduceRight.call(obj, callbackfn, "initialValue");
-            return testResult;
-        } finally {
-            delete Object.prototype[1];
-        }
 
-    }
-runTestCase(testcase);
+assert(testResult, 'testResult !== true');
diff --git a/test/built-ins/Array/prototype/reduceRight/15.4.4.22-9-c-i-20.js b/test/built-ins/Array/prototype/reduceRight/15.4.4.22-9-c-i-20.js
index 0e2c194fa2afe28b56d0225c5a355ba28310d623..5a901f843ef5a43f3a5f5e51d04a9be5e10246b4 100644
--- a/test/built-ins/Array/prototype/reduceRight/15.4.4.22-9-c-i-20.js
+++ b/test/built-ins/Array/prototype/reduceRight/15.4.4.22-9-c-i-20.js
@@ -7,11 +7,8 @@ description: >
     Array.prototype.reduceRight - element to be retrieved is own
     accessor property without a get function that overrides an
     inherited accessor property on an Array
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var testResult = false;
         function callbackfn(prevVal, curVal, idx, obj) {
             if (idx === 1) {
@@ -19,7 +16,6 @@ function testcase() {
             }
         }
 
-        try {
             Array.prototype[1] = 1;
             var arr = [0, ,2];
             Object.defineProperty(arr, "1", {
@@ -28,10 +24,5 @@ function testcase() {
             });
 
             arr.reduceRight(callbackfn, "initialValue");
-            return testResult;
 
-        } finally {
-            delete Array.prototype[1];
-        }
-    }
-runTestCase(testcase);
+assert(testResult, 'testResult !== true');
diff --git a/test/built-ins/Array/prototype/reduceRight/15.4.4.22-9-c-i-22.js b/test/built-ins/Array/prototype/reduceRight/15.4.4.22-9-c-i-22.js
index 2b206286702d09517a307727a8794be19d698e82..256d03072d6b4ebe77ef35069ca9fbe52ff490c7 100644
--- a/test/built-ins/Array/prototype/reduceRight/15.4.4.22-9-c-i-22.js
+++ b/test/built-ins/Array/prototype/reduceRight/15.4.4.22-9-c-i-22.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.22-9-c-i-22
 description: >
     Array.prototype.reduceRight - element to be retrieved is inherited
     accessor property without a get function on an Array
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-    
         var testResult = false;
         function callbackfn(prevVal, curVal, idx, obj) {
             if (idx === 1) {
@@ -18,7 +15,6 @@ function testcase() {
             }
         }
 
-        try {
             Object.defineProperty(Array.prototype, "1", {
                 set: function () { },
                 configurable: true
@@ -27,11 +23,5 @@ function testcase() {
             var arr = [0, , 2];
 
             arr.reduceRight(callbackfn, "initialValue");
-            return testResult;
 
-        } finally {
-            delete Array.prototype[1];
-        }
-
-    }
-runTestCase(testcase);
+assert(testResult, 'testResult !== true');
diff --git a/test/built-ins/Array/prototype/reduceRight/15.4.4.22-9-c-i-23.js b/test/built-ins/Array/prototype/reduceRight/15.4.4.22-9-c-i-23.js
index 2411819badaf840b2ef5639aac5442c8880ad2a3..854466ce7ed084ddad05a65f3eb77e14ae167e5b 100644
--- a/test/built-ins/Array/prototype/reduceRight/15.4.4.22-9-c-i-23.js
+++ b/test/built-ins/Array/prototype/reduceRight/15.4.4.22-9-c-i-23.js
@@ -6,13 +6,9 @@ es5id: 15.4.4.22-9-c-i-23
 description: >
     Array.prototype.reduceRight - This object is an global object
     which contains index property
-includes:
-    - runTestCase.js
-    - fnGlobalObject.js
+includes: [fnGlobalObject.js]
 ---*/
 
-function testcase() {
-
         var testResult = false;
         function callbackfn(prevVal, curVal, idx, obj) {
             if (idx === 1) {
@@ -20,7 +16,6 @@ function testcase() {
             }
         }
 
-        try {
             var oldLen = fnGlobalObject().length;
             fnGlobalObject()[0] = 0;
             fnGlobalObject()[1] = 1;
@@ -28,13 +23,5 @@ function testcase() {
             fnGlobalObject().length = 3;
 
             Array.prototype.reduceRight.call(fnGlobalObject(), callbackfn, "initialValue");
-            return testResult;
 
-        } finally {
-            delete fnGlobalObject()[0];
-            delete fnGlobalObject()[1];
-            delete fnGlobalObject()[2];
-            fnGlobalObject().length = oldLen;
-        }
-    }
-runTestCase(testcase);
+assert(testResult, 'testResult !== true');
diff --git a/test/built-ins/Array/prototype/reduceRight/15.4.4.22-9-c-i-4.js b/test/built-ins/Array/prototype/reduceRight/15.4.4.22-9-c-i-4.js
index 6bdad8d75bfd857048823b32514390fb41564959..1021829d70f3467e5c21543695039a7c0f4ef4b4 100644
--- a/test/built-ins/Array/prototype/reduceRight/15.4.4.22-9-c-i-4.js
+++ b/test/built-ins/Array/prototype/reduceRight/15.4.4.22-9-c-i-4.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.22-9-c-i-4
 description: >
     Array.prototype.reduceRight - element to be retrieved is own data
     property that overrides an inherited data property on an Array
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var testResult = false;
         function callbackfn(prevVal, curVal, idx, obj) {
             if (idx === 1) {
@@ -18,13 +15,7 @@ function testcase() {
             }
         }
 
-        try {
             Array.prototype[1] = "11";
             [0, 1, 2].reduceRight(callbackfn, "initialValue");
-            return testResult;
 
-        } finally {
-            delete Array.prototype[1];
-        }
-    }
-runTestCase(testcase);
+assert(testResult, 'testResult !== true');
diff --git a/test/built-ins/Array/prototype/reduceRight/15.4.4.22-9-c-i-6.js b/test/built-ins/Array/prototype/reduceRight/15.4.4.22-9-c-i-6.js
index d4b4e6f238117b9ed2855cb66e0020840e44ec22..80d577ff87f0fffc1b4535b09889b91791a70261 100644
--- a/test/built-ins/Array/prototype/reduceRight/15.4.4.22-9-c-i-6.js
+++ b/test/built-ins/Array/prototype/reduceRight/15.4.4.22-9-c-i-6.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.22-9-c-i-6
 description: >
     Array.prototype.reduceRight - element to be retrieved is own data
     property that overrides an inherited accessor property on an Array
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var testResult = false;
         function callbackfn(prevVal, curVal, idx, obj) {
             if (idx === 1) {
@@ -18,7 +15,6 @@ function testcase() {
             }
         }
 
-        try {
             Object.defineProperty(Array.prototype, "1", {
                 get: function () {
                     return "11";
@@ -26,11 +22,5 @@ function testcase() {
                 configurable: true
             });
             [0, 1, 2].reduceRight(callbackfn, "initialValue");
-            return testResult;
-
-        } finally {
-            delete Array.prototype[1];
-        }
 
-    }
-runTestCase(testcase);
+assert(testResult, 'testResult !== true');
diff --git a/test/built-ins/Array/prototype/reduceRight/15.4.4.22-9-c-i-8.js b/test/built-ins/Array/prototype/reduceRight/15.4.4.22-9-c-i-8.js
index e961a66b87e0837a0181c0376bb90755e3def9ec..bf150824ff2c6c390f22313ae620858a4ec94dd5 100644
--- a/test/built-ins/Array/prototype/reduceRight/15.4.4.22-9-c-i-8.js
+++ b/test/built-ins/Array/prototype/reduceRight/15.4.4.22-9-c-i-8.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.22-9-c-i-8
 description: >
     Array.prototype.reduceRight - element to be retrieved is inherited
     data property on an Array
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var testResult = false;
         function callbackfn(prevVal, curVal, idx, obj) {
             if (idx === 1) {
@@ -18,17 +15,9 @@ function testcase() {
             }
         }
 
-        try {
             Array.prototype[0] = 0;
             Array.prototype[1] = 1;
             Array.prototype[2] = 2;
             [, , , ].reduceRight(callbackfn, "initialValue");
-            return testResult;
 
-        } finally {
-            delete Array.prototype[0];
-            delete Array.prototype[1];
-            delete Array.prototype[2];
-        }
-    }
-runTestCase(testcase);
+assert(testResult, 'testResult !== true');
diff --git a/test/built-ins/Array/prototype/slice/15.4.4.10-10-c-ii-1.js b/test/built-ins/Array/prototype/slice/15.4.4.10-10-c-ii-1.js
index 1d6502bb0a23d2f20ddfba4f91d24f166f320744..87c916c8e98a12394b14cb6f59e443dca81a8613 100644
--- a/test/built-ins/Array/prototype/slice/15.4.4.10-10-c-ii-1.js
+++ b/test/built-ins/Array/prototype/slice/15.4.4.10-10-c-ii-1.js
@@ -6,12 +6,10 @@ es5id: 15.4.4.10-10-c-ii-1
 description: >
     Array.prototype.slice will slice a string from start to end when
     index property (read-only) exists in Array.prototype (Step 10.c.ii)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var arrObj = [1, 2, 3];
-        try {
+
             Object.defineProperty(Array.prototype, "0", {
                 value: "test",
                 writable: false,
@@ -19,9 +17,7 @@ function testcase() {
             });
 
             var newArr = arrObj.slice(0, 1);
-            return newArr.hasOwnProperty("0") && newArr[0] === 1 && typeof newArr[1] === "undefined";
-        } finally {
-            delete Array.prototype[0];
-        }
-    }
-runTestCase(testcase);
+
+assert(newArr.hasOwnProperty("0"), 'newArr.hasOwnProperty("0") !== true');
+assert.sameValue(newArr[0], 1, 'newArr[0]');
+assert.sameValue(typeof newArr[1], "undefined", 'typeof newArr[1]');
diff --git a/test/built-ins/Array/prototype/some/15.4.4.17-1-10.js b/test/built-ins/Array/prototype/some/15.4.4.17-1-10.js
index 17802f684bb00c2796a7075d4bc91f94efae5ae2..dc3da61b6ae4df12326c185722d1560e2c6c68eb 100644
--- a/test/built-ins/Array/prototype/some/15.4.4.17-1-10.js
+++ b/test/built-ins/Array/prototype/some/15.4.4.17-1-10.js
@@ -4,21 +4,13 @@
 /*---
 es5id: 15.4.4.17-1-10
 description: Array.prototype.some applied to the Math object
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         function callbackfn(val, idx, obj) {
             return '[object Math]' === Object.prototype.toString.call(obj);
         }
 
-        try {
             Math.length = 1;
             Math[0] = 1;
-            return Array.prototype.some.call(Math, callbackfn);
-        } finally {
-            delete Math[0];
-            delete Math.length;
-        }
-    }
-runTestCase(testcase);
+
+assert(Array.prototype.some.call(Math, callbackfn), 'Array.prototype.some.call(Math, callbackfn) !== true');
diff --git a/test/built-ins/Array/prototype/some/15.4.4.17-1-13.js b/test/built-ins/Array/prototype/some/15.4.4.17-1-13.js
index 000540c0bb4f60e93b3bdb82620df76094e35bf1..7490883da1b161406e12344aa1694af4c8e554e3 100644
--- a/test/built-ins/Array/prototype/some/15.4.4.17-1-13.js
+++ b/test/built-ins/Array/prototype/some/15.4.4.17-1-13.js
@@ -4,21 +4,13 @@
 /*---
 es5id: 15.4.4.17-1-13
 description: Array.prototype.some applied to the JSON object
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         function callbackfn(val, idx, obj) {
             return '[object JSON]' === Object.prototype.toString.call(obj);
         }
 
-        try {
             JSON.length = 1;
             JSON[0] = 1;
-            return Array.prototype.some.call(JSON, callbackfn);
-        } finally {
-            delete JSON.length;
-            delete JSON[0];
-        }
-    }
-runTestCase(testcase);
+
+assert(Array.prototype.some.call(JSON, callbackfn), 'Array.prototype.some.call(JSON, callbackfn) !== true');
diff --git a/test/built-ins/Array/prototype/some/15.4.4.17-1-3.js b/test/built-ins/Array/prototype/some/15.4.4.17-1-3.js
index 170a7a338fbec2c1c7e5c6c45d39382eb65c74f1..7acbd36b91696bab1e544a73fe97fb475e02f108 100644
--- a/test/built-ins/Array/prototype/some/15.4.4.17-1-3.js
+++ b/test/built-ins/Array/prototype/some/15.4.4.17-1-3.js
@@ -4,21 +4,13 @@
 /*---
 es5id: 15.4.4.17-1-3
 description: Array.prototype.some applied to boolean primitive
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         function callbackfn(val, idx, obj) {
             return obj instanceof Boolean;
         }
 
-        try {
             Boolean.prototype[0] = 1;
             Boolean.prototype.length = 1;
-            return Array.prototype.some.call(false, callbackfn);
-        } finally {
-            delete Boolean.prototype[0];
-            delete Boolean.prototype.length;
-        }
-    }
-runTestCase(testcase);
+
+assert(Array.prototype.some.call(false, callbackfn), 'Array.prototype.some.call(false, callbackfn) !== true');
diff --git a/test/built-ins/Array/prototype/some/15.4.4.17-1-5.js b/test/built-ins/Array/prototype/some/15.4.4.17-1-5.js
index b1a9aa3c250a535a8b703b2482070c5954fe19e0..bf46fb2e4e1f4d4b113b2153f22f96ea88b2e064 100644
--- a/test/built-ins/Array/prototype/some/15.4.4.17-1-5.js
+++ b/test/built-ins/Array/prototype/some/15.4.4.17-1-5.js
@@ -4,22 +4,13 @@
 /*---
 es5id: 15.4.4.17-1-5
 description: Array.prototype.some applied to number primitive
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         function callbackfn(val, idx, obj) {
             return obj instanceof Number;
         }
 
-        try {
             Number.prototype[1] = true;
             Number.prototype.length = 2;
 
-            return Array.prototype.some.call(5, callbackfn);
-        } finally {
-            delete Number.prototype[1];
-            delete Number.prototype.length;
-        }
-    }
-runTestCase(testcase);
+assert(Array.prototype.some.call(5, callbackfn), 'Array.prototype.some.call(5, callbackfn) !== true');
diff --git a/test/built-ins/Array/prototype/some/15.4.4.17-2-12.js b/test/built-ins/Array/prototype/some/15.4.4.17-2-12.js
index 11cb05fb465ec6cb33136695e91c1e22bcfd10b2..12fd36f0a13ebed28aa779648ea45f426afb4d4b 100644
--- a/test/built-ins/Array/prototype/some/15.4.4.17-2-12.js
+++ b/test/built-ins/Array/prototype/some/15.4.4.17-2-12.js
@@ -7,10 +7,8 @@ description: >
     Array.prototype.some - 'length' is own accessor property without a
     get function that overrides an inherited accessor property on an
     Array-like object
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var accessed = false;
 
         function callbackfn(val, idx, obj) {
@@ -18,7 +16,6 @@ function testcase() {
             return val > 10;
         }
 
-        try {
             Object.defineProperty(Object.prototype, "length", {
                 get: function () {
                     return 2;
@@ -32,10 +29,5 @@ function testcase() {
                 configurable: true
             });
 
-            return !Array.prototype.some.call(obj, callbackfn) && !accessed;
-        } finally {
-            delete Object.prototype.length;
-        }
-
-    }
-runTestCase(testcase);
+assert.sameValue(Array.prototype.some.call(obj, callbackfn), false, 'Array.prototype.some.call(obj, callbackfn)');
+assert.sameValue(accessed, false, 'accessed');
diff --git a/test/built-ins/Array/prototype/some/15.4.4.17-2-15.js b/test/built-ins/Array/prototype/some/15.4.4.17-2-15.js
index 0fd27269938612282974ce7d9f210feded7cab0b..ea05feca4f7731e5ca9ee9e3890e89512ee942c0 100644
--- a/test/built-ins/Array/prototype/some/15.4.4.17-2-15.js
+++ b/test/built-ins/Array/prototype/some/15.4.4.17-2-15.js
@@ -4,12 +4,9 @@
 /*---
 es5id: 15.4.4.17-2-15
 description: Array.prototype.some - 'length' is property of the global object
-includes:
-    - runTestCase.js
-    - fnGlobalObject.js
+includes: [fnGlobalObject.js]
 ---*/
 
-function testcase() {
         function callbackfn1(val, idx, obj) {
             return val > 10;
         }
@@ -18,19 +15,11 @@ function testcase() {
             return val > 11;
         }
 
-        try {
             var oldLen = fnGlobalObject().length;
             fnGlobalObject()[0] = 9;
             fnGlobalObject()[1] = 11;
             fnGlobalObject()[2] = 12;
             fnGlobalObject().length = 2;
-            return Array.prototype.some.call(fnGlobalObject(), callbackfn1) &&
-                !Array.prototype.some.call(fnGlobalObject(), callbackfn2);
-        } finally {
-            delete fnGlobalObject()[0];
-            delete fnGlobalObject()[1];
-            delete fnGlobalObject()[2];
-            fnGlobalObject().length = oldLen;
-        }
-    }
-runTestCase(testcase);
+
+assert(Array.prototype.some.call(fnGlobalObject(), callbackfn1), 'Array.prototype.some.call(fnGlobalObject(), callbackfn1) !== true');
+assert.sameValue(Array.prototype.some.call(fnGlobalObject(), callbackfn2), false, 'Array.prototype.some.call(fnGlobalObject(), callbackfn2)');
diff --git a/test/built-ins/Array/prototype/some/15.4.4.17-2-18.js b/test/built-ins/Array/prototype/some/15.4.4.17-2-18.js
index 76fe238619f8e2b8b642590ed1986053df61e2fc..e219d16d02b50458960bcf627a3183b9b7babed2 100644
--- a/test/built-ins/Array/prototype/some/15.4.4.17-2-18.js
+++ b/test/built-ins/Array/prototype/some/15.4.4.17-2-18.js
@@ -6,10 +6,8 @@ es5id: 15.4.4.17-2-18
 description: >
     Array.prototype.some applied to String object which implements its
     own property get method
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         function callbackfn1(val, idx, obj) {
             return parseInt(val, 10) > 1;
         }
@@ -19,12 +17,8 @@ function testcase() {
         }
 
         var str = new String("12");
-        try {
+
             String.prototype[2] = "3";
-            return Array.prototype.some.call(str, callbackfn1) &&
-                !Array.prototype.some.call(str, callbackfn2);
-        } finally {
-            delete String.prototype[2];
-        }
-    }
-runTestCase(testcase);
+
+assert(Array.prototype.some.call(str, callbackfn1), 'Array.prototype.some.call(str, callbackfn1) !== true');
+assert.sameValue(Array.prototype.some.call(str, callbackfn2), false, 'Array.prototype.some.call(str, callbackfn2)');
diff --git a/test/built-ins/Array/prototype/some/15.4.4.17-2-2.js b/test/built-ins/Array/prototype/some/15.4.4.17-2-2.js
index beffb9869bd9eceb78ab733a825f931b8a9b110f..2a2ddb2e6a9927e05106e13b3b4d62d963761c6e 100644
--- a/test/built-ins/Array/prototype/some/15.4.4.17-2-2.js
+++ b/test/built-ins/Array/prototype/some/15.4.4.17-2-2.js
@@ -4,10 +4,8 @@
 /*---
 es5id: 15.4.4.17-2-2
 description: Array.prototype.some - 'length' is own data property on an Array
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         function callbackfn1(val, idx, obj) {
             return val > 10;
         }
@@ -16,13 +14,7 @@ function testcase() {
             return val > 11;
         }
 
-        try {
             Array.prototype[2] = 12;
 
-            return [9, 11].some(callbackfn1) &&
-                ![9, 11].some(callbackfn2);
-        } finally {
-            delete Array.prototype[2];
-        }
-    }
-runTestCase(testcase);
+assert([9, 11].some(callbackfn1), '[9, 11].some(callbackfn1) !== true');
+assert.sameValue([9, 11].some(callbackfn2), false, '[9, 11].some(callbackfn2)');
diff --git a/test/built-ins/Array/prototype/some/15.4.4.17-2-4.js b/test/built-ins/Array/prototype/some/15.4.4.17-2-4.js
index 7a5dc81e839c196efd747d4cacd825949fa86777..be0080c1a9d3369a3a3124aa4360b6337a9c0889 100644
--- a/test/built-ins/Array/prototype/some/15.4.4.17-2-4.js
+++ b/test/built-ins/Array/prototype/some/15.4.4.17-2-4.js
@@ -6,10 +6,8 @@ es5id: 15.4.4.17-2-4
 description: >
     Array.prototype.some - 'length' is an own data property that
     overrides an inherited data property on an array
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var arrProtoLen = 0;
         function callbackfn1(val, idx, obj) {
             return val > 10;
@@ -19,16 +17,9 @@ function testcase() {
             return val > 11;
         }
 
-        try {
             arrProtoLen = Array.prototype.length;
             Array.prototype.length = 0;
             Array.prototype[2] = 12;
 
-            return [9, 11].some(callbackfn1) &&
-                ![9, 11].some(callbackfn2);
-        } finally {
-            Array.prototype.length = arrProtoLen;
-            delete Array.prototype[2];
-        }
-    }
-runTestCase(testcase);
+assert([9, 11].some(callbackfn1), '[9, 11].some(callbackfn1) !== true');
+assert.sameValue([9, 11].some(callbackfn2), false, '[9, 11].some(callbackfn2)');
diff --git a/test/built-ins/Array/prototype/some/15.4.4.17-7-b-10.js b/test/built-ins/Array/prototype/some/15.4.4.17-7-b-10.js
index a09079c054f9abe3ff2fc1526a52453ae0361c2f..64e1ab5f108b770d1b5b7aeda496ac12284a3a46 100644
--- a/test/built-ins/Array/prototype/some/15.4.4.17-7-b-10.js
+++ b/test/built-ins/Array/prototype/some/15.4.4.17-7-b-10.js
@@ -6,10 +6,8 @@ es5id: 15.4.4.17-7-b-10
 description: >
     Array.prototype.some - deleting property of prototype causes
     prototype index property not to be visited on an Array-like Object
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var accessed = false;
         function callbackfn(val, idx, obj) {
             accessed = true;
@@ -25,11 +23,7 @@ function testcase() {
             configurable: true
         });
 
-        try {
             Object.prototype[1] = 1;
-            return !Array.prototype.some.call(arr, callbackfn) && accessed;
-        } finally {
-            delete Object.prototype[1];
-        }
-    }
-runTestCase(testcase);
+
+assert.sameValue(Array.prototype.some.call(arr, callbackfn), false, 'Array.prototype.some.call(arr, callbackfn)');
+assert(accessed, 'accessed !== true');
diff --git a/test/built-ins/Array/prototype/some/15.4.4.17-7-b-11.js b/test/built-ins/Array/prototype/some/15.4.4.17-7-b-11.js
index d9137ecdd3758b0c3e18f6b1ec242c7fbbf2ba10..f17bcee474e81bd73af1fd9c72e55680461316da 100644
--- a/test/built-ins/Array/prototype/some/15.4.4.17-7-b-11.js
+++ b/test/built-ins/Array/prototype/some/15.4.4.17-7-b-11.js
@@ -6,10 +6,8 @@ es5id: 15.4.4.17-7-b-11
 description: >
     Array.prototype.some - deleting property of prototype causes
     prototype index property not to be visited on an Array
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var accessed = false;
         function callbackfn(val, idx, obj) {
             accessed = true;
@@ -25,11 +23,7 @@ function testcase() {
             configurable: true
         });
 
-        try {
             Array.prototype[1] = 1;
-            return !arr.some(callbackfn) && accessed;
-        } finally {
-            delete Array.prototype[1];
-        }
-    }
-runTestCase(testcase);
+
+assert.sameValue(arr.some(callbackfn), false, 'arr.some(callbackfn)');
+assert(accessed, 'accessed !== true');
diff --git a/test/built-ins/Array/prototype/some/15.4.4.17-7-b-12.js b/test/built-ins/Array/prototype/some/15.4.4.17-7-b-12.js
index c3ac908bc9e0d59c076c22957898e5ba194095e3..0081c57f56f888d7611c0a2edbe40448e3ec3001 100644
--- a/test/built-ins/Array/prototype/some/15.4.4.17-7-b-12.js
+++ b/test/built-ins/Array/prototype/some/15.4.4.17-7-b-12.js
@@ -7,10 +7,8 @@ description: >
     Array.prototype.some - deleting own property with prototype
     property causes prototype index property to be visited on an
     Array-like object
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         function callbackfn(val, idx, obj) {
             if (idx === 1 && val === 1) {
                 return true;
@@ -28,11 +26,6 @@ function testcase() {
             configurable: true
         });
 
-        try {
             Object.prototype[1] = 1;
-            return Array.prototype.some.call(arr, callbackfn);
-        } finally {
-            delete Object.prototype[1];
-        }
-    }
-runTestCase(testcase);
+
+assert(Array.prototype.some.call(arr, callbackfn), 'Array.prototype.some.call(arr, callbackfn) !== true');
diff --git a/test/built-ins/Array/prototype/some/15.4.4.17-7-b-13.js b/test/built-ins/Array/prototype/some/15.4.4.17-7-b-13.js
index e8ca3bbd296624c372015e84140751412e617627..b8247515dcf67281e598d2522cb0aed04e844e66 100644
--- a/test/built-ins/Array/prototype/some/15.4.4.17-7-b-13.js
+++ b/test/built-ins/Array/prototype/some/15.4.4.17-7-b-13.js
@@ -6,10 +6,8 @@ es5id: 15.4.4.17-7-b-13
 description: >
     Array.prototype.some - deleting own property with prototype
     property causes prototype index property to be visited on an Array
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         function callbackfn(val, idx, obj) {
             if (idx === 1 && val === 1) {
                 return true;
@@ -27,11 +25,6 @@ function testcase() {
             configurable: true
         });
 
-        try {
             Array.prototype[1] = 1;
-            return arr.some(callbackfn);
-        } finally {
-            delete Array.prototype[1];
-        }
-    }
-runTestCase(testcase);
+
+assert(arr.some(callbackfn), 'arr.some(callbackfn) !== true');
diff --git a/test/built-ins/Array/prototype/some/15.4.4.17-7-b-15.js b/test/built-ins/Array/prototype/some/15.4.4.17-7-b-15.js
index 257b6e61f4cd8d68afdaeb1acb952b137bee9033..16c4c4b10a916256a5f0cb4061c2c4d02860b505 100644
--- a/test/built-ins/Array/prototype/some/15.4.4.17-7-b-15.js
+++ b/test/built-ins/Array/prototype/some/15.4.4.17-7-b-15.js
@@ -6,10 +6,8 @@ es5id: 15.4.4.17-7-b-15
 description: >
     Array.prototype.some - decreasing length of array with prototype
     property causes prototype index property to be visited
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         function callbackfn(val, idx, obj) {
             if (idx === 2 && val === "prototype") {
                 return true;
@@ -19,7 +17,6 @@ function testcase() {
         }
         var arr = [0, 1, 2];
 
-        try {
             Object.defineProperty(Array.prototype, "2", {
                 get: function () {
                     return "prototype";
@@ -35,9 +32,4 @@ function testcase() {
                 configurable: true
             });
 
-            return arr.some(callbackfn);
-        } finally {
-            delete Array.prototype[2];
-        }
-    }
-runTestCase(testcase);
+assert(arr.some(callbackfn), 'arr.some(callbackfn) !== true');
diff --git a/test/built-ins/Array/prototype/some/15.4.4.17-7-b-6.js b/test/built-ins/Array/prototype/some/15.4.4.17-7-b-6.js
index 1fab1f9e5bbefe632dde0f1b141e9927547dd1b6..71e74ef6d87ec1af8f0b735b040019eae14d8770 100644
--- a/test/built-ins/Array/prototype/some/15.4.4.17-7-b-6.js
+++ b/test/built-ins/Array/prototype/some/15.4.4.17-7-b-6.js
@@ -6,10 +6,8 @@ es5id: 15.4.4.17-7-b-6
 description: >
     Array.prototype.some - properties can be added to prototype after
     current position are visited on an Array-like object
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         function callbackfn(val, idx, obj) {
             if (idx === 1 && val === 6.99) {
                 return true;
@@ -32,10 +30,4 @@ function testcase() {
             configurable: true
         });
 
-        try {
-            return Array.prototype.some.call(arr, callbackfn);
-        } finally {
-            delete Object.prototype[1];
-        }
-    }
-runTestCase(testcase);
+assert(Array.prototype.some.call(arr, callbackfn), 'Array.prototype.some.call(arr, callbackfn) !== true');
diff --git a/test/built-ins/Array/prototype/some/15.4.4.17-7-b-7.js b/test/built-ins/Array/prototype/some/15.4.4.17-7-b-7.js
index 185e674042006925f5d6c8a3bc76c175eb2dbad1..2211b41ddd3eb8c0cb44a403f99e5229d299d63c 100644
--- a/test/built-ins/Array/prototype/some/15.4.4.17-7-b-7.js
+++ b/test/built-ins/Array/prototype/some/15.4.4.17-7-b-7.js
@@ -6,10 +6,8 @@ es5id: 15.4.4.17-7-b-7
 description: >
     Array.prototype.some - properties can be added to prototype after
     current position are visited on an Array
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         function callbackfn(val, idx, obj) {
             if (idx === 1 && val === 6.99) {
                 return true;
@@ -32,10 +30,4 @@ function testcase() {
             configurable: true
         });
 
-        try {
-            return arr.some(callbackfn);
-        } finally {
-            delete Array.prototype[1];
-        }
-    }
-runTestCase(testcase);
+assert(arr.some(callbackfn), 'arr.some(callbackfn) !== true');
diff --git a/test/built-ins/Array/prototype/some/15.4.4.17-7-c-i-12.js b/test/built-ins/Array/prototype/some/15.4.4.17-7-c-i-12.js
index 80f0f862a4e596bc1a4f056a8720cd60c6e4fc19..10383aea3176e56d5fefef8a0099fa6766929b27 100644
--- a/test/built-ins/Array/prototype/some/15.4.4.17-7-c-i-12.js
+++ b/test/built-ins/Array/prototype/some/15.4.4.17-7-c-i-12.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.17-7-c-i-12
 description: >
     Array.prototype.some - element to be retrieved is own accessor
     property that overrides an inherited data property on an Array
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var kValue = "abc";
 
         function callbackfn(val, idx, obj) {
@@ -21,7 +18,7 @@ function testcase() {
         }
         
         var arr = [];
-        try {
+
             Array.prototype[1] = 100;
             Object.defineProperty(arr, "1", {
                 get: function () {
@@ -30,9 +27,4 @@ function testcase() {
                 configurable: true
             });
 
-            return arr.some(callbackfn);
-        } finally {
-            delete Array.prototype[1];
-        }
-    }
-runTestCase(testcase);
+assert(arr.some(callbackfn), 'arr.some(callbackfn) !== true');
diff --git a/test/built-ins/Array/prototype/some/15.4.4.17-7-c-i-14.js b/test/built-ins/Array/prototype/some/15.4.4.17-7-c-i-14.js
index 9ec54a9edd291c7fad89cf26a15134a55a8e8531..01a680559813630eb9f4eaf2e9a13df759fe10df 100644
--- a/test/built-ins/Array/prototype/some/15.4.4.17-7-c-i-14.js
+++ b/test/built-ins/Array/prototype/some/15.4.4.17-7-c-i-14.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.17-7-c-i-14
 description: >
     Array.prototype.some - element to be retrieved is own accessor
     property that overrides an inherited accessor property on an Array
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var kValue = "abc";
 
         function callbackfn(val, idx, obj) {
@@ -28,7 +25,6 @@ function testcase() {
             configurable: true
         });
 
-        try {
             Object.defineProperty(Array.prototype, "1", {
                 get: function () {
                     return 10;
@@ -36,9 +32,4 @@ function testcase() {
                 configurable: true
             });
 
-            return arr.some(callbackfn);
-        } finally {
-            delete Array.prototype[1];
-        }
-    }
-runTestCase(testcase);
+assert(arr.some(callbackfn), 'arr.some(callbackfn) !== true');
diff --git a/test/built-ins/Array/prototype/some/15.4.4.17-7-c-i-16.js b/test/built-ins/Array/prototype/some/15.4.4.17-7-c-i-16.js
index fee268da8c033a6899952dd3b1ace584221ad701..da4e0699b6132c3a70eb6dfd17ec291e7ac67e7c 100644
--- a/test/built-ins/Array/prototype/some/15.4.4.17-7-c-i-16.js
+++ b/test/built-ins/Array/prototype/some/15.4.4.17-7-c-i-16.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.17-7-c-i-16
 description: >
     Array.prototype.some - element to be retrieved is inherited
     accessor property on an Array
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var kValue = "abc";
 
         function callbackfn(val, idx, obj) {
@@ -20,7 +17,6 @@ function testcase() {
             return false;
         }
 
-        try {
             Object.defineProperty(Array.prototype, "1", {
                 get: function () {
                     return kValue;
@@ -28,9 +24,4 @@ function testcase() {
                 configurable: true
             });
 
-            return [, , ].some(callbackfn);
-        } finally {
-            delete Array.prototype[1];
-        }
-    }
-runTestCase(testcase);
+assert([, , ].some(callbackfn), '[, , ].some(callbackfn) !== true');
diff --git a/test/built-ins/Array/prototype/some/15.4.4.17-7-c-i-19.js b/test/built-ins/Array/prototype/some/15.4.4.17-7-c-i-19.js
index 9f5825f6844d980974b45b9937f24f040353f7a0..931cf2641f64b6a8443831d82e137addb389f16c 100644
--- a/test/built-ins/Array/prototype/some/15.4.4.17-7-c-i-19.js
+++ b/test/built-ins/Array/prototype/some/15.4.4.17-7-c-i-19.js
@@ -7,11 +7,8 @@ description: >
     Array.prototype.some - element to be retrieved is own accessor
     property without a get function that overrides an inherited
     accessor property on an Array-like object
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         function callbackfn(val, idx, obj) {
             if (idx === 1) {
                 return typeof val === "undefined";
@@ -24,11 +21,7 @@ function testcase() {
             set: function () { },
             configurable: true
         });
-        try {
+
             Object.prototype[1] = 10;
-            return Array.prototype.some.call(obj, callbackfn);
-        } finally {
-            delete Object.prototype[1];
-        }
-    }
-runTestCase(testcase);
+
+assert(Array.prototype.some.call(obj, callbackfn), 'Array.prototype.some.call(obj, callbackfn) !== true');
diff --git a/test/built-ins/Array/prototype/some/15.4.4.17-7-c-i-20.js b/test/built-ins/Array/prototype/some/15.4.4.17-7-c-i-20.js
index 39b6fabb2e21cb61212af199cbec5365d99c0e7c..885a59f4e98f13a37dea3f3f8a96388e36ec8c73 100644
--- a/test/built-ins/Array/prototype/some/15.4.4.17-7-c-i-20.js
+++ b/test/built-ins/Array/prototype/some/15.4.4.17-7-c-i-20.js
@@ -7,11 +7,8 @@ description: >
     Array.prototype.some - element to be retrieved is own accessor
     property without a get function that overrides an inherited
     accessor property on an Array
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         function callbackfn(val, idx, obj) {
             if (idx === 0) {
                 return typeof val === "undefined";
@@ -26,11 +23,6 @@ function testcase() {
             configurable: true
         });
 
-        try {
             Array.prototype[0] = 100;
-            return arr.some(callbackfn);
-        } finally {
-            delete Array.prototype[0];
-        }
-    }
-runTestCase(testcase);
+
+assert(arr.some(callbackfn), 'arr.some(callbackfn) !== true');
diff --git a/test/built-ins/Array/prototype/some/15.4.4.17-7-c-i-22.js b/test/built-ins/Array/prototype/some/15.4.4.17-7-c-i-22.js
index 8d6f5ae8edfbac52f77c9af1245d249ea7b160a3..f46deb8fce301ae21abb91c75648396d5680dc38 100644
--- a/test/built-ins/Array/prototype/some/15.4.4.17-7-c-i-22.js
+++ b/test/built-ins/Array/prototype/some/15.4.4.17-7-c-i-22.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.17-7-c-i-22
 description: >
     Array.prototype.some - element to be retrieved is inherited
     accessor property without a get function on an Array
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         function callbackfn(val, idx, obj) {
             if (idx === 0) {
                 return typeof val === "undefined";
@@ -18,16 +15,9 @@ function testcase() {
             return false;
         }
 
-        try {
             Object.defineProperty(Array.prototype, "0", {
                 set: function () { },
                 configurable: true
             });
 
-            return [, ].some(callbackfn);
-        } finally {
-            delete Array.prototype[0];
-        }
-
-    }
-runTestCase(testcase);
+assert([, ].some(callbackfn), '[, ].some(callbackfn) !== true');
diff --git a/test/built-ins/Array/prototype/some/15.4.4.17-7-c-i-23.js b/test/built-ins/Array/prototype/some/15.4.4.17-7-c-i-23.js
index 7127d49a2a6eb45c9afab1bf586ab6beba81e58d..4c4ec2ab5bded0edb100e1ad943041cb18726295 100644
--- a/test/built-ins/Array/prototype/some/15.4.4.17-7-c-i-23.js
+++ b/test/built-ins/Array/prototype/some/15.4.4.17-7-c-i-23.js
@@ -6,13 +6,9 @@ es5id: 15.4.4.17-7-c-i-23
 description: >
     Array.prototype.some - This object is an global object which
     contains index property
-includes:
-    - runTestCase.js
-    - fnGlobalObject.js
+includes: [fnGlobalObject.js]
 ---*/
 
-function testcase() {
-
         function callbackfn(val, idx, obj) {
             if (idx === 0) {
                 return val === 11;
@@ -20,14 +16,8 @@ function testcase() {
             return false;
         }
 
-        try {
             var oldLen = fnGlobalObject().length;
             fnGlobalObject()[0] = 11;
             fnGlobalObject().length = 1;
-            return Array.prototype.some.call(fnGlobalObject(), callbackfn);
-        } finally {
-            delete fnGlobalObject()[0];
-            fnGlobalObject().length = oldLen;
-        }
-    }
-runTestCase(testcase);
+
+assert(Array.prototype.some.call(fnGlobalObject(), callbackfn), 'Array.prototype.some.call(fnGlobalObject(), callbackfn) !== true');
diff --git a/test/built-ins/Array/prototype/some/15.4.4.17-7-c-i-4.js b/test/built-ins/Array/prototype/some/15.4.4.17-7-c-i-4.js
index 6d335fabbd3261aa96d76a4a053a5a6634a7407f..f2317b24700342e73e9d69b81e9a1b2a74272401 100644
--- a/test/built-ins/Array/prototype/some/15.4.4.17-7-c-i-4.js
+++ b/test/built-ins/Array/prototype/some/15.4.4.17-7-c-i-4.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.17-7-c-i-4
 description: >
     Array.prototype.some - element to be retrieved is own data
     property that overrides an inherited data property on an Array
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var kValue = "abc";
 
         function callbackfn(val, idx, obj) {
@@ -20,12 +17,6 @@ function testcase() {
             return false;
         }
 
-        try {
             Array.prototype[0] = 11;
 
-            return [kValue].some(callbackfn);
-        } finally {
-            delete Array.prototype[0];
-        }
-    }
-runTestCase(testcase);
+assert([kValue].some(callbackfn), '[kValue].some(callbackfn) !== true');
diff --git a/test/built-ins/Array/prototype/some/15.4.4.17-7-c-i-6.js b/test/built-ins/Array/prototype/some/15.4.4.17-7-c-i-6.js
index 36b322b548073f54b53a80ef5f2b6e4d7fa33fc8..237c6c55d8e46f55fbc85d3179dd7ee77d22f8bf 100644
--- a/test/built-ins/Array/prototype/some/15.4.4.17-7-c-i-6.js
+++ b/test/built-ins/Array/prototype/some/15.4.4.17-7-c-i-6.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.17-7-c-i-6
 description: >
     Array.prototype.some - element to be retrieved is own data
     property that overrides an inherited accessor property on an Array
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var kValue = 1000;
 
         function callbackfn(val, idx, obj) {
@@ -20,16 +17,11 @@ function testcase() {
             return false;
         }
 
-        try {
             Object.defineProperty(Array.prototype, "0", {
                 get: function () {
                     return 9;
                 },
                 configurable: true
             });
-            return [kValue].some(callbackfn);
-        } finally {
-            delete Array.prototype[0];
-        }
-    }
-runTestCase(testcase);
+
+assert([kValue].some(callbackfn), '[kValue].some(callbackfn) !== true');
diff --git a/test/built-ins/Array/prototype/some/15.4.4.17-7-c-i-8.js b/test/built-ins/Array/prototype/some/15.4.4.17-7-c-i-8.js
index b97461441cbff7ee1a1bea3710c0e65f1f42ab2d..db423ed3b846b845603969446ee11ed4e0102147 100644
--- a/test/built-ins/Array/prototype/some/15.4.4.17-7-c-i-8.js
+++ b/test/built-ins/Array/prototype/some/15.4.4.17-7-c-i-8.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.17-7-c-i-8
 description: >
     Array.prototype.some - element to be retrieved is inherited data
     property on an Array
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var kValue = {};
 
         function callbackfn(val, idx, obj) {
@@ -20,12 +17,6 @@ function testcase() {
             return false;
         }
 
-        try {
             Array.prototype[0] = kValue;
 
-            return [, ].some(callbackfn);
-        } finally {
-            delete Array.prototype[0];
-        }
-    }
-runTestCase(testcase);
+assert([, ].some(callbackfn), '[, ].some(callbackfn) !== true');
diff --git a/test/built-ins/Array/prototype/splice/15.4.4.12-9-c-ii-1.js b/test/built-ins/Array/prototype/splice/15.4.4.12-9-c-ii-1.js
index 091e20aef8e6d253775f2ba15779f6784d3e30c2..0fd56380b9ab90987e8813511a0224a7a4ec20ea 100644
--- a/test/built-ins/Array/prototype/splice/15.4.4.12-9-c-ii-1.js
+++ b/test/built-ins/Array/prototype/splice/15.4.4.12-9-c-ii-1.js
@@ -7,11 +7,8 @@ description: >
     Array.prototype.splice will splice an array even when
     Array.prototype has index '0' set to read-only and 'fromPresent'
     less than 'actualDeleteCount (Step 9.c.ii)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-        try {
             var arr = ["a", "b", "c"];
             Array.prototype[0] = "test";
             var newArr = arr.splice(2, 1, "d");
@@ -35,9 +32,7 @@ function testcase() {
             delete newArr[0];
             verifyConfigurable = newArr.hasOwnProperty("0");
 
-            return verifyValue && !verifyConfigurable && verifyEnumerable && verifyWritable;
-        } finally {
-            delete Array.prototype[0];
-        }
-    }
-runTestCase(testcase);
+assert(verifyValue, 'verifyValue !== true');
+assert.sameValue(verifyConfigurable, false, 'verifyConfigurable');
+assert(verifyEnumerable, 'verifyEnumerable !== true');
+assert(verifyWritable, 'verifyWritable !== true');