From edc902aff5eae74e36a20e15ea426693c42e0982 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Andr=C3=A9=20Bargull?= <andre.bargull@gmail.com>
Date: Tue, 11 Aug 2015 17:44:08 +0200
Subject: [PATCH] Replace runTestCase with assert.throws [test/built-ins/Array]

---
 test/built-ins/Array/15.4.5.1-3.d-1.js           | 11 +++--------
 test/built-ins/Array/15.4.5.1-3.d-2.js           | 11 +++--------
 .../Array/prototype/every/15.4.4.16-1-1.js       | 12 +++---------
 .../Array/prototype/every/15.4.4.16-1-2.js       | 12 +++---------
 .../Array/prototype/every/15.4.4.16-3-22.js      | 16 +++++-----------
 .../Array/prototype/every/15.4.4.16-4-1.js       | 16 +++-------------
 .../Array/prototype/every/15.4.4.16-4-15.js      | 14 ++++----------
 .../Array/prototype/every/15.4.4.16-4-3.js       | 16 +++-------------
 .../Array/prototype/every/15.4.4.16-4-4.js       | 16 +++-------------
 .../Array/prototype/every/15.4.4.16-4-5.js       | 16 +++-------------
 .../Array/prototype/every/15.4.4.16-4-6.js       | 16 +++-------------
 .../Array/prototype/every/15.4.4.16-4-7.js       | 16 +++-------------
 .../Array/prototype/every/15.4.4.16-4-8.js       | 14 +++-----------
 .../Array/prototype/every/15.4.4.16-4-9.js       | 14 +++-----------
 .../Array/prototype/every/15.4.4.16-7-c-i-30.js  | 14 +++-----------
 .../Array/prototype/every/15.4.4.16-7-c-i-31.js  | 14 +++-----------
 .../Array/prototype/filter/15.4.4.20-1-1.js      | 12 +++---------
 .../Array/prototype/filter/15.4.4.20-1-2.js      | 12 +++---------
 .../Array/prototype/filter/15.4.4.20-3-22.js     | 16 +++++-----------
 .../Array/prototype/filter/15.4.4.20-4-1.js      | 16 +++-------------
 .../Array/prototype/filter/15.4.4.20-4-15.js     | 14 ++++----------
 .../Array/prototype/filter/15.4.4.20-4-2.js      | 16 +++-------------
 .../Array/prototype/filter/15.4.4.20-4-3.js      | 16 +++-------------
 .../Array/prototype/filter/15.4.4.20-4-4.js      | 16 +++-------------
 .../Array/prototype/filter/15.4.4.20-4-5.js      | 16 +++-------------
 .../Array/prototype/filter/15.4.4.20-4-6.js      | 16 +++-------------
 .../Array/prototype/filter/15.4.4.20-4-7.js      | 16 +++-------------
 .../Array/prototype/filter/15.4.4.20-4-8.js      | 14 +++-----------
 .../Array/prototype/filter/15.4.4.20-4-9.js      | 14 +++-----------
 .../Array/prototype/filter/15.4.4.20-9-c-i-30.js | 14 +++-----------
 .../Array/prototype/filter/15.4.4.20-9-c-i-31.js | 14 +++-----------
 .../Array/prototype/filter/15.4.4.20-9-c-ii-7.js | 14 +++-----------
 .../Array/prototype/forEach/15.4.4.18-1-1.js     | 12 +++---------
 .../Array/prototype/forEach/15.4.4.18-1-2.js     | 12 +++---------
 .../Array/prototype/forEach/15.4.4.18-3-22.js    | 14 +++-----------
 .../Array/prototype/forEach/15.4.4.18-4-1.js     | 16 +++-------------
 .../Array/prototype/forEach/15.4.4.18-4-15.js    | 15 ++++-----------
 .../Array/prototype/forEach/15.4.4.18-4-2.js     | 16 +++-------------
 .../Array/prototype/forEach/15.4.4.18-4-3.js     | 16 +++-------------
 .../Array/prototype/forEach/15.4.4.18-4-4.js     | 16 +++-------------
 .../Array/prototype/forEach/15.4.4.18-4-5.js     | 16 +++-------------
 .../Array/prototype/forEach/15.4.4.18-4-6.js     | 16 +++-------------
 .../Array/prototype/forEach/15.4.4.18-4-7.js     | 16 +++-------------
 .../Array/prototype/forEach/15.4.4.18-4-8.js     | 14 +++-----------
 .../Array/prototype/forEach/15.4.4.18-4-9.js     | 14 +++-----------
 .../prototype/forEach/15.4.4.18-7-c-i-30.js      | 14 +++-----------
 .../prototype/forEach/15.4.4.18-7-c-i-31.js      | 14 +++-----------
 .../prototype/forEach/15.4.4.18-7-c-ii-7.js      | 14 +++-----------
 .../Array/prototype/indexOf/15.4.4.14-1-1.js     | 13 +++----------
 .../Array/prototype/indexOf/15.4.4.14-1-2.js     | 13 +++----------
 .../Array/prototype/indexOf/15.4.4.14-5-28.js    | 14 +++-----------
 .../Array/prototype/indexOf/15.4.4.14-5-29.js    | 14 +++-----------
 .../Array/prototype/indexOf/15.4.4.14-5-30.js    | 14 +++-----------
 .../prototype/indexOf/15.4.4.14-9-b-i-30.js      | 14 +++-----------
 .../prototype/indexOf/15.4.4.14-9-b-i-31.js      | 15 +++------------
 .../Array/prototype/lastIndexOf/15.4.4.15-1-1.js | 13 ++-----------
 .../Array/prototype/lastIndexOf/15.4.4.15-1-2.js | 13 ++-----------
 .../prototype/lastIndexOf/15.4.4.15-5-28.js      | 14 +++-----------
 .../prototype/lastIndexOf/15.4.4.15-5-29.js      | 14 +++-----------
 .../prototype/lastIndexOf/15.4.4.15-5-30.js      | 14 +++-----------
 .../prototype/lastIndexOf/15.4.4.15-8-b-i-30.js  | 15 +++------------
 .../prototype/lastIndexOf/15.4.4.15-8-b-i-31.js  | 15 +++------------
 .../Array/prototype/map/15.4.4.19-1-1.js         | 12 +++---------
 .../Array/prototype/map/15.4.4.19-1-2.js         | 12 +++---------
 .../Array/prototype/map/15.4.4.19-3-14.js        | 13 ++-----------
 .../Array/prototype/map/15.4.4.19-3-22.js        | 13 ++-----------
 .../Array/prototype/map/15.4.4.19-3-28.js        | 14 ++------------
 .../Array/prototype/map/15.4.4.19-3-29.js        | 14 ++------------
 .../Array/prototype/map/15.4.4.19-3-8.js         | 13 ++-----------
 .../Array/prototype/map/15.4.4.19-4-1.js         | 16 +++-------------
 .../Array/prototype/map/15.4.4.19-4-15.js        | 15 ++++-----------
 .../Array/prototype/map/15.4.4.19-4-2.js         | 16 +++-------------
 .../Array/prototype/map/15.4.4.19-4-3.js         | 16 +++-------------
 .../Array/prototype/map/15.4.4.19-4-4.js         | 16 +++-------------
 .../Array/prototype/map/15.4.4.19-4-5.js         | 16 +++-------------
 .../Array/prototype/map/15.4.4.19-4-6.js         | 16 +++-------------
 .../Array/prototype/map/15.4.4.19-4-7.js         | 16 +++-------------
 .../Array/prototype/map/15.4.4.19-4-8.js         | 14 +++-----------
 .../Array/prototype/map/15.4.4.19-4-9.js         | 14 +++-----------
 .../Array/prototype/map/15.4.4.19-8-c-i-30.js    | 14 +++-----------
 .../Array/prototype/map/15.4.4.19-8-c-i-31.js    | 14 +++-----------
 .../Array/prototype/map/15.4.4.19-8-c-ii-7.js    | 14 +++-----------
 .../Array/prototype/reduce/15.4.4.21-1-1.js      | 14 ++++----------
 .../Array/prototype/reduce/15.4.4.21-1-2.js      | 12 +++---------
 .../Array/prototype/reduce/15.4.4.21-3-22.js     | 16 +++++-----------
 .../Array/prototype/reduce/15.4.4.21-4-1.js      | 16 +++-------------
 .../Array/prototype/reduce/15.4.4.21-4-15.js     | 14 ++++----------
 .../Array/prototype/reduce/15.4.4.21-4-2.js      | 16 +++-------------
 .../Array/prototype/reduce/15.4.4.21-4-3.js      | 16 +++-------------
 .../Array/prototype/reduce/15.4.4.21-4-4.js      | 16 +++-------------
 .../Array/prototype/reduce/15.4.4.21-4-5.js      | 16 +++-------------
 .../Array/prototype/reduce/15.4.4.21-4-6.js      | 16 +++-------------
 .../Array/prototype/reduce/15.4.4.21-4-7.js      | 16 +++-------------
 .../Array/prototype/reduce/15.4.4.21-4-8.js      | 14 +++-----------
 .../Array/prototype/reduce/15.4.4.21-4-9.js      | 14 +++-----------
 .../Array/prototype/reduce/15.4.4.21-5-1.js      | 14 ++------------
 .../Array/prototype/reduce/15.4.4.21-5-10.js     | 14 +++-----------
 .../Array/prototype/reduce/15.4.4.21-5-11.js     | 14 +++-----------
 .../Array/prototype/reduce/15.4.4.21-5-2.js      | 13 ++-----------
 .../Array/prototype/reduce/15.4.4.21-5-3.js      | 13 ++-----------
 .../Array/prototype/reduce/15.4.4.21-5-4.js      | 13 ++-----------
 .../Array/prototype/reduce/15.4.4.21-5-5.js      | 13 ++-----------
 .../Array/prototype/reduce/15.4.4.21-5-6.js      | 13 ++-----------
 .../Array/prototype/reduce/15.4.4.21-5-7.js      | 13 ++-----------
 .../Array/prototype/reduce/15.4.4.21-5-8.js      | 13 ++-----------
 .../prototype/reduce/15.4.4.21-8-b-iii-1-32.js   | 15 ++++-----------
 .../prototype/reduce/15.4.4.21-8-b-iii-1-33.js   | 15 ++++-----------
 .../Array/prototype/reduce/15.4.4.21-8-c-1.js    | 13 ++-----------
 .../Array/prototype/reduce/15.4.4.21-8-c-2.js    | 13 ++-----------
 .../Array/prototype/reduce/15.4.4.21-8-c-3.js    | 13 ++-----------
 .../Array/prototype/reduce/15.4.4.21-8-c-5.js    | 14 +++-----------
 .../Array/prototype/reduce/15.4.4.21-8-c-6.js    | 14 +++-----------
 .../Array/prototype/reduce/15.4.4.21-9-c-i-32.js | 15 ++++-----------
 .../Array/prototype/reduce/15.4.4.21-9-c-i-33.js | 15 ++++-----------
 .../Array/prototype/reduce/15.4.4.21-9-c-ii-7.js | 14 +++-----------
 .../Array/prototype/reduceRight/15.4.4.22-1-1.js | 14 ++++----------
 .../Array/prototype/reduceRight/15.4.4.22-1-2.js | 12 +++---------
 .../prototype/reduceRight/15.4.4.22-3-22.js      | 16 +++++-----------
 .../Array/prototype/reduceRight/15.4.4.22-4-1.js | 16 +++-------------
 .../prototype/reduceRight/15.4.4.22-4-15.js      | 14 ++++----------
 .../Array/prototype/reduceRight/15.4.4.22-4-2.js | 16 +++-------------
 .../Array/prototype/reduceRight/15.4.4.22-4-3.js | 16 +++-------------
 .../Array/prototype/reduceRight/15.4.4.22-4-4.js | 16 +++-------------
 .../Array/prototype/reduceRight/15.4.4.22-4-5.js | 16 +++-------------
 .../Array/prototype/reduceRight/15.4.4.22-4-6.js | 16 +++-------------
 .../Array/prototype/reduceRight/15.4.4.22-4-7.js | 16 +++-------------
 .../Array/prototype/reduceRight/15.4.4.22-4-8.js | 14 +++-----------
 .../Array/prototype/reduceRight/15.4.4.22-4-9.js | 14 +++-----------
 .../Array/prototype/reduceRight/15.4.4.22-5-1.js | 14 ++------------
 .../prototype/reduceRight/15.4.4.22-5-10.js      | 14 +++-----------
 .../prototype/reduceRight/15.4.4.22-5-11.js      | 14 +++-----------
 .../Array/prototype/reduceRight/15.4.4.22-5-2.js | 13 ++-----------
 .../Array/prototype/reduceRight/15.4.4.22-5-3.js | 13 ++-----------
 .../Array/prototype/reduceRight/15.4.4.22-5-4.js | 13 ++-----------
 .../Array/prototype/reduceRight/15.4.4.22-5-5.js | 13 ++-----------
 .../Array/prototype/reduceRight/15.4.4.22-5-6.js | 13 ++-----------
 .../Array/prototype/reduceRight/15.4.4.22-5-7.js | 13 ++-----------
 .../Array/prototype/reduceRight/15.4.4.22-5-8.js | 13 ++-----------
 .../reduceRight/15.4.4.22-8-b-iii-1-32.js        | 14 +++-----------
 .../reduceRight/15.4.4.22-8-b-iii-1-33.js        | 14 +++-----------
 .../prototype/reduceRight/15.4.4.22-8-c-1.js     | 13 ++-----------
 .../prototype/reduceRight/15.4.4.22-8-c-2.js     | 13 ++-----------
 .../prototype/reduceRight/15.4.4.22-8-c-3.js     | 13 ++-----------
 .../prototype/reduceRight/15.4.4.22-8-c-5.js     | 14 +++-----------
 .../prototype/reduceRight/15.4.4.22-8-c-6.js     | 14 +++-----------
 .../prototype/reduceRight/15.4.4.22-9-c-i-32.js  | 14 +++-----------
 .../Array/prototype/some/15.4.4.17-1-1.js        | 12 +++---------
 .../Array/prototype/some/15.4.4.17-1-2.js        | 12 +++---------
 .../Array/prototype/some/15.4.4.17-3-22.js       | 16 +++++-----------
 .../Array/prototype/some/15.4.4.17-4-1.js        | 16 +++-------------
 .../Array/prototype/some/15.4.4.17-4-15.js       | 14 ++++----------
 .../Array/prototype/some/15.4.4.17-4-2.js        | 16 +++-------------
 .../Array/prototype/some/15.4.4.17-4-3.js        | 16 +++-------------
 .../Array/prototype/some/15.4.4.17-4-4.js        | 16 +++-------------
 .../Array/prototype/some/15.4.4.17-4-5.js        | 16 +++-------------
 .../Array/prototype/some/15.4.4.17-4-6.js        | 16 +++-------------
 .../Array/prototype/some/15.4.4.17-4-7.js        | 16 +++-------------
 .../Array/prototype/some/15.4.4.17-4-8.js        | 14 +++-----------
 .../Array/prototype/some/15.4.4.17-4-9.js        | 14 +++-----------
 .../Array/prototype/some/15.4.4.17-7-c-i-30.js   | 14 +++-----------
 .../Array/prototype/some/15.4.4.17-7-c-i-31.js   | 14 +++-----------
 .../Array/prototype/some/15.4.4.17-7-c-ii-7.js   | 14 +++-----------
 162 files changed, 480 insertions(+), 1846 deletions(-)

diff --git a/test/built-ins/Array/15.4.5.1-3.d-1.js b/test/built-ins/Array/15.4.5.1-3.d-1.js
index 936331009c..7e771af037 100644
--- a/test/built-ins/Array/15.4.5.1-3.d-1.js
+++ b/test/built-ins/Array/15.4.5.1-3.d-1.js
@@ -6,14 +6,9 @@ es5id: 15.4.5.1-3.d-1
 description: >
     Throw RangeError if attempt to set array length property to
     4294967296 (2**32)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-  try {
+
+assert.throws(RangeError, function() {
       [].length = 4294967296 ;
-  } catch (e) {
-	if (e instanceof RangeError) return true;
-  }
- }
-runTestCase(testcase);
+});
diff --git a/test/built-ins/Array/15.4.5.1-3.d-2.js b/test/built-ins/Array/15.4.5.1-3.d-2.js
index eacc1b709c..e5ecd52d04 100644
--- a/test/built-ins/Array/15.4.5.1-3.d-2.js
+++ b/test/built-ins/Array/15.4.5.1-3.d-2.js
@@ -6,14 +6,9 @@ es5id: 15.4.5.1-3.d-2
 description: >
     Throw RangeError if attempt to set array length property to
     4294967297 (1+2**32)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-  try {
+
+assert.throws(RangeError, function() {
       [].length = 4294967297 ;
-  } catch (e) {
-	if (e instanceof RangeError) return true;
-  }
- }
-runTestCase(testcase);
+});
diff --git a/test/built-ins/Array/prototype/every/15.4.4.16-1-1.js b/test/built-ins/Array/prototype/every/15.4.4.16-1-1.js
index f4c9bfe4e5..f6250b0af2 100644
--- a/test/built-ins/Array/prototype/every/15.4.4.16-1-1.js
+++ b/test/built-ins/Array/prototype/every/15.4.4.16-1-1.js
@@ -4,15 +4,9 @@
 /*---
 es5id: 15.4.4.16-1-1
 description: Array.prototype.every applied to undefined throws a TypeError
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-        try {
+
+assert.throws(TypeError, function() {
             Array.prototype.every.call(undefined); // TypeError is thrown if value is undefined
-            return false;
-        } catch (e) {
-            return (e instanceof TypeError);
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/built-ins/Array/prototype/every/15.4.4.16-1-2.js b/test/built-ins/Array/prototype/every/15.4.4.16-1-2.js
index 27bb16bf60..8e9c44e1cc 100644
--- a/test/built-ins/Array/prototype/every/15.4.4.16-1-2.js
+++ b/test/built-ins/Array/prototype/every/15.4.4.16-1-2.js
@@ -4,15 +4,9 @@
 /*---
 es5id: 15.4.4.16-1-2
 description: Array.prototype.every applied to null throws a TypeError
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-        try {
+
+assert.throws(TypeError, function() {
             Array.prototype.every.call(null); // TypeError is thrown if value is null
-            return false;
-        } catch (e) {
-            return (e instanceof TypeError);
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/built-ins/Array/prototype/every/15.4.4.16-3-22.js b/test/built-ins/Array/prototype/every/15.4.4.16-3-22.js
index c6740303f4..0925479b4e 100644
--- a/test/built-ins/Array/prototype/every/15.4.4.16-3-22.js
+++ b/test/built-ins/Array/prototype/every/15.4.4.16-3-22.js
@@ -7,11 +7,8 @@ description: >
     Array.prototype.every throws TypeError exception when 'length' is
     an object with toString and valueOf methods that don�t return
     primitive values
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var callbackfnAccessed = false;
         var toStringAccessed = false;
         var valueOfAccessed = false;
@@ -36,12 +33,9 @@ function testcase() {
                 }
             }
         };
-
-        try {
+assert.throws(TypeError, function() {
             Array.prototype.every.call(obj, callbackfn);
-            return false;
-        } catch (ex) {
-            return (ex instanceof TypeError) && toStringAccessed && valueOfAccessed && !callbackfnAccessed;
-        }
-    }
-runTestCase(testcase);
+});
+assert(toStringAccessed, 'toStringAccessed !== true');
+assert(valueOfAccessed, 'valueOfAccessed !== true');
+assert.sameValue(callbackfnAccessed, false, 'callbackfnAccessed');
diff --git a/test/built-ins/Array/prototype/every/15.4.4.16-4-1.js b/test/built-ins/Array/prototype/every/15.4.4.16-4-1.js
index e6a44deb9e..7c41da2ceb 100644
--- a/test/built-ins/Array/prototype/every/15.4.4.16-4-1.js
+++ b/test/built-ins/Array/prototype/every/15.4.4.16-4-1.js
@@ -4,19 +4,9 @@
 /*---
 es5id: 15.4.4.16-4-1
 description: Array.prototype.every throws TypeError if callbackfn is undefined
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
   var arr = new Array(10);
-  try {
-    arr.every();    
-  }
-  catch(e) {
-    if(e instanceof TypeError)
-      return true;  
-  }
-
- }
-runTestCase(testcase);
+assert.throws(TypeError, function() {
+    arr.every();
+});
diff --git a/test/built-ins/Array/prototype/every/15.4.4.16-4-15.js b/test/built-ins/Array/prototype/every/15.4.4.16-4-15.js
index ebc4e74909..5c7b02fa46 100644
--- a/test/built-ins/Array/prototype/every/15.4.4.16-4-15.js
+++ b/test/built-ins/Array/prototype/every/15.4.4.16-4-15.js
@@ -6,10 +6,8 @@ es5id: 15.4.4.16-4-15
 description: >
     Array.prototype.every - calling with no callbackfn is the same as
     passing undefined for callbackfn
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = { 10: 10 };
         var lengthAccessed = false;
         var loopAccessed = false;
@@ -29,12 +27,8 @@ function testcase() {
             },
             configurable: true
         });
-
-        try {
+assert.throws(TypeError, function() {
             Array.prototype.every.call(obj);
-            return false;
-        } catch (ex) {
-            return (ex instanceof TypeError) && lengthAccessed && !loopAccessed;
-        }
-    }
-runTestCase(testcase);
+});
+assert(lengthAccessed, 'lengthAccessed !== true');
+assert.sameValue(loopAccessed, false, 'loopAccessed');
diff --git a/test/built-ins/Array/prototype/every/15.4.4.16-4-3.js b/test/built-ins/Array/prototype/every/15.4.4.16-4-3.js
index 1cc880e8aa..75e038a103 100644
--- a/test/built-ins/Array/prototype/every/15.4.4.16-4-3.js
+++ b/test/built-ins/Array/prototype/every/15.4.4.16-4-3.js
@@ -4,19 +4,9 @@
 /*---
 es5id: 15.4.4.16-4-3
 description: Array.prototype.every throws TypeError if callbackfn is null
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
   var arr = new Array(10);
-  try {
-    arr.every(null);    
-  }
-  catch(e) {
-    if(e instanceof TypeError)
-      return true;  
-  }
-
- }
-runTestCase(testcase);
+assert.throws(TypeError, function() {
+    arr.every(null);
+});
diff --git a/test/built-ins/Array/prototype/every/15.4.4.16-4-4.js b/test/built-ins/Array/prototype/every/15.4.4.16-4-4.js
index 4087cbdc63..9da632a37f 100644
--- a/test/built-ins/Array/prototype/every/15.4.4.16-4-4.js
+++ b/test/built-ins/Array/prototype/every/15.4.4.16-4-4.js
@@ -4,19 +4,9 @@
 /*---
 es5id: 15.4.4.16-4-4
 description: Array.prototype.every throws TypeError if callbackfn is boolean
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
   var arr = new Array(10);
-  try {
-    arr.every(true);    
-  }
-  catch(e) {
-    if(e instanceof TypeError)
-      return true;  
-  }
-
- }
-runTestCase(testcase);
+assert.throws(TypeError, function() {
+    arr.every(true);
+});
diff --git a/test/built-ins/Array/prototype/every/15.4.4.16-4-5.js b/test/built-ins/Array/prototype/every/15.4.4.16-4-5.js
index 169f53a57a..503ec7d898 100644
--- a/test/built-ins/Array/prototype/every/15.4.4.16-4-5.js
+++ b/test/built-ins/Array/prototype/every/15.4.4.16-4-5.js
@@ -4,19 +4,9 @@
 /*---
 es5id: 15.4.4.16-4-5
 description: Array.prototype.every throws TypeError if callbackfn is number
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
   var arr = new Array(10);
-  try {
-    arr.every(5);    
-  }
-  catch(e) {
-    if(e instanceof TypeError)
-      return true;  
-  }
-
- }
-runTestCase(testcase);
+assert.throws(TypeError, function() {
+    arr.every(5);
+});
diff --git a/test/built-ins/Array/prototype/every/15.4.4.16-4-6.js b/test/built-ins/Array/prototype/every/15.4.4.16-4-6.js
index 563af42bd6..789674836b 100644
--- a/test/built-ins/Array/prototype/every/15.4.4.16-4-6.js
+++ b/test/built-ins/Array/prototype/every/15.4.4.16-4-6.js
@@ -4,19 +4,9 @@
 /*---
 es5id: 15.4.4.16-4-6
 description: Array.prototype.every throws TypeError if callbackfn is string
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
   var arr = new Array(10);
-  try {
-    arr.every("abc");    
-  }
-  catch(e) {
-    if(e instanceof TypeError)
-      return true;  
-  }
-
- }
-runTestCase(testcase);
+assert.throws(TypeError, function() {
+    arr.every("abc");
+});
diff --git a/test/built-ins/Array/prototype/every/15.4.4.16-4-7.js b/test/built-ins/Array/prototype/every/15.4.4.16-4-7.js
index 9bad6bede8..5d6bbc1a59 100644
--- a/test/built-ins/Array/prototype/every/15.4.4.16-4-7.js
+++ b/test/built-ins/Array/prototype/every/15.4.4.16-4-7.js
@@ -6,19 +6,9 @@ es5id: 15.4.4.16-4-7
 description: >
     Array.prototype.every throws TypeError if callbackfn is Object
     without a Call internal method
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
   var arr = new Array(10);
-  try {
-    arr.every( {} );    
-  }
-  catch(e) {
-    if(e instanceof TypeError)
-      return true;  
-  }
-
- }
-runTestCase(testcase);
+assert.throws(TypeError, function() {
+    arr.every( {} );
+});
diff --git a/test/built-ins/Array/prototype/every/15.4.4.16-4-8.js b/test/built-ins/Array/prototype/every/15.4.4.16-4-8.js
index 3112aead03..e274820717 100644
--- a/test/built-ins/Array/prototype/every/15.4.4.16-4-8.js
+++ b/test/built-ins/Array/prototype/every/15.4.4.16-4-8.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.16-4-8
 description: >
     Array.prototype.every - side effects produced by step 2 are
     visible when an exception occurs
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var obj = { 0: 11, 1: 12 };
 
         var accessed = false;
@@ -22,12 +19,7 @@ function testcase() {
             },
             configurable: true
         });
-
-        try {
+assert.throws(TypeError, function() {
             Array.prototype.every.call(obj, null);
-            return false;
-        } catch (ex) {
-            return ex instanceof TypeError && accessed;
-        }
-    }
-runTestCase(testcase);
+});
+assert(accessed, 'accessed !== true');
diff --git a/test/built-ins/Array/prototype/every/15.4.4.16-4-9.js b/test/built-ins/Array/prototype/every/15.4.4.16-4-9.js
index 1471ee503a..1eac00d468 100644
--- a/test/built-ins/Array/prototype/every/15.4.4.16-4-9.js
+++ b/test/built-ins/Array/prototype/every/15.4.4.16-4-9.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.16-4-9
 description: >
     Array.prototype.every - side effects produced by step 3 are
     visible when an exception occurs
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var obj = { 0: 11, 1: 12 };
 
         var accessed = false;
@@ -26,12 +23,7 @@ function testcase() {
             },
             configurable: true
         });
-
-        try {
+assert.throws(TypeError, function() {
             Array.prototype.every.call(obj, null);
-            return false;
-        } catch (ex) {
-            return ex instanceof TypeError && accessed;
-        }
-    }
-runTestCase(testcase);
+});
+assert(accessed, 'accessed !== true');
diff --git a/test/built-ins/Array/prototype/every/15.4.4.16-7-c-i-30.js b/test/built-ins/Array/prototype/every/15.4.4.16-7-c-i-30.js
index de3ad30b79..dbf50bc008 100644
--- a/test/built-ins/Array/prototype/every/15.4.4.16-7-c-i-30.js
+++ b/test/built-ins/Array/prototype/every/15.4.4.16-7-c-i-30.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.16-7-c-i-30
 description: >
     Array.prototype.every - unnhandled exceptions happened in getter
     terminate iteration on an Array-like object
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var accessed = false;
         function callbackfn(val, idx, obj) {
             if (idx > 1) {
@@ -26,12 +23,7 @@ function testcase() {
             },
             configurable: true
         });
-
-        try {
+assert.throws(RangeError, function() {
             Array.prototype.every.call(obj, callbackfn);
-            return false;
-        } catch (ex) {
-            return (ex instanceof RangeError) && !accessed;
-        }
-    }
-runTestCase(testcase);
+});
+assert.sameValue(accessed, false, 'accessed');
diff --git a/test/built-ins/Array/prototype/every/15.4.4.16-7-c-i-31.js b/test/built-ins/Array/prototype/every/15.4.4.16-7-c-i-31.js
index 6be105291d..00acee8995 100644
--- a/test/built-ins/Array/prototype/every/15.4.4.16-7-c-i-31.js
+++ b/test/built-ins/Array/prototype/every/15.4.4.16-7-c-i-31.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.16-7-c-i-31
 description: >
     Array.prototype.every - unhandled exceptions happened in getter
     terminate iteration on an Array
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var accessed = false;
         function callbackfn(val, idx, obj) {
             if (idx > 1) {
@@ -29,12 +26,7 @@ function testcase() {
             },
             configurable: true
         });
-
-        try {
+assert.throws(RangeError, function() {
             arr.every(callbackfn);
-            return false;
-        } catch (ex) {
-            return (ex instanceof RangeError) && !accessed;
-        }
-    }
-runTestCase(testcase);
+});
+assert.sameValue(accessed, false, 'accessed');
diff --git a/test/built-ins/Array/prototype/filter/15.4.4.20-1-1.js b/test/built-ins/Array/prototype/filter/15.4.4.20-1-1.js
index 770768432f..749b48d8a2 100644
--- a/test/built-ins/Array/prototype/filter/15.4.4.20-1-1.js
+++ b/test/built-ins/Array/prototype/filter/15.4.4.20-1-1.js
@@ -4,15 +4,9 @@
 /*---
 es5id: 15.4.4.20-1-1
 description: Array.prototype.filter applied to undefined throws a TypeError
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-        try {
+
+assert.throws(TypeError, function() {
             Array.prototype.filter.call(undefined); // TypeError is thrown if value is undefined
-            return false;
-        } catch (ex) {
-            return ex instanceof TypeError;
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/built-ins/Array/prototype/filter/15.4.4.20-1-2.js b/test/built-ins/Array/prototype/filter/15.4.4.20-1-2.js
index 67b1857304..e744128c6e 100644
--- a/test/built-ins/Array/prototype/filter/15.4.4.20-1-2.js
+++ b/test/built-ins/Array/prototype/filter/15.4.4.20-1-2.js
@@ -4,15 +4,9 @@
 /*---
 es5id: 15.4.4.20-1-2
 description: Array.prototype.filter applied to null throws a TypeError
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-        try {
+
+assert.throws(TypeError, function() {
             Array.prototype.filter.call(null);
-            return false;
-        } catch (ex) {
-            return ex instanceof TypeError;
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/built-ins/Array/prototype/filter/15.4.4.20-3-22.js b/test/built-ins/Array/prototype/filter/15.4.4.20-3-22.js
index c9df0158fc..e72f4aab49 100644
--- a/test/built-ins/Array/prototype/filter/15.4.4.20-3-22.js
+++ b/test/built-ins/Array/prototype/filter/15.4.4.20-3-22.js
@@ -7,11 +7,8 @@ description: >
     Array.prototype.filter throws TypeError exception when 'length' is
     an object with toString and valueOf methods that don�t return
     primitive values
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var accessed = false;
         var firstStepOccured = false;
         var secondStepOccured = false;
@@ -36,12 +33,9 @@ function testcase() {
                 }
             }
         };
-
-        try {
+assert.throws(TypeError, function() {
             Array.prototype.filter.call(obj, callbackfn);
-            return false;
-        } catch (ex) {
-            return (ex instanceof TypeError) && !accessed && firstStepOccured && secondStepOccured;
-        }
-    }
-runTestCase(testcase);
+});
+assert.sameValue(accessed, false, 'accessed');
+assert(firstStepOccured, 'firstStepOccured !== true');
+assert(secondStepOccured, 'secondStepOccured !== true');
diff --git a/test/built-ins/Array/prototype/filter/15.4.4.20-4-1.js b/test/built-ins/Array/prototype/filter/15.4.4.20-4-1.js
index f8254ae83a..438a810dac 100644
--- a/test/built-ins/Array/prototype/filter/15.4.4.20-4-1.js
+++ b/test/built-ins/Array/prototype/filter/15.4.4.20-4-1.js
@@ -4,19 +4,9 @@
 /*---
 es5id: 15.4.4.20-4-1
 description: Array.prototype.filter throws TypeError if callbackfn is undefined
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
   var arr = new Array(10);
-  try {
-    arr.filter();    
-  }
-  catch(e) {
-    if(e instanceof TypeError)
-      return true;  
-  }
-
- }
-runTestCase(testcase);
+assert.throws(TypeError, function() {
+    arr.filter();
+});
diff --git a/test/built-ins/Array/prototype/filter/15.4.4.20-4-15.js b/test/built-ins/Array/prototype/filter/15.4.4.20-4-15.js
index eb24bf97d0..2bf2e8a962 100644
--- a/test/built-ins/Array/prototype/filter/15.4.4.20-4-15.js
+++ b/test/built-ins/Array/prototype/filter/15.4.4.20-4-15.js
@@ -6,10 +6,8 @@ es5id: 15.4.4.20-4-15
 description: >
     Array.prototype.filter - calling with no callbackfn is the same as
     passing undefined for callbackfn
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = { 10: 10 };
         var lengthAccessed = false;
         var loopAccessed = false;
@@ -27,12 +25,8 @@ function testcase() {
             },
             configurable: true
         });
-
-        try {
+assert.throws(TypeError, function() {
             Array.prototype.filter.call(obj);
-            return false;
-        } catch (ex) {
-            return (ex instanceof TypeError) && lengthAccessed && !loopAccessed;
-        }
-    }
-runTestCase(testcase);
+});
+assert(lengthAccessed, 'lengthAccessed !== true');
+assert.sameValue(loopAccessed, false, 'loopAccessed');
diff --git a/test/built-ins/Array/prototype/filter/15.4.4.20-4-2.js b/test/built-ins/Array/prototype/filter/15.4.4.20-4-2.js
index fa8b81de4c..69579f172c 100644
--- a/test/built-ins/Array/prototype/filter/15.4.4.20-4-2.js
+++ b/test/built-ins/Array/prototype/filter/15.4.4.20-4-2.js
@@ -6,19 +6,9 @@ es5id: 15.4.4.20-4-2
 description: >
     Array.prototype.filter throws ReferenceError if callbackfn is
     unreferenced
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
   var arr = new Array(10);
-  try {
-    arr.filter(foo);    
-  }
-  catch(e) {
-    if(e instanceof ReferenceError)
-      return true;  
-  }
-
- }
-runTestCase(testcase);
+assert.throws(ReferenceError, function() {
+    arr.filter(foo);
+});
diff --git a/test/built-ins/Array/prototype/filter/15.4.4.20-4-3.js b/test/built-ins/Array/prototype/filter/15.4.4.20-4-3.js
index 37808a9873..3a9417fafc 100644
--- a/test/built-ins/Array/prototype/filter/15.4.4.20-4-3.js
+++ b/test/built-ins/Array/prototype/filter/15.4.4.20-4-3.js
@@ -4,19 +4,9 @@
 /*---
 es5id: 15.4.4.20-4-3
 description: Array.prototype.filter throws TypeError if callbackfn is null
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
   var arr = new Array(10);
-  try {
-    arr.filter(null);    
-  }
-  catch(e) {
-    if(e instanceof TypeError)
-      return true;  
-  }
-
- }
-runTestCase(testcase);
+assert.throws(TypeError, function() {
+    arr.filter(null);
+});
diff --git a/test/built-ins/Array/prototype/filter/15.4.4.20-4-4.js b/test/built-ins/Array/prototype/filter/15.4.4.20-4-4.js
index c09bf01f33..2f6e677260 100644
--- a/test/built-ins/Array/prototype/filter/15.4.4.20-4-4.js
+++ b/test/built-ins/Array/prototype/filter/15.4.4.20-4-4.js
@@ -4,19 +4,9 @@
 /*---
 es5id: 15.4.4.20-4-4
 description: Array.prototype.filter throws TypeError if callbackfn is boolean
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
   var arr = new Array(10);
-  try {
-    arr.filter(true);    
-  }
-  catch(e) {
-    if(e instanceof TypeError)
-      return true;  
-  }
-
- }
-runTestCase(testcase);
+assert.throws(TypeError, function() {
+    arr.filter(true);
+});
diff --git a/test/built-ins/Array/prototype/filter/15.4.4.20-4-5.js b/test/built-ins/Array/prototype/filter/15.4.4.20-4-5.js
index 4d49906ec0..62e94d2a31 100644
--- a/test/built-ins/Array/prototype/filter/15.4.4.20-4-5.js
+++ b/test/built-ins/Array/prototype/filter/15.4.4.20-4-5.js
@@ -4,19 +4,9 @@
 /*---
 es5id: 15.4.4.20-4-5
 description: Array.prototype.filter throws TypeError if callbackfn is number
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
   var arr = new Array(10);
-  try {
-    arr.filter(5);    
-  }
-  catch(e) {
-    if(e instanceof TypeError)
-      return true;  
-  }
-
- }
-runTestCase(testcase);
+assert.throws(TypeError, function() {
+    arr.filter(5);
+});
diff --git a/test/built-ins/Array/prototype/filter/15.4.4.20-4-6.js b/test/built-ins/Array/prototype/filter/15.4.4.20-4-6.js
index 543dd3adcb..964c3d340a 100644
--- a/test/built-ins/Array/prototype/filter/15.4.4.20-4-6.js
+++ b/test/built-ins/Array/prototype/filter/15.4.4.20-4-6.js
@@ -4,19 +4,9 @@
 /*---
 es5id: 15.4.4.20-4-6
 description: Array.prototype.filter throws TypeError if callbackfn is string
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
   var arr = new Array(10);
-  try {
-    arr.filter("abc");    
-  }
-  catch(e) {
-    if(e instanceof TypeError)
-      return true;  
-  }
-
- }
-runTestCase(testcase);
+assert.throws(TypeError, function() {
+    arr.filter("abc");
+});
diff --git a/test/built-ins/Array/prototype/filter/15.4.4.20-4-7.js b/test/built-ins/Array/prototype/filter/15.4.4.20-4-7.js
index d80cb49a0a..11a9fc5b07 100644
--- a/test/built-ins/Array/prototype/filter/15.4.4.20-4-7.js
+++ b/test/built-ins/Array/prototype/filter/15.4.4.20-4-7.js
@@ -6,19 +6,9 @@ es5id: 15.4.4.20-4-7
 description: >
     Array.prototype.filter throws TypeError if callbackfn is Object
     without [[Call]] internal method
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
   var arr = new Array(10);
-  try {
-    arr.filter(new Object());    
-  }
-  catch(e) {
-    if(e instanceof TypeError)
-      return true;  
-  }
-
- }
-runTestCase(testcase);
+assert.throws(TypeError, function() {
+    arr.filter(new Object());
+});
diff --git a/test/built-ins/Array/prototype/filter/15.4.4.20-4-8.js b/test/built-ins/Array/prototype/filter/15.4.4.20-4-8.js
index b643d08ff1..2941ac08cd 100644
--- a/test/built-ins/Array/prototype/filter/15.4.4.20-4-8.js
+++ b/test/built-ins/Array/prototype/filter/15.4.4.20-4-8.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.20-4-8
 description: >
     Array.prototype.filter - side effects produced by step 2 are
     visible when an exception occurs
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var obj = { 0: 11, 1: 12 };
 
         var accessed = false;
@@ -22,12 +19,7 @@ function testcase() {
             },
             configurable: true
         });
-
-        try {
+assert.throws(TypeError, function() {
             Array.prototype.filter.call(obj, null);
-            return false;
-        } catch (ex) {
-            return ex instanceof TypeError && accessed;
-        }
-    }
-runTestCase(testcase);
+});
+assert(accessed, 'accessed !== true');
diff --git a/test/built-ins/Array/prototype/filter/15.4.4.20-4-9.js b/test/built-ins/Array/prototype/filter/15.4.4.20-4-9.js
index 813de76f6e..566e97f529 100644
--- a/test/built-ins/Array/prototype/filter/15.4.4.20-4-9.js
+++ b/test/built-ins/Array/prototype/filter/15.4.4.20-4-9.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.20-4-9
 description: >
     Array.prototype.filter - side effects produced by step 3 are
     visible when an exception occurs
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var obj = { 0: 11, 1: 12 };
 
         var accessed = false;
@@ -26,12 +23,7 @@ function testcase() {
             },
             configurable: true
         });
-
-        try {
+assert.throws(TypeError, function() {
             Array.prototype.filter.call(obj, null);
-            return false;
-        } catch (ex) {
-            return ex instanceof TypeError && accessed;
-        }
-    }
-runTestCase(testcase);
+});
+assert(accessed, 'accessed !== true');
diff --git a/test/built-ins/Array/prototype/filter/15.4.4.20-9-c-i-30.js b/test/built-ins/Array/prototype/filter/15.4.4.20-9-c-i-30.js
index 7851756f51..e0381e7cdb 100644
--- a/test/built-ins/Array/prototype/filter/15.4.4.20-9-c-i-30.js
+++ b/test/built-ins/Array/prototype/filter/15.4.4.20-9-c-i-30.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.20-9-c-i-30
 description: >
     Array.prototype.filter - unnhandled exceptions happened in getter
     terminate iteration on an Array-like object
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var accessed = false;
         function callbackfn(val, idx, obj) {
             if (idx > 1) {
@@ -26,12 +23,7 @@ function testcase() {
             },
             configurable: true
         });
-
-        try {
+assert.throws(RangeError, function() {
             Array.prototype.filter.call(obj, callbackfn);
-            return false;
-        } catch (ex) {
-            return (ex instanceof RangeError) && !accessed;
-        }
-    }
-runTestCase(testcase);
+});
+assert.sameValue(accessed, false, 'accessed');
diff --git a/test/built-ins/Array/prototype/filter/15.4.4.20-9-c-i-31.js b/test/built-ins/Array/prototype/filter/15.4.4.20-9-c-i-31.js
index 844231c32d..63d371c180 100644
--- a/test/built-ins/Array/prototype/filter/15.4.4.20-9-c-i-31.js
+++ b/test/built-ins/Array/prototype/filter/15.4.4.20-9-c-i-31.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.20-9-c-i-31
 description: >
     Array.prototype.filter - unnhandled exceptions happened in getter
     terminate iteration on an Array
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var accessed = false;
         function callbackfn(val, idx, obj) {
             if (idx > 1) {
@@ -29,12 +26,7 @@ function testcase() {
             },
             configurable: true
         });
-
-        try {
+assert.throws(RangeError, function() {
             arr.filter(callbackfn);
-            return false;
-        } catch (ex) {
-            return (ex instanceof RangeError) && !accessed;
-        }
-    }
-runTestCase(testcase);
+});
+assert.sameValue(accessed, false, 'accessed');
diff --git a/test/built-ins/Array/prototype/filter/15.4.4.20-9-c-ii-7.js b/test/built-ins/Array/prototype/filter/15.4.4.20-9-c-ii-7.js
index 55a30af64e..cc1b9ba757 100644
--- a/test/built-ins/Array/prototype/filter/15.4.4.20-9-c-ii-7.js
+++ b/test/built-ins/Array/prototype/filter/15.4.4.20-9-c-ii-7.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.20-9-c-ii-7
 description: >
     Array.prototype.filter - unhandled exceptions happened in
     callbackfn terminate iteration
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var called = 0;
 
         function callbackfn(val, idx, obj) {
@@ -22,12 +19,7 @@ function testcase() {
         }
 
         var obj = { 0: 11, 4: 10, 10: 8, length: 20 };
-
-        try {
+assert.throws(Error, function() {
             Array.prototype.filter.call(obj, callbackfn);
-            return false;
-        } catch (ex) {
-            return 1 === called && ex instanceof Error;
-        }
-    }
-runTestCase(testcase);
+});
+assert.sameValue(called, 1, 'called');
diff --git a/test/built-ins/Array/prototype/forEach/15.4.4.18-1-1.js b/test/built-ins/Array/prototype/forEach/15.4.4.18-1-1.js
index 35bc091201..5df4d453a8 100644
--- a/test/built-ins/Array/prototype/forEach/15.4.4.18-1-1.js
+++ b/test/built-ins/Array/prototype/forEach/15.4.4.18-1-1.js
@@ -4,15 +4,9 @@
 /*---
 es5id: 15.4.4.18-1-1
 description: Array.prototype.forEach applied to undefined
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-        try {
+
+assert.throws(TypeError, function() {
             Array.prototype.forEach.call(undefined); // TypeError is thrown if value is undefined
-            return false;
-        } catch (e) {
-            return (e instanceof TypeError);
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/built-ins/Array/prototype/forEach/15.4.4.18-1-2.js b/test/built-ins/Array/prototype/forEach/15.4.4.18-1-2.js
index 1264199ae3..4f0d6c81dc 100644
--- a/test/built-ins/Array/prototype/forEach/15.4.4.18-1-2.js
+++ b/test/built-ins/Array/prototype/forEach/15.4.4.18-1-2.js
@@ -4,15 +4,9 @@
 /*---
 es5id: 15.4.4.18-1-2
 description: Array.prototype.forEach applied to null
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-        try {
+
+assert.throws(TypeError, function() {
             Array.prototype.forEach.call(null); // TypeError is thrown if value is null
-            return false;
-        } catch (e) {
-            return (e instanceof TypeError);
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/built-ins/Array/prototype/forEach/15.4.4.18-3-22.js b/test/built-ins/Array/prototype/forEach/15.4.4.18-3-22.js
index 1ee562c5a5..e9f68c7d5d 100644
--- a/test/built-ins/Array/prototype/forEach/15.4.4.18-3-22.js
+++ b/test/built-ins/Array/prototype/forEach/15.4.4.18-3-22.js
@@ -7,11 +7,8 @@ description: >
     Array.prototype.forEach throws TypeError exception when 'length'
     is an object with toString and valueOf methods that don�t return
     primitive values
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var accessed = false;
         var firstStepOccured = false;
         var secondStepOccured = false;
@@ -35,12 +32,7 @@ function testcase() {
                 }
             }
         };
-
-        try {
+assert.throws(TypeError, function() {
             Array.prototype.forEach.call(obj, callbackfn);
-            return false;
-        } catch (ex) {
-            return ex instanceof TypeError && !accessed;
-        }
-    }
-runTestCase(testcase);
+});
+assert.sameValue(accessed, false, 'accessed');
diff --git a/test/built-ins/Array/prototype/forEach/15.4.4.18-4-1.js b/test/built-ins/Array/prototype/forEach/15.4.4.18-4-1.js
index e8d0a85c2c..34eba32d8f 100644
--- a/test/built-ins/Array/prototype/forEach/15.4.4.18-4-1.js
+++ b/test/built-ins/Array/prototype/forEach/15.4.4.18-4-1.js
@@ -4,19 +4,9 @@
 /*---
 es5id: 15.4.4.18-4-1
 description: Array.prototype.forEach throws TypeError if callbackfn is undefined
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
   var arr = new Array(10);
-  try {
-    arr.forEach();    
-  }
-  catch(e) {
-    if(e instanceof TypeError)
-      return true;  
-  }
-
- }
-runTestCase(testcase);
+assert.throws(TypeError, function() {
+    arr.forEach();
+});
diff --git a/test/built-ins/Array/prototype/forEach/15.4.4.18-4-15.js b/test/built-ins/Array/prototype/forEach/15.4.4.18-4-15.js
index fcb6aa5566..c3a2599bf8 100644
--- a/test/built-ins/Array/prototype/forEach/15.4.4.18-4-15.js
+++ b/test/built-ins/Array/prototype/forEach/15.4.4.18-4-15.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.18-4-15
 description: >
     Array.prototype.forEach - calling with no callbackfn is the same
     as passing undefined for callbackfn
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var obj = { 10: 10 };
         var lengthAccessed = false;
         var loopAccessed = false;
@@ -30,12 +27,8 @@ function testcase() {
             },
             configurable: true
         });
-
-        try {
+assert.throws(TypeError, function() {
             Array.prototype.forEach.call(obj);
-            return false;
-        } catch (ex) {
-            return (ex instanceof TypeError) && lengthAccessed && !loopAccessed;
-        }
-    }
-runTestCase(testcase);
+});
+assert(lengthAccessed, 'lengthAccessed !== true');
+assert.sameValue(loopAccessed, false, 'loopAccessed');
diff --git a/test/built-ins/Array/prototype/forEach/15.4.4.18-4-2.js b/test/built-ins/Array/prototype/forEach/15.4.4.18-4-2.js
index ecf45aba38..08363293d4 100644
--- a/test/built-ins/Array/prototype/forEach/15.4.4.18-4-2.js
+++ b/test/built-ins/Array/prototype/forEach/15.4.4.18-4-2.js
@@ -6,19 +6,9 @@ es5id: 15.4.4.18-4-2
 description: >
     Array.prototype.forEach throws ReferenceError if callbackfn is
     unreferenced
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
   var arr = new Array(10);
-  try {
-    arr.forEach(foo);    
-  }
-  catch(e) {
-    if(e instanceof ReferenceError)
-      return true;  
-  }
-
- }
-runTestCase(testcase);
+assert.throws(ReferenceError, function() {
+    arr.forEach(foo);
+});
diff --git a/test/built-ins/Array/prototype/forEach/15.4.4.18-4-3.js b/test/built-ins/Array/prototype/forEach/15.4.4.18-4-3.js
index 6abd385a35..8268cbf669 100644
--- a/test/built-ins/Array/prototype/forEach/15.4.4.18-4-3.js
+++ b/test/built-ins/Array/prototype/forEach/15.4.4.18-4-3.js
@@ -4,19 +4,9 @@
 /*---
 es5id: 15.4.4.18-4-3
 description: Array.prototype.forEach throws TypeError if callbackfn is null
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
   var arr = new Array(10);
-  try {
-    arr.forEach(null);    
-  }
-  catch(e) {
-    if(e instanceof TypeError)
-      return true;  
-  }
-
- }
-runTestCase(testcase);
+assert.throws(TypeError, function() {
+    arr.forEach(null);
+});
diff --git a/test/built-ins/Array/prototype/forEach/15.4.4.18-4-4.js b/test/built-ins/Array/prototype/forEach/15.4.4.18-4-4.js
index 749e4d3a6c..6fe301dab0 100644
--- a/test/built-ins/Array/prototype/forEach/15.4.4.18-4-4.js
+++ b/test/built-ins/Array/prototype/forEach/15.4.4.18-4-4.js
@@ -4,19 +4,9 @@
 /*---
 es5id: 15.4.4.18-4-4
 description: Array.prototype.forEach throws TypeError if callbackfn is boolean
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
   var arr = new Array(10);
-  try {
-    arr.forEach(true);    
-  }
-  catch(e) {
-    if(e instanceof TypeError)
-      return true;  
-  }
-
- }
-runTestCase(testcase);
+assert.throws(TypeError, function() {
+    arr.forEach(true);
+});
diff --git a/test/built-ins/Array/prototype/forEach/15.4.4.18-4-5.js b/test/built-ins/Array/prototype/forEach/15.4.4.18-4-5.js
index c0cd39e86d..4485c46062 100644
--- a/test/built-ins/Array/prototype/forEach/15.4.4.18-4-5.js
+++ b/test/built-ins/Array/prototype/forEach/15.4.4.18-4-5.js
@@ -4,19 +4,9 @@
 /*---
 es5id: 15.4.4.18-4-5
 description: Array.prototype.forEach throws TypeError if callbackfn is number
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
   var arr = new Array(10);
-  try {
-    arr.forEach(5);    
-  }
-  catch(e) {
-    if(e instanceof TypeError)
-      return true;  
-  }
-
- }
-runTestCase(testcase);
+assert.throws(TypeError, function() {
+    arr.forEach(5);
+});
diff --git a/test/built-ins/Array/prototype/forEach/15.4.4.18-4-6.js b/test/built-ins/Array/prototype/forEach/15.4.4.18-4-6.js
index 60888e0007..84e29d51d5 100644
--- a/test/built-ins/Array/prototype/forEach/15.4.4.18-4-6.js
+++ b/test/built-ins/Array/prototype/forEach/15.4.4.18-4-6.js
@@ -4,19 +4,9 @@
 /*---
 es5id: 15.4.4.18-4-6
 description: Array.prototype.forEach throws TypeError if callbackfn is string
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
   var arr = new Array(10);
-  try {
-    arr.forEach("abc");    
-  }
-  catch(e) {
-    if(e instanceof TypeError)
-      return true;  
-  }
-
- }
-runTestCase(testcase);
+assert.throws(TypeError, function() {
+    arr.forEach("abc");
+});
diff --git a/test/built-ins/Array/prototype/forEach/15.4.4.18-4-7.js b/test/built-ins/Array/prototype/forEach/15.4.4.18-4-7.js
index c397eff4e8..d7ed337aef 100644
--- a/test/built-ins/Array/prototype/forEach/15.4.4.18-4-7.js
+++ b/test/built-ins/Array/prototype/forEach/15.4.4.18-4-7.js
@@ -6,19 +6,9 @@ es5id: 15.4.4.18-4-7
 description: >
     Array.prototype.forEach throws TypeError if callbackfn is Object
     without Call internal method
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
   var arr = new Array(10);
-  try {
-    arr.forEach(new Object());    
-  }
-  catch(e) {
-    if(e instanceof TypeError)
-      return true;  
-  }
-
- }
-runTestCase(testcase);
+assert.throws(TypeError, function() {
+    arr.forEach(new Object());
+});
diff --git a/test/built-ins/Array/prototype/forEach/15.4.4.18-4-8.js b/test/built-ins/Array/prototype/forEach/15.4.4.18-4-8.js
index a6ba2a75ec..033029fa12 100644
--- a/test/built-ins/Array/prototype/forEach/15.4.4.18-4-8.js
+++ b/test/built-ins/Array/prototype/forEach/15.4.4.18-4-8.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.18-4-8
 description: >
     Array.prototype.forEach - side effects produced by step 2 are
     visible when an exception occurs
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var obj = { 0: 11, 1: 12 };
 
         var accessed = false;
@@ -22,12 +19,7 @@ function testcase() {
             },
             configurable: true
         });
-
-        try {
+assert.throws(TypeError, function() {
             Array.prototype.forEach.call(obj, null);
-            return false;
-        } catch (ex) {
-            return ex instanceof TypeError && accessed;
-        }
-    }
-runTestCase(testcase);
+});
+assert(accessed, 'accessed !== true');
diff --git a/test/built-ins/Array/prototype/forEach/15.4.4.18-4-9.js b/test/built-ins/Array/prototype/forEach/15.4.4.18-4-9.js
index bcdf91fb1e..1cccf2166e 100644
--- a/test/built-ins/Array/prototype/forEach/15.4.4.18-4-9.js
+++ b/test/built-ins/Array/prototype/forEach/15.4.4.18-4-9.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.18-4-9
 description: >
     Array.prototype.forEach - side effects produced by step 3 are
     visible when an exception occurs
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var obj = { 0: 11, 1: 12 };
 
         var accessed = false;
@@ -26,12 +23,7 @@ function testcase() {
             },
             configurable: true
         });
-
-        try {
+assert.throws(TypeError, function() {
             Array.prototype.forEach.call(obj, null);
-            return false;
-        } catch (ex) {
-            return ex instanceof TypeError && accessed;
-        }
-    }
-runTestCase(testcase);
+});
+assert(accessed, 'accessed !== true');
diff --git a/test/built-ins/Array/prototype/forEach/15.4.4.18-7-c-i-30.js b/test/built-ins/Array/prototype/forEach/15.4.4.18-7-c-i-30.js
index b438b56450..f02c6bf67b 100644
--- a/test/built-ins/Array/prototype/forEach/15.4.4.18-7-c-i-30.js
+++ b/test/built-ins/Array/prototype/forEach/15.4.4.18-7-c-i-30.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.18-7-c-i-30
 description: >
     Array.prototype.forEach - unnhandled exceptions happened in getter
     terminate iteration on an Array-like object
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var obj = { 0: 11, 5: 10, 10: 8, length: 20 };
         var accessed = false;
 
@@ -34,12 +31,7 @@ function testcase() {
             },
             configurable: true
         });
-
-        try {
+assert.throws(RangeError, function() {
             Array.prototype.forEach.call(obj, callbackfn);
-            return false;
-        } catch (ex) {
-            return (ex instanceof RangeError) && !accessed;
-        }
-    }
-runTestCase(testcase);
+});
+assert.sameValue(accessed, false, 'accessed');
diff --git a/test/built-ins/Array/prototype/forEach/15.4.4.18-7-c-i-31.js b/test/built-ins/Array/prototype/forEach/15.4.4.18-7-c-i-31.js
index b32a0eb15e..1a84121fd9 100644
--- a/test/built-ins/Array/prototype/forEach/15.4.4.18-7-c-i-31.js
+++ b/test/built-ins/Array/prototype/forEach/15.4.4.18-7-c-i-31.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.18-7-c-i-31
 description: >
     Array.prototype.forEach - unnhandled exceptions happened in getter
     terminate iteration on an Array-like object
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var accessed = false;
 
         function callbackfn(val, idx, obj) {
@@ -37,12 +34,7 @@ function testcase() {
             },
             configurable: true
         });
-
-        try {
+assert.throws(RangeError, function() {
             arr.forEach(callbackfn);
-            return false;
-        } catch (ex) {
-            return (ex instanceof RangeError) && !accessed;
-        }
-    }
-runTestCase(testcase);
+});
+assert.sameValue(accessed, false, 'accessed');
diff --git a/test/built-ins/Array/prototype/forEach/15.4.4.18-7-c-ii-7.js b/test/built-ins/Array/prototype/forEach/15.4.4.18-7-c-ii-7.js
index b56b2333eb..a7b0680c1d 100644
--- a/test/built-ins/Array/prototype/forEach/15.4.4.18-7-c-ii-7.js
+++ b/test/built-ins/Array/prototype/forEach/15.4.4.18-7-c-ii-7.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.18-7-c-ii-7
 description: >
     Array.prototype.forEach - unhandled exceptions happened in
     callbackfn terminate iteration
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var accessed = false;
 
         function callbackfn(val, idx, obj) {
@@ -23,12 +20,7 @@ function testcase() {
         }
 
         var obj = { 0: 11, 4: 10, 10: 8, length: 20 };
-
-        try {
+assert.throws(Error, function() {
             Array.prototype.forEach.call(obj, callbackfn);
-            return false;
-        } catch (ex) {
-            return ex instanceof Error && !accessed;
-        }
-    }
-runTestCase(testcase);
+});
+assert.sameValue(accessed, false, 'accessed');
diff --git a/test/built-ins/Array/prototype/indexOf/15.4.4.14-1-1.js b/test/built-ins/Array/prototype/indexOf/15.4.4.14-1-1.js
index e91bf82c8b..fbffd031cc 100644
--- a/test/built-ins/Array/prototype/indexOf/15.4.4.14-1-1.js
+++ b/test/built-ins/Array/prototype/indexOf/15.4.4.14-1-1.js
@@ -4,16 +4,9 @@
 /*---
 es5id: 15.4.4.14-1-1
 description: Array.prototype.indexOf applied to undefined throws a TypeError
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-  try {
+
+assert.throws(TypeError, function() {
      Array.prototype.indexOf.call(undefined);
-     return false;
-  }
-  catch (e) {
-     return e instanceof TypeError;
-  }
- }
-runTestCase(testcase);
+});
diff --git a/test/built-ins/Array/prototype/indexOf/15.4.4.14-1-2.js b/test/built-ins/Array/prototype/indexOf/15.4.4.14-1-2.js
index ed94cac5c0..c1685fcb01 100644
--- a/test/built-ins/Array/prototype/indexOf/15.4.4.14-1-2.js
+++ b/test/built-ins/Array/prototype/indexOf/15.4.4.14-1-2.js
@@ -4,16 +4,9 @@
 /*---
 es5id: 15.4.4.14-1-2
 description: Array.prototype.indexOf applied to null throws a TypeError
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-  try {
+
+assert.throws(TypeError, function() {
      Array.prototype.indexOf.call(null);
-     return false;
-  }
-  catch (e) {
-     return e instanceof TypeError;
-     }
- }
-runTestCase(testcase);
+});
diff --git a/test/built-ins/Array/prototype/indexOf/15.4.4.14-5-28.js b/test/built-ins/Array/prototype/indexOf/15.4.4.14-5-28.js
index b96dc3b460..3a9538711c 100644
--- a/test/built-ins/Array/prototype/indexOf/15.4.4.14-5-28.js
+++ b/test/built-ins/Array/prototype/indexOf/15.4.4.14-5-28.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.14-5-28
 description: >
     Array.prototype.indexOf - side effects produced by step 1 are
     visible when an exception occurs
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var stepFiveOccurs = false;
         var fromIndex = {
             valueOf: function () {
@@ -18,12 +15,7 @@ function testcase() {
                 return 0;
             }
         };
-
-        try {
+assert.throws(TypeError, function() {
             Array.prototype.indexOf.call(undefined, undefined, fromIndex);
-            return false;
-        } catch (e) {
-            return (e instanceof TypeError) && !stepFiveOccurs;
-        }
-    }
-runTestCase(testcase);
+});
+assert.sameValue(stepFiveOccurs, false, 'stepFiveOccurs');
diff --git a/test/built-ins/Array/prototype/indexOf/15.4.4.14-5-29.js b/test/built-ins/Array/prototype/indexOf/15.4.4.14-5-29.js
index 60c52cb088..6c4c3d7691 100644
--- a/test/built-ins/Array/prototype/indexOf/15.4.4.14-5-29.js
+++ b/test/built-ins/Array/prototype/indexOf/15.4.4.14-5-29.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.14-5-29
 description: >
     Array.prototype.indexOf - side effects produced by step 2 are
     visible when an exception occurs
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var stepFiveOccurs = false;
         
         var obj = {};
@@ -27,12 +24,7 @@ function testcase() {
                 return 0;
             }
         };
-
-        try {
+assert.throws(RangeError, function() {
             Array.prototype.indexOf.call(obj, undefined, fromIndex);
-            return false;
-        } catch (e) {
-            return (e instanceof RangeError) && !stepFiveOccurs;
-        }
-    }
-runTestCase(testcase);
+});
+assert.sameValue(stepFiveOccurs, false, 'stepFiveOccurs');
diff --git a/test/built-ins/Array/prototype/indexOf/15.4.4.14-5-30.js b/test/built-ins/Array/prototype/indexOf/15.4.4.14-5-30.js
index 3766f2ab9f..7fdd12722e 100644
--- a/test/built-ins/Array/prototype/indexOf/15.4.4.14-5-30.js
+++ b/test/built-ins/Array/prototype/indexOf/15.4.4.14-5-30.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.14-5-30
 description: >
     Array.prototype.indexOf - side effects produced by step 3 are
     visible when an exception occurs
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var stepFiveOccurs = false;
 
         var obj = {};
@@ -31,12 +28,7 @@ function testcase() {
                 return 0;
             }
         };
-
-        try {
+assert.throws(TypeError, function() {
             Array.prototype.indexOf.call(obj, undefined, fromIndex);
-            return false;
-        } catch (e) {
-            return (e instanceof TypeError) && !stepFiveOccurs;
-        }
-    }
-runTestCase(testcase);
+});
+assert.sameValue(stepFiveOccurs, false, 'stepFiveOccurs');
diff --git a/test/built-ins/Array/prototype/indexOf/15.4.4.14-9-b-i-30.js b/test/built-ins/Array/prototype/indexOf/15.4.4.14-9-b-i-30.js
index 00da423664..5d6195afbb 100644
--- a/test/built-ins/Array/prototype/indexOf/15.4.4.14-9-b-i-30.js
+++ b/test/built-ins/Array/prototype/indexOf/15.4.4.14-9-b-i-30.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.14-9-b-i-30
 description: >
     Array.prototype.indexOf - terminates iteration on unhandled
     exception on an Array
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var accessed = false;
         var arr = [];
 
@@ -28,12 +25,7 @@ function testcase() {
             },
             configurable: true
         });
-
-        try {
+assert.throws(TypeError, function() {
             arr.indexOf(true);
-            return false;
-        } catch (e) {
-            return (e instanceof TypeError) && !accessed;
-        }
-    }
-runTestCase(testcase);
+});
+assert.sameValue(accessed, false, 'accessed');
diff --git a/test/built-ins/Array/prototype/indexOf/15.4.4.14-9-b-i-31.js b/test/built-ins/Array/prototype/indexOf/15.4.4.14-9-b-i-31.js
index 98556ba4bd..caf9f52867 100644
--- a/test/built-ins/Array/prototype/indexOf/15.4.4.14-9-b-i-31.js
+++ b/test/built-ins/Array/prototype/indexOf/15.4.4.14-9-b-i-31.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.14-9-b-i-31
 description: >
     Array.prototype.indexOf - terminates iteration on unhandled
     exception on an Array-like object
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var accessed = false;
         var obj = { length: 2 };
 
@@ -28,13 +25,7 @@ function testcase() {
             },
             configurable: true
         });
-
-        try {
+assert.throws(TypeError, function() {
             Array.prototype.indexOf.call(obj, true);
-            return false;
-        } catch (e) {
-            return (e instanceof TypeError) && !accessed;
-        }
-
-    }
-runTestCase(testcase);
+});
+assert.sameValue(accessed, false, 'accessed');
diff --git a/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-1-1.js b/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-1-1.js
index 1a3f3404e1..93d2ea6e0b 100644
--- a/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-1-1.js
+++ b/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-1-1.js
@@ -4,18 +4,9 @@
 /*---
 es5id: 15.4.4.15-1-1
 description: Array.prototype.lastIndexOf applied to undefined throws a TypeError
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
 
-        try {
+assert.throws(TypeError, function() {
             Array.prototype.lastIndexOf.call(undefined);
-            return false;
-        } catch (e) {
-            if (e instanceof TypeError) {
-                return true;
-            }
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-1-2.js b/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-1-2.js
index 9df9406663..4412bdcb62 100644
--- a/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-1-2.js
+++ b/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-1-2.js
@@ -4,18 +4,9 @@
 /*---
 es5id: 15.4.4.15-1-2
 description: Array.prototype.lastIndexOf applied to null throws a TypeError
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
 
-        try {
+assert.throws(TypeError, function() {
             Array.prototype.lastIndexOf.call(null);
-            return false;
-        } catch (e) {
-            if (e instanceof TypeError) {
-                return true;
-            }
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-5-28.js b/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-5-28.js
index e7d3c3b17e..8ea3d80638 100644
--- a/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-5-28.js
+++ b/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-5-28.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.15-5-28
 description: >
     Array.prototype.lastIndexOf - side effects produced by step 1 are
     visible when an exception occurs
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var stepFiveOccurs = false;
         var fromIndex = {
             valueOf: function () {
@@ -18,12 +15,7 @@ function testcase() {
                 return 0;
             }
         };
-
-        try {
+assert.throws(TypeError, function() {
             Array.prototype.lastIndexOf.call(undefined, undefined, fromIndex);
-            return false;
-        } catch (e) {
-            return (e instanceof TypeError) && !stepFiveOccurs;
-        }
-    }
-runTestCase(testcase);
+});
+assert.sameValue(stepFiveOccurs, false, 'stepFiveOccurs');
diff --git a/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-5-29.js b/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-5-29.js
index 4da7075f42..a5f477b474 100644
--- a/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-5-29.js
+++ b/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-5-29.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.15-5-29
 description: >
     Array.prototype.lastIndexOf - side effects produced by step 2 are
     visible when an exception occurs
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var stepFiveOccurs = false;
 
         var obj = {};
@@ -27,12 +24,7 @@ function testcase() {
                 return 0;
             }
         };
-
-        try {
+assert.throws(RangeError, function() {
             Array.prototype.lastIndexOf.call(obj, undefined, fromIndex);
-            return false;
-        } catch (e) {
-            return (e instanceof RangeError) && !stepFiveOccurs;
-        }
-    }
-runTestCase(testcase);
+});
+assert.sameValue(stepFiveOccurs, false, 'stepFiveOccurs');
diff --git a/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-5-30.js b/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-5-30.js
index 44e7ce2fdb..b462cde097 100644
--- a/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-5-30.js
+++ b/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-5-30.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.15-5-30
 description: >
     Array.prototype.lastIndexOf - side effects produced by step 3 are
     visible when an exception occurs
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var stepFiveOccurs = false;
 
         var obj = {};
@@ -31,12 +28,7 @@ function testcase() {
                 return 0;
             }
         };
-
-        try {
+assert.throws(TypeError, function() {
             Array.prototype.lastIndexOf.call(obj, undefined, fromIndex);
-            return false;
-        } catch (e) {
-            return (e instanceof TypeError) && !stepFiveOccurs;
-        }
-    }
-runTestCase(testcase);
+});
+assert.sameValue(stepFiveOccurs, false, 'stepFiveOccurs');
diff --git a/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-8-b-i-30.js b/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-8-b-i-30.js
index fb4bf57019..9e85224f09 100644
--- a/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-8-b-i-30.js
+++ b/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-8-b-i-30.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.15-8-b-i-30
 description: >
     Array.prototype.lastIndexOf terminates iteration on unhandled
     exception on an Array
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var accessed = false;
         var arr = [];
 
@@ -28,13 +25,7 @@ function testcase() {
             },
             configurable: true
         });
-
-        try {
+assert.throws(TypeError, function() {
             arr.lastIndexOf(true);
-            return false;
-        } catch (e) {
-            return (e instanceof TypeError) && !accessed;
-        }
-
-    }
-runTestCase(testcase);
+});
+assert.sameValue(accessed, false, 'accessed');
diff --git a/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-8-b-i-31.js b/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-8-b-i-31.js
index e06ce36e03..755d7de15f 100644
--- a/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-8-b-i-31.js
+++ b/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-8-b-i-31.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.15-8-b-i-31
 description: >
     Array.prototype.lastIndexOf terminates iteration on unhandled
     exception on an Array-like object
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var accessed = false;
         var obj = { length: 3 };
 
@@ -28,13 +25,7 @@ function testcase() {
             },
             configurable: true
         });
-
-        try {
+assert.throws(TypeError, function() {
             Array.prototype.lastIndexOf.call(obj, true);
-            return false;
-        } catch (e) {
-            return (e instanceof TypeError) && !accessed;
-        }
-
-    }
-runTestCase(testcase);
+});
+assert.sameValue(accessed, false, 'accessed');
diff --git a/test/built-ins/Array/prototype/map/15.4.4.19-1-1.js b/test/built-ins/Array/prototype/map/15.4.4.19-1-1.js
index ec66e5a665..c06be0e03f 100644
--- a/test/built-ins/Array/prototype/map/15.4.4.19-1-1.js
+++ b/test/built-ins/Array/prototype/map/15.4.4.19-1-1.js
@@ -4,15 +4,9 @@
 /*---
 es5id: 15.4.4.19-1-1
 description: Array.prototype.map - applied to undefined
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-        try {
+
+assert.throws(TypeError, function() {
             Array.prototype.map.call(undefined); // TypeError is thrown if value is undefined
-            return false;
-        } catch (e) {
-            return (e instanceof TypeError);
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/built-ins/Array/prototype/map/15.4.4.19-1-2.js b/test/built-ins/Array/prototype/map/15.4.4.19-1-2.js
index eb819c4dba..4d946c98bc 100644
--- a/test/built-ins/Array/prototype/map/15.4.4.19-1-2.js
+++ b/test/built-ins/Array/prototype/map/15.4.4.19-1-2.js
@@ -4,15 +4,9 @@
 /*---
 es5id: 15.4.4.19-1-2
 description: Array.prototype.map - applied to null
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-        try {
+
+assert.throws(TypeError, function() {
             Array.prototype.map.call(null); // TypeError is thrown if value is null
-            return false;
-        } catch (e) {
-            return (e instanceof TypeError);
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/built-ins/Array/prototype/map/15.4.4.19-3-14.js b/test/built-ins/Array/prototype/map/15.4.4.19-3-14.js
index 0e10ba1e1e..de00b86d0e 100644
--- a/test/built-ins/Array/prototype/map/15.4.4.19-3-14.js
+++ b/test/built-ins/Array/prototype/map/15.4.4.19-3-14.js
@@ -4,22 +4,13 @@
 /*---
 es5id: 15.4.4.19-3-14
 description: Array.prototype.map - 'length' is a string containing Infinity
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         function callbackfn(val, idx, obj) {
             return val < 10;
         }
 
         var obj = { 0: 9, length: "Infinity" };
-
-        try {
+assert.throws(RangeError, function() {
             Array.prototype.map.call(obj, callbackfn);
-        } catch (e) {
-            if (e instanceof RangeError) {
-                return true;
-            }
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/built-ins/Array/prototype/map/15.4.4.19-3-22.js b/test/built-ins/Array/prototype/map/15.4.4.19-3-22.js
index 06b009cf23..7dcdcc31e7 100644
--- a/test/built-ins/Array/prototype/map/15.4.4.19-3-22.js
+++ b/test/built-ins/Array/prototype/map/15.4.4.19-3-22.js
@@ -7,11 +7,8 @@ description: >
     Array.prototype.map throws TypeError exception when 'length' is an
     object with toString and valueOf methods that don�t return
     primitive values
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         function callbackfn(val, idx, obj) {
             return val > 10;
         }
@@ -29,12 +26,6 @@ function testcase() {
                 }
             }
         };
-
-        try {
+assert.throws(TypeError, function() {
             Array.prototype.map.call(obj, callbackfn);
-            return false;
-        } catch (ex) {
-            return ex instanceof TypeError;
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/built-ins/Array/prototype/map/15.4.4.19-3-28.js b/test/built-ins/Array/prototype/map/15.4.4.19-3-28.js
index 7fe0d865f4..25f868e3e8 100644
--- a/test/built-ins/Array/prototype/map/15.4.4.19-3-28.js
+++ b/test/built-ins/Array/prototype/map/15.4.4.19-3-28.js
@@ -4,11 +4,8 @@
 /*---
 es5id: 15.4.4.19-3-28
 description: Array.prototype.map - value of 'length' is boundary value (2^32)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         function callbackfn(val, idx, obj) {
             return val > 10;
         }
@@ -17,13 +14,6 @@ function testcase() {
             0: 12,
             length: 4294967296
         };
-
-        try {
+assert.throws(RangeError, function() {
             var newArr = Array.prototype.map.call(obj, callbackfn);
-        } catch (e) {
-            if (e instanceof RangeError) {
-                return true;
-            }
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/built-ins/Array/prototype/map/15.4.4.19-3-29.js b/test/built-ins/Array/prototype/map/15.4.4.19-3-29.js
index 8e4d501067..45b72bbe14 100644
--- a/test/built-ins/Array/prototype/map/15.4.4.19-3-29.js
+++ b/test/built-ins/Array/prototype/map/15.4.4.19-3-29.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.19-3-29
 description: >
     Array.prototype.map - value of 'length' is boundary value (2^32 +
     1)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         function callbackfn(val, idx, obj) {
             return val > 10;
         }
@@ -20,13 +17,6 @@ function testcase() {
             1: 9,
             length: 4294967297
         };
-
-        try {
+assert.throws(RangeError, function() {
             var newArr = Array.prototype.map.call(obj, callbackfn);
-        } catch (e) {
-            if (e instanceof RangeError) {
-                return true;
-            }
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/built-ins/Array/prototype/map/15.4.4.19-3-8.js b/test/built-ins/Array/prototype/map/15.4.4.19-3-8.js
index f4ee0e4258..5129e06e2c 100644
--- a/test/built-ins/Array/prototype/map/15.4.4.19-3-8.js
+++ b/test/built-ins/Array/prototype/map/15.4.4.19-3-8.js
@@ -6,22 +6,13 @@ es5id: 15.4.4.19-3-8
 description: >
     Array.prototype.map - value of 'length' is a number (value is
     Infinity)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         function callbackfn(val, idx, obj) {
             return val < 10;
         }
 
         var obj = { 0: 9, length: Infinity };
-
-        try {
+assert.throws(RangeError, function() {
             Array.prototype.map.call(obj, callbackfn);
-        } catch (e) {
-            if (e instanceof RangeError) {
-                return true;
-            }
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/built-ins/Array/prototype/map/15.4.4.19-4-1.js b/test/built-ins/Array/prototype/map/15.4.4.19-4-1.js
index 27a87abfe5..e1bbc378dc 100644
--- a/test/built-ins/Array/prototype/map/15.4.4.19-4-1.js
+++ b/test/built-ins/Array/prototype/map/15.4.4.19-4-1.js
@@ -4,19 +4,9 @@
 /*---
 es5id: 15.4.4.19-4-1
 description: Array.prototype.map throws TypeError if callbackfn is undefined
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
   var arr = new Array(10);
-  try {
-    arr.map();    
-  }
-  catch(e) {
-    if(e instanceof TypeError)
-      return true;  
-  }
-
- }
-runTestCase(testcase);
+assert.throws(TypeError, function() {
+    arr.map();
+});
diff --git a/test/built-ins/Array/prototype/map/15.4.4.19-4-15.js b/test/built-ins/Array/prototype/map/15.4.4.19-4-15.js
index 8f7efc8390..cba95c17c1 100644
--- a/test/built-ins/Array/prototype/map/15.4.4.19-4-15.js
+++ b/test/built-ins/Array/prototype/map/15.4.4.19-4-15.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.19-4-15
 description: >
     Array.prototype.map - calling with no callbackfn is the same as
     passing undefined for callbackfn
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var obj = { 10: 10 };
         var lengthAccessed = false;
         var loopAccessed = false;
@@ -29,12 +26,8 @@ function testcase() {
             },
             configurable: true
         });
-
-        try {
+assert.throws(TypeError, function() {
             Array.prototype.map.call(obj);
-            return false;
-        } catch (e) {
-            return e instanceof TypeError && lengthAccessed && !loopAccessed;
-        }
-    }
-runTestCase(testcase);
+});
+assert(lengthAccessed, 'lengthAccessed !== true');
+assert.sameValue(loopAccessed, false, 'loopAccessed');
diff --git a/test/built-ins/Array/prototype/map/15.4.4.19-4-2.js b/test/built-ins/Array/prototype/map/15.4.4.19-4-2.js
index 24fe85ead0..0b0b2becfe 100644
--- a/test/built-ins/Array/prototype/map/15.4.4.19-4-2.js
+++ b/test/built-ins/Array/prototype/map/15.4.4.19-4-2.js
@@ -6,19 +6,9 @@ es5id: 15.4.4.19-4-2
 description: >
     Array.prototype.map throws ReferenceError if callbackfn is
     unreferenced
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
   var arr = new Array(10);
-  try {
-    arr.map(foo);    
-  }
-  catch(e) {
-    if(e instanceof ReferenceError)
-      return true;  
-  }
-
- }
-runTestCase(testcase);
+assert.throws(ReferenceError, function() {
+    arr.map(foo);
+});
diff --git a/test/built-ins/Array/prototype/map/15.4.4.19-4-3.js b/test/built-ins/Array/prototype/map/15.4.4.19-4-3.js
index ff3ead687b..0cb7b7c31b 100644
--- a/test/built-ins/Array/prototype/map/15.4.4.19-4-3.js
+++ b/test/built-ins/Array/prototype/map/15.4.4.19-4-3.js
@@ -4,19 +4,9 @@
 /*---
 es5id: 15.4.4.19-4-3
 description: Array.prototype.map throws TypeError if callbackfn is null
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
   var arr = new Array(10);
-  try {
-    arr.map(null);    
-  }
-  catch(e) {
-    if(e instanceof TypeError)
-      return true;  
-  }
-
- }
-runTestCase(testcase);
+assert.throws(TypeError, function() {
+    arr.map(null);
+});
diff --git a/test/built-ins/Array/prototype/map/15.4.4.19-4-4.js b/test/built-ins/Array/prototype/map/15.4.4.19-4-4.js
index 7d88c65692..ed53e5efae 100644
--- a/test/built-ins/Array/prototype/map/15.4.4.19-4-4.js
+++ b/test/built-ins/Array/prototype/map/15.4.4.19-4-4.js
@@ -4,19 +4,9 @@
 /*---
 es5id: 15.4.4.19-4-4
 description: Array.prototype.map throws TypeError if callbackfn is boolean
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
   var arr = new Array(10);
-  try {
-    arr.map(true);    
-  }
-  catch(e) {
-    if(e instanceof TypeError)
-      return true;  
-  }
-
- }
-runTestCase(testcase);
+assert.throws(TypeError, function() {
+    arr.map(true);
+});
diff --git a/test/built-ins/Array/prototype/map/15.4.4.19-4-5.js b/test/built-ins/Array/prototype/map/15.4.4.19-4-5.js
index 9b0359ac7a..fbbbb83a61 100644
--- a/test/built-ins/Array/prototype/map/15.4.4.19-4-5.js
+++ b/test/built-ins/Array/prototype/map/15.4.4.19-4-5.js
@@ -4,19 +4,9 @@
 /*---
 es5id: 15.4.4.19-4-5
 description: Array.prototype.map throws TypeError if callbackfn is number
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
   var arr = new Array(10);
-  try {
-    arr.map(5);    
-  }
-  catch(e) {
-    if(e instanceof TypeError)
-      return true;  
-  }
-
- }
-runTestCase(testcase);
+assert.throws(TypeError, function() {
+    arr.map(5);
+});
diff --git a/test/built-ins/Array/prototype/map/15.4.4.19-4-6.js b/test/built-ins/Array/prototype/map/15.4.4.19-4-6.js
index 122f87774d..ac6eea9241 100644
--- a/test/built-ins/Array/prototype/map/15.4.4.19-4-6.js
+++ b/test/built-ins/Array/prototype/map/15.4.4.19-4-6.js
@@ -4,19 +4,9 @@
 /*---
 es5id: 15.4.4.19-4-6
 description: Array.prototype.map throws TypeError if callbackfn is string
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
   var arr = new Array(10);
-  try {
-    arr.map("abc");    
-  }
-  catch(e) {
-    if(e instanceof TypeError)
-      return true;  
-  }
-
- }
-runTestCase(testcase);
+assert.throws(TypeError, function() {
+    arr.map("abc");
+});
diff --git a/test/built-ins/Array/prototype/map/15.4.4.19-4-7.js b/test/built-ins/Array/prototype/map/15.4.4.19-4-7.js
index 14b11b7135..172a1905e0 100644
--- a/test/built-ins/Array/prototype/map/15.4.4.19-4-7.js
+++ b/test/built-ins/Array/prototype/map/15.4.4.19-4-7.js
@@ -6,19 +6,9 @@ es5id: 15.4.4.19-4-7
 description: >
     Array.prototype.map throws TypeError if callbackfn is Object
     without Call internal method
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
   var arr = new Array(10);
-  try {
-    arr.map(new Object());    
-  }
-  catch(e) {
-    if(e instanceof TypeError)
-      return true;  
-  }
-
- }
-runTestCase(testcase);
+assert.throws(TypeError, function() {
+    arr.map(new Object());
+});
diff --git a/test/built-ins/Array/prototype/map/15.4.4.19-4-8.js b/test/built-ins/Array/prototype/map/15.4.4.19-4-8.js
index ace649ef6b..de3eaa3534 100644
--- a/test/built-ins/Array/prototype/map/15.4.4.19-4-8.js
+++ b/test/built-ins/Array/prototype/map/15.4.4.19-4-8.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.19-4-8
 description: >
     Array.prototype.map - Side effects produced by step 2 are visible
     when an exception occurs
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var obj = { 0: 11, 1: 12 };
 
         var accessed = false;
@@ -22,12 +19,7 @@ function testcase() {
             },
             configurable: true
         });
-
-        try {
+assert.throws(TypeError, function() {
             Array.prototype.map.call(obj, null);
-            return false;
-        } catch (ex) {
-            return ex instanceof TypeError && accessed;
-        }
-    }
-runTestCase(testcase);
+});
+assert(accessed, 'accessed !== true');
diff --git a/test/built-ins/Array/prototype/map/15.4.4.19-4-9.js b/test/built-ins/Array/prototype/map/15.4.4.19-4-9.js
index 4c025972f5..89358e9134 100644
--- a/test/built-ins/Array/prototype/map/15.4.4.19-4-9.js
+++ b/test/built-ins/Array/prototype/map/15.4.4.19-4-9.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.19-4-9
 description: >
     Array.prototype.map - Side effects produced by step 3 are visible
     when an exception occurs
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var obj = { 0: 11, 1: 12 };
 
         var accessed = false;
@@ -26,12 +23,7 @@ function testcase() {
             },
             configurable: true
         });
-
-        try {
+assert.throws(TypeError, function() {
             Array.prototype.map.call(obj, null);
-            return false;
-        } catch (ex) {
-            return ex instanceof TypeError && accessed;
-        }
-    }
-runTestCase(testcase);
+});
+assert(accessed, 'accessed !== true');
diff --git a/test/built-ins/Array/prototype/map/15.4.4.19-8-c-i-30.js b/test/built-ins/Array/prototype/map/15.4.4.19-8-c-i-30.js
index 064f3db60b..195ddd7868 100644
--- a/test/built-ins/Array/prototype/map/15.4.4.19-8-c-i-30.js
+++ b/test/built-ins/Array/prototype/map/15.4.4.19-8-c-i-30.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.19-8-c-i-30
 description: >
     Array.prototype.map - unhandled exceptions happened in getter
     terminate iteration on an Array-like object
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var obj = { 0: 11, 5: 10, 10: 8, length: 20 };
         var accessed = false;
 
@@ -34,12 +31,7 @@ function testcase() {
             },
             configurable: true
         });
-
-        try {
+assert.throws(RangeError, function() {
             Array.prototype.map.call(obj, callbackfn);
-            return false;
-        } catch (ex) {
-            return (ex instanceof RangeError) && !accessed;
-        }
-    }
-runTestCase(testcase);
+});
+assert.sameValue(accessed, false, 'accessed');
diff --git a/test/built-ins/Array/prototype/map/15.4.4.19-8-c-i-31.js b/test/built-ins/Array/prototype/map/15.4.4.19-8-c-i-31.js
index 04798223e6..b96cb232ec 100644
--- a/test/built-ins/Array/prototype/map/15.4.4.19-8-c-i-31.js
+++ b/test/built-ins/Array/prototype/map/15.4.4.19-8-c-i-31.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.19-8-c-i-31
 description: >
     Array.prototype.map - unhandled exceptions happened in getter
     terminate iteration on an Array
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var accessed = false;
 
         function callbackfn(val, idx, obj) {
@@ -37,12 +34,7 @@ function testcase() {
             },
             configurable: true
         });
-
-        try {
+assert.throws(RangeError, function() {
             arr.map(callbackfn);
-            return false;
-        } catch (ex) {
-            return (ex instanceof RangeError) && !accessed;
-        }
-    }
-runTestCase(testcase);
+});
+assert.sameValue(accessed, false, 'accessed');
diff --git a/test/built-ins/Array/prototype/map/15.4.4.19-8-c-ii-7.js b/test/built-ins/Array/prototype/map/15.4.4.19-8-c-ii-7.js
index 8045f4f6f2..a31f9e41d4 100644
--- a/test/built-ins/Array/prototype/map/15.4.4.19-8-c-ii-7.js
+++ b/test/built-ins/Array/prototype/map/15.4.4.19-8-c-ii-7.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.19-8-c-ii-7
 description: >
     Array.prototype.map - unhandled exceptions happened in callbackfn
     terminate iteration
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var accessed = false;
 
         function callbackfn(val, idx, obj) {
@@ -23,12 +20,7 @@ function testcase() {
         }
 
         var obj = { 0: 11, 4: 10, 10: 8, length: 20 };
-
-        try {
+assert.throws(Error, function() {
             Array.prototype.map.call(obj, callbackfn);
-            return false;
-        } catch (ex) {
-            return ex instanceof Error && !accessed;
-        }
-    }
-runTestCase(testcase);
+});
+assert.sameValue(accessed, false, 'accessed');
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-1-1.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-1-1.js
index 40c2913349..04fd4e8970 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-1-1.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-1-1.js
@@ -4,15 +4,9 @@
 /*---
 es5id: 15.4.4.21-1-1
 description: Array.prototype.reduce applied to undefined
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-        try {
-            Array.prototype.reduce.call(undefined); 
-            return false;
-        } catch (e) {
-            return (e instanceof TypeError);
-        }
-    }
-runTestCase(testcase);
+
+assert.throws(TypeError, function() {
+            Array.prototype.reduce.call(undefined);
+});
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-1-2.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-1-2.js
index ace5be9614..96adb146d8 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-1-2.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-1-2.js
@@ -4,15 +4,9 @@
 /*---
 es5id: 15.4.4.21-1-2
 description: Array.prototype.reduce applied to null
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-        try {
+
+assert.throws(TypeError, function() {
             Array.prototype.reduce.call(null);
-            return false;
-        } catch (e) {
-            return (e instanceof TypeError);
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-3-22.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-3-22.js
index bcfe336351..9b18e0cfd6 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-3-22.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-3-22.js
@@ -7,11 +7,8 @@ description: >
     Array.prototype.reduce throws TypeError exception - 'length' is an
     object with toString and valueOf methods that don�t return
     primitive values
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var accessed = false;
         var valueOfAccessed = false;
         var toStringAccessed = false;
@@ -36,12 +33,9 @@ function testcase() {
                 }
             }
         };
-
-        try {
+assert.throws(TypeError, function() {
             Array.prototype.reduce.call(obj, callbackfn, 1);
-            return false;
-        } catch (ex) {
-            return (ex instanceof TypeError) && !accessed && toStringAccessed && valueOfAccessed;
-        }
-    }
-runTestCase(testcase);
+});
+assert.sameValue(accessed, false, 'accessed');
+assert(toStringAccessed, 'toStringAccessed !== true');
+assert(valueOfAccessed, 'valueOfAccessed !== true');
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-4-1.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-4-1.js
index b099fcc0d6..897c504d24 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-4-1.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-4-1.js
@@ -4,19 +4,9 @@
 /*---
 es5id: 15.4.4.21-4-1
 description: Array.prototype.reduce throws TypeError if callbackfn is undefined
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
   var arr = new Array(10);
-  try {
-    arr.reduce();    
-  }
-  catch(e) {
-    if(e instanceof TypeError)
-      return true;  
-  }
-
- }
-runTestCase(testcase);
+assert.throws(TypeError, function() {
+    arr.reduce();
+});
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-4-15.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-4-15.js
index 5c7136a4b4..c62a892d14 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-4-15.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-4-15.js
@@ -6,10 +6,8 @@ es5id: 15.4.4.21-4-15
 description: >
     Array.prototype.reduce - calling with no callbackfn is the same as
     passing undefined for callbackfn
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = { 10: 10 };
         var lengthAccessed = false;
         var loopAccessed = false;
@@ -29,12 +27,8 @@ function testcase() {
             },
             configurable: true
         });
-
-        try {
+assert.throws(TypeError, function() {
             Array.prototype.reduce.call(obj);
-            return false;
-        } catch (ex) {
-            return (ex instanceof TypeError) && lengthAccessed && !loopAccessed;
-        }
-    }
-runTestCase(testcase);
+});
+assert(lengthAccessed, 'lengthAccessed !== true');
+assert.sameValue(loopAccessed, false, 'loopAccessed');
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-4-2.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-4-2.js
index 6c08442d56..53acc464e5 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-4-2.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-4-2.js
@@ -6,19 +6,9 @@ es5id: 15.4.4.21-4-2
 description: >
     Array.prototype.reduce throws ReferenceError if callbackfn is
     unreferenced
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
   var arr = new Array(10);
-  try {
-    arr.reduce(foo);    
-  }
-  catch(e) {
-    if(e instanceof ReferenceError)
-      return true;  
-  }
-
- }
-runTestCase(testcase);
+assert.throws(ReferenceError, function() {
+    arr.reduce(foo);
+});
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-4-3.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-4-3.js
index f3c7794fb2..342be4a5f9 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-4-3.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-4-3.js
@@ -4,19 +4,9 @@
 /*---
 es5id: 15.4.4.21-4-3
 description: Array.prototype.reduce throws TypeError if callbackfn is null
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
   var arr = new Array(10);
-  try {
-    arr.reduce(null);    
-  }
-  catch(e) {
-    if(e instanceof TypeError)
-      return true;  
-  }
-
- }
-runTestCase(testcase);
+assert.throws(TypeError, function() {
+    arr.reduce(null);
+});
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-4-4.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-4-4.js
index 749e752030..d5777b17d2 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-4-4.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-4-4.js
@@ -4,19 +4,9 @@
 /*---
 es5id: 15.4.4.21-4-4
 description: Array.prototype.reduce throws TypeError if callbackfn is boolean
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
   var arr = new Array(10);
-  try {
-    arr.reduce(true);    
-  }
-  catch(e) {
-    if(e instanceof TypeError)
-      return true;  
-  }
-
- }
-runTestCase(testcase);
+assert.throws(TypeError, function() {
+    arr.reduce(true);
+});
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-4-5.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-4-5.js
index 76dd875b8c..cb4a091174 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-4-5.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-4-5.js
@@ -4,19 +4,9 @@
 /*---
 es5id: 15.4.4.21-4-5
 description: Array.prototype.reduce throws TypeError if callbackfn is number
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
   var arr = new Array(10);
-  try {
-    arr.reduce(5);    
-  }
-  catch(e) {
-    if(e instanceof TypeError)
-      return true;  
-  }
-
- }
-runTestCase(testcase);
+assert.throws(TypeError, function() {
+    arr.reduce(5);
+});
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-4-6.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-4-6.js
index 957fe82de1..42faa62ecd 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-4-6.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-4-6.js
@@ -4,19 +4,9 @@
 /*---
 es5id: 15.4.4.21-4-6
 description: Array.prototype.reduce throws TypeError if callbackfn is string
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
   var arr = new Array(10);
-  try {
-    arr.reduce("abc");    
-  }
-  catch(e) {
-    if(e instanceof TypeError)
-      return true;  
-  }
-
- }
-runTestCase(testcase);
+assert.throws(TypeError, function() {
+    arr.reduce("abc");
+});
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-4-7.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-4-7.js
index 0743e19b56..5d08f90adf 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-4-7.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-4-7.js
@@ -6,19 +6,9 @@ es5id: 15.4.4.21-4-7
 description: >
     Array.prototype.reduce throws TypeError if callbackfn is Object
     without [[Call]] internal method
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
   var arr = new Array(10);
-  try {
-    arr.reduce(new Object());    
-  }
-  catch(e) {
-    if(e instanceof TypeError)
-      return true;  
-  }
-
- }
-runTestCase(testcase);
+assert.throws(TypeError, function() {
+    arr.reduce(new Object());
+});
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-4-8.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-4-8.js
index f545412dca..df7a1112c3 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-4-8.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-4-8.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.21-4-8
 description: >
     Array.prototype.reduce - side effects produced by step 2 are
     visible when an exception occurs
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var obj = { 0: 11, 1: 12 };
 
         var accessed = false;
@@ -22,12 +19,7 @@ function testcase() {
             },
             configurable: true
         });
-
-        try {
+assert.throws(TypeError, function() {
             Array.prototype.reduce.call(obj, null);
-            return false;
-        } catch (ex) {
-            return ex instanceof TypeError && accessed;
-        }
-    }
-runTestCase(testcase);
+});
+assert(accessed, 'accessed !== true');
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-4-9.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-4-9.js
index bbed561102..ea580455ea 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-4-9.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-4-9.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.21-4-9
 description: >
     Array.prototype.reduce - side effects produced by step 3 are
     visible when an exception occurs
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var obj = { 0: 11, 1: 12 };
 
         var accessed = false;
@@ -26,12 +23,7 @@ function testcase() {
             },
             configurable: true
         });
-
-        try {
+assert.throws(TypeError, function() {
             Array.prototype.reduce.call(obj, null);
-            return false;
-        } catch (ex) {
-            return ex instanceof TypeError && accessed;
-        }
-    }
-runTestCase(testcase);
+});
+assert(accessed, 'accessed !== true');
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-5-1.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-5-1.js
index 6b7844e29d..a225b4dedd 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-5-1.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-5-1.js
@@ -6,19 +6,9 @@ es5id: 15.4.4.21-5-1
 description: >
     Array.prototype.reduce throws TypeError if 'length' is 0 (empty
     array), no initVal
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
   function cb(){}
-  
-  try {
+assert.throws(TypeError, function() {
     [].reduce(cb);
-  }
-  catch (e) {
-    if (e instanceof TypeError) {
-      return true;
-    }
-  }
- }
-runTestCase(testcase);
+});
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-5-10.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-5-10.js
index 7344df34c7..8f5cb86b87 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-5-10.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-5-10.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.21-5-10
 description: >
     Array.prototype.reduce - if exception occurs, it occurs after any
     side-effects that might be produced by step 2
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         function callbackfn(prevVal, curVal, idx, obj) {
             return (curVal > 10);
         }
@@ -26,12 +23,7 @@ function testcase() {
             },
             configurable: true
         });
-
-        try {
+assert.throws(TypeError, function() {
             Array.prototype.reduce.call(obj, callbackfn);
-            return false;
-        } catch (ex) {
-            return (ex instanceof TypeError) && accessed;
-        }
-    }
-runTestCase(testcase);
+});
+assert(accessed, 'accessed !== true');
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-5-11.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-5-11.js
index 3291875d4b..e7d20c8f46 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-5-11.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-5-11.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.21-5-11
 description: >
     Array.prototype.reduce - if the exception occurs, it occurs after
     any side-effects that might be produced by step 3
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         function callbackfn(prevVal, curVal, idx, obj) {
             return (curVal > 10);
         }
@@ -30,12 +27,7 @@ function testcase() {
             },
             configurable: true
         });
-
-        try {
+assert.throws(TypeError, function() {
             Array.prototype.reduce.call(obj, callbackfn);
-            return false;
-        } catch (ex) {
-            return (ex instanceof TypeError) && accessed;
-        }
-    }
-runTestCase(testcase);
+});
+assert(accessed, 'accessed !== true');
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-5-2.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-5-2.js
index e8b316cced..bd1728cbdb 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-5-2.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-5-2.js
@@ -7,23 +7,14 @@ description: >
     Array.prototype.reduce throws TypeError if 'length' is 0
     (subclassed Array, length overridden to null (type conversion)),
     no initVal
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
   foo.prototype = new Array(1, 2, 3);
   function foo() {}
   var f = new foo();
   f.length = null;
   
   function cb(){}
-  try {
+assert.throws(TypeError, function() {
     f.reduce(cb);
-  }
-  catch (e) {
-    if (e instanceof TypeError) {
-      return true;
-    }
-  }
- }
-runTestCase(testcase);
+});
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-5-3.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-5-3.js
index 1aedd2b36e..66ca0f4f06 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-5-3.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-5-3.js
@@ -7,23 +7,14 @@ description: >
     Array.prototype.reduce throws TypeError if 'length' is 0
     (subclassed Array, length overridden to false (type conversion)),
     no initVal
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
   foo.prototype = new Array(1, 2, 3);
   function foo() {}
   var f = new foo();
   f.length = false;
   
   function cb(){}
-  try {
+assert.throws(TypeError, function() {
     f.reduce(cb);
-  }
-  catch (e) {
-    if (e instanceof TypeError) {
-      return true;
-    }
-  }
- }
-runTestCase(testcase);
+});
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-5-4.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-5-4.js
index af9efc8875..345b5f8d02 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-5-4.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-5-4.js
@@ -7,23 +7,14 @@ description: >
     Array.prototype.reduce throws TypeError if 'length' is 0
     (subclassed Array, length overridden to 0 (type conversion)), no
     initVal
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
   foo.prototype = new Array(1, 2, 3);
   function foo() {}
   var f = new foo();
   f.length = 0;
   
   function cb(){}
-  try {
+assert.throws(TypeError, function() {
     f.reduce(cb);
-  }
-  catch (e) {
-    if (e instanceof TypeError) {
-      return true;
-    }
-  }
- }
-runTestCase(testcase);
+});
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-5-5.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-5-5.js
index 0a62ef2310..18531bd0f9 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-5-5.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-5-5.js
@@ -7,23 +7,14 @@ description: >
     Array.prototype.reduce throws TypeError if 'length' is 0
     (subclassed Array, length overridden to '0' (type conversion)), no
     initVal
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
   foo.prototype = new Array(1, 2, 3);
   function foo() {}
   var f = new foo();
   f.length = '0';
   
   function cb(){}
-  try {
+assert.throws(TypeError, function() {
     f.reduce(cb);
-  }
-  catch (e) {
-    if (e instanceof TypeError) {
-      return true;
-    }
-  }
- }
-runTestCase(testcase);
+});
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-5-6.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-5-6.js
index 2aeb7827a8..b59332ca54 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-5-6.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-5-6.js
@@ -7,10 +7,8 @@ description: >
     Array.prototype.reduce throws TypeError if 'length' is 0
     (subclassed Array, length overridden with obj with valueOf), no
     initVal
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
   foo.prototype = new Array(1, 2, 3);
   function foo() {}
   var f = new foo();
@@ -19,13 +17,6 @@ function testcase() {
   f.length = o;
   
   function cb(){}
-  try {
+assert.throws(TypeError, function() {
     f.reduce(cb);
-  }
-  catch (e) {
-    if (e instanceof TypeError) {
-      return true;
-    }
-  }
- }
-runTestCase(testcase);
+});
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-5-7.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-5-7.js
index 04abec3883..e2819a73ef 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-5-7.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-5-7.js
@@ -7,10 +7,8 @@ description: >
     Array.prototype.reduce throws TypeError if 'length' is 0
     (subclassed Array, length overridden with obj w/o valueOf
     (toString)), no initVal
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
   foo.prototype = new Array(1, 2, 3);
   function foo() {}
   var f = new foo();
@@ -25,13 +23,6 @@ function testcase() {
   // resulting string to a number.
 
   function cb(){}
-  try {
+assert.throws(TypeError, function() {
     f.reduce(cb);
-  }
-  catch (e) {
-    if (e instanceof TypeError) {
-      return true;
-    }
-  }
- }
-runTestCase(testcase);
+});
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-5-8.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-5-8.js
index 989d400131..ef30e6bb8d 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-5-8.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-5-8.js
@@ -6,10 +6,8 @@ es5id: 15.4.4.21-5-8
 description: >
     Array.prototype.reduce throws TypeError if 'length' is 0
     (subclassed Array, length overridden with []), no initVal
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
   foo.prototype = new Array(1, 2, 3);
   function foo() {}
   var f = new foo();
@@ -31,13 +29,6 @@ function testcase() {
   // or if its one element is not a number, the array converts to NaN.
 
   function cb(){}
-  try {
+assert.throws(TypeError, function() {
     f.reduce(cb);
-  }
-  catch (e) {
-    if (e instanceof TypeError) {
-      return true;
-    }
-  }
- }
-runTestCase(testcase);
+});
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-8-b-iii-1-32.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-8-b-iii-1-32.js
index fd139b89d5..3cc60dd966 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-8-b-iii-1-32.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-8-b-iii-1-32.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.21-8-b-iii-1-32
 description: >
     Array.prototype.reduce - exception in getter terminates iteration
     on an Array-like object
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var accessed = false;
         var testResult = false;
         function callbackfn(prevVal, curVal, idx, obj) {
@@ -27,12 +24,8 @@ function testcase() {
             },
             configurable: true
         });
-
-        try {
+assert.throws(RangeError, function() {
             Array.prototype.reduce.call(obj, callbackfn);
-            return false;
-        } catch (ex) {
-            return (ex instanceof RangeError) && !accessed && !testResult;
-        }
-    }
-runTestCase(testcase);
+});
+assert.sameValue(accessed, false, 'accessed');
+assert.sameValue(testResult, false, 'testResult');
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-8-b-iii-1-33.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-8-b-iii-1-33.js
index c56d04a138..7895d2c6c1 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-8-b-iii-1-33.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-8-b-iii-1-33.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.21-8-b-iii-1-33
 description: >
     Array.prototype.reduce - exception in getter terminates iteration
     on an Array
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var accessed = false;
         var testResult = false;
         function callbackfn(prevVal, curVal, idx, obj) {
@@ -28,12 +25,8 @@ function testcase() {
             },
             configurable: true
         });
-
-        try {
+assert.throws(RangeError, function() {
             arr.reduce(callbackfn);
-            return false;
-        } catch (ex) {
-            return (ex instanceof RangeError) && !accessed && !testResult;
-        }
-    }
-runTestCase(testcase);
+});
+assert.sameValue(accessed, false, 'accessed');
+assert.sameValue(testResult, false, 'testResult');
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-8-c-1.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-8-c-1.js
index ed1114228f..4584c5c90c 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-8-c-1.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-8-c-1.js
@@ -6,22 +6,13 @@ es5id: 15.4.4.21-8-c-1
 description: >
     Array.prototype.reduce throws TypeError when Array is empty and
     initialValue is not present
-includes: [runTestCase.js]
 ---*/
 
-function testcase() { 
- 
   function callbackfn(prevVal, curVal, idx, obj)
   {
   }
 
   var arr = new Array(10);
-  try {
+assert.throws(TypeError, function() {
     arr.reduce(callbackfn);
-  } 
-  catch(e) {
-    if(e instanceof TypeError)
-      return true;  
-  }
- }
-runTestCase(testcase);
+});
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-8-c-2.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-8-c-2.js
index 5e71bc183e..7f7a226473 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-8-c-2.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-8-c-2.js
@@ -7,11 +7,8 @@ description: >
     Array.prototype.reduce throws TypeError when elements assigned
     values are deleted by reducing array length and initialValue is
     not present
-includes: [runTestCase.js]
 ---*/
 
-function testcase() { 
- 
   function callbackfn(prevVal, curVal, idx, obj)
   {
   }
@@ -19,12 +16,6 @@ function testcase() {
   var arr = new Array(10);
   arr[9] = 1;
   arr.length = 5;
-  try {
+assert.throws(TypeError, function() {
     arr.reduce(callbackfn);
-  } 
-  catch(e) {
-    if(e instanceof TypeError)
-      return true;  
-  }
- }
-runTestCase(testcase);
+});
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-8-c-3.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-8-c-3.js
index e9cee5f628..200edf42e7 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-8-c-3.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-8-c-3.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.21-8-c-3
 description: >
     Array.prototype.reduce throws TypeError when elements assigned
     values are deleted and initialValue is not present
-includes: [runTestCase.js]
 ---*/
 
-function testcase() { 
- 
   function callbackfn(prevVal, curVal, idx, obj)
   {
   }
@@ -21,12 +18,6 @@ function testcase() {
   delete arr[2];
   delete arr[3];
   delete arr[4];
-  try {
+assert.throws(TypeError, function() {
     arr.reduce(callbackfn);
-  } 
-  catch(e) {
-    if(e instanceof TypeError)
-      return true;  
-  }
- }
-runTestCase(testcase);
+});
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-8-c-5.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-8-c-5.js
index 91c8258f8b..159c6eeb2f 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-8-c-5.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-8-c-5.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.21-8-c-5
 description: >
     Array.prototype.reduce - if exception occurs, it occurs after any
     side-effects that might be produced by step 2
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var obj = { };
 
         var accessed = false;
@@ -22,12 +19,7 @@ function testcase() {
             },
             configurable: true
         });
-
-        try {
+assert.throws(TypeError, function() {
             Array.prototype.reduce.call(obj, function () { });
-            return false;
-        } catch (ex) {
-            return (ex instanceof TypeError) && accessed;
-        }
-    }
-runTestCase(testcase);
+});
+assert(accessed, 'accessed !== true');
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-8-c-6.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-8-c-6.js
index 1d2a6bc3a0..428ef5a9dd 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-8-c-6.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-8-c-6.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.21-8-c-6
 description: >
     Array.prototype.reduce - if exception occurs, it occurs after any
     side-effects that might be produced by step 3
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var obj = {};
 
         var accessed = false;
@@ -26,12 +23,7 @@ function testcase() {
             },
             configurable: true
         });
-
-        try {
+assert.throws(TypeError, function() {
             Array.prototype.reduce.call(obj, function () { });
-            return false;
-        } catch (ex) {
-            return (ex instanceof TypeError) && accessed;
-        }
-    }
-runTestCase(testcase);
+});
+assert(accessed, 'accessed !== true');
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-i-32.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-i-32.js
index 3fd275289a..64efa4e1a2 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-i-32.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-i-32.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.21-9-c-i-32
 description: >
     Array.prototype.reduce - unnhandled exceptions happened in getter
     terminate iteration on an Array-like object
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var accessed = false;
         var testResult = false;
         var initialValue = 0;
@@ -28,12 +25,8 @@ function testcase() {
             },
             configurable: true
         });
-
-        try {
+assert.throws(RangeError, function() {
             Array.prototype.reduce.call(obj, callbackfn, initialValue);
-            return false;
-        } catch (ex) {
-            return (ex instanceof RangeError) && !accessed && !testResult;
-        }
-    }
-runTestCase(testcase);
+});
+assert.sameValue(accessed, false, 'accessed');
+assert.sameValue(testResult, false, 'testResult');
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-i-33.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-i-33.js
index f6e29e85ec..8fe9d99a49 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-i-33.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-i-33.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.21-9-c-i-33
 description: >
     Array.prototype.reduce - unnhandled exceptions happened in getter
     terminate iteration on an Array
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var accessed = false;
         var testResult = false;
         var initialValue = 0;
@@ -29,12 +26,8 @@ function testcase() {
             },
             configurable: true
         });
-
-        try {
+assert.throws(RangeError, function() {
             arr.reduce(callbackfn, initialValue);
-            return false;
-        } catch (ex) {
-            return (ex instanceof RangeError) && !accessed && !testResult;
-        }
-    }
-runTestCase(testcase);
+});
+assert.sameValue(accessed, false, 'accessed');
+assert.sameValue(testResult, false, 'testResult');
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-ii-7.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-ii-7.js
index 41b136b6f8..1fb2015bb9 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-ii-7.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-ii-7.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.21-9-c-ii-7
 description: >
     Array.prototype.reduce - unhandled exceptions happened in
     callbackfn terminate iteration
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var accessed = false;
 
         function callbackfn(prevVal, curVal, idx, obj) {
@@ -23,12 +20,7 @@ function testcase() {
         }
 
         var obj = { 0: 11, 4: 10, 10: 8, length: 20 };
-
-        try {
+assert.throws(Error, function() {
             Array.prototype.reduce.call(obj, callbackfn, 1);
-            return false;
-        } catch (ex) {
-            return (ex instanceof Error) && !accessed;
-        }
-    }
-runTestCase(testcase);
+});
+assert.sameValue(accessed, false, 'accessed');
diff --git a/test/built-ins/Array/prototype/reduceRight/15.4.4.22-1-1.js b/test/built-ins/Array/prototype/reduceRight/15.4.4.22-1-1.js
index da9fe53abf..d1758340ce 100644
--- a/test/built-ins/Array/prototype/reduceRight/15.4.4.22-1-1.js
+++ b/test/built-ins/Array/prototype/reduceRight/15.4.4.22-1-1.js
@@ -4,15 +4,9 @@
 /*---
 es5id: 15.4.4.22-1-1
 description: Array.prototype.reduceRight applied to undefined throws a TypeError
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-        try {
-            Array.prototype.reduceRight.call(undefined); 
-            return false;
-        } catch (e) {
-            return (e instanceof TypeError);
-        }
-    }
-runTestCase(testcase);
+
+assert.throws(TypeError, function() {
+            Array.prototype.reduceRight.call(undefined);
+});
diff --git a/test/built-ins/Array/prototype/reduceRight/15.4.4.22-1-2.js b/test/built-ins/Array/prototype/reduceRight/15.4.4.22-1-2.js
index 7ab29703b2..dc4b68dc02 100644
--- a/test/built-ins/Array/prototype/reduceRight/15.4.4.22-1-2.js
+++ b/test/built-ins/Array/prototype/reduceRight/15.4.4.22-1-2.js
@@ -4,15 +4,9 @@
 /*---
 es5id: 15.4.4.22-1-2
 description: Array.prototype.reduceRight applied to null throws a TypeError
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-        try {
+
+assert.throws(TypeError, function() {
             Array.prototype.reduceRight.call(null);
-            return false;
-        } catch (e) {
-            return (e instanceof TypeError);
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/built-ins/Array/prototype/reduceRight/15.4.4.22-3-22.js b/test/built-ins/Array/prototype/reduceRight/15.4.4.22-3-22.js
index 90da420a01..099ba3179f 100644
--- a/test/built-ins/Array/prototype/reduceRight/15.4.4.22-3-22.js
+++ b/test/built-ins/Array/prototype/reduceRight/15.4.4.22-3-22.js
@@ -7,11 +7,8 @@ description: >
     Array.prototype.reduceRight throws TypeError exception when
     'length' is an object with toString and valueOf methods that don�t
     return primitive values
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var accessed = false;
         var toStringAccessed = false;
         var valueOfAccessed = false;
@@ -35,12 +32,9 @@ function testcase() {
                 }
             }
         };
-
-        try {
+assert.throws(TypeError, function() {
             Array.prototype.reduceRight.call(obj, callbackfn, 1);
-            return false;
-        } catch (ex) {
-            return (ex instanceof TypeError) && toStringAccessed && valueOfAccessed && !accessed;
-        }
-    }
-runTestCase(testcase);
+});
+assert(toStringAccessed, 'toStringAccessed !== true');
+assert(valueOfAccessed, 'valueOfAccessed !== true');
+assert.sameValue(accessed, false, 'accessed');
diff --git a/test/built-ins/Array/prototype/reduceRight/15.4.4.22-4-1.js b/test/built-ins/Array/prototype/reduceRight/15.4.4.22-4-1.js
index 19549a18b2..24c12f6b25 100644
--- a/test/built-ins/Array/prototype/reduceRight/15.4.4.22-4-1.js
+++ b/test/built-ins/Array/prototype/reduceRight/15.4.4.22-4-1.js
@@ -6,19 +6,9 @@ es5id: 15.4.4.22-4-1
 description: >
     Array.prototype.reduceRight throws TypeError if callbackfn is
     undefined
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
   var arr = new Array(10);
-  try {
-    arr.reduceRight();    
-  }
-  catch(e) {
-    if(e instanceof TypeError)
-      return true;  
-  }
-
- }
-runTestCase(testcase);
+assert.throws(TypeError, function() {
+    arr.reduceRight();
+});
diff --git a/test/built-ins/Array/prototype/reduceRight/15.4.4.22-4-15.js b/test/built-ins/Array/prototype/reduceRight/15.4.4.22-4-15.js
index ca9408b656..8b1d2258e3 100644
--- a/test/built-ins/Array/prototype/reduceRight/15.4.4.22-4-15.js
+++ b/test/built-ins/Array/prototype/reduceRight/15.4.4.22-4-15.js
@@ -6,10 +6,8 @@ es5id: 15.4.4.22-4-15
 description: >
     Array.prototype.reduceRight - calling with no callbackfn is the
     same as passing undefined for callbackfn
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = { 10: 10 };
         var lengthAccessed = false;
         var loopAccessed = false;
@@ -28,12 +26,8 @@ function testcase() {
             },
             configurable: true
         });
-
-        try {
+assert.throws(TypeError, function() {
             Array.prototype.reduceRight.call(obj, undefined);
-            return false;
-        } catch (ex) {
-            return (ex instanceof TypeError) && lengthAccessed && !loopAccessed;
-        }
-    }
-runTestCase(testcase);
+});
+assert(lengthAccessed, 'lengthAccessed !== true');
+assert.sameValue(loopAccessed, false, 'loopAccessed');
diff --git a/test/built-ins/Array/prototype/reduceRight/15.4.4.22-4-2.js b/test/built-ins/Array/prototype/reduceRight/15.4.4.22-4-2.js
index 1df28dfc25..122b79f2fe 100644
--- a/test/built-ins/Array/prototype/reduceRight/15.4.4.22-4-2.js
+++ b/test/built-ins/Array/prototype/reduceRight/15.4.4.22-4-2.js
@@ -6,19 +6,9 @@ es5id: 15.4.4.22-4-2
 description: >
     Array.prototype.reduceRight throws ReferenceError if callbackfn is
     unreferenced
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
   var arr = new Array(10);
-  try {
-    arr.reduceRight(foo);    
-  }
-  catch(e) {
-    if(e instanceof ReferenceError)
-      return true;  
-  }
-
- }
-runTestCase(testcase);
+assert.throws(ReferenceError, function() {
+    arr.reduceRight(foo);
+});
diff --git a/test/built-ins/Array/prototype/reduceRight/15.4.4.22-4-3.js b/test/built-ins/Array/prototype/reduceRight/15.4.4.22-4-3.js
index dbc1b245f1..fc052eeff2 100644
--- a/test/built-ins/Array/prototype/reduceRight/15.4.4.22-4-3.js
+++ b/test/built-ins/Array/prototype/reduceRight/15.4.4.22-4-3.js
@@ -4,19 +4,9 @@
 /*---
 es5id: 15.4.4.22-4-3
 description: Array.prototype.reduceRight throws TypeError if callbackfn is null
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
   var arr = new Array(10);
-  try {
-    arr.reduceRight(null);    
-  }
-  catch(e) {
-    if(e instanceof TypeError)
-      return true;  
-  }
-
- }
-runTestCase(testcase);
+assert.throws(TypeError, function() {
+    arr.reduceRight(null);
+});
diff --git a/test/built-ins/Array/prototype/reduceRight/15.4.4.22-4-4.js b/test/built-ins/Array/prototype/reduceRight/15.4.4.22-4-4.js
index bce7673863..400b1818bb 100644
--- a/test/built-ins/Array/prototype/reduceRight/15.4.4.22-4-4.js
+++ b/test/built-ins/Array/prototype/reduceRight/15.4.4.22-4-4.js
@@ -6,19 +6,9 @@ es5id: 15.4.4.22-4-4
 description: >
     Array.prototype.reduceRight throws TypeError if callbackfn is
     boolean
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
   var arr = new Array(10);
-  try {
-    arr.reduceRight(true);    
-  }
-  catch(e) {
-    if(e instanceof TypeError)
-      return true;  
-  }
-
- }
-runTestCase(testcase);
+assert.throws(TypeError, function() {
+    arr.reduceRight(true);
+});
diff --git a/test/built-ins/Array/prototype/reduceRight/15.4.4.22-4-5.js b/test/built-ins/Array/prototype/reduceRight/15.4.4.22-4-5.js
index 98b3424c6c..faef315450 100644
--- a/test/built-ins/Array/prototype/reduceRight/15.4.4.22-4-5.js
+++ b/test/built-ins/Array/prototype/reduceRight/15.4.4.22-4-5.js
@@ -6,19 +6,9 @@ es5id: 15.4.4.22-4-5
 description: >
     Array.prototype.reduceRight throws TypeError if callbackfn is
     number
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
   var arr = new Array(10);
-  try {
-    arr.reduceRight(5);    
-  }
-  catch(e) {
-    if(e instanceof TypeError)
-      return true;  
-  }
-
- }
-runTestCase(testcase);
+assert.throws(TypeError, function() {
+    arr.reduceRight(5);
+});
diff --git a/test/built-ins/Array/prototype/reduceRight/15.4.4.22-4-6.js b/test/built-ins/Array/prototype/reduceRight/15.4.4.22-4-6.js
index e84b73a338..47db3f93c1 100644
--- a/test/built-ins/Array/prototype/reduceRight/15.4.4.22-4-6.js
+++ b/test/built-ins/Array/prototype/reduceRight/15.4.4.22-4-6.js
@@ -6,19 +6,9 @@ es5id: 15.4.4.22-4-6
 description: >
     Array.prototype.reduceRight throws TypeError if callbackfn is
     string
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
   var arr = new Array(10);
-  try {
-    arr.reduceRight("abc");    
-  }
-  catch(e) {
-    if(e instanceof TypeError)
-      return true;  
-  }
-
- }
-runTestCase(testcase);
+assert.throws(TypeError, function() {
+    arr.reduceRight("abc");
+});
diff --git a/test/built-ins/Array/prototype/reduceRight/15.4.4.22-4-7.js b/test/built-ins/Array/prototype/reduceRight/15.4.4.22-4-7.js
index 9d50aec4f3..20e82d8e31 100644
--- a/test/built-ins/Array/prototype/reduceRight/15.4.4.22-4-7.js
+++ b/test/built-ins/Array/prototype/reduceRight/15.4.4.22-4-7.js
@@ -6,19 +6,9 @@ es5id: 15.4.4.22-4-7
 description: >
     Array.prototype.reduceRight throws TypeError if callbackfn is
     Object without [[Call]] internal method
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
   var arr = new Array(10);
-  try {
-    arr.reduceRight(new Object());    
-  }
-  catch(e) {
-    if(e instanceof TypeError)
-      return true;  
-  }
-
- }
-runTestCase(testcase);
+assert.throws(TypeError, function() {
+    arr.reduceRight(new Object());
+});
diff --git a/test/built-ins/Array/prototype/reduceRight/15.4.4.22-4-8.js b/test/built-ins/Array/prototype/reduceRight/15.4.4.22-4-8.js
index 91998eb295..f75b594b7e 100644
--- a/test/built-ins/Array/prototype/reduceRight/15.4.4.22-4-8.js
+++ b/test/built-ins/Array/prototype/reduceRight/15.4.4.22-4-8.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.22-4-8
 description: >
     Array.prototype.reduceRight - side effects produced by step 2 are
     visible when an exception occurs
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var obj = { 0: 11, 1: 12 };
 
         var accessed = false;
@@ -22,12 +19,7 @@ function testcase() {
             },
             configurable: true
         });
-
-        try {
+assert.throws(TypeError, function() {
             Array.prototype.reduceRight.call(obj, null);
-            return false;
-        } catch (ex) {
-            return ex instanceof TypeError && accessed;
-        }
-    }
-runTestCase(testcase);
+});
+assert(accessed, 'accessed !== true');
diff --git a/test/built-ins/Array/prototype/reduceRight/15.4.4.22-4-9.js b/test/built-ins/Array/prototype/reduceRight/15.4.4.22-4-9.js
index 61dd66012b..888955880c 100644
--- a/test/built-ins/Array/prototype/reduceRight/15.4.4.22-4-9.js
+++ b/test/built-ins/Array/prototype/reduceRight/15.4.4.22-4-9.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.22-4-9
 description: >
     Array.prototype.reduceRight - side effects produced by step 3 are
     visible when an exception occurs
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var obj = { 0: 11, 1: 12 };
 
         var accessed = false;
@@ -26,12 +23,7 @@ function testcase() {
             },
             configurable: true
         });
-
-        try {
+assert.throws(TypeError, function() {
             Array.prototype.reduceRight.call(obj, null);
-            return false;
-        } catch (ex) {
-            return ex instanceof TypeError && accessed;
-        }
-    }
-runTestCase(testcase);
+});
+assert(accessed, 'accessed !== true');
diff --git a/test/built-ins/Array/prototype/reduceRight/15.4.4.22-5-1.js b/test/built-ins/Array/prototype/reduceRight/15.4.4.22-5-1.js
index 0a780ca053..ca0e2cb24d 100644
--- a/test/built-ins/Array/prototype/reduceRight/15.4.4.22-5-1.js
+++ b/test/built-ins/Array/prototype/reduceRight/15.4.4.22-5-1.js
@@ -6,19 +6,9 @@ es5id: 15.4.4.22-5-1
 description: >
     Array.prototype.reduceRight throws TypeError if 'length' is 0
     (empty array), no initVal
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
   function cb(){}
-  
-  try {
+assert.throws(TypeError, function() {
     [].reduceRight(cb);
-  }
-  catch (e) {
-    if (e instanceof TypeError) {
-      return true;
-    }
-  }
- }
-runTestCase(testcase);
+});
diff --git a/test/built-ins/Array/prototype/reduceRight/15.4.4.22-5-10.js b/test/built-ins/Array/prototype/reduceRight/15.4.4.22-5-10.js
index 16796f441c..a82ade379b 100644
--- a/test/built-ins/Array/prototype/reduceRight/15.4.4.22-5-10.js
+++ b/test/built-ins/Array/prototype/reduceRight/15.4.4.22-5-10.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.22-5-10
 description: >
     Array.prototype.reduceRight - side-effects produced by step 2 when
     an exception occurs
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var obj = { 0: 11, 1: 12 };
 
         var accessed = false;
@@ -22,12 +19,7 @@ function testcase() {
             },
             configurable: true
         });
-
-        try {
+assert.throws(TypeError, function() {
             Array.prototype.reduceRight.call(obj, function () { });
-            return false;
-        } catch (ex) {
-            return (ex instanceof TypeError) && accessed;
-        }
-    }
-runTestCase(testcase);
+});
+assert(accessed, 'accessed !== true');
diff --git a/test/built-ins/Array/prototype/reduceRight/15.4.4.22-5-11.js b/test/built-ins/Array/prototype/reduceRight/15.4.4.22-5-11.js
index 6f02fd445c..14c8e99a0f 100644
--- a/test/built-ins/Array/prototype/reduceRight/15.4.4.22-5-11.js
+++ b/test/built-ins/Array/prototype/reduceRight/15.4.4.22-5-11.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.22-5-11
 description: >
     Array.prototype.reduceRight - side-effects produced by step 3 when
     an exception occurs
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var obj = { 0: 11, 1: 12 };
 
         var accessed = false;
@@ -26,12 +23,7 @@ function testcase() {
             },
             configurable: true
         });
-
-        try {
+assert.throws(TypeError, function() {
             Array.prototype.reduceRight.call(obj, function () { });
-            return false;
-        } catch (ex) {
-            return (ex instanceof TypeError) && accessed;
-        }
-    }
-runTestCase(testcase);
+});
+assert(accessed, 'accessed !== true');
diff --git a/test/built-ins/Array/prototype/reduceRight/15.4.4.22-5-2.js b/test/built-ins/Array/prototype/reduceRight/15.4.4.22-5-2.js
index ba4e1a403f..b930b7a4c0 100644
--- a/test/built-ins/Array/prototype/reduceRight/15.4.4.22-5-2.js
+++ b/test/built-ins/Array/prototype/reduceRight/15.4.4.22-5-2.js
@@ -7,23 +7,14 @@ description: >
     Array.prototype.reduceRight throws TypeError if 'length' is 0
     (subclassed Array, length overridden to null (type conversion)),
     no initVal
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
   foo.prototype = new Array(1, 2, 3);
   function foo() {}
   var f = new foo();
   f.length = null;
   
   function cb(){}
-  try {
+assert.throws(TypeError, function() {
     f.reduceRight(cb);
-  }
-  catch (e) {
-    if (e instanceof TypeError) {
-      return true;
-    }
-  }
- }
-runTestCase(testcase);
+});
diff --git a/test/built-ins/Array/prototype/reduceRight/15.4.4.22-5-3.js b/test/built-ins/Array/prototype/reduceRight/15.4.4.22-5-3.js
index b80ff5dc72..c04b1ae4f4 100644
--- a/test/built-ins/Array/prototype/reduceRight/15.4.4.22-5-3.js
+++ b/test/built-ins/Array/prototype/reduceRight/15.4.4.22-5-3.js
@@ -7,23 +7,14 @@ description: >
     Array.prototype.reduceRight throws TypeError if 'length' is 0
     (subclassed Array, length overridden to false (type conversion)),
     no initVal
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
   foo.prototype = new Array(1, 2, 3);
   function foo() {}
   var f = new foo();
   f.length = false;
   
   function cb(){}
-  try {
+assert.throws(TypeError, function() {
     f.reduceRight(cb);
-  }
-  catch (e) {
-    if (e instanceof TypeError) {
-      return true;
-    }
-  }
- }
-runTestCase(testcase);
+});
diff --git a/test/built-ins/Array/prototype/reduceRight/15.4.4.22-5-4.js b/test/built-ins/Array/prototype/reduceRight/15.4.4.22-5-4.js
index 444232ec5d..1f9553b7a6 100644
--- a/test/built-ins/Array/prototype/reduceRight/15.4.4.22-5-4.js
+++ b/test/built-ins/Array/prototype/reduceRight/15.4.4.22-5-4.js
@@ -7,23 +7,14 @@ description: >
     Array.prototype.reduceRight throws TypeError if 'length' is 0
     (subclassed Array, length overridden to 0 (type conversion)), no
     initVal
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
   foo.prototype = new Array(1, 2, 3);
   function foo() {}
   var f = new foo();
   f.length = 0;
   
   function cb(){}
-  try {
+assert.throws(TypeError, function() {
     f.reduceRight(cb);
-  }
-  catch (e) {
-    if (e instanceof TypeError) {
-      return true;
-    }
-  }
- }
-runTestCase(testcase);
+});
diff --git a/test/built-ins/Array/prototype/reduceRight/15.4.4.22-5-5.js b/test/built-ins/Array/prototype/reduceRight/15.4.4.22-5-5.js
index 72f23a1d18..d0e54cdb75 100644
--- a/test/built-ins/Array/prototype/reduceRight/15.4.4.22-5-5.js
+++ b/test/built-ins/Array/prototype/reduceRight/15.4.4.22-5-5.js
@@ -7,23 +7,14 @@ description: >
     Array.prototype.reduceRight throws TypeError if 'length' is 0
     (subclassed Array, length overridden to '0' (type conversion)), no
     initVal
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
   foo.prototype = new Array(1, 2, 3);
   function foo() {}
   var f = new foo();
   f.length = '0';
   
   function cb(){}
-  try {
+assert.throws(TypeError, function() {
     f.reduceRight(cb);
-  }
-  catch (e) {
-    if (e instanceof TypeError) {
-      return true;
-    }
-  }
- }
-runTestCase(testcase);
+});
diff --git a/test/built-ins/Array/prototype/reduceRight/15.4.4.22-5-6.js b/test/built-ins/Array/prototype/reduceRight/15.4.4.22-5-6.js
index 632c94811e..d4a6221a26 100644
--- a/test/built-ins/Array/prototype/reduceRight/15.4.4.22-5-6.js
+++ b/test/built-ins/Array/prototype/reduceRight/15.4.4.22-5-6.js
@@ -7,10 +7,8 @@ description: >
     Array.prototype.reduceRight throws TypeError if 'length' is 0
     (subclassed Array, length overridden with obj with valueOf), no
     initVal
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
   foo.prototype = new Array(1, 2, 3);
   function foo() {}
   var f = new foo();
@@ -19,13 +17,6 @@ function testcase() {
   f.length = o;
   
   function cb(){}
-  try {
+assert.throws(TypeError, function() {
     f.reduceRight(cb);
-  }
-  catch (e) {
-    if (e instanceof TypeError) {
-      return true;
-    }
-  }
- }
-runTestCase(testcase);
+});
diff --git a/test/built-ins/Array/prototype/reduceRight/15.4.4.22-5-7.js b/test/built-ins/Array/prototype/reduceRight/15.4.4.22-5-7.js
index 3a38613857..e9a8a2a243 100644
--- a/test/built-ins/Array/prototype/reduceRight/15.4.4.22-5-7.js
+++ b/test/built-ins/Array/prototype/reduceRight/15.4.4.22-5-7.js
@@ -7,10 +7,8 @@ description: >
     Array.prototype.reduceRight throws TypeError if 'length' is 0
     (subclassed Array, length overridden with obj w/o valueOf
     (toString)), no initVal
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
   foo.prototype = new Array(1, 2, 3);
   function foo() {}
   var f = new foo();
@@ -25,13 +23,6 @@ function testcase() {
   // resulting string to a number.
 
   function cb(){}
-  try {
+assert.throws(TypeError, function() {
     f.reduceRight(cb);
-  }
-  catch (e) {
-    if (e instanceof TypeError) {
-      return true;
-    }
-  }
- }
-runTestCase(testcase);
+});
diff --git a/test/built-ins/Array/prototype/reduceRight/15.4.4.22-5-8.js b/test/built-ins/Array/prototype/reduceRight/15.4.4.22-5-8.js
index 63788afc0f..425a7c6a61 100644
--- a/test/built-ins/Array/prototype/reduceRight/15.4.4.22-5-8.js
+++ b/test/built-ins/Array/prototype/reduceRight/15.4.4.22-5-8.js
@@ -6,10 +6,8 @@ es5id: 15.4.4.22-5-8
 description: >
     Array.prototype.reduceRight throws TypeError if 'length' is 0
     (subclassed Array, length overridden with []), no initVal
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
   foo.prototype = new Array(1, 2, 3);
   function foo() {}
   var f = new foo();
@@ -31,13 +29,6 @@ function testcase() {
   // or if its one element is not a number, the array converts to NaN.
 
   function cb(){}
-  try {
+assert.throws(TypeError, function() {
     f.reduceRight(cb);
-  }
-  catch (e) {
-    if (e instanceof TypeError) {
-      return true;
-    }
-  }
- }
-runTestCase(testcase);
+});
diff --git a/test/built-ins/Array/prototype/reduceRight/15.4.4.22-8-b-iii-1-32.js b/test/built-ins/Array/prototype/reduceRight/15.4.4.22-8-b-iii-1-32.js
index 950fba740f..3c359614c0 100644
--- a/test/built-ins/Array/prototype/reduceRight/15.4.4.22-8-b-iii-1-32.js
+++ b/test/built-ins/Array/prototype/reduceRight/15.4.4.22-8-b-iii-1-32.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.22-8-b-iii-1-32
 description: >
     Array.prototype.reduceRight - Exception in getter terminate
     iteration on an Array-like object
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var accessed = false;
         function callbackfn(prevVal, curVal, idx, obj) {
             if (idx <= 1) {
@@ -25,12 +22,7 @@ function testcase() {
             },
             configurable: true
         });
-
-        try {
+assert.throws(RangeError, function() {
             Array.prototype.reduceRight.call(obj, callbackfn);
-            return false;
-        } catch (ex) {
-            return (ex instanceof RangeError) && !accessed;
-        }
-    }
-runTestCase(testcase);
+});
+assert.sameValue(accessed, false, 'accessed');
diff --git a/test/built-ins/Array/prototype/reduceRight/15.4.4.22-8-b-iii-1-33.js b/test/built-ins/Array/prototype/reduceRight/15.4.4.22-8-b-iii-1-33.js
index 43ed6583d3..1ed58b73fc 100644
--- a/test/built-ins/Array/prototype/reduceRight/15.4.4.22-8-b-iii-1-33.js
+++ b/test/built-ins/Array/prototype/reduceRight/15.4.4.22-8-b-iii-1-33.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.22-8-b-iii-1-33
 description: >
     Array.prototype.reduceRight - Exception in getter terminate
     iteration on an Array
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var accessed = false;
         function callbackfn(prevVal, curVal, idx, obj) {
             if (idx <= 1) {
@@ -26,12 +23,7 @@ function testcase() {
             },
             configurable: true
         });
-
-        try {
+assert.throws(RangeError, function() {
             arr.reduceRight(callbackfn);
-            return false;
-        } catch (ex) {
-            return (ex instanceof RangeError) && !accessed;
-        }
-    }
-runTestCase(testcase);
+});
+assert.sameValue(accessed, false, 'accessed');
diff --git a/test/built-ins/Array/prototype/reduceRight/15.4.4.22-8-c-1.js b/test/built-ins/Array/prototype/reduceRight/15.4.4.22-8-c-1.js
index 59f95a6c40..c13b610d77 100644
--- a/test/built-ins/Array/prototype/reduceRight/15.4.4.22-8-c-1.js
+++ b/test/built-ins/Array/prototype/reduceRight/15.4.4.22-8-c-1.js
@@ -6,22 +6,13 @@ es5id: 15.4.4.22-8-c-1
 description: >
     Array.prototype.reduceRight throws TypeError when Array is empty
     and initialValue is not present
-includes: [runTestCase.js]
 ---*/
 
-function testcase() { 
- 
   function callbackfn(prevVal, curVal, idx, obj)
   {
   }
 
   var arr = new Array(10);
-  try {
+assert.throws(TypeError, function() {
     arr.reduceRight(callbackfn);
-  } 
-  catch(e) {
-    if(e instanceof TypeError)
-      return true;  
-  }
- }
-runTestCase(testcase);
+});
diff --git a/test/built-ins/Array/prototype/reduceRight/15.4.4.22-8-c-2.js b/test/built-ins/Array/prototype/reduceRight/15.4.4.22-8-c-2.js
index eb6917ccde..8863b6b38d 100644
--- a/test/built-ins/Array/prototype/reduceRight/15.4.4.22-8-c-2.js
+++ b/test/built-ins/Array/prototype/reduceRight/15.4.4.22-8-c-2.js
@@ -7,11 +7,8 @@ description: >
     Array.prototype.reduceRight throws TypeError when elements
     assigned values are deleted by reducign array length and
     initialValue is not present
-includes: [runTestCase.js]
 ---*/
 
-function testcase() { 
- 
   function callbackfn(prevVal, curVal, idx, obj)
   {
   }
@@ -19,12 +16,6 @@ function testcase() {
   var arr = new Array(10);
   arr[9] = 1;
   arr.length = 5;
-  try {
+assert.throws(TypeError, function() {
     arr.reduceRight(callbackfn);
-  } 
-  catch(e) {
-    if(e instanceof TypeError)
-      return true;  
-  }
- }
-runTestCase(testcase);
+});
diff --git a/test/built-ins/Array/prototype/reduceRight/15.4.4.22-8-c-3.js b/test/built-ins/Array/prototype/reduceRight/15.4.4.22-8-c-3.js
index efe0973272..96d73e6002 100644
--- a/test/built-ins/Array/prototype/reduceRight/15.4.4.22-8-c-3.js
+++ b/test/built-ins/Array/prototype/reduceRight/15.4.4.22-8-c-3.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.22-8-c-3
 description: >
     Array.prototype.reduceRight throws TypeError when elements
     assigned values are deleted and initialValue is not present
-includes: [runTestCase.js]
 ---*/
 
-function testcase() { 
- 
   function callbackfn(prevVal, curVal, idx, obj)
   {
   }
@@ -21,12 +18,6 @@ function testcase() {
   delete arr[2];
   delete arr[3];
   delete arr[4];
-  try {
+assert.throws(TypeError, function() {
     arr.reduceRight(callbackfn);
-  } 
-  catch(e) {
-    if(e instanceof TypeError)
-      return true;  
-  }
- }
-runTestCase(testcase);
+});
diff --git a/test/built-ins/Array/prototype/reduceRight/15.4.4.22-8-c-5.js b/test/built-ins/Array/prototype/reduceRight/15.4.4.22-8-c-5.js
index 43f3b465f7..e59c25c52f 100644
--- a/test/built-ins/Array/prototype/reduceRight/15.4.4.22-8-c-5.js
+++ b/test/built-ins/Array/prototype/reduceRight/15.4.4.22-8-c-5.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.22-8-c-5
 description: >
     Array.prototype.reduceRight - side effects produced by step 2 are
     visible when an exception occurs
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var obj = { };
 
         var accessed = false;
@@ -22,12 +19,7 @@ function testcase() {
             },
             configurable: true
         });
-
-        try {
+assert.throws(TypeError, function() {
             Array.prototype.reduceRight.call(obj, function () { });
-            return false;
-        } catch (ex) {
-            return (ex instanceof TypeError) && accessed;
-        }
-    }
-runTestCase(testcase);
+});
+assert(accessed, 'accessed !== true');
diff --git a/test/built-ins/Array/prototype/reduceRight/15.4.4.22-8-c-6.js b/test/built-ins/Array/prototype/reduceRight/15.4.4.22-8-c-6.js
index 459118f3c5..7dce7319b7 100644
--- a/test/built-ins/Array/prototype/reduceRight/15.4.4.22-8-c-6.js
+++ b/test/built-ins/Array/prototype/reduceRight/15.4.4.22-8-c-6.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.22-8-c-6
 description: >
     Array.prototype.reduceRight - side effects produced by step 3 are
     visible when an exception occurs
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var obj = {};
 
         var accessed = false;
@@ -26,12 +23,7 @@ function testcase() {
             },
             configurable: true
         });
-
-        try {
+assert.throws(TypeError, function() {
             Array.prototype.reduceRight.call(obj, function () { });
-            return false;
-        } catch (ex) {
-            return (ex instanceof TypeError) && accessed;
-        }
-    }
-runTestCase(testcase);
+});
+assert(accessed, 'accessed !== true');
diff --git a/test/built-ins/Array/prototype/reduceRight/15.4.4.22-9-c-i-32.js b/test/built-ins/Array/prototype/reduceRight/15.4.4.22-9-c-i-32.js
index dc51473376..415294f820 100644
--- a/test/built-ins/Array/prototype/reduceRight/15.4.4.22-9-c-i-32.js
+++ b/test/built-ins/Array/prototype/reduceRight/15.4.4.22-9-c-i-32.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.22-9-c-i-32
 description: >
     Array.prototype.reduceRight - unnhandled exceptions happened in
     getter terminate iteration on an Array-like object
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var accessed = false;
         function callbackfn(prevVal, curVal, idx, obj) {
             if (idx <= 1) {
@@ -26,12 +23,7 @@ function testcase() {
             },
             configurable: true
         });
-
-        try {
+assert.throws(RangeError, function() {
             Array.prototype.reduceRight.call(obj, callbackfn, "initialValue");
-            return false;
-        } catch (ex) {
-            return (ex instanceof RangeError) && !accessed;
-        }
-    }
-runTestCase(testcase);
+});
+assert.sameValue(accessed, false, 'accessed');
diff --git a/test/built-ins/Array/prototype/some/15.4.4.17-1-1.js b/test/built-ins/Array/prototype/some/15.4.4.17-1-1.js
index 3edbd680b4..f6ef912cf1 100644
--- a/test/built-ins/Array/prototype/some/15.4.4.17-1-1.js
+++ b/test/built-ins/Array/prototype/some/15.4.4.17-1-1.js
@@ -4,15 +4,9 @@
 /*---
 es5id: 15.4.4.17-1-1
 description: Array.prototype.some applied to undefined throws a TypeError
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-        try {
+
+assert.throws(TypeError, function() {
             Array.prototype.some.call(undefined);
-            return false;
-        } catch (e) {
-            return (e instanceof TypeError);
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/built-ins/Array/prototype/some/15.4.4.17-1-2.js b/test/built-ins/Array/prototype/some/15.4.4.17-1-2.js
index e7af4d96cc..1908d74876 100644
--- a/test/built-ins/Array/prototype/some/15.4.4.17-1-2.js
+++ b/test/built-ins/Array/prototype/some/15.4.4.17-1-2.js
@@ -4,15 +4,9 @@
 /*---
 es5id: 15.4.4.17-1-2
 description: Array.prototype.some applied to null throws a TypeError
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-        try {
+
+assert.throws(TypeError, function() {
             Array.prototype.some.call(null);
-            return false;
-        } catch (e) {
-            return (e instanceof TypeError);
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/built-ins/Array/prototype/some/15.4.4.17-3-22.js b/test/built-ins/Array/prototype/some/15.4.4.17-3-22.js
index fa51c0e25b..8795d9a056 100644
--- a/test/built-ins/Array/prototype/some/15.4.4.17-3-22.js
+++ b/test/built-ins/Array/prototype/some/15.4.4.17-3-22.js
@@ -7,11 +7,8 @@ description: >
     Array.prototype.some throws TypeError exception when 'length' is
     an object with toString and valueOf methods that don�t return
     primitive values
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var callbackfnAccessed = false;
         var toStringAccessed = false;
         var valueOfAccessed = false;
@@ -36,12 +33,9 @@ function testcase() {
                 }
             }
         };
-
-        try {
+assert.throws(TypeError, function() {
             Array.prototype.some.call(obj, callbackfn);
-            return false;
-        } catch (ex) {
-            return (ex instanceof TypeError) && toStringAccessed && valueOfAccessed && !callbackfnAccessed;
-        }
-    }
-runTestCase(testcase);
+});
+assert(toStringAccessed, 'toStringAccessed !== true');
+assert(valueOfAccessed, 'valueOfAccessed !== true');
+assert.sameValue(callbackfnAccessed, false, 'callbackfnAccessed');
diff --git a/test/built-ins/Array/prototype/some/15.4.4.17-4-1.js b/test/built-ins/Array/prototype/some/15.4.4.17-4-1.js
index 234cd7593e..f6f66c9109 100644
--- a/test/built-ins/Array/prototype/some/15.4.4.17-4-1.js
+++ b/test/built-ins/Array/prototype/some/15.4.4.17-4-1.js
@@ -4,19 +4,9 @@
 /*---
 es5id: 15.4.4.17-4-1
 description: Array.prototype.some throws TypeError if callbackfn is undefined
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
   var arr = new Array(10);
-  try {
-    arr.some();    
-  }
-  catch(e) {
-    if(e instanceof TypeError)
-      return true;  
-  }
-
- }
-runTestCase(testcase);
+assert.throws(TypeError, function() {
+    arr.some();
+});
diff --git a/test/built-ins/Array/prototype/some/15.4.4.17-4-15.js b/test/built-ins/Array/prototype/some/15.4.4.17-4-15.js
index a2e39d124a..546f4c0c70 100644
--- a/test/built-ins/Array/prototype/some/15.4.4.17-4-15.js
+++ b/test/built-ins/Array/prototype/some/15.4.4.17-4-15.js
@@ -6,10 +6,8 @@ es5id: 15.4.4.17-4-15
 description: >
     Array.prototype.some - calling with no callbackfn is the same as
     passing undefined for callbackfn
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = { };
         var lengthAccessed = false;
         var loopAccessed = false;
@@ -28,12 +26,8 @@ function testcase() {
             },
             configurable: true
         });
-
-        try {
+assert.throws(TypeError, function() {
             Array.prototype.some.call(obj);
-            return false;
-        } catch (ex) {
-            return (ex instanceof TypeError) && lengthAccessed && !loopAccessed;
-        }
-    }
-runTestCase(testcase);
+});
+assert(lengthAccessed, 'lengthAccessed !== true');
+assert.sameValue(loopAccessed, false, 'loopAccessed');
diff --git a/test/built-ins/Array/prototype/some/15.4.4.17-4-2.js b/test/built-ins/Array/prototype/some/15.4.4.17-4-2.js
index f0344bb26e..503aea9b4b 100644
--- a/test/built-ins/Array/prototype/some/15.4.4.17-4-2.js
+++ b/test/built-ins/Array/prototype/some/15.4.4.17-4-2.js
@@ -6,19 +6,9 @@ es5id: 15.4.4.17-4-2
 description: >
     Array.prototype.some throws ReferenceError if callbackfn is
     unreferenced
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
   var arr = new Array(10);
-  try {
-    arr.some(foo);    
-  }
-  catch(e) {
-    if(e instanceof ReferenceError)
-      return true;  
-  }
-
- }
-runTestCase(testcase);
+assert.throws(ReferenceError, function() {
+    arr.some(foo);
+});
diff --git a/test/built-ins/Array/prototype/some/15.4.4.17-4-3.js b/test/built-ins/Array/prototype/some/15.4.4.17-4-3.js
index 0cd339f8a4..89efdb1acd 100644
--- a/test/built-ins/Array/prototype/some/15.4.4.17-4-3.js
+++ b/test/built-ins/Array/prototype/some/15.4.4.17-4-3.js
@@ -4,19 +4,9 @@
 /*---
 es5id: 15.4.4.17-4-3
 description: Array.prototype.some throws TypeError if callbackfn is null
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
   var arr = new Array(10);
-  try {
-    arr.some(null);    
-  }
-  catch(e) {
-    if(e instanceof TypeError)
-      return true;  
-  }
-
- }
-runTestCase(testcase);
+assert.throws(TypeError, function() {
+    arr.some(null);
+});
diff --git a/test/built-ins/Array/prototype/some/15.4.4.17-4-4.js b/test/built-ins/Array/prototype/some/15.4.4.17-4-4.js
index e66e09dd6b..d6a7dcaceb 100644
--- a/test/built-ins/Array/prototype/some/15.4.4.17-4-4.js
+++ b/test/built-ins/Array/prototype/some/15.4.4.17-4-4.js
@@ -4,19 +4,9 @@
 /*---
 es5id: 15.4.4.17-4-4
 description: Array.prototype.some throws TypeError if callbackfn is boolean
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
   var arr = new Array(10);
-  try {
-    arr.some(true);    
-  }
-  catch(e) {
-    if(e instanceof TypeError)
-      return true;  
-  }
-
- }
-runTestCase(testcase);
+assert.throws(TypeError, function() {
+    arr.some(true);
+});
diff --git a/test/built-ins/Array/prototype/some/15.4.4.17-4-5.js b/test/built-ins/Array/prototype/some/15.4.4.17-4-5.js
index baa73b9a7e..5bfa34ff07 100644
--- a/test/built-ins/Array/prototype/some/15.4.4.17-4-5.js
+++ b/test/built-ins/Array/prototype/some/15.4.4.17-4-5.js
@@ -4,19 +4,9 @@
 /*---
 es5id: 15.4.4.17-4-5
 description: Array.prototype.some throws TypeError if callbackfn is number
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
   var arr = new Array(10);
-  try {
-    arr.some(5);    
-  }
-  catch(e) {
-    if(e instanceof TypeError)
-      return true;  
-  }
-
- }
-runTestCase(testcase);
+assert.throws(TypeError, function() {
+    arr.some(5);
+});
diff --git a/test/built-ins/Array/prototype/some/15.4.4.17-4-6.js b/test/built-ins/Array/prototype/some/15.4.4.17-4-6.js
index 6635c18cc1..12ac7b3d81 100644
--- a/test/built-ins/Array/prototype/some/15.4.4.17-4-6.js
+++ b/test/built-ins/Array/prototype/some/15.4.4.17-4-6.js
@@ -4,19 +4,9 @@
 /*---
 es5id: 15.4.4.17-4-6
 description: Array.prototype.some throws TypeError if callbackfn is string
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
   var arr = new Array(10);
-  try {
-    arr.some("abc");    
-  }
-  catch(e) {
-    if(e instanceof TypeError)
-      return true;  
-  }
-
- }
-runTestCase(testcase);
+assert.throws(TypeError, function() {
+    arr.some("abc");
+});
diff --git a/test/built-ins/Array/prototype/some/15.4.4.17-4-7.js b/test/built-ins/Array/prototype/some/15.4.4.17-4-7.js
index 0e49f17e97..f0ab45b37a 100644
--- a/test/built-ins/Array/prototype/some/15.4.4.17-4-7.js
+++ b/test/built-ins/Array/prototype/some/15.4.4.17-4-7.js
@@ -6,19 +6,9 @@ es5id: 15.4.4.17-4-7
 description: >
     Array.prototype.some throws TypeError if callbackfn is Object
     without a Call internal method
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
   var arr = new Array(10);
-  try {
-    arr.some(new Object());    
-  }
-  catch(e) {
-    if(e instanceof TypeError)
-      return true;  
-  }
-
- }
-runTestCase(testcase);
+assert.throws(TypeError, function() {
+    arr.some(new Object());
+});
diff --git a/test/built-ins/Array/prototype/some/15.4.4.17-4-8.js b/test/built-ins/Array/prototype/some/15.4.4.17-4-8.js
index 53cc873524..ea13a559b1 100644
--- a/test/built-ins/Array/prototype/some/15.4.4.17-4-8.js
+++ b/test/built-ins/Array/prototype/some/15.4.4.17-4-8.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.17-4-8
 description: >
     Array.prototype.some - side effects produced by step 2 are visible
     when an exception occurs
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var obj = { 0: 11, 1: 12 };
 
         var accessed = false;
@@ -22,12 +19,7 @@ function testcase() {
             },
             configurable: true
         });
-
-        try {
+assert.throws(TypeError, function() {
             Array.prototype.some.call(obj, null);
-            return false;
-        } catch (ex) {
-            return ex instanceof TypeError && accessed;
-        }
-    }
-runTestCase(testcase);
+});
+assert(accessed, 'accessed !== true');
diff --git a/test/built-ins/Array/prototype/some/15.4.4.17-4-9.js b/test/built-ins/Array/prototype/some/15.4.4.17-4-9.js
index beac8d856c..8e30688b97 100644
--- a/test/built-ins/Array/prototype/some/15.4.4.17-4-9.js
+++ b/test/built-ins/Array/prototype/some/15.4.4.17-4-9.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.17-4-9
 description: >
     Array.prototype.some - side effects produced by step 3 are visible
     when an exception occurs
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var obj = { 0: 11, 1: 12 };
 
         var accessed = false;
@@ -26,12 +23,7 @@ function testcase() {
             },
             configurable: true
         });
-
-        try {
+assert.throws(TypeError, function() {
             Array.prototype.some.call(obj, null);
-            return false;
-        } catch (ex) {
-            return ex instanceof TypeError && accessed;
-        }
-    }
-runTestCase(testcase);
+});
+assert(accessed, 'accessed !== true');
diff --git a/test/built-ins/Array/prototype/some/15.4.4.17-7-c-i-30.js b/test/built-ins/Array/prototype/some/15.4.4.17-7-c-i-30.js
index 56f598f9dc..6b83b9533d 100644
--- a/test/built-ins/Array/prototype/some/15.4.4.17-7-c-i-30.js
+++ b/test/built-ins/Array/prototype/some/15.4.4.17-7-c-i-30.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.17-7-c-i-30
 description: >
     Array.prototype.some - unhandled exceptions happened in getter
     terminate iteration on an Array-like object
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var accessed = false;
         function callbackfn(val, idx, obj) {
             if (idx > 1) {
@@ -26,12 +23,7 @@ function testcase() {
             },
             configurable: true
         });
-
-        try {
+assert.throws(RangeError, function() {
             Array.prototype.some.call(obj, callbackfn);
-            return false;
-        } catch (ex) {
-            return ex instanceof RangeError && !accessed;
-        }
-    }
-runTestCase(testcase);
+});
+assert.sameValue(accessed, false, 'accessed');
diff --git a/test/built-ins/Array/prototype/some/15.4.4.17-7-c-i-31.js b/test/built-ins/Array/prototype/some/15.4.4.17-7-c-i-31.js
index 770bab3432..8b753da1bc 100644
--- a/test/built-ins/Array/prototype/some/15.4.4.17-7-c-i-31.js
+++ b/test/built-ins/Array/prototype/some/15.4.4.17-7-c-i-31.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.17-7-c-i-31
 description: >
     Array.prototype.some - unhandled exceptions happened in getter
     terminate iteration on an Array
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var accessed = false;
         function callbackfn(val, idx, obj) {
             if (idx > 0) {
@@ -27,12 +24,7 @@ function testcase() {
             },
             configurable: true
         });
-
-        try {
+assert.throws(RangeError, function() {
             arr.some(callbackfn);
-            return false;
-        } catch (ex) {
-            return ex instanceof RangeError && !accessed;
-        }
-    }
-runTestCase(testcase);
+});
+assert.sameValue(accessed, false, 'accessed');
diff --git a/test/built-ins/Array/prototype/some/15.4.4.17-7-c-ii-7.js b/test/built-ins/Array/prototype/some/15.4.4.17-7-c-ii-7.js
index f81a458863..cd488bd7e8 100644
--- a/test/built-ins/Array/prototype/some/15.4.4.17-7-c-ii-7.js
+++ b/test/built-ins/Array/prototype/some/15.4.4.17-7-c-ii-7.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.17-7-c-ii-7
 description: >
     Array.prototype.some - unhandled exceptions happened in callbackfn
     terminate iteration
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var accessed = false;
 
         function callbackfn(val, idx, obj) {
@@ -24,12 +21,7 @@ function testcase() {
         }
 
         var obj = { 0: 9, 1: 100, 10: 11, length: 20 };
-
-        try {
+assert.throws(Error, function() {
             Array.prototype.some.call(obj, callbackfn);
-            return false;
-        } catch (ex) {
-            return ex instanceof Error && !accessed;
-        }
-    }
-runTestCase(testcase);
+});
+assert.sameValue(accessed, false, 'accessed');
-- 
GitLab